@torpor/ui 0.3.5 → 0.3.6
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/metafile-esm.json +1 -1
- package/package.json +5 -2
- package/CHANGELOG.md +0 -344
- package/scripts/postbuild.ts +0 -127
- package/src/Accordion/Accordion.torp +0 -230
- package/src/Accordion/AccordionContent.torp +0 -46
- package/src/Accordion/AccordionHeader.torp +0 -45
- package/src/Accordion/AccordionItem.torp +0 -101
- package/src/Accordion/AccordionTrigger.torp +0 -70
- package/src/Accordion/AccordionTypes.ts +0 -36
- package/src/Accordion/index.ts +0 -7
- package/src/Breadcrumb/Breadcrumb.torp +0 -45
- package/src/Breadcrumb/BreadcrumbItem.torp +0 -30
- package/src/Breadcrumb/BreadcrumbSeparator.torp +0 -27
- package/src/Breadcrumb/index.ts +0 -5
- package/src/Calendar/Calendar.torp +0 -277
- package/src/Calendar/CalendarDay.torp +0 -78
- package/src/Calendar/CalendarTypes.ts +0 -22
- package/src/Calendar/index.ts +0 -4
- package/src/Contextual/Contextual.torp +0 -129
- package/src/Contextual/ContextualContent.torp +0 -112
- package/src/Contextual/ContextualTrigger.torp +0 -70
- package/src/Contextual/ContextualTypes.ts +0 -30
- package/src/Contextual/index.ts +0 -5
- package/src/Dialog/Dialog.torp +0 -136
- package/src/Dialog/DialogBody.torp +0 -44
- package/src/Dialog/DialogButton.torp +0 -66
- package/src/Dialog/DialogFooter.torp +0 -25
- package/src/Dialog/DialogHeader.torp +0 -45
- package/src/Dialog/DialogTypes.ts +0 -17
- package/src/Dialog/index.ts +0 -7
- package/src/Disclosure/Disclosure.torp +0 -82
- package/src/Disclosure/DisclosureContent.torp +0 -46
- package/src/Disclosure/DisclosureHeader.torp +0 -45
- package/src/Disclosure/DisclosureTrigger.torp +0 -47
- package/src/Disclosure/DisclosureTypes.ts +0 -13
- package/src/Disclosure/index.ts +0 -6
- package/src/Drawer/Drawer.torp +0 -127
- package/src/Drawer/DrawerContent.torp +0 -83
- package/src/Drawer/DrawerOverlay.torp +0 -42
- package/src/Drawer/DrawerTrigger.torp +0 -39
- package/src/Drawer/DrawerTypes.ts +0 -24
- package/src/Drawer/index.ts +0 -6
- package/src/Form/CheckBox.torp +0 -94
- package/src/Form/Field.torp +0 -95
- package/src/Form/File.torp +0 -102
- package/src/Form/Form.torp +0 -147
- package/src/Form/FormTypes.ts +0 -35
- package/src/Form/Hidden.torp +0 -25
- package/src/Form/Input.torp +0 -112
- package/src/Form/Label.torp +0 -35
- package/src/Form/Message.torp +0 -39
- package/src/Form/Option.torp +0 -28
- package/src/Form/Select.torp +0 -101
- package/src/Form/StandardSchemaV1.ts +0 -70
- package/src/Form/TextArea.torp +0 -105
- package/src/Form/index.ts +0 -13
- package/src/Menu/Menu.torp +0 -174
- package/src/Menu/MenuButton.torp +0 -74
- package/src/Menu/MenuCheck.torp +0 -89
- package/src/Menu/MenuGroup.torp +0 -31
- package/src/Menu/MenuIndicator.torp +0 -40
- package/src/Menu/MenuPopout.torp +0 -83
- package/src/Menu/MenuPopoutContent.torp +0 -84
- package/src/Menu/MenuPopoutTrigger.torp +0 -128
- package/src/Menu/MenuRadio.torp +0 -103
- package/src/Menu/MenuRadioGroup.torp +0 -109
- package/src/Menu/MenuSeparator.torp +0 -26
- package/src/Menu/MenuTypes.ts +0 -60
- package/src/Menu/index.ts +0 -25
- package/src/MenuBar/MenuBar.torp +0 -162
- package/src/MenuBar/MenuBarItem.torp +0 -116
- package/src/MenuBar/MenuBarItemContent.torp +0 -119
- package/src/MenuBar/MenuBarItemTrigger.torp +0 -99
- package/src/MenuBar/MenuBarTypes.ts +0 -36
- package/src/MenuBar/index.ts +0 -6
- package/src/Modal/Modal.torp +0 -122
- package/src/Modal/ModalContent.torp +0 -81
- package/src/Modal/ModalOverlay.torp +0 -42
- package/src/Modal/ModalTrigger.torp +0 -54
- package/src/Modal/ModalTypes.ts +0 -22
- package/src/Modal/index.ts +0 -10
- package/src/Modal/showModal.ts +0 -19
- package/src/Modal/showPrompt.ts +0 -23
- package/src/NavMenu/NavMenu.torp +0 -190
- package/src/NavMenu/NavMenuButton.torp +0 -55
- package/src/NavMenu/NavMenuElement.torp +0 -55
- package/src/NavMenu/NavMenuGroup.torp +0 -41
- package/src/NavMenu/NavMenuGroupHeader.torp +0 -41
- package/src/NavMenu/NavMenuLink.torp +0 -60
- package/src/NavMenu/NavMenuPopout.torp +0 -89
- package/src/NavMenu/NavMenuPopoutButton.torp +0 -129
- package/src/NavMenu/NavMenuPopoutContent.torp +0 -92
- package/src/NavMenu/NavMenuSeparator.torp +0 -24
- package/src/NavMenu/NavMenuTypes.ts +0 -32
- package/src/NavMenu/index.ts +0 -23
- package/src/Notification/Notification.torp +0 -71
- package/src/Notification/NotificationClose.torp +0 -39
- package/src/Notification/NotificationContainer.torp +0 -26
- package/src/Notification/NotificationContent.torp +0 -25
- package/src/Notification/NotificationTypes.ts +0 -5
- package/src/Notification/index.ts +0 -13
- package/src/Notification/showNotification.ts +0 -30
- package/src/Popover/Popover.torp +0 -129
- package/src/Popover/PopoverContent.torp +0 -117
- package/src/Popover/PopoverTrigger.torp +0 -62
- package/src/Popover/PopoverTypes.ts +0 -30
- package/src/Popover/index.ts +0 -6
- package/src/Popover/showPopover.ts +0 -24
- package/src/Slider/Slider.torp +0 -84
- package/src/Slider/index.ts +0 -3
- package/src/TabGroup/TabContent.torp +0 -49
- package/src/TabGroup/TabGroup.torp +0 -250
- package/src/TabGroup/TabGroupTypes.ts +0 -44
- package/src/TabGroup/TabHeader.torp +0 -81
- package/src/TabGroup/TabList.torp +0 -61
- package/src/TabGroup/TabTrigger.torp +0 -76
- package/src/TabGroup/index.ts +0 -7
- package/src/ambient.d.ts +0 -7
- package/src/icons/ArrowDown.torp +0 -18
- package/src/icons/ArrowLeft.torp +0 -18
- package/src/icons/ArrowRight.torp +0 -18
- package/src/icons/ArrowUp.torp +0 -18
- package/src/icons/Bars.torp +0 -20
- package/src/icons/Check.torp +0 -18
- package/src/icons/ChevronDown.torp +0 -18
- package/src/icons/ChevronLeft.torp +0 -18
- package/src/icons/ChevronRight.torp +0 -18
- package/src/icons/ChevronUp.torp +0 -18
- package/src/icons/Cross.torp +0 -19
- package/src/icons/IconTypes.ts +0 -10
- package/src/icons/Loading.torp +0 -19
- package/src/icons/Minus.torp +0 -18
- package/src/icons/Plus.torp +0 -19
- package/src/icons/index.ts +0 -31
- package/src/motion/fade.ts +0 -16
- package/src/motion/grow.ts +0 -23
- package/src/motion/index.ts +0 -6
- package/src/motion/measure.ts +0 -28
- package/src/motion/slide.ts +0 -45
- package/src/mount/clickPopover.ts +0 -51
- package/src/mount/contextPopover.ts +0 -51
- package/src/mount/disableScroll.ts +0 -28
- package/src/mount/hoverPopover.ts +0 -58
- package/src/mount/hoverTrigger.ts +0 -59
- package/src/mount/trapFocus.ts +0 -58
- package/src/utils/dateUtils.ts +0 -244
- package/src/utils/documentEvents.ts +0 -17
- package/src/utils/getId.ts +0 -6
- package/src/utils/getScrollParent.ts +0 -22
- package/src/utils/setContextPosition.ts +0 -31
- package/src/utils/setPopoverPosition.ts +0 -142
- package/test/Accordion/accessibility.test.ts +0 -59
- package/test/Accordion/components/AccordionAccessibility.torp +0 -44
- package/test/Accordion/components/AccordionKeyboard.torp +0 -32
- package/test/Accordion/components/AccordionList.torp +0 -23
- package/test/Accordion/components/AccordionMultiple.torp +0 -32
- package/test/Accordion/components/AccordionSingle.torp +0 -32
- package/test/Accordion/for-items.test.ts +0 -52
- package/test/Accordion/keyboard.test.ts +0 -64
- package/test/Accordion/multiple-item-toggle.test.ts +0 -32
- package/test/Accordion/multiple-item-value.test.ts +0 -17
- package/test/Accordion/single-item-toggle.test.ts +0 -31
- package/test/Accordion/single-item-value.test.ts +0 -17
- package/test/Breadcrumb/accessibility.test.ts +0 -29
- package/test/Breadcrumb/basic.test.ts +0 -17
- package/test/Breadcrumb/components/BreadcrumbTest.torp +0 -15
- package/test/Calendar/components/CalendarTest.torp +0 -9
- package/test/Calendar/default.test.ts +0 -18
- package/test/Dialog/accessibility-alert.test.ts +0 -40
- package/test/Dialog/accessibility-modal.test.ts +0 -52
- package/test/Dialog/components/DialogAccessibility.torp +0 -25
- package/test/Dialog/components/DialogFunction.torp +0 -36
- package/test/Dialog/components/DialogModal.torp +0 -30
- package/test/Dialog/components/DialogVariable.torp +0 -33
- package/test/Dialog/function.test.ts +0 -26
- package/test/Dialog/variable.test.ts +0 -27
- package/test/Disclosure/accessibility.test.ts +0 -31
- package/test/Disclosure/components/DisclosureTest.torp +0 -17
- package/test/Disclosure/default.test.ts +0 -15
- package/test/Disclosure/toggle.test.ts +0 -20
- package/test/Form/components/FieldTest.torp +0 -25
- package/test/Form/components/FormTest.torp +0 -31
- package/test/Form/components/InputTest.torp +0 -9
- package/test/Form/field.test.ts +0 -34
- package/test/Form/form.test.ts +0 -34
- package/test/Form/input.test.ts +0 -19
- package/test/Menu/accessibility.test.ts +0 -83
- package/test/Menu/basic.test.ts +0 -58
- package/test/Menu/components/MenuAccessibility.torp +0 -59
- package/test/Menu/components/MenuBasic.torp +0 -58
- package/test/MenuBar/accessibility.test.ts +0 -87
- package/test/MenuBar/basic.test.ts +0 -22
- package/test/MenuBar/components/MenuBarAccessibility.torp +0 -34
- package/test/MenuBar/components/MenuBarBasic.torp +0 -25
- package/test/NavMenu/accessibility.test.ts +0 -97
- package/test/NavMenu/basic.test.ts +0 -22
- package/test/NavMenu/components/NavMenuAccessibility.torp +0 -35
- package/test/NavMenu/components/NavMenuBasic.torp +0 -28
- package/test/Notification/accessibility.test.ts +0 -21
- package/test/Notification/components/CustomNotification.torp +0 -14
- package/test/Notification/components/NotificationAccessibility.torp +0 -14
- package/test/Notification/components/NotificationFunction.torp +0 -17
- package/test/Notification/components/NotificationVariable.torp +0 -22
- package/test/Notification/function.test.ts +0 -25
- package/test/Notification/variable.test.ts +0 -25
- package/test/Popover/components/CustomDialog.torp +0 -25
- package/test/Popover/components/PopoverFunction.torp +0 -37
- package/test/Popover/components/PopoverTrigger.torp +0 -36
- package/test/Popover/components/PopoverVariable.torp +0 -40
- package/test/Popover/function.test.ts +0 -21
- package/test/Popover/trigger.test.ts +0 -27
- package/test/Popover/variable.test.ts +0 -27
- package/test/TabGroup/accessibility.test.ts +0 -67
- package/test/TabGroup/components/TabGroupAccessibility.torp +0 -28
- package/test/TabGroup/components/TabGroupKeyboard.torp +0 -28
- package/test/TabGroup/components/TabGroupList.torp +0 -26
- package/test/TabGroup/components/TabGroupTrigger.torp +0 -28
- package/test/TabGroup/for-items.test.ts +0 -52
- package/test/TabGroup/item-trigger.test.ts +0 -33
- package/test/TabGroup/item-value.test.ts +0 -17
- package/test/TabGroup/keyboard.test.ts +0 -72
- package/tsconfig.json +0 -4
- package/tsup.config.ts +0 -37
- package/vitest.config.ts +0 -12
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
TabGroup,
|
|
3
|
-
TabList,
|
|
4
|
-
TabHeader,
|
|
5
|
-
TabTrigger,
|
|
6
|
-
TabContent,
|
|
7
|
-
} from "../../../src/TabGroup/index";
|
|
8
|
-
|
|
9
|
-
export default function TabGroupKeyboard() {
|
|
10
|
-
@render {
|
|
11
|
-
<TabGroup value={$props?.value}>
|
|
12
|
-
<TabList>
|
|
13
|
-
<TabHeader as="h4">
|
|
14
|
-
<TabTrigger>Header 1</TabTrigger>
|
|
15
|
-
</TabHeader>
|
|
16
|
-
<TabHeader as="h4">
|
|
17
|
-
<TabTrigger>Header 2</TabTrigger>
|
|
18
|
-
</TabHeader>
|
|
19
|
-
<TabHeader as="h4">
|
|
20
|
-
<TabTrigger>Header 3</TabTrigger>
|
|
21
|
-
</TabHeader>
|
|
22
|
-
</TabList>
|
|
23
|
-
<TabContent>Content 1</TabContent>
|
|
24
|
-
<TabContent>Content 2</TabContent>
|
|
25
|
-
<TabContent>Content 3</TabContent>
|
|
26
|
-
</TabGroup>
|
|
27
|
-
}
|
|
28
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
TabGroup,
|
|
3
|
-
TabList,
|
|
4
|
-
TabHeader,
|
|
5
|
-
TabTrigger,
|
|
6
|
-
TabContent,
|
|
7
|
-
} from "../../../src/TabGroup/index";
|
|
8
|
-
|
|
9
|
-
export default function TabGroupList() {
|
|
10
|
-
@render {
|
|
11
|
-
<TabGroup value={$props?.value}>
|
|
12
|
-
<TabList>
|
|
13
|
-
@for (let item of $props.items) {
|
|
14
|
-
@key = item.id
|
|
15
|
-
<TabHeader as="h4">
|
|
16
|
-
<TabTrigger>{item.header}</TabTrigger>
|
|
17
|
-
</TabHeader>
|
|
18
|
-
}
|
|
19
|
-
</TabList>
|
|
20
|
-
@for (let item of $props.items) {
|
|
21
|
-
@key = item.id
|
|
22
|
-
<TabContent>{item.text}</TabContent>
|
|
23
|
-
}
|
|
24
|
-
</TabGroup>
|
|
25
|
-
}
|
|
26
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
TabGroup,
|
|
3
|
-
TabList,
|
|
4
|
-
TabHeader,
|
|
5
|
-
TabTrigger,
|
|
6
|
-
TabContent,
|
|
7
|
-
} from "../../../src/TabGroup/index";
|
|
8
|
-
|
|
9
|
-
export default function TabGroupTrigger() {
|
|
10
|
-
@render {
|
|
11
|
-
<TabGroup value={$props?.value}>
|
|
12
|
-
<TabList>
|
|
13
|
-
<TabHeader as="h4">
|
|
14
|
-
<TabTrigger>Header 1</TabTrigger>
|
|
15
|
-
</TabHeader>
|
|
16
|
-
<TabHeader as="h4">
|
|
17
|
-
<TabTrigger>Header 2</TabTrigger>
|
|
18
|
-
</TabHeader>
|
|
19
|
-
<TabHeader as="h4">
|
|
20
|
-
<TabTrigger>Header 3</TabTrigger>
|
|
21
|
-
</TabHeader>
|
|
22
|
-
</TabList>
|
|
23
|
-
<TabContent>Content 1</TabContent>
|
|
24
|
-
<TabContent>Content 2</TabContent>
|
|
25
|
-
<TabContent>Content 3</TabContent>
|
|
26
|
-
</TabGroup>
|
|
27
|
-
}
|
|
28
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { getByText, queryByText } from "@testing-library/dom";
|
|
2
|
-
import "@testing-library/jest-dom/vitest";
|
|
3
|
-
import userEvent from "@testing-library/user-event";
|
|
4
|
-
import { $watch, mount } from "@torpor/view";
|
|
5
|
-
import { describe, expect, it } from "vitest";
|
|
6
|
-
import TabGroupList from "./components/TabGroupList.torp";
|
|
7
|
-
|
|
8
|
-
describe("TabGroup", () => {
|
|
9
|
-
it("Items in a for loop", async () => {
|
|
10
|
-
let $state = $watch({
|
|
11
|
-
value: "1",
|
|
12
|
-
items: [
|
|
13
|
-
{ id: 0, header: "Item 1", text: "Content 1" },
|
|
14
|
-
{ id: 1, header: "Item 2", text: "Content 2" },
|
|
15
|
-
{ id: 2, header: "Item 3", text: "Content 3" },
|
|
16
|
-
],
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
const container = document.createElement("div");
|
|
20
|
-
document.body.appendChild(container);
|
|
21
|
-
mount(container, TabGroupList, $state);
|
|
22
|
-
|
|
23
|
-
expect(queryByText(container, "Content 1")).not.toBeInTheDocument();
|
|
24
|
-
expect(queryByText(container, "Item 2")).toBeInTheDocument();
|
|
25
|
-
expect(queryByText(container, "Content 2")).toBeInTheDocument();
|
|
26
|
-
expect(queryByText(container, "Content 3")).not.toBeInTheDocument();
|
|
27
|
-
|
|
28
|
-
$state.items.splice(1, 1);
|
|
29
|
-
|
|
30
|
-
expect(queryByText(container, "Content 1")).not.toBeInTheDocument();
|
|
31
|
-
expect(queryByText(container, "Item 2")).not.toBeInTheDocument();
|
|
32
|
-
expect(queryByText(container, "Content 2")).not.toBeInTheDocument();
|
|
33
|
-
expect(queryByText(container, "Content 3")).not.toBeInTheDocument();
|
|
34
|
-
|
|
35
|
-
// Clicking header 1 should reveal body 1
|
|
36
|
-
await userEvent.click(getByText(container, "Item 1"));
|
|
37
|
-
expect(queryByText(container, "Content 1")).toBeInTheDocument();
|
|
38
|
-
|
|
39
|
-
$state.items.push({ id: 3, header: "Item 4", text: "Content 4" });
|
|
40
|
-
|
|
41
|
-
expect(queryByText(container, "Content 1")).toBeInTheDocument();
|
|
42
|
-
expect(queryByText(container, "Content 2")).not.toBeInTheDocument();
|
|
43
|
-
expect(queryByText(container, "Content 3")).not.toBeInTheDocument();
|
|
44
|
-
expect(queryByText(container, "Item 4")).toBeInTheDocument();
|
|
45
|
-
expect(queryByText(container, "Content 4")).not.toBeInTheDocument();
|
|
46
|
-
|
|
47
|
-
// Clicking header 4 should reveal body 4
|
|
48
|
-
await userEvent.click(getByText(container, "Item 4"));
|
|
49
|
-
expect(queryByText(container, "Content 1")).not.toBeInTheDocument();
|
|
50
|
-
expect(queryByText(container, "Content 4")).toBeInTheDocument();
|
|
51
|
-
});
|
|
52
|
-
});
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { getByText, queryByText } from "@testing-library/dom";
|
|
2
|
-
import "@testing-library/jest-dom/vitest";
|
|
3
|
-
import userEvent from "@testing-library/user-event";
|
|
4
|
-
import { mount } from "@torpor/view";
|
|
5
|
-
import { describe, expect, it } from "vitest";
|
|
6
|
-
import TabGroupTrigger from "./components/TabGroupTrigger.torp";
|
|
7
|
-
|
|
8
|
-
describe("TabGroup", () => {
|
|
9
|
-
it("Item trigger", async () => {
|
|
10
|
-
const container = document.createElement("div");
|
|
11
|
-
document.body.appendChild(container);
|
|
12
|
-
mount(container, TabGroupTrigger);
|
|
13
|
-
|
|
14
|
-
expect(queryByText(container, "Content 1")).toBeInTheDocument();
|
|
15
|
-
expect(queryByText(container, "Content 2")).not.toBeInTheDocument();
|
|
16
|
-
expect(queryByText(container, "Content 3")).not.toBeInTheDocument();
|
|
17
|
-
|
|
18
|
-
// Clicking header 3 should hide body 1 and reveal body 3
|
|
19
|
-
await userEvent.click(getByText(container, "Header 3"));
|
|
20
|
-
expect(queryByText(container, "Content 1")).not.toBeInTheDocument();
|
|
21
|
-
expect(queryByText(container, "Content 3")).toBeInTheDocument();
|
|
22
|
-
|
|
23
|
-
// Clicking header 2 should hide body 3 and reveal body 2
|
|
24
|
-
await userEvent.click(getByText(container, "Header 2"));
|
|
25
|
-
expect(queryByText(container, "Content 3")).not.toBeInTheDocument();
|
|
26
|
-
expect(queryByText(container, "Content 2")).toBeInTheDocument();
|
|
27
|
-
|
|
28
|
-
// Clicking header 2 again should keep body 2
|
|
29
|
-
await userEvent.click(getByText(container, "Header 2"));
|
|
30
|
-
expect(queryByText(container, "Content 3")).not.toBeInTheDocument();
|
|
31
|
-
expect(queryByText(container, "Content 2")).toBeInTheDocument();
|
|
32
|
-
});
|
|
33
|
-
});
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { queryByText } from "@testing-library/dom";
|
|
2
|
-
import "@testing-library/jest-dom/vitest";
|
|
3
|
-
import { mount } from "@torpor/view";
|
|
4
|
-
import { describe, expect, it } from "vitest";
|
|
5
|
-
import TabGroupTrigger from "./components/TabGroupTrigger.torp";
|
|
6
|
-
|
|
7
|
-
describe("TabGroup", () => {
|
|
8
|
-
it("Item default value", async () => {
|
|
9
|
-
const container = document.createElement("div");
|
|
10
|
-
document.body.appendChild(container);
|
|
11
|
-
mount(container, TabGroupTrigger, { value: "1" });
|
|
12
|
-
|
|
13
|
-
expect(queryByText(container, "Content 1")).not.toBeInTheDocument();
|
|
14
|
-
expect(queryByText(container, "Content 2")).toBeInTheDocument();
|
|
15
|
-
expect(queryByText(container, "Content 3")).not.toBeInTheDocument();
|
|
16
|
-
});
|
|
17
|
-
});
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { fireEvent, getByText, queryByText } from "@testing-library/dom";
|
|
2
|
-
import "@testing-library/jest-dom/vitest";
|
|
3
|
-
import { mount } from "@torpor/view";
|
|
4
|
-
import { describe, expect, it } from "vitest";
|
|
5
|
-
import TabGroupKeyboard from "./components/TabGroupKeyboard.torp";
|
|
6
|
-
|
|
7
|
-
describe("TabGroup", () => {
|
|
8
|
-
it("Keyboard", async () => {
|
|
9
|
-
const container = document.createElement("div");
|
|
10
|
-
document.body.appendChild(container);
|
|
11
|
-
mount(container, TabGroupKeyboard, { value: "0" });
|
|
12
|
-
|
|
13
|
-
// Tests from https://www.w3.org/WAI/ARIA/apg/patterns/tabs/
|
|
14
|
-
|
|
15
|
-
// Enter or Space:
|
|
16
|
-
// * When focus is on the tab header for a collapsed panel, expands
|
|
17
|
-
// the associated panel. If the implementation allows only one panel
|
|
18
|
-
// to be expanded, and if another panel is expanded, collapses that
|
|
19
|
-
// panel
|
|
20
|
-
// * When focus is on the tab header for an expanded panel, collapses
|
|
21
|
-
// the panel if the implementation supports collapsing. Some
|
|
22
|
-
// implementations require one panel to be expanded at all times and
|
|
23
|
-
// allow only one panel to be expanded; so, they do not support a
|
|
24
|
-
// collapse function
|
|
25
|
-
// NOTE: I don't think we can test this
|
|
26
|
-
// NOTE: TabGroup headers are buttons so this functionality should be baked in by default
|
|
27
|
-
//screen.queryByText('Header 1').focus();
|
|
28
|
-
//expect(screen.queryByText('Content 1')).not.toBeInTheDocument();
|
|
29
|
-
//fireEvent(screen.getByText('Header 1'), { key: 'Space' });
|
|
30
|
-
//expect(screen.queryByText('Content 1')).toBeInTheDocument();
|
|
31
|
-
//fireEvent(screen.getByText('Header 1'), { key: 'Space' });
|
|
32
|
-
//expect(screen.queryByText('Content 1')).not.toBeInTheDocument();
|
|
33
|
-
|
|
34
|
-
// Tab: Moves focus to the next focusable element; all focusable
|
|
35
|
-
// elements in the tab are included in the page Tab sequence
|
|
36
|
-
// NOTE: I don't think we can test this
|
|
37
|
-
//fireEvent(screen.getByText('Header 1'), { key: 'Tab' });
|
|
38
|
-
//expect(document.activeElement).toBe(screen.queryByText('Header 2'));
|
|
39
|
-
|
|
40
|
-
// Shift + Tab: Moves focus to the previous focusable element; all
|
|
41
|
-
// focusable elements in the tab are included in the page Tab
|
|
42
|
-
// sequence
|
|
43
|
-
// NOTE: I don't think we can test this
|
|
44
|
-
//fireEvent(screen.getByText('Header 2'), { key: 'Tab', shiftKey: true });
|
|
45
|
-
//expect(document.activeElement).toBe(screen.queryByText('Header 1'));
|
|
46
|
-
|
|
47
|
-
// Right Arrow: If focus is on a tab header, moves focus to the next tab
|
|
48
|
-
// header. If focus is on the last tab header, either does nothing or
|
|
49
|
-
// moves focus to the first tab header
|
|
50
|
-
fireEvent(
|
|
51
|
-
getByText(container, "Header 1"),
|
|
52
|
-
new KeyboardEvent("keydown", { key: "ArrowRight" }),
|
|
53
|
-
);
|
|
54
|
-
expect(document.activeElement).toBe(queryByText(container, "Header 2"));
|
|
55
|
-
|
|
56
|
-
// Left Arrow: If focus is on a tab header, moves focus to the previous
|
|
57
|
-
// tab header. If focus is on the first tab header, either does nothing
|
|
58
|
-
// or moves focus to the last tab header
|
|
59
|
-
fireEvent(getByText(container, "Header 2"), new KeyboardEvent("keydown", { key: "ArrowLeft" }));
|
|
60
|
-
expect(document.activeElement).toBe(queryByText(container, "Header 1"));
|
|
61
|
-
|
|
62
|
-
// Home: When focus is on a tab header, moves focus to the first tab
|
|
63
|
-
// header
|
|
64
|
-
fireEvent(getByText(container, "Header 3"), new KeyboardEvent("keydown", { key: "Home" }));
|
|
65
|
-
expect(document.activeElement).toBe(queryByText(container, "Header 1"));
|
|
66
|
-
|
|
67
|
-
// End: When focus is on a tab header, moves focus to the last tab
|
|
68
|
-
// header
|
|
69
|
-
fireEvent(getByText(container, "Header 1"), new KeyboardEvent("keydown", { key: "End" }));
|
|
70
|
-
expect(document.activeElement).toBe(queryByText(container, "Header 3"));
|
|
71
|
-
});
|
|
72
|
-
});
|
package/tsconfig.json
DELETED
package/tsup.config.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { type Options, defineConfig } from "tsup";
|
|
2
|
-
|
|
3
|
-
type Config =
|
|
4
|
-
| Options
|
|
5
|
-
| Options[]
|
|
6
|
-
| ((overrideOptions: Options) => Options | Options[] | Promise<Options | Options[]>);
|
|
7
|
-
|
|
8
|
-
export default defineConfig({
|
|
9
|
-
entry: [
|
|
10
|
-
"src/Accordion/index.ts",
|
|
11
|
-
"src/Breadcrumb/index.ts",
|
|
12
|
-
"src/Calendar/index.ts",
|
|
13
|
-
"src/Contextual/index.ts",
|
|
14
|
-
"src/Dialog/index.ts",
|
|
15
|
-
"src/Disclosure/index.ts",
|
|
16
|
-
"src/Drawer/index.ts",
|
|
17
|
-
"src/Form/index.ts",
|
|
18
|
-
"src/Menu/index.ts",
|
|
19
|
-
"src/MenuBar/index.ts",
|
|
20
|
-
"src/Modal/index.ts",
|
|
21
|
-
"src/NavMenu/index.ts",
|
|
22
|
-
"src/Notification/index.ts",
|
|
23
|
-
"src/Popover/index.ts",
|
|
24
|
-
"src/TabGroup/index.ts",
|
|
25
|
-
"src/icons/index.ts",
|
|
26
|
-
"src/motion/index.ts",
|
|
27
|
-
],
|
|
28
|
-
format: "esm",
|
|
29
|
-
dts: { entry: ["src/motion/index.ts"] },
|
|
30
|
-
clean: true,
|
|
31
|
-
metafile: true,
|
|
32
|
-
sourcemap: true,
|
|
33
|
-
loader: {
|
|
34
|
-
".torp": "file",
|
|
35
|
-
},
|
|
36
|
-
onSuccess: "npm run build:fix",
|
|
37
|
-
}) satisfies Config as Config;
|
package/vitest.config.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import torpor from "@torpor/unplugin/vite";
|
|
2
|
-
import { type ViteUserConfigFnObject, defineConfig } from "vitest/config";
|
|
3
|
-
|
|
4
|
-
export default defineConfig(({ mode }) => ({
|
|
5
|
-
plugins: [torpor()],
|
|
6
|
-
resolve: {
|
|
7
|
-
conditions: mode === "test" ? ["browser"] : [],
|
|
8
|
-
},
|
|
9
|
-
test: {
|
|
10
|
-
environment: "jsdom",
|
|
11
|
-
},
|
|
12
|
-
})) satisfies ViteUserConfigFnObject as ViteUserConfigFnObject;
|