@torpor/ui 0.1.7 → 0.2.1
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 +47 -0
- package/dist/Accordion/Accordion.torp +25 -13
- package/dist/Accordion/AccordionContent.torp +15 -8
- package/dist/Accordion/AccordionHeader.torp +16 -7
- package/dist/Accordion/AccordionItem.torp +24 -10
- package/dist/Accordion/AccordionTrigger.torp +16 -8
- package/dist/Accordion/AccordionTypes.ts +2 -0
- package/dist/Accordion/index.d.ts +157 -0
- package/dist/Breadcrumb/Breadcrumb.torp +42 -0
- package/dist/Breadcrumb/BreadcrumbItem.torp +28 -0
- package/dist/Breadcrumb/BreadcrumbSeparator.torp +25 -0
- package/dist/Breadcrumb/index.d.ts +84 -0
- package/dist/Breadcrumb/index.js +14 -0
- package/dist/Calendar/Calendar.torp +273 -0
- package/dist/Calendar/CalendarDay.torp +75 -0
- package/dist/Calendar/CalendarTypes.ts +22 -0
- package/dist/Calendar/index.d.ts +36 -0
- package/dist/Calendar/index.js +10 -0
- package/dist/Calendar/index.js.map +1 -0
- package/dist/Dialog/Dialog.torp +16 -6
- package/dist/Dialog/DialogBody.torp +13 -5
- package/dist/Dialog/DialogButton.torp +18 -6
- package/dist/Dialog/DialogFooter.torp +13 -3
- package/dist/Dialog/DialogHeader.torp +13 -4
- package/dist/Dialog/index.d.ts +135 -0
- package/dist/Disclosure/Disclosure.torp +79 -0
- package/dist/Disclosure/DisclosureContent.torp +43 -0
- package/dist/Disclosure/DisclosureHeader.torp +43 -0
- package/dist/Disclosure/DisclosureTrigger.torp +44 -0
- package/dist/Disclosure/DisclosureTypes.ts +14 -0
- package/dist/Disclosure/index.d.ts +113 -0
- package/dist/Disclosure/index.js +18 -0
- package/dist/Disclosure/index.js.map +1 -0
- package/{src/Offscreen/Offscreen.torp → dist/Drawer/Drawer.torp} +20 -19
- package/dist/Drawer/index.d.ts +21 -0
- package/dist/Drawer/index.js +6 -0
- package/dist/Drawer/index.js.map +1 -0
- package/dist/Form/Field.torp +93 -0
- package/dist/Form/Form.torp +131 -0
- package/dist/Form/FormTypes.ts +30 -0
- package/dist/Form/Input.torp +94 -0
- package/dist/Form/Label.torp +31 -0
- package/dist/Form/Message.torp +35 -0
- package/dist/Form/StandardSchemaV1.ts +70 -0
- package/dist/Form/index.d.ts +117 -0
- package/dist/Form/index.js +22 -0
- package/dist/Form/index.js.map +1 -0
- package/dist/Menu/Menu.torp +169 -0
- package/dist/Menu/MenuButton.torp +64 -0
- package/dist/Menu/MenuCheck.torp +81 -0
- package/dist/Menu/MenuGroup.torp +29 -0
- package/dist/Menu/MenuIndicator.torp +38 -0
- package/dist/Menu/MenuPopout.torp +82 -0
- package/dist/Menu/MenuPopoutContent.torp +83 -0
- package/dist/Menu/MenuPopoutTrigger.torp +126 -0
- package/dist/Menu/MenuRadio.torp +99 -0
- package/dist/Menu/MenuRadioGroup.torp +97 -0
- package/dist/Menu/MenuSeparator.torp +24 -0
- package/dist/Menu/MenuTypes.ts +58 -0
- package/dist/Menu/index.d.ts +293 -0
- package/dist/Menu/index.js +46 -0
- package/dist/Menu/index.js.map +1 -0
- package/dist/MenuBar/MenuBar.torp +159 -0
- package/dist/MenuBar/MenuBarItem.torp +115 -0
- package/dist/MenuBar/MenuBarItemContent.torp +117 -0
- package/dist/MenuBar/MenuBarItemTrigger.torp +98 -0
- package/dist/MenuBar/MenuBarTypes.ts +36 -0
- package/dist/MenuBar/index.d.ts +125 -0
- package/dist/MenuBar/index.js +18 -0
- package/dist/MenuBar/index.js.map +1 -0
- package/dist/NavMenu/NavMenu.torp +15 -6
- package/dist/NavMenu/NavMenuButton.torp +14 -7
- package/dist/NavMenu/NavMenuElement.torp +16 -8
- package/dist/NavMenu/NavMenuGroup.torp +14 -5
- package/dist/NavMenu/NavMenuGroupHeader.torp +14 -6
- package/dist/NavMenu/NavMenuLink.torp +18 -10
- package/dist/NavMenu/NavMenuPopout.torp +13 -5
- package/dist/NavMenu/NavMenuPopoutButton.torp +17 -11
- package/dist/NavMenu/NavMenuPopoutContent.torp +42 -30
- package/dist/NavMenu/NavMenuSeparator.torp +12 -3
- package/dist/NavMenu/index.d.ts +259 -0
- package/dist/Notification/Notification.torp +58 -0
- package/dist/Notification/NotificationClose.torp +37 -0
- package/dist/Notification/NotificationContainer.torp +24 -0
- package/dist/Notification/NotificationContent.torp +23 -0
- package/dist/Notification/NotificationTypes.ts +5 -0
- package/dist/Notification/index.d.ts +92 -0
- package/dist/Notification/index.js +36 -0
- package/dist/Notification/index.js.map +1 -0
- package/dist/Notification/showNotification.ts +30 -0
- package/dist/Popover/Popover.torp +22 -8
- package/dist/Popover/PopoverContent.torp +41 -29
- package/dist/Popover/PopoverContentAnchored.torp +52 -44
- package/dist/Popover/PopoverContentContextual.torp +49 -37
- package/dist/Popover/PopoverOverlay.torp +13 -4
- package/dist/Popover/PopoverTrigger.torp +12 -3
- package/dist/Popover/PopoverTriggerContextual.torp +12 -3
- package/dist/Popover/PopoverTriggerHover.torp +14 -5
- package/dist/Popover/index.d.ts +191 -0
- package/dist/TabGroup/TabContent.torp +13 -7
- package/dist/TabGroup/TabGroup.torp +23 -11
- package/dist/TabGroup/TabHeader.torp +16 -7
- package/dist/TabGroup/TabList.torp +15 -6
- package/dist/TabGroup/TabTrigger.torp +14 -6
- package/dist/TabGroup/index.d.ts +150 -0
- package/dist/icons/ArrowDown.torp +15 -0
- package/dist/icons/ArrowLeft.torp +15 -0
- package/dist/icons/ArrowRight.torp +15 -0
- package/dist/icons/ArrowUp.torp +15 -0
- package/dist/icons/Bars.torp +17 -0
- package/dist/icons/Check.torp +15 -0
- package/dist/icons/ChevronDown.torp +15 -0
- package/dist/icons/ChevronLeft.torp +15 -0
- package/dist/icons/ChevronRight.torp +15 -0
- package/dist/icons/ChevronUp.torp +15 -0
- package/dist/icons/Cross.torp +16 -0
- package/dist/icons/Loading.torp +16 -0
- package/dist/icons/Minus.torp +15 -0
- package/dist/icons/Plus.torp +16 -0
- package/dist/icons/index.d.ts +142 -0
- package/dist/icons/index.js +58 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/{motion.d.cts → index.d.ts} +2 -2
- package/dist/metafile-esm.json +1 -1
- package/dist/motion/fade.ts +7 -0
- package/dist/motion/index.d.ts +2 -0
- package/dist/{motion.js → motion/index.js} +1 -1
- package/dist/motion/index.js.map +1 -0
- package/dist/mount/index.d.ts +2 -0
- package/dist/utils/dateUtils.ts +244 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/setPopoverPosition.ts +4 -0
- package/package.json +60 -35
- package/scripts/postbuild.ts +42 -5
- package/src/Accordion/Accordion.torp +25 -13
- package/src/Accordion/AccordionContent.torp +15 -8
- package/src/Accordion/AccordionHeader.torp +16 -7
- package/src/Accordion/AccordionItem.torp +24 -10
- package/src/Accordion/AccordionTrigger.torp +16 -8
- package/src/Accordion/AccordionTypes.ts +2 -0
- package/src/Breadcrumb/Breadcrumb.torp +42 -0
- package/src/Breadcrumb/BreadcrumbItem.torp +28 -0
- package/src/Breadcrumb/BreadcrumbSeparator.torp +25 -0
- package/src/Breadcrumb/index.ts +5 -0
- package/src/Calendar/Calendar.torp +273 -0
- package/src/Calendar/CalendarDay.torp +75 -0
- package/src/Calendar/CalendarTypes.ts +22 -0
- package/src/Calendar/index.ts +4 -0
- package/src/Dialog/Dialog.torp +16 -6
- package/src/Dialog/DialogBody.torp +13 -5
- package/src/Dialog/DialogButton.torp +18 -6
- package/src/Dialog/DialogFooter.torp +13 -3
- package/src/Dialog/DialogHeader.torp +13 -4
- package/src/Disclosure/Disclosure.torp +79 -0
- package/src/Disclosure/DisclosureContent.torp +43 -0
- package/src/Disclosure/DisclosureHeader.torp +43 -0
- package/src/Disclosure/DisclosureTrigger.torp +44 -0
- package/src/Disclosure/DisclosureTypes.ts +14 -0
- package/src/Disclosure/index.ts +6 -0
- package/{dist/Offscreen/Offscreen.torp → src/Drawer/Drawer.torp} +20 -19
- package/src/Drawer/index.ts +3 -0
- package/src/Form/Field.torp +93 -0
- package/src/Form/Form.torp +131 -0
- package/src/Form/FormTypes.ts +30 -0
- package/src/Form/Input.torp +94 -0
- package/src/Form/Label.torp +31 -0
- package/src/Form/Message.torp +35 -0
- package/src/Form/StandardSchemaV1.ts +70 -0
- package/src/Form/index.ts +7 -0
- package/src/Menu/Menu.torp +169 -0
- package/src/Menu/MenuButton.torp +64 -0
- package/src/Menu/MenuCheck.torp +81 -0
- package/src/Menu/MenuGroup.torp +29 -0
- package/src/Menu/MenuIndicator.torp +38 -0
- package/src/Menu/MenuPopout.torp +82 -0
- package/src/Menu/MenuPopoutContent.torp +83 -0
- package/src/Menu/MenuPopoutTrigger.torp +126 -0
- package/src/Menu/MenuRadio.torp +99 -0
- package/src/Menu/MenuRadioGroup.torp +97 -0
- package/src/Menu/MenuSeparator.torp +24 -0
- package/src/Menu/MenuTypes.ts +58 -0
- package/src/Menu/index.ts +25 -0
- package/src/MenuBar/MenuBar.torp +159 -0
- package/src/MenuBar/MenuBarItem.torp +115 -0
- package/src/MenuBar/MenuBarItemContent.torp +117 -0
- package/src/MenuBar/MenuBarItemTrigger.torp +98 -0
- package/src/MenuBar/MenuBarTypes.ts +36 -0
- package/src/MenuBar/index.ts +6 -0
- package/src/NavMenu/NavMenu.torp +15 -6
- package/src/NavMenu/NavMenuButton.torp +14 -7
- package/src/NavMenu/NavMenuElement.torp +16 -8
- package/src/NavMenu/NavMenuGroup.torp +14 -5
- package/src/NavMenu/NavMenuGroupHeader.torp +14 -6
- package/src/NavMenu/NavMenuLink.torp +18 -10
- package/src/NavMenu/NavMenuPopout.torp +13 -5
- package/src/NavMenu/NavMenuPopoutButton.torp +17 -11
- package/src/NavMenu/NavMenuPopoutContent.torp +42 -30
- package/src/NavMenu/NavMenuSeparator.torp +12 -3
- package/src/Notification/Notification.torp +58 -0
- package/src/Notification/NotificationClose.torp +37 -0
- package/src/Notification/NotificationContainer.torp +24 -0
- package/src/Notification/NotificationContent.torp +23 -0
- package/src/Notification/NotificationTypes.ts +5 -0
- package/src/Notification/index.ts +13 -0
- package/src/Notification/showNotification.ts +30 -0
- package/src/Popover/Popover.torp +22 -8
- package/src/Popover/PopoverContent.torp +41 -29
- package/src/Popover/PopoverContentAnchored.torp +52 -44
- package/src/Popover/PopoverContentContextual.torp +49 -37
- package/src/Popover/PopoverOverlay.torp +13 -4
- package/src/Popover/PopoverTrigger.torp +12 -3
- package/src/Popover/PopoverTriggerContextual.torp +12 -3
- package/src/Popover/PopoverTriggerHover.torp +14 -5
- package/src/Slider/Slider.torp +83 -0
- package/src/Slider/index.ts +3 -0
- package/src/TabGroup/TabContent.torp +13 -7
- package/src/TabGroup/TabGroup.torp +23 -11
- package/src/TabGroup/TabHeader.torp +16 -7
- package/src/TabGroup/TabList.torp +15 -6
- package/src/TabGroup/TabTrigger.torp +14 -6
- package/src/icons/ArrowDown.torp +15 -0
- package/src/icons/ArrowLeft.torp +15 -0
- package/src/icons/ArrowRight.torp +15 -0
- package/src/icons/ArrowUp.torp +15 -0
- package/src/icons/Bars.torp +17 -0
- package/src/icons/Check.torp +15 -0
- package/src/icons/ChevronDown.torp +15 -0
- package/src/icons/ChevronLeft.torp +15 -0
- package/src/icons/ChevronRight.torp +15 -0
- package/src/icons/ChevronUp.torp +15 -0
- package/src/icons/Cross.torp +16 -0
- package/src/icons/Loading.torp +16 -0
- package/src/icons/Minus.torp +15 -0
- package/src/icons/Plus.torp +16 -0
- package/src/icons/index.ts +31 -0
- package/src/motion/fade.ts +2 -2
- package/src/motion/index.ts +3 -0
- package/src/utils/dateUtils.ts +244 -0
- package/src/utils/setPopoverPosition.ts +4 -0
- package/test/Accordion/components/AccordionAccessibility.torp +2 -0
- package/test/Accordion/components/AccordionKeyboard.torp +2 -0
- package/test/Accordion/components/AccordionList.torp +2 -0
- package/test/Accordion/components/AccordionMultiple.torp +2 -0
- package/test/Accordion/components/AccordionSingle.torp +2 -0
- package/test/Breadcrumb/accessibility.test.ts +29 -0
- package/test/Breadcrumb/basic.test.ts +17 -0
- package/test/Breadcrumb/components/BreadcrumbTest.torp +15 -0
- package/test/Calendar/components/CalendarTest.torp +9 -0
- package/test/Calendar/default.test.ts +18 -0
- package/test/Dialog/components/DialogAccessibility.torp +5 -5
- package/test/Disclosure/accessibility.test.ts +31 -0
- package/test/Disclosure/components/DisclosureTest.torp +19 -0
- package/test/Disclosure/default.test.ts +15 -0
- package/test/Disclosure/toggle.test.ts +20 -0
- package/test/Form/components/FieldTest.torp +25 -0
- package/test/Form/components/FormTest.torp +31 -0
- package/test/Form/components/InputTest.torp +9 -0
- package/test/Form/field.test.ts +34 -0
- package/test/Form/form.test.ts +34 -0
- package/test/Form/input.test.ts +19 -0
- package/test/Menu/accessibility.test.ts +83 -0
- package/test/Menu/basic.test.ts +58 -0
- package/test/Menu/components/MenuAccessibility.torp +59 -0
- package/test/Menu/components/MenuBasic.torp +58 -0
- package/test/MenuBar/accessibility.test.ts +87 -0
- package/test/MenuBar/basic.test.ts +22 -0
- package/test/MenuBar/components/MenuBarAccessibility.torp +34 -0
- package/test/MenuBar/components/MenuBarBasic.torp +25 -0
- package/test/NavMenu/basic.test.ts +1 -1
- package/test/NavMenu/components/{NavMenu.torp → NavMenuBasic.torp} +1 -1
- package/test/Notification/accessibility.test.ts +21 -0
- package/test/Notification/components/CustomNotification.torp +14 -0
- package/test/Notification/components/NotificationAccessibility.torp +14 -0
- package/test/Notification/components/NotificationFunction.torp +20 -0
- package/test/Notification/components/NotificationVariable.torp +22 -0
- package/test/Notification/function.test.ts +25 -0
- package/test/Notification/variable.test.ts +25 -0
- package/test/Popover/components/CustomDialog.torp +25 -0
- package/test/Popover/components/PromptFunction.torp +19 -0
- package/test/Popover/components/PromptVariable.torp +38 -0
- package/test/Popover/function.test.ts +26 -0
- package/test/Popover/variable.test.ts +27 -0
- package/test/TabGroup/components/TabGroupAccessibility.torp +2 -0
- package/test/TabGroup/components/TabGroupKeyboard.torp +2 -0
- package/test/TabGroup/components/TabGroupList.torp +2 -0
- package/test/TabGroup/components/TabGroupTrigger.torp +2 -0
- package/tsup.config.ts +12 -4
- package/dist/Accordion/index.cjs +0 -53
- package/dist/Accordion/index.cjs.map +0 -1
- package/dist/Dialog/index.cjs +0 -53
- package/dist/Dialog/index.cjs.map +0 -1
- package/dist/NavMenu/index.cjs +0 -78
- package/dist/NavMenu/index.cjs.map +0 -1
- package/dist/Offscreen/index.cjs +0 -33
- package/dist/Offscreen/index.cjs.map +0 -1
- package/dist/Offscreen/index.js +0 -6
- package/dist/Popover/index.cjs +0 -222
- package/dist/Popover/index.cjs.map +0 -1
- package/dist/TabGroup/index.cjs +0 -53
- package/dist/TabGroup/index.cjs.map +0 -1
- package/dist/metafile-cjs.json +0 -1
- package/dist/motion.cjs +0 -34
- package/dist/motion.cjs.map +0 -1
- package/dist/motion.d.ts +0 -6
- package/dist/motion.js.map +0 -1
- package/src/Accordion.ts +0 -7
- package/src/Dialog.ts +0 -7
- package/src/NavMenu.ts +0 -23
- package/src/Offscreen/index.ts +0 -3
- package/src/Popover.ts +0 -29
- package/src/TabGroup.ts +0 -7
- package/src/motion.ts +0 -3
- /package/dist/{Offscreen → Breadcrumb}/index.js.map +0 -0
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
import { TabGroupContextName,
|
|
1
|
+
import { TabGroupContextName, type TabGroupContext } from "./TabGroupTypes";
|
|
2
|
+
|
|
3
|
+
interface TabListProps {
|
|
4
|
+
/** An ID for the root element */
|
|
5
|
+
id?: string;
|
|
6
|
+
/** Class name(s) for the root element */
|
|
7
|
+
class?: string,
|
|
8
|
+
/** An ARIA label for describing the tab list to screen readers */
|
|
9
|
+
ariaLabel?: string,
|
|
10
|
+
}
|
|
2
11
|
|
|
3
12
|
/**
|
|
4
13
|
* A component that holds the TabHeaders of a TabGroup.
|
|
@@ -12,10 +21,10 @@ import { TabGroupContextName, TabItemContextName, type TabGroupContext, type Tab
|
|
|
12
21
|
* </TabHeader>
|
|
13
22
|
* </TabList>
|
|
14
23
|
* ```
|
|
15
|
-
*
|
|
16
|
-
* @prop {string} ariaLabel -- An ARIA label for describing the tab list to screen readers
|
|
17
24
|
*/
|
|
18
|
-
export default function TabList($props:
|
|
25
|
+
export default function TabList($props: TabListProps) {
|
|
26
|
+
$props ??= $watch({});
|
|
27
|
+
|
|
19
28
|
// Get stuff out of the TabGroupContext
|
|
20
29
|
const context = $context[TabGroupContextName] as TabGroupContext;
|
|
21
30
|
if (!context) {
|
|
@@ -35,7 +44,7 @@ export default function TabList($props: any) {
|
|
|
35
44
|
|
|
36
45
|
@render {
|
|
37
46
|
<div
|
|
38
|
-
|
|
47
|
+
{$props.id}
|
|
39
48
|
class={`torp-tab-list ${$props.class ?? ""}`.trim()}
|
|
40
49
|
role="tablist"
|
|
41
50
|
aria-label={$props.ariaLabel}
|
|
@@ -44,7 +53,7 @@ export default function TabList($props: any) {
|
|
|
44
53
|
tabindex="0"
|
|
45
54
|
onfocus={handleFocus}
|
|
46
55
|
>
|
|
47
|
-
|
|
56
|
+
<slot />
|
|
48
57
|
</div>
|
|
49
58
|
}
|
|
50
59
|
}
|
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
import getId from "../utils/getId";
|
|
2
2
|
import { TabItemContextName, type TabItemContext } from "./TabGroupTypes";
|
|
3
3
|
|
|
4
|
+
interface TabTriggerProps {
|
|
5
|
+
/** An ID for the root element */
|
|
6
|
+
id?: string;
|
|
7
|
+
/** Class name(s) for the root element */
|
|
8
|
+
class?: string,
|
|
9
|
+
}
|
|
10
|
+
|
|
4
11
|
/**
|
|
5
12
|
* A header button for a tab item, which can be used to reveal an associated TabContent.
|
|
6
13
|
*/
|
|
7
|
-
export default function TabTrigger() {
|
|
8
|
-
|
|
9
|
-
|
|
14
|
+
export default function TabTrigger($props: TabTriggerProps) {
|
|
15
|
+
$props ??= $watch({});
|
|
10
16
|
$props.id ||= getId();
|
|
11
17
|
|
|
18
|
+
let button: HTMLButtonElement;
|
|
19
|
+
|
|
12
20
|
// Get stuff out of the TabItemContext
|
|
13
21
|
const context = $context[TabItemContextName] as TabItemContext;
|
|
14
22
|
if (!context) {
|
|
15
23
|
throw new Error("TabTrigger must be contained within a TabHeader");
|
|
16
24
|
}
|
|
17
|
-
let $state =
|
|
25
|
+
let $state = context.state;
|
|
18
26
|
|
|
19
27
|
// Set the header ID so that it can be used with aria-labelledby in TabContent
|
|
20
28
|
$state.headerId = $props.id;
|
|
@@ -44,7 +52,7 @@ export default function TabTrigger() {
|
|
|
44
52
|
@render {
|
|
45
53
|
<button
|
|
46
54
|
type="button"
|
|
47
|
-
|
|
55
|
+
{$props.id}
|
|
48
56
|
class={`torp-tab-trigger ${$props.class ?? ""}`.trim()}
|
|
49
57
|
role="tab"
|
|
50
58
|
tabindex="-1"
|
|
@@ -59,7 +67,7 @@ export default function TabTrigger() {
|
|
|
59
67
|
onclick={handleClick}
|
|
60
68
|
onkeydown={handleKey}
|
|
61
69
|
>
|
|
62
|
-
|
|
70
|
+
<slot />
|
|
63
71
|
</button>
|
|
64
72
|
}
|
|
65
73
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export default function ArrowDown($props: any) {
|
|
2
|
+
@render {
|
|
3
|
+
<svg
|
|
4
|
+
{$props?.id}
|
|
5
|
+
class={`torp-icon ${$props?.class ?? ""}`.trim()}
|
|
6
|
+
viewBox="0 0 100 100"
|
|
7
|
+
stroke-linejoin="round"
|
|
8
|
+
stroke-width="12"
|
|
9
|
+
>
|
|
10
|
+
<g>
|
|
11
|
+
<polygon points="25,40 50,70 75,40" />
|
|
12
|
+
</g>
|
|
13
|
+
</svg>
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export default function ArrowLeft($props: any) {
|
|
2
|
+
@render {
|
|
3
|
+
<svg
|
|
4
|
+
{$props?.id}
|
|
5
|
+
class={`torp-icon ${$props?.class ?? ""}`.trim()}
|
|
6
|
+
viewBox="0 0 100 100"
|
|
7
|
+
stroke-linejoin="round"
|
|
8
|
+
stroke-width="12"
|
|
9
|
+
>
|
|
10
|
+
<g>
|
|
11
|
+
<polygon points="60,25 30,50 60,75" />
|
|
12
|
+
</g>
|
|
13
|
+
</svg>
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export default function ArrowRight($props: any) {
|
|
2
|
+
@render {
|
|
3
|
+
<svg
|
|
4
|
+
{$props?.id}
|
|
5
|
+
class={`torp-icon ${$props?.class ?? ""}`.trim()}
|
|
6
|
+
viewBox="0 0 100 100"
|
|
7
|
+
stroke-linejoin="round"
|
|
8
|
+
stroke-width="12"
|
|
9
|
+
>
|
|
10
|
+
<g>
|
|
11
|
+
<polygon points="40,25 70,50 40,75" />
|
|
12
|
+
</g>
|
|
13
|
+
</svg>
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export default function ArrowUp($props: any) {
|
|
2
|
+
@render {
|
|
3
|
+
<svg
|
|
4
|
+
{$props?.id}
|
|
5
|
+
class={`torp-icon ${$props?.class ?? ""}`.trim()}
|
|
6
|
+
viewBox="0 0 100 100"
|
|
7
|
+
stroke-linejoin="round"
|
|
8
|
+
stroke-width="12"
|
|
9
|
+
>
|
|
10
|
+
<g>
|
|
11
|
+
<polygon points="25,60 50,30 75,60" />
|
|
12
|
+
</g>
|
|
13
|
+
</svg>
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export default function Bars($props: any) {
|
|
2
|
+
@render {
|
|
3
|
+
<svg
|
|
4
|
+
{$props?.id}
|
|
5
|
+
class={`torp-icon ${$props?.class ?? ""}`.trim()}
|
|
6
|
+
viewBox="0 0 100 100"
|
|
7
|
+
stroke-linejoin="round"
|
|
8
|
+
stroke-width="12"
|
|
9
|
+
>
|
|
10
|
+
<g>
|
|
11
|
+
<path d="M10,25 L90,25" />
|
|
12
|
+
<path d="M10,50 L90,50" />
|
|
13
|
+
<path d="M10,75 L90,75" />
|
|
14
|
+
</g>
|
|
15
|
+
</svg>
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export default function Check($props: any) {
|
|
2
|
+
@render {
|
|
3
|
+
<svg
|
|
4
|
+
{$props?.id}
|
|
5
|
+
class={`torp-icon ${$props?.class ?? ""}`.trim()}
|
|
6
|
+
viewBox="0 0 100 100"
|
|
7
|
+
stroke-linejoin="round"
|
|
8
|
+
stroke-width="12"
|
|
9
|
+
>
|
|
10
|
+
<g>
|
|
11
|
+
<path d="M10,55 L35,80 L90,25" fill="none" />
|
|
12
|
+
</g>
|
|
13
|
+
</svg>
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export default function ChevronDown($props: any) {
|
|
2
|
+
@render {
|
|
3
|
+
<svg
|
|
4
|
+
{$props?.id}
|
|
5
|
+
class={`torp-icon ${$props?.class ?? ""}`.trim()}
|
|
6
|
+
viewBox="0 0 100 100"
|
|
7
|
+
stroke-linejoin="round"
|
|
8
|
+
stroke-width="12"
|
|
9
|
+
>
|
|
10
|
+
<g>
|
|
11
|
+
<path d="M10,30 L50,70 L90,30" fill="none" />
|
|
12
|
+
</g>
|
|
13
|
+
</svg>
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export default function ChevronLeft($props: any) {
|
|
2
|
+
@render {
|
|
3
|
+
<svg
|
|
4
|
+
{$props?.id}
|
|
5
|
+
class={`torp-icon ${$props?.class ?? ""}`.trim()}
|
|
6
|
+
viewBox="0 0 100 100"
|
|
7
|
+
stroke-linejoin="round"
|
|
8
|
+
stroke-width="12"
|
|
9
|
+
>
|
|
10
|
+
<g>
|
|
11
|
+
<path d="M70,10 L30,50 L70,90" fill="none" />
|
|
12
|
+
</g>
|
|
13
|
+
</svg>
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export default function ChevronRight($props: any) {
|
|
2
|
+
@render {
|
|
3
|
+
<svg
|
|
4
|
+
{$props?.id}
|
|
5
|
+
class={`torp-icon ${$props?.class ?? ""}`.trim()}
|
|
6
|
+
viewBox="0 0 100 100"
|
|
7
|
+
stroke-linejoin="round"
|
|
8
|
+
stroke-width="12"
|
|
9
|
+
>
|
|
10
|
+
<g>
|
|
11
|
+
<path d="M30,10 L70,50 L30,90" fill="none" />
|
|
12
|
+
</g>
|
|
13
|
+
</svg>
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export default function ChevronUp($props: any) {
|
|
2
|
+
@render {
|
|
3
|
+
<svg
|
|
4
|
+
{$props?.id}
|
|
5
|
+
class={`torp-icon ${$props?.class ?? ""}`.trim()}
|
|
6
|
+
viewBox="0 0 100 100"
|
|
7
|
+
stroke-linejoin="round"
|
|
8
|
+
stroke-width="12"
|
|
9
|
+
>
|
|
10
|
+
<g>
|
|
11
|
+
<path d="M10,70 L50,30 L90,70" fill="none" />
|
|
12
|
+
</g>
|
|
13
|
+
</svg>
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export default function Cross($props: any) {
|
|
2
|
+
@render {
|
|
3
|
+
<svg
|
|
4
|
+
{$props?.id}
|
|
5
|
+
class={`torp-icon ${$props?.class ?? ""}`.trim()}
|
|
6
|
+
viewBox="0 0 100 100"
|
|
7
|
+
stroke-linejoin="round"
|
|
8
|
+
stroke-width="12"
|
|
9
|
+
>
|
|
10
|
+
<g>
|
|
11
|
+
<path d="M15,15 L85,85" />
|
|
12
|
+
<path d="M15,85 L85,15" />
|
|
13
|
+
</g>
|
|
14
|
+
</svg>
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export default function Loading($props: any) {
|
|
2
|
+
@render {
|
|
3
|
+
<svg
|
|
4
|
+
{$props?.id}
|
|
5
|
+
class={`torp-icon ${$props?.class ?? ""}`.trim()}
|
|
6
|
+
viewBox="0 0 100 100"
|
|
7
|
+
stroke-linejoin="round"
|
|
8
|
+
stroke-width="20"
|
|
9
|
+
>
|
|
10
|
+
<g>
|
|
11
|
+
<circle cx="50" cy="50" r="40" fill="none" opacity="0.3" />
|
|
12
|
+
<path d="M 22 22 A 40 40 0 0 1 78 22" fill="none" />
|
|
13
|
+
</g>
|
|
14
|
+
</svg>
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export default function Minus($props: any) {
|
|
2
|
+
@render {
|
|
3
|
+
<svg
|
|
4
|
+
{$props?.id}
|
|
5
|
+
class={`torp-icon ${$props?.class ?? ""}`.trim()}
|
|
6
|
+
viewBox="0 0 100 100"
|
|
7
|
+
stroke-linejoin="round"
|
|
8
|
+
stroke-width="12"
|
|
9
|
+
>
|
|
10
|
+
<g>
|
|
11
|
+
<path d="M10,50 L90,50" />
|
|
12
|
+
</g>
|
|
13
|
+
</svg>
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export default function Plus($props: any) {
|
|
2
|
+
@render {
|
|
3
|
+
<svg
|
|
4
|
+
{$props?.id}
|
|
5
|
+
class={`torp-icon ${$props?.class ?? ""}`.trim()}
|
|
6
|
+
viewBox="0 0 100 100"
|
|
7
|
+
stroke-linejoin="round"
|
|
8
|
+
stroke-width="12"
|
|
9
|
+
>
|
|
10
|
+
<g>
|
|
11
|
+
<path d="M50,10 L50,90" />
|
|
12
|
+
<path d="M10,50 L90,50" />
|
|
13
|
+
</g>
|
|
14
|
+
</svg>
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import ArrowDown from "./ArrowDown.torp";
|
|
2
|
+
import ArrowLeft from "./ArrowLeft.torp";
|
|
3
|
+
import ArrowRight from "./ArrowRight.torp";
|
|
4
|
+
import ArrowUp from "./ArrowUp.torp";
|
|
5
|
+
import Bars from "./Bars.torp";
|
|
6
|
+
import Check from "./Check.torp";
|
|
7
|
+
import ChevronDown from "./ChevronDown.torp";
|
|
8
|
+
import ChevronLeft from "./ChevronLeft.torp";
|
|
9
|
+
import ChevronRight from "./ChevronRight.torp";
|
|
10
|
+
import ChevronUp from "./ChevronUp.torp";
|
|
11
|
+
import Cross from "./Cross.torp";
|
|
12
|
+
import Loading from "./Loading.torp";
|
|
13
|
+
import Minus from "./Minus.torp";
|
|
14
|
+
import Plus from "./Plus.torp";
|
|
15
|
+
|
|
16
|
+
export {
|
|
17
|
+
ArrowDown,
|
|
18
|
+
ArrowLeft,
|
|
19
|
+
ArrowRight,
|
|
20
|
+
ArrowUp,
|
|
21
|
+
Bars,
|
|
22
|
+
Check,
|
|
23
|
+
ChevronDown,
|
|
24
|
+
ChevronLeft,
|
|
25
|
+
ChevronRight,
|
|
26
|
+
ChevronUp,
|
|
27
|
+
Cross,
|
|
28
|
+
Loading,
|
|
29
|
+
Minus,
|
|
30
|
+
Plus,
|
|
31
|
+
};
|
package/src/motion/fade.ts
CHANGED
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
// TODO: Can we get these from the locale?
|
|
2
|
+
const monthNames: string[] = [
|
|
3
|
+
"January",
|
|
4
|
+
"February",
|
|
5
|
+
"March",
|
|
6
|
+
"April",
|
|
7
|
+
"May",
|
|
8
|
+
"June",
|
|
9
|
+
"July",
|
|
10
|
+
"August",
|
|
11
|
+
"September",
|
|
12
|
+
"October",
|
|
13
|
+
"November",
|
|
14
|
+
"December",
|
|
15
|
+
];
|
|
16
|
+
const shortMonthNames: string[] = monthNames.map((n) => n.substring(0, 3).toLowerCase());
|
|
17
|
+
|
|
18
|
+
const dayNames: string[] = [
|
|
19
|
+
"Sunday",
|
|
20
|
+
"Monday",
|
|
21
|
+
"Tuesday",
|
|
22
|
+
"Wednesday",
|
|
23
|
+
"Thursday",
|
|
24
|
+
"Friday",
|
|
25
|
+
"Saturday",
|
|
26
|
+
"Sunday",
|
|
27
|
+
];
|
|
28
|
+
const shortDayNames: string[] = dayNames.map((n) => n.substring(0, 3).toLowerCase());
|
|
29
|
+
|
|
30
|
+
export { monthNames, shortMonthNames, dayNames, shortDayNames };
|
|
31
|
+
|
|
32
|
+
export function areDatesEqual(date1: Date, date2: Date): boolean {
|
|
33
|
+
if ((date1 && !date2) || (date2 && !date1)) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
return (
|
|
37
|
+
date1.getFullYear() === date2.getFullYear() &&
|
|
38
|
+
date1.getMonth() === date2.getMonth() &&
|
|
39
|
+
date1.getDate() === date2.getDate()
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function parseDateTime(text: string, dateOrder: string): Date {
|
|
44
|
+
const parts = text
|
|
45
|
+
.toString()
|
|
46
|
+
.toLowerCase()
|
|
47
|
+
.split(/[.,/ :-]/);
|
|
48
|
+
|
|
49
|
+
const today = new Date();
|
|
50
|
+
let day = today.getDate();
|
|
51
|
+
let month = today.getMonth();
|
|
52
|
+
let year = today.getFullYear();
|
|
53
|
+
let hour = 9;
|
|
54
|
+
let minute = 0;
|
|
55
|
+
//let ampm = "";
|
|
56
|
+
|
|
57
|
+
let dayPart = -1;
|
|
58
|
+
let monthPart = -1;
|
|
59
|
+
let yearPart = -1;
|
|
60
|
+
//let hourPart = -1;
|
|
61
|
+
|
|
62
|
+
// Try to get the month if it's been supplied as a word
|
|
63
|
+
for (let i = 0; i < parts.length; i++) {
|
|
64
|
+
const index = shortMonthNames.indexOf(parts[i].substring(0, 3));
|
|
65
|
+
if (index !== -1) {
|
|
66
|
+
month = index;
|
|
67
|
+
monthPart = i;
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Get each date part based on the dateOrder supplied
|
|
73
|
+
const dateOrderLower = dateOrder.toLowerCase();
|
|
74
|
+
for (let i = 0; i < dateOrder.length; i++) {
|
|
75
|
+
if (dateOrderLower[i] === "d") {
|
|
76
|
+
const dayResult = getDayPart(parts, monthPart, yearPart);
|
|
77
|
+
if (dayResult) {
|
|
78
|
+
day = dayResult.value;
|
|
79
|
+
dayPart = dayResult.part;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (dateOrderLower[i] === "m" && monthPart === -1) {
|
|
83
|
+
const monthResult = getMonthPart(parts, dayPart, yearPart);
|
|
84
|
+
if (monthResult) {
|
|
85
|
+
month = monthResult.value;
|
|
86
|
+
monthPart = monthResult.part;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (dateOrderLower[i] === "y") {
|
|
90
|
+
const yearResult = getYearPart(parts, dayPart, monthPart);
|
|
91
|
+
if (yearResult) {
|
|
92
|
+
year = yearResult.value;
|
|
93
|
+
yearPart = yearResult.part;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// TODO: Time...
|
|
99
|
+
//if (includeTime) {
|
|
100
|
+
// // Hour part is the first part that isn't a date part
|
|
101
|
+
// for (let i = 0; i < parts.length; i++) {
|
|
102
|
+
// if (i !== yearPart && i !== monthPart && i !== dayPart) {
|
|
103
|
+
// const maybehour = parseInt(parts[i])
|
|
104
|
+
// if (!isNaN(maybehour)) {
|
|
105
|
+
// hour = maybehour
|
|
106
|
+
// hourPart = i
|
|
107
|
+
// break
|
|
108
|
+
// }
|
|
109
|
+
// }
|
|
110
|
+
// }
|
|
111
|
+
//
|
|
112
|
+
// // Minute part is the first part that isn't a date part or the hour part
|
|
113
|
+
// for (let i = 0; i < parts.length; i++) {
|
|
114
|
+
// if (i !== yearPart && i !== monthPart && i !== dayPart && i !== hourPart) {
|
|
115
|
+
// const maybeminute = parseInt(parts[i])
|
|
116
|
+
// if (!isNaN(maybeminute)) {
|
|
117
|
+
// minute = maybeminute
|
|
118
|
+
// break
|
|
119
|
+
// }
|
|
120
|
+
// }
|
|
121
|
+
// }
|
|
122
|
+
//
|
|
123
|
+
// // Look for AM or PM
|
|
124
|
+
// for (let i = 0; i < parts.length; i++) {
|
|
125
|
+
// if (parts[i] === 'am' || parts[i] === 'pm') {
|
|
126
|
+
// ampm = parts[i].toString().toUpperCase()
|
|
127
|
+
// if (ampm === 'PM') {
|
|
128
|
+
// hour = hour + 12
|
|
129
|
+
// }
|
|
130
|
+
// break
|
|
131
|
+
// }
|
|
132
|
+
// }
|
|
133
|
+
//}
|
|
134
|
+
|
|
135
|
+
return new Date(year, month, day, hour, minute);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
interface DatePart {
|
|
139
|
+
value: number;
|
|
140
|
+
part: number;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
function getDayPart(parts: string[], monthPart: number, yearPart: number): DatePart | undefined {
|
|
144
|
+
for (let i = 0; i < parts.length; i++) {
|
|
145
|
+
if (i !== monthPart && i !== yearPart) {
|
|
146
|
+
const maybeday = parseInt(parts[i]);
|
|
147
|
+
if (!isNaN(maybeday)) {
|
|
148
|
+
const value = maybeday;
|
|
149
|
+
const part = i;
|
|
150
|
+
return { value, part };
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
function getMonthPart(parts: string[], dayPart: number, yearPart: number): DatePart | undefined {
|
|
157
|
+
for (let i = 0; i < parts.length; i++) {
|
|
158
|
+
if (i !== dayPart && i !== yearPart) {
|
|
159
|
+
const maybemonth = parseInt(parts[i]);
|
|
160
|
+
if (!isNaN(maybemonth)) {
|
|
161
|
+
const value = maybemonth - 1;
|
|
162
|
+
const part = i;
|
|
163
|
+
return { value, part };
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
function getYearPart(parts: string[], dayPart: number, monthPart: number): DatePart | undefined {
|
|
170
|
+
for (let i = 0; i < parts.length; i++) {
|
|
171
|
+
if (i !== monthPart && i !== dayPart) {
|
|
172
|
+
const maybeyear = parseInt(parts[i]);
|
|
173
|
+
if (!isNaN(maybeyear)) {
|
|
174
|
+
const value = maybeyear < 100 ? maybeyear + 2000 : maybeyear;
|
|
175
|
+
const part = i;
|
|
176
|
+
return { value, part };
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
export function formatDate(value: Date, dateFormat: string): string {
|
|
183
|
+
if (!value) {
|
|
184
|
+
return "";
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
const date = new Date(value);
|
|
188
|
+
|
|
189
|
+
// Build the text that will be displayed
|
|
190
|
+
return dateFormat.replace(/(d+)|(M+)|(y+)/g, (m) => {
|
|
191
|
+
if (m.indexOf("d") >= 0) {
|
|
192
|
+
return formatDay(date, m);
|
|
193
|
+
} else if (m.indexOf("M") >= 0) {
|
|
194
|
+
return formatMonth(date, m);
|
|
195
|
+
} else if (m.indexOf("y") >= 0) {
|
|
196
|
+
return formatYear(date, m);
|
|
197
|
+
} else {
|
|
198
|
+
throw new Error("Invalid date format string");
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
// TODO: Time
|
|
203
|
+
//if (includeTime) {
|
|
204
|
+
// const ampm = hour >= 12 ? 'PM' : 'AM'
|
|
205
|
+
// hour = hour % 12
|
|
206
|
+
// hour = hour || 12 // the hour '0' should be '12'
|
|
207
|
+
//
|
|
208
|
+
// minute = minute < 10 ? '0' + minute : minute
|
|
209
|
+
// text = text + ' ' + hour + ':' + minute + ' ' + ampm
|
|
210
|
+
//}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
function formatDay(date: Date, d: string): string {
|
|
214
|
+
if (d.length >= 4) {
|
|
215
|
+
return dayNames[date.getDay()];
|
|
216
|
+
} else if (d.length === 3) {
|
|
217
|
+
return dayNames[date.getDay()].substring(0, 3);
|
|
218
|
+
} else if (d.length == 2) {
|
|
219
|
+
let text = date.getDate().toString();
|
|
220
|
+
return text.length < 2 ? "0" + text : text;
|
|
221
|
+
} else {
|
|
222
|
+
return date.getDate().toString();
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
function formatMonth(date: Date, m: string): string {
|
|
227
|
+
if (m.length >= 4) {
|
|
228
|
+
return monthNames[date.getMonth()];
|
|
229
|
+
} else if (m.length === 3) {
|
|
230
|
+
return monthNames[date.getMonth()].substring(0, 3);
|
|
231
|
+
} else if (m.length == 2) {
|
|
232
|
+
let text = date.getMonth().toString();
|
|
233
|
+
return text.length < 2 ? "0" + text : text;
|
|
234
|
+
} else {
|
|
235
|
+
return date.getMonth().toString();
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
function formatYear(date: Date, y: string): string {
|
|
240
|
+
return date
|
|
241
|
+
.getFullYear()
|
|
242
|
+
.toString()
|
|
243
|
+
.substring(4 - y.length, y.length);
|
|
244
|
+
}
|
|
@@ -42,6 +42,7 @@ export default function setPopoverPosition(
|
|
|
42
42
|
break;
|
|
43
43
|
}
|
|
44
44
|
default: {
|
|
45
|
+
// eslint-disable-next-line restrict-template-expressions
|
|
45
46
|
throw new Error(`Invalid MenuPopout side: ${side}`);
|
|
46
47
|
}
|
|
47
48
|
}
|
|
@@ -68,6 +69,7 @@ export default function setPopoverPosition(
|
|
|
68
69
|
break;
|
|
69
70
|
}
|
|
70
71
|
default: {
|
|
72
|
+
// eslint-disable-next-line restrict-template-expressions
|
|
71
73
|
throw new Error(`Invalid MenuPopout side: ${side}`);
|
|
72
74
|
}
|
|
73
75
|
}
|
|
@@ -94,6 +96,7 @@ function setVerticalAlignment(
|
|
|
94
96
|
break;
|
|
95
97
|
}
|
|
96
98
|
default: {
|
|
99
|
+
// eslint-disable-next-line restrict-template-expressions
|
|
97
100
|
throw new Error(`Invalid Popout alignment: ${alignment}`);
|
|
98
101
|
}
|
|
99
102
|
}
|
|
@@ -126,6 +129,7 @@ function setHorizontalAlignment(
|
|
|
126
129
|
break;
|
|
127
130
|
}
|
|
128
131
|
default: {
|
|
132
|
+
// eslint-disable-next-line restrict-template-expressions
|
|
129
133
|
throw new Error(`Invalid Popout alignment: ${alignment}`);
|
|
130
134
|
}
|
|
131
135
|
}
|