@aster-ui/prefixed 0.12.50
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/LICENSE +15 -0
- package/README.md +40 -0
- package/dist/chart.d.ts +2 -0
- package/dist/chart.js +5 -0
- package/dist/chart.js.map +1 -0
- package/dist/components/Affix.d.ts +14 -0
- package/dist/components/Affix.js +57 -0
- package/dist/components/Affix.js.map +1 -0
- package/dist/components/Alert.d.ts +10 -0
- package/dist/components/Alert.js +31 -0
- package/dist/components/Alert.js.map +1 -0
- package/dist/components/Anchor.d.ts +55 -0
- package/dist/components/Anchor.js +116 -0
- package/dist/components/Anchor.js.map +1 -0
- package/dist/components/Autocomplete.d.ts +38 -0
- package/dist/components/Autocomplete.js +186 -0
- package/dist/components/Autocomplete.js.map +1 -0
- package/dist/components/Avatar.d.ts +28 -0
- package/dist/components/Avatar.js +65 -0
- package/dist/components/Avatar.js.map +1 -0
- package/dist/components/Badge.d.ts +39 -0
- package/dist/components/Badge.js +220 -0
- package/dist/components/Badge.js.map +1 -0
- package/dist/components/Breadcrumb.d.ts +32 -0
- package/dist/components/Breadcrumb.js +39 -0
- package/dist/components/Breadcrumb.js.map +1 -0
- package/dist/components/Browser.d.ts +7 -0
- package/dist/components/Browser.js +15 -0
- package/dist/components/Browser.js.map +1 -0
- package/dist/components/Button.d.ts +38 -0
- package/dist/components/Button.js +114 -0
- package/dist/components/Button.js.map +1 -0
- package/dist/components/Card.d.ts +57 -0
- package/dist/components/Card.js +202 -0
- package/dist/components/Card.js.map +1 -0
- package/dist/components/Carousel.d.ts +55 -0
- package/dist/components/Carousel.js +205 -0
- package/dist/components/Carousel.js.map +1 -0
- package/dist/components/Cascader.d.ts +71 -0
- package/dist/components/Cascader.js +416 -0
- package/dist/components/Cascader.js.map +1 -0
- package/dist/components/Chart.d.ts +19 -0
- package/dist/components/Chart.js +153 -0
- package/dist/components/Chart.js.map +1 -0
- package/dist/components/Chat.d.ts +11 -0
- package/dist/components/Chat.js +33 -0
- package/dist/components/Chat.js.map +1 -0
- package/dist/components/Checkbox.d.ts +42 -0
- package/dist/components/Checkbox.js +156 -0
- package/dist/components/Checkbox.js.map +1 -0
- package/dist/components/Code.d.ts +16 -0
- package/dist/components/Code.js +60 -0
- package/dist/components/Code.js.map +1 -0
- package/dist/components/Collapse.d.ts +45 -0
- package/dist/components/Collapse.js +115 -0
- package/dist/components/Collapse.js.map +1 -0
- package/dist/components/ColorPicker.d.ts +16 -0
- package/dist/components/ColorPicker.js +368 -0
- package/dist/components/ColorPicker.js.map +1 -0
- package/dist/components/Command.d.ts +65 -0
- package/dist/components/Command.js +422 -0
- package/dist/components/Command.js.map +1 -0
- package/dist/components/ConfigProvider.d.ts +59 -0
- package/dist/components/ConfigProvider.js +46 -0
- package/dist/components/ConfigProvider.js.map +1 -0
- package/dist/components/Container.d.ts +12 -0
- package/dist/components/Container.js +28 -0
- package/dist/components/Container.js.map +1 -0
- package/dist/components/ContextMenu.d.ts +59 -0
- package/dist/components/ContextMenu.js +206 -0
- package/dist/components/ContextMenu.js.map +1 -0
- package/dist/components/CopyButton.d.ts +37 -0
- package/dist/components/CopyButton.js +123 -0
- package/dist/components/CopyButton.js.map +1 -0
- package/dist/components/Countdown.d.ts +27 -0
- package/dist/components/Countdown.js +118 -0
- package/dist/components/Countdown.js.map +1 -0
- package/dist/components/DatePicker.d.ts +11 -0
- package/dist/components/DatePicker.js +188 -0
- package/dist/components/DatePicker.js.map +1 -0
- package/dist/components/Descriptions.d.ts +84 -0
- package/dist/components/Descriptions.js +234 -0
- package/dist/components/Descriptions.js.map +1 -0
- package/dist/components/Diff.d.ts +12 -0
- package/dist/components/Diff.js +22 -0
- package/dist/components/Diff.js.map +1 -0
- package/dist/components/Divider.d.ts +8 -0
- package/dist/components/Divider.js +36 -0
- package/dist/components/Divider.js.map +1 -0
- package/dist/components/Dock.d.ts +38 -0
- package/dist/components/Dock.js +47 -0
- package/dist/components/Dock.js.map +1 -0
- package/dist/components/Drawer.d.ts +81 -0
- package/dist/components/Drawer.js +246 -0
- package/dist/components/Drawer.js.map +1 -0
- package/dist/components/Dropdown.d.ts +104 -0
- package/dist/components/Dropdown.js +407 -0
- package/dist/components/Dropdown.js.map +1 -0
- package/dist/components/Empty.d.ts +17 -0
- package/dist/components/Empty.js +145 -0
- package/dist/components/Empty.js.map +1 -0
- package/dist/components/Fieldset.d.ts +21 -0
- package/dist/components/Fieldset.js +21 -0
- package/dist/components/Fieldset.js.map +1 -0
- package/dist/components/FileInput.d.ts +9 -0
- package/dist/components/FileInput.js +38 -0
- package/dist/components/FileInput.js.map +1 -0
- package/dist/components/Filter.d.ts +27 -0
- package/dist/components/Filter.js +57 -0
- package/dist/components/Filter.js.map +1 -0
- package/dist/components/Flex.d.ts +14 -0
- package/dist/components/Flex.js +66 -0
- package/dist/components/Flex.js.map +1 -0
- package/dist/components/FloatButton.d.ts +73 -0
- package/dist/components/FloatButton.js +187 -0
- package/dist/components/FloatButton.js.map +1 -0
- package/dist/components/Footer.d.ts +16 -0
- package/dist/components/Footer.js +22 -0
- package/dist/components/Footer.js.map +1 -0
- package/dist/components/Form.d.ts +107 -0
- package/dist/components/Form.js +277 -0
- package/dist/components/Form.js.map +1 -0
- package/dist/components/Grid.d.ts +26 -0
- package/dist/components/Grid.js +1090 -0
- package/dist/components/Grid.js.map +1 -0
- package/dist/components/Hero.d.ts +11 -0
- package/dist/components/Hero.js +21 -0
- package/dist/components/Hero.js.map +1 -0
- package/dist/components/HoverGallery.d.ts +10 -0
- package/dist/components/HoverGallery.js +20 -0
- package/dist/components/HoverGallery.js.map +1 -0
- package/dist/components/Image.d.ts +26 -0
- package/dist/components/Image.js +172 -0
- package/dist/components/Image.js.map +1 -0
- package/dist/components/Input.d.ts +36 -0
- package/dist/components/Input.js +263 -0
- package/dist/components/Input.js.map +1 -0
- package/dist/components/InputNumber.d.ts +19 -0
- package/dist/components/InputNumber.js +158 -0
- package/dist/components/InputNumber.js.map +1 -0
- package/dist/components/Join.d.ts +6 -0
- package/dist/components/Join.js +19 -0
- package/dist/components/Join.js.map +1 -0
- package/dist/components/Kbd.d.ts +9 -0
- package/dist/components/Kbd.js +20 -0
- package/dist/components/Kbd.js.map +1 -0
- package/dist/components/Layout.d.ts +67 -0
- package/dist/components/Layout.js +188 -0
- package/dist/components/Layout.js.map +1 -0
- package/dist/components/List.d.ts +79 -0
- package/dist/components/List.js +128 -0
- package/dist/components/List.js.map +1 -0
- package/dist/components/Loading.d.ts +9 -0
- package/dist/components/Loading.js +40 -0
- package/dist/components/Loading.js.map +1 -0
- package/dist/components/Mask.d.ts +14 -0
- package/dist/components/Mask.js +37 -0
- package/dist/components/Mask.js.map +1 -0
- package/dist/components/Masonry.d.ts +15 -0
- package/dist/components/Masonry.js +84 -0
- package/dist/components/Masonry.js.map +1 -0
- package/dist/components/Mention.d.ts +30 -0
- package/dist/components/Mention.js +179 -0
- package/dist/components/Mention.js.map +1 -0
- package/dist/components/Menu.d.ts +72 -0
- package/dist/components/Menu.js +163 -0
- package/dist/components/Menu.js.map +1 -0
- package/dist/components/Message.d.ts +20 -0
- package/dist/components/Message.js +57 -0
- package/dist/components/Message.js.map +1 -0
- package/dist/components/Modal.d.ts +57 -0
- package/dist/components/Modal.js +338 -0
- package/dist/components/Modal.js.map +1 -0
- package/dist/components/MonthCalendar.d.ts +31 -0
- package/dist/components/MonthCalendar.js +205 -0
- package/dist/components/MonthCalendar.js.map +1 -0
- package/dist/components/Navbar.d.ts +22 -0
- package/dist/components/Navbar.js +50 -0
- package/dist/components/Navbar.js.map +1 -0
- package/dist/components/Notification.d.ts +50 -0
- package/dist/components/Notification.js +150 -0
- package/dist/components/Notification.js.map +1 -0
- package/dist/components/OTPInput.d.ts +32 -0
- package/dist/components/OTPInput.js +114 -0
- package/dist/components/OTPInput.js.map +1 -0
- package/dist/components/Pagination.d.ts +18 -0
- package/dist/components/Pagination.js +175 -0
- package/dist/components/Pagination.js.map +1 -0
- package/dist/components/Phone.d.ts +8 -0
- package/dist/components/Phone.js +17 -0
- package/dist/components/Phone.js.map +1 -0
- package/dist/components/Popconfirm.d.ts +17 -0
- package/dist/components/Popconfirm.js +125 -0
- package/dist/components/Popconfirm.js.map +1 -0
- package/dist/components/Popover.d.ts +15 -0
- package/dist/components/Popover.js +89 -0
- package/dist/components/Popover.js.map +1 -0
- package/dist/components/Progress.d.ts +5 -0
- package/dist/components/Progress.js +23 -0
- package/dist/components/Progress.js.map +1 -0
- package/dist/components/QRCode.d.ts +19 -0
- package/dist/components/QRCode.js +75 -0
- package/dist/components/QRCode.js.map +1 -0
- package/dist/components/RadialProgress.d.ts +10 -0
- package/dist/components/RadialProgress.js +48 -0
- package/dist/components/RadialProgress.js.map +1 -0
- package/dist/components/Radio.d.ts +26 -0
- package/dist/components/Radio.js +61 -0
- package/dist/components/Radio.js.map +1 -0
- package/dist/components/Range.d.ts +16 -0
- package/dist/components/Range.js +57 -0
- package/dist/components/Range.js.map +1 -0
- package/dist/components/Rating.d.ts +30 -0
- package/dist/components/Rating.js +127 -0
- package/dist/components/Rating.js.map +1 -0
- package/dist/components/Responsive.d.ts +18 -0
- package/dist/components/Responsive.js +17 -0
- package/dist/components/Responsive.js.map +1 -0
- package/dist/components/ResponsiveDrawer.d.ts +34 -0
- package/dist/components/ResponsiveDrawer.js +75 -0
- package/dist/components/ResponsiveDrawer.js.map +1 -0
- package/dist/components/Result.d.ts +12 -0
- package/dist/components/Result.js +110 -0
- package/dist/components/Result.js.map +1 -0
- package/dist/components/RichTextEditor.d.ts +32 -0
- package/dist/components/RichTextEditor.js +335 -0
- package/dist/components/RichTextEditor.js.map +1 -0
- package/dist/components/Segmented.d.ts +37 -0
- package/dist/components/Segmented.js +73 -0
- package/dist/components/Segmented.js.map +1 -0
- package/dist/components/Select.d.ts +18 -0
- package/dist/components/Select.js +78 -0
- package/dist/components/Select.js.map +1 -0
- package/dist/components/Skeleton.d.ts +9 -0
- package/dist/components/Skeleton.js +24 -0
- package/dist/components/Skeleton.js.map +1 -0
- package/dist/components/Space.d.ts +11 -0
- package/dist/components/Space.js +61 -0
- package/dist/components/Space.js.map +1 -0
- package/dist/components/Splitter.d.ts +29 -0
- package/dist/components/Splitter.js +257 -0
- package/dist/components/Splitter.js.map +1 -0
- package/dist/components/Stat.d.ts +18 -0
- package/dist/components/Stat.js +26 -0
- package/dist/components/Stat.js.map +1 -0
- package/dist/components/Status.d.ts +18 -0
- package/dist/components/Status.js +34 -0
- package/dist/components/Status.js.map +1 -0
- package/dist/components/Steps.d.ts +52 -0
- package/dist/components/Steps.js +97 -0
- package/dist/components/Steps.js.map +1 -0
- package/dist/components/Table.d.ts +105 -0
- package/dist/components/Table.js +637 -0
- package/dist/components/Table.js.map +1 -0
- package/dist/components/Tabs.d.ts +45 -0
- package/dist/components/Tabs.js +86 -0
- package/dist/components/Tabs.js.map +1 -0
- package/dist/components/Tag.d.ts +34 -0
- package/dist/components/Tag.js +210 -0
- package/dist/components/Tag.js.map +1 -0
- package/dist/components/TextRotate.d.ts +13 -0
- package/dist/components/TextRotate.js +26 -0
- package/dist/components/TextRotate.js.map +1 -0
- package/dist/components/Textarea.d.ts +9 -0
- package/dist/components/Textarea.js +44 -0
- package/dist/components/Textarea.js.map +1 -0
- package/dist/components/ThemeController.d.ts +28 -0
- package/dist/components/ThemeController.js +162 -0
- package/dist/components/ThemeController.js.map +1 -0
- package/dist/components/TimePicker.d.ts +20 -0
- package/dist/components/TimePicker.js +304 -0
- package/dist/components/TimePicker.js.map +1 -0
- package/dist/components/Timeline.d.ts +79 -0
- package/dist/components/Timeline.js +151 -0
- package/dist/components/Timeline.js.map +1 -0
- package/dist/components/Toggle.d.ts +7 -0
- package/dist/components/Toggle.js +39 -0
- package/dist/components/Toggle.js.map +1 -0
- package/dist/components/Tooltip.d.ts +9 -0
- package/dist/components/Tooltip.js +37 -0
- package/dist/components/Tooltip.js.map +1 -0
- package/dist/components/Tour.d.ts +123 -0
- package/dist/components/Tour.js +400 -0
- package/dist/components/Tour.js.map +1 -0
- package/dist/components/Transfer.d.ts +22 -0
- package/dist/components/Transfer.js +214 -0
- package/dist/components/Transfer.js.map +1 -0
- package/dist/components/Tree.d.ts +118 -0
- package/dist/components/Tree.js +444 -0
- package/dist/components/Tree.js.map +1 -0
- package/dist/components/TreeSelect.d.ts +84 -0
- package/dist/components/TreeSelect.js +755 -0
- package/dist/components/TreeSelect.js.map +1 -0
- package/dist/components/Typography.d.ts +53 -0
- package/dist/components/Typography.js +182 -0
- package/dist/components/Typography.js.map +1 -0
- package/dist/components/Upload.d.ts +38 -0
- package/dist/components/Upload.js +261 -0
- package/dist/components/Upload.js.map +1 -0
- package/dist/components/VirtualList.d.ts +29 -0
- package/dist/components/VirtualList.js +69 -0
- package/dist/components/VirtualList.js.map +1 -0
- package/dist/components/Watermark.d.ts +40 -0
- package/dist/components/Watermark.js +129 -0
- package/dist/components/Watermark.js.map +1 -0
- package/dist/components/WeekCalendar.d.ts +35 -0
- package/dist/components/WeekCalendar.js +204 -0
- package/dist/components/WeekCalendar.js.map +1 -0
- package/dist/components/Window.d.ts +7 -0
- package/dist/components/Window.js +10 -0
- package/dist/components/Window.js.map +1 -0
- package/dist/contexts/IconSizeContext.d.ts +2 -0
- package/dist/contexts/IconSizeContext.js +6 -0
- package/dist/contexts/IconSizeContext.js.map +1 -0
- package/dist/editor.d.ts +1 -0
- package/dist/editor.js +5 -0
- package/dist/editor.js.map +1 -0
- package/dist/hooks/useBreakpoint.d.ts +10 -0
- package/dist/hooks/useBreakpoint.js +36 -0
- package/dist/hooks/useBreakpoint.js.map +1 -0
- package/dist/hooks/useClickOutside.d.ts +17 -0
- package/dist/hooks/useClickOutside.js +18 -0
- package/dist/hooks/useClickOutside.js.map +1 -0
- package/dist/hooks/useClipboard.d.ts +20 -0
- package/dist/hooks/useClipboard.js +17 -0
- package/dist/hooks/useClipboard.js.map +1 -0
- package/dist/hooks/useDebounce.d.ts +18 -0
- package/dist/hooks/useDebounce.js +16 -0
- package/dist/hooks/useDebounce.js.map +1 -0
- package/dist/hooks/useDisclosure.d.ts +20 -0
- package/dist/hooks/useDisclosure.js +9 -0
- package/dist/hooks/useDisclosure.js.map +1 -0
- package/dist/hooks/useHover.d.ts +18 -0
- package/dist/hooks/useHover.js +16 -0
- package/dist/hooks/useHover.js.map +1 -0
- package/dist/hooks/useKeyPress.d.ts +40 -0
- package/dist/hooks/useKeyPress.js +34 -0
- package/dist/hooks/useKeyPress.js.map +1 -0
- package/dist/hooks/useLocalStorage.d.ts +12 -0
- package/dist/hooks/useLocalStorage.js +49 -0
- package/dist/hooks/useLocalStorage.js.map +1 -0
- package/dist/hooks/usePrevious.d.ts +15 -0
- package/dist/hooks/usePrevious.js +11 -0
- package/dist/hooks/usePrevious.js.map +1 -0
- package/dist/hooks/useWindowSize.d.ts +21 -0
- package/dist/hooks/useWindowSize.js +21 -0
- package/dist/hooks/useWindowSize.js.map +1 -0
- package/dist/index.d.ts +216 -0
- package/dist/index.js +256 -0
- package/dist/index.js.map +1 -0
- package/dist/locale/de-DE.d.ts +3 -0
- package/dist/locale/de-DE.js +100 -0
- package/dist/locale/de-DE.js.map +1 -0
- package/dist/locale/en-CA.d.ts +3 -0
- package/dist/locale/en-CA.js +11 -0
- package/dist/locale/en-CA.js.map +1 -0
- package/dist/locale/en-GB.d.ts +3 -0
- package/dist/locale/en-GB.js +11 -0
- package/dist/locale/en-GB.js.map +1 -0
- package/dist/locale/en-US.d.ts +3 -0
- package/dist/locale/en-US.js +100 -0
- package/dist/locale/en-US.js.map +1 -0
- package/dist/locale/es-ES.d.ts +3 -0
- package/dist/locale/es-ES.js +100 -0
- package/dist/locale/es-ES.js.map +1 -0
- package/dist/locale/fr-FR.d.ts +3 -0
- package/dist/locale/fr-FR.js +100 -0
- package/dist/locale/fr-FR.js.map +1 -0
- package/dist/locale/index.d.ts +107 -0
- package/dist/locale/ja-JP.d.ts +3 -0
- package/dist/locale/ja-JP.js +100 -0
- package/dist/locale/ja-JP.js.map +1 -0
- package/dist/locale/ko-KR.d.ts +3 -0
- package/dist/locale/ko-KR.js +100 -0
- package/dist/locale/ko-KR.js.map +1 -0
- package/dist/locale/pt-BR.d.ts +3 -0
- package/dist/locale/pt-BR.js +100 -0
- package/dist/locale/pt-BR.js.map +1 -0
- package/dist/locale/zh-CN.d.ts +3 -0
- package/dist/locale/zh-CN.js +100 -0
- package/dist/locale/zh-CN.js.map +1 -0
- package/dist/qrcode.d.ts +2 -0
- package/dist/qrcode.js +5 -0
- package/dist/qrcode.js.map +1 -0
- package/dist/virtuallist.d.ts +2 -0
- package/dist/virtuallist.js +5 -0
- package/dist/virtuallist.js.map +1 -0
- package/package.json +130 -0
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
import { jsx as s, jsxs as p } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as qt, useState as K, useRef as M, useCallback as y, useImperativeHandle as Wt, useEffect as T } from "react";
|
|
3
|
+
import { createPortal as Ft } from "react-dom";
|
|
4
|
+
const D = "d-btn", O = "d-btn-ghost", V = "d-btn-sm", Ht = "d-btn-primary", Kt = "d-btn-xs", Mt = "d-btn-circle", it = (t) => t ? typeof t == "function" ? t() : t.current : null, Ot = (t, c, i, o, k) => {
|
|
5
|
+
if (!t || c === "center")
|
|
6
|
+
return {
|
|
7
|
+
top: window.innerHeight / 2 - i.height / 2,
|
|
8
|
+
left: window.innerWidth / 2 - i.width / 2
|
|
9
|
+
};
|
|
10
|
+
const a = window.scrollY, d = window.scrollX, q = typeof k == "object" && k.pointAtCenter;
|
|
11
|
+
return {
|
|
12
|
+
top: {
|
|
13
|
+
top: t.top + a - i.height - o,
|
|
14
|
+
left: t.left + d + t.width / 2 - i.width / 2
|
|
15
|
+
},
|
|
16
|
+
topLeft: {
|
|
17
|
+
top: t.top + a - i.height - o,
|
|
18
|
+
left: t.left + d
|
|
19
|
+
},
|
|
20
|
+
topRight: {
|
|
21
|
+
top: t.top + a - i.height - o,
|
|
22
|
+
left: t.right + d - i.width
|
|
23
|
+
},
|
|
24
|
+
bottom: {
|
|
25
|
+
top: t.bottom + a + o,
|
|
26
|
+
left: t.left + d + t.width / 2 - i.width / 2
|
|
27
|
+
},
|
|
28
|
+
bottomLeft: {
|
|
29
|
+
top: t.bottom + a + o,
|
|
30
|
+
left: t.left + d
|
|
31
|
+
},
|
|
32
|
+
bottomRight: {
|
|
33
|
+
top: t.bottom + a + o,
|
|
34
|
+
left: t.right + d - i.width
|
|
35
|
+
},
|
|
36
|
+
left: {
|
|
37
|
+
top: t.top + a + t.height / 2 - i.height / 2,
|
|
38
|
+
left: t.left + d - i.width - o
|
|
39
|
+
},
|
|
40
|
+
leftTop: {
|
|
41
|
+
top: t.top + a,
|
|
42
|
+
left: t.left + d - i.width - o
|
|
43
|
+
},
|
|
44
|
+
leftBottom: {
|
|
45
|
+
top: t.bottom + a - i.height,
|
|
46
|
+
left: t.left + d - i.width - o
|
|
47
|
+
},
|
|
48
|
+
right: {
|
|
49
|
+
top: t.top + a + t.height / 2 - i.height / 2,
|
|
50
|
+
left: t.right + d + o
|
|
51
|
+
},
|
|
52
|
+
rightTop: {
|
|
53
|
+
top: t.top + a,
|
|
54
|
+
left: t.right + d + o
|
|
55
|
+
},
|
|
56
|
+
rightBottom: {
|
|
57
|
+
top: t.bottom + a - i.height,
|
|
58
|
+
left: t.right + d + o
|
|
59
|
+
},
|
|
60
|
+
center: {
|
|
61
|
+
top: window.innerHeight / 2 - i.height / 2,
|
|
62
|
+
left: window.innerWidth / 2 - i.width / 2
|
|
63
|
+
}
|
|
64
|
+
}[c];
|
|
65
|
+
}, Vt = (t) => ({
|
|
66
|
+
top: { position: "bottom-0 left-1/2", transform: "translate(-50%, 50%) rotate(45deg)" },
|
|
67
|
+
topLeft: { position: "bottom-0 left-4", transform: "translate(0, 50%) rotate(45deg)" },
|
|
68
|
+
topRight: { position: "bottom-0 right-4", transform: "translate(0, 50%) rotate(45deg)" },
|
|
69
|
+
bottom: { position: "top-0 left-1/2", transform: "translate(-50%, -50%) rotate(45deg)" },
|
|
70
|
+
bottomLeft: { position: "top-0 left-4", transform: "translate(0, -50%) rotate(45deg)" },
|
|
71
|
+
bottomRight: { position: "top-0 right-4", transform: "translate(0, -50%) rotate(45deg)" },
|
|
72
|
+
left: { position: "right-0 top-1/2", transform: "translate(50%, -50%) rotate(45deg)" },
|
|
73
|
+
leftTop: { position: "right-0 top-4", transform: "translate(50%, 0) rotate(45deg)" },
|
|
74
|
+
leftBottom: { position: "right-0 bottom-4", transform: "translate(50%, 0) rotate(45deg)" },
|
|
75
|
+
right: { position: "left-0 top-1/2", transform: "translate(-50%, -50%) rotate(45deg)" },
|
|
76
|
+
rightTop: { position: "left-0 top-4", transform: "translate(-50%, 0) rotate(45deg)" },
|
|
77
|
+
rightBottom: { position: "left-0 bottom-4", transform: "translate(-50%, 0) rotate(45deg)" },
|
|
78
|
+
center: { position: "hidden", transform: "" }
|
|
79
|
+
})[t], Xt = /* @__PURE__ */ s("svg", { className: "w-4 h-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ s("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }), Gt = qt(
|
|
80
|
+
({
|
|
81
|
+
open: t = !1,
|
|
82
|
+
onClose: c,
|
|
83
|
+
onFinish: i,
|
|
84
|
+
steps: o,
|
|
85
|
+
current: k,
|
|
86
|
+
onChange: a,
|
|
87
|
+
arrow: d = !0,
|
|
88
|
+
closeIcon: q,
|
|
89
|
+
mask: X = !0,
|
|
90
|
+
disabledInteraction: G = !1,
|
|
91
|
+
type: st = "default",
|
|
92
|
+
gap: I = { offset: 6, radius: 2 },
|
|
93
|
+
prevButtonText: lt = "Previous",
|
|
94
|
+
nextButtonText: at = "Next",
|
|
95
|
+
finishButtonText: dt = "Finish",
|
|
96
|
+
skipButtonText: ct = "Skip",
|
|
97
|
+
showSkip: ft = !0,
|
|
98
|
+
showIndicators: ht = !0,
|
|
99
|
+
closeOnMaskClick: U = !0,
|
|
100
|
+
closeOnEscape: Y = !0,
|
|
101
|
+
scrollIntoViewOptions: ut = !0,
|
|
102
|
+
zIndex: L = 1001,
|
|
103
|
+
indicatorsRender: z,
|
|
104
|
+
actionsRender: _,
|
|
105
|
+
getPopupContainer: J,
|
|
106
|
+
classNames: m = {},
|
|
107
|
+
styles: b = {},
|
|
108
|
+
className: mt,
|
|
109
|
+
style: bt,
|
|
110
|
+
"data-testid": pt,
|
|
111
|
+
...wt
|
|
112
|
+
}, gt) => {
|
|
113
|
+
const [vt, Q] = K(0), [u, yt] = K(null), [Z, kt] = K({ top: 0, left: 0 }), w = M(null), $t = M(null), $ = M(null), A = pt ?? "tour", f = (n) => `${A}-${n}`, B = k !== void 0, l = B ? k : vt, e = o[l], W = I.offset ?? 6, h = I.radius ?? 2, R = Array.isArray(W) ? W[0] : W, F = e?.arrow ?? d, g = e?.mask ?? X, Bt = e?.type ?? st, S = e?.scrollIntoViewOptions ?? ut, tt = e?.closeIcon ?? q, xt = F !== !1 && e?.placement !== "center", Pt = typeof g == "object" && g.color ? g.color : "rgba(0, 0, 0, 0.5)", Ct = typeof g == "object" && g.style ? g.style : {}, x = y(() => {
|
|
114
|
+
if (!e) return;
|
|
115
|
+
const r = it(e.target)?.getBoundingClientRect() ?? null;
|
|
116
|
+
if (yt(r), w.current) {
|
|
117
|
+
const N = w.current.getBoundingClientRect(), E = e.placement ?? "bottom", j = Ot(
|
|
118
|
+
r,
|
|
119
|
+
E,
|
|
120
|
+
N,
|
|
121
|
+
R + h,
|
|
122
|
+
F
|
|
123
|
+
);
|
|
124
|
+
kt(j);
|
|
125
|
+
}
|
|
126
|
+
}, [e, R, h, F]), v = y(
|
|
127
|
+
(n) => {
|
|
128
|
+
n < 0 || n >= o.length || (o[l]?.onClose?.(), B || Q(n), a?.(n), $.current && ($.current.textContent = `Step ${n + 1} of ${o.length}: ${typeof o[n]?.title == "string" ? o[n]?.title : ""}`));
|
|
129
|
+
},
|
|
130
|
+
[o, l, B, a]
|
|
131
|
+
), H = y(() => {
|
|
132
|
+
c?.();
|
|
133
|
+
}, [c]), P = y(() => {
|
|
134
|
+
e?.prevButtonProps?.onClick?.(), v(l - 1);
|
|
135
|
+
}, [l, v, e]), C = y(() => {
|
|
136
|
+
e?.nextButtonProps?.onClick?.(), l === o.length - 1 ? (i?.(), c?.()) : v(l + 1);
|
|
137
|
+
}, [l, o.length, v, i, c, e]), Nt = y(() => {
|
|
138
|
+
c?.();
|
|
139
|
+
}, [c]), Tt = y(() => {
|
|
140
|
+
U && c?.();
|
|
141
|
+
}, [U, c]);
|
|
142
|
+
if (Wt(
|
|
143
|
+
gt,
|
|
144
|
+
() => ({
|
|
145
|
+
goTo: v,
|
|
146
|
+
next: C,
|
|
147
|
+
prev: P,
|
|
148
|
+
close: H
|
|
149
|
+
}),
|
|
150
|
+
[v, C, P, H]
|
|
151
|
+
), T(() => {
|
|
152
|
+
t && !B && Q(0);
|
|
153
|
+
}, [t, B]), T(() => {
|
|
154
|
+
if (t) {
|
|
155
|
+
if (x(), S && e?.target) {
|
|
156
|
+
const n = it(e.target);
|
|
157
|
+
if (n) {
|
|
158
|
+
const r = typeof S == "object" ? S : { behavior: "smooth", block: "center" };
|
|
159
|
+
n.scrollIntoView(r);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
l === 0 && $.current && ($.current.textContent = `Tour started. Step 1 of ${o.length}: ${typeof e?.title == "string" ? e?.title : ""}`);
|
|
163
|
+
}
|
|
164
|
+
}, [t, l, e, S, x, o.length]), T(() => {
|
|
165
|
+
if (!t) return;
|
|
166
|
+
const n = () => x();
|
|
167
|
+
return window.addEventListener("resize", n), window.addEventListener("scroll", n, !0), requestAnimationFrame(x), () => {
|
|
168
|
+
window.removeEventListener("resize", n), window.removeEventListener("scroll", n, !0);
|
|
169
|
+
};
|
|
170
|
+
}, [t, x]), T(() => {
|
|
171
|
+
if (!t) return;
|
|
172
|
+
const n = (r) => {
|
|
173
|
+
if (r.key === "Escape" && Y)
|
|
174
|
+
c?.();
|
|
175
|
+
else if (r.key === "ArrowRight" || r.key === "ArrowDown")
|
|
176
|
+
r.preventDefault(), C();
|
|
177
|
+
else if (r.key === "ArrowLeft" || r.key === "ArrowUp")
|
|
178
|
+
r.preventDefault(), P();
|
|
179
|
+
else if (r.key === "Tab" && w.current) {
|
|
180
|
+
const N = w.current.querySelectorAll(
|
|
181
|
+
'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
|
|
182
|
+
), E = N[0], j = N[N.length - 1];
|
|
183
|
+
r.shiftKey && document.activeElement === E ? (r.preventDefault(), j?.focus()) : !r.shiftKey && document.activeElement === j && (r.preventDefault(), E?.focus());
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
return document.addEventListener("keydown", n), () => document.removeEventListener("keydown", n);
|
|
187
|
+
}, [t, Y, c, C, P]), T(() => {
|
|
188
|
+
t && w.current && requestAnimationFrame(() => {
|
|
189
|
+
w.current?.querySelector("button")?.focus();
|
|
190
|
+
});
|
|
191
|
+
}, [t, l]), !t || !e) return null;
|
|
192
|
+
const Lt = l === 0, ot = l === o.length - 1, et = e.placement ?? "bottom", nt = Vt(et), At = ht && o.length > 1 ? /* @__PURE__ */ s(
|
|
193
|
+
"div",
|
|
194
|
+
{
|
|
195
|
+
className: `flex gap-1 mb-4 ${m.indicator ?? ""}`,
|
|
196
|
+
style: b.indicator,
|
|
197
|
+
"data-testid": f("indicators"),
|
|
198
|
+
children: o.map((n, r) => /* @__PURE__ */ s(
|
|
199
|
+
"button",
|
|
200
|
+
{
|
|
201
|
+
className: `w-2 h-2 rounded-full transition-colors ${r === l ? "bg-primary" : "bg-base-300 hover:bg-base-content/30"}`,
|
|
202
|
+
onClick: () => v(r),
|
|
203
|
+
"aria-label": `Go to step ${r + 1}`,
|
|
204
|
+
"aria-current": r === l ? "step" : void 0,
|
|
205
|
+
"data-testid": f(`indicator-${r}`)
|
|
206
|
+
},
|
|
207
|
+
r
|
|
208
|
+
))
|
|
209
|
+
}
|
|
210
|
+
) : null, St = z ? z(l, o.length) : At, rt = /* @__PURE__ */ p(
|
|
211
|
+
"div",
|
|
212
|
+
{
|
|
213
|
+
className: `flex items-center justify-between gap-2 ${m.footer ?? ""}`,
|
|
214
|
+
style: b.footer,
|
|
215
|
+
"data-testid": f("footer"),
|
|
216
|
+
children: [
|
|
217
|
+
/* @__PURE__ */ s("div", { children: ft && !ot && /* @__PURE__ */ s(
|
|
218
|
+
"button",
|
|
219
|
+
{
|
|
220
|
+
className: `${D} ${O} ${V}`,
|
|
221
|
+
onClick: Nt,
|
|
222
|
+
"data-testid": f("skip"),
|
|
223
|
+
children: ct
|
|
224
|
+
}
|
|
225
|
+
) }),
|
|
226
|
+
/* @__PURE__ */ p("div", { className: "flex gap-2", children: [
|
|
227
|
+
!Lt && /* @__PURE__ */ s(
|
|
228
|
+
"button",
|
|
229
|
+
{
|
|
230
|
+
className: `${D} ${O} ${V}`,
|
|
231
|
+
onClick: P,
|
|
232
|
+
"data-testid": f("prev"),
|
|
233
|
+
children: e.prevButtonProps?.children ?? lt
|
|
234
|
+
}
|
|
235
|
+
),
|
|
236
|
+
/* @__PURE__ */ s(
|
|
237
|
+
"button",
|
|
238
|
+
{
|
|
239
|
+
className: `${D} ${V} ${Bt === "primary" ? Ht : ""}`,
|
|
240
|
+
onClick: C,
|
|
241
|
+
"data-testid": f("next"),
|
|
242
|
+
children: e.nextButtonProps?.children ?? (ot ? dt : at)
|
|
243
|
+
}
|
|
244
|
+
)
|
|
245
|
+
] })
|
|
246
|
+
]
|
|
247
|
+
}
|
|
248
|
+
), Et = _ ? _(rt, { current: l, total: o.length }) : rt, jt = /* @__PURE__ */ p(
|
|
249
|
+
"div",
|
|
250
|
+
{
|
|
251
|
+
ref: $t,
|
|
252
|
+
className: `fixed inset-0 ${m.root ?? ""} ${mt ?? ""}`,
|
|
253
|
+
style: { zIndex: L, ...b.root, ...bt },
|
|
254
|
+
"data-testid": A,
|
|
255
|
+
"data-state": t ? "open" : "closed",
|
|
256
|
+
role: "dialog",
|
|
257
|
+
"aria-modal": "true",
|
|
258
|
+
"aria-label": `Tour step ${l + 1} of ${o.length}`,
|
|
259
|
+
...wt,
|
|
260
|
+
children: [
|
|
261
|
+
/* @__PURE__ */ s(
|
|
262
|
+
"div",
|
|
263
|
+
{
|
|
264
|
+
ref: $,
|
|
265
|
+
className: "sr-only",
|
|
266
|
+
role: "status",
|
|
267
|
+
"aria-live": "polite",
|
|
268
|
+
"aria-atomic": "true"
|
|
269
|
+
}
|
|
270
|
+
),
|
|
271
|
+
g && /* @__PURE__ */ p(
|
|
272
|
+
"svg",
|
|
273
|
+
{
|
|
274
|
+
className: `absolute inset-0 w-full h-full pointer-events-auto ${m.mask ?? ""}`,
|
|
275
|
+
style: { zIndex: L, ...Ct, ...b.mask },
|
|
276
|
+
onClick: Tt,
|
|
277
|
+
"data-testid": f("mask"),
|
|
278
|
+
"aria-hidden": "true",
|
|
279
|
+
children: [
|
|
280
|
+
/* @__PURE__ */ s("defs", { children: /* @__PURE__ */ p("mask", { id: `tour-mask-${A}`, children: [
|
|
281
|
+
/* @__PURE__ */ s("rect", { x: "0", y: "0", width: "100%", height: "100%", fill: "white" }),
|
|
282
|
+
u && /* @__PURE__ */ s(
|
|
283
|
+
"rect",
|
|
284
|
+
{
|
|
285
|
+
x: u.left - h,
|
|
286
|
+
y: u.top - h,
|
|
287
|
+
width: u.width + h * 2,
|
|
288
|
+
height: u.height + h * 2,
|
|
289
|
+
rx: h,
|
|
290
|
+
fill: "black"
|
|
291
|
+
}
|
|
292
|
+
)
|
|
293
|
+
] }) }),
|
|
294
|
+
/* @__PURE__ */ s(
|
|
295
|
+
"rect",
|
|
296
|
+
{
|
|
297
|
+
x: "0",
|
|
298
|
+
y: "0",
|
|
299
|
+
width: "100%",
|
|
300
|
+
height: "100%",
|
|
301
|
+
fill: Pt,
|
|
302
|
+
mask: `url(#tour-mask-${A})`
|
|
303
|
+
}
|
|
304
|
+
)
|
|
305
|
+
]
|
|
306
|
+
}
|
|
307
|
+
),
|
|
308
|
+
G && u && /* @__PURE__ */ s(
|
|
309
|
+
"div",
|
|
310
|
+
{
|
|
311
|
+
className: "absolute pointer-events-auto",
|
|
312
|
+
style: {
|
|
313
|
+
left: u.left - h,
|
|
314
|
+
top: u.top - h,
|
|
315
|
+
width: u.width + h * 2,
|
|
316
|
+
height: u.height + h * 2,
|
|
317
|
+
zIndex: L + 1
|
|
318
|
+
},
|
|
319
|
+
"data-testid": f("blocker")
|
|
320
|
+
}
|
|
321
|
+
),
|
|
322
|
+
/* @__PURE__ */ p(
|
|
323
|
+
"div",
|
|
324
|
+
{
|
|
325
|
+
ref: w,
|
|
326
|
+
className: `absolute bg-base-100 rounded-lg shadow-xl border border-base-300 max-w-sm ${m.popover ?? ""} ${e.className ?? ""}`,
|
|
327
|
+
style: {
|
|
328
|
+
top: Z.top,
|
|
329
|
+
left: Z.left,
|
|
330
|
+
zIndex: L + 2,
|
|
331
|
+
...b.popover,
|
|
332
|
+
...e.style
|
|
333
|
+
},
|
|
334
|
+
onClick: (n) => n.stopPropagation(),
|
|
335
|
+
"data-testid": f("popover"),
|
|
336
|
+
"data-placement": et,
|
|
337
|
+
children: [
|
|
338
|
+
xt && /* @__PURE__ */ s(
|
|
339
|
+
"div",
|
|
340
|
+
{
|
|
341
|
+
className: `absolute w-3 h-3 bg-base-100 border-base-300 ${nt.position}`,
|
|
342
|
+
style: {
|
|
343
|
+
transform: nt.transform,
|
|
344
|
+
borderWidth: "1px",
|
|
345
|
+
borderTopColor: "transparent",
|
|
346
|
+
borderLeftColor: "transparent"
|
|
347
|
+
},
|
|
348
|
+
"data-testid": f("arrow")
|
|
349
|
+
}
|
|
350
|
+
),
|
|
351
|
+
tt !== !1 && /* @__PURE__ */ s(
|
|
352
|
+
"button",
|
|
353
|
+
{
|
|
354
|
+
className: `absolute top-2 right-2 ${D} ${O} ${Kt} ${Mt} ${m.close ?? ""}`,
|
|
355
|
+
style: b.close,
|
|
356
|
+
onClick: H,
|
|
357
|
+
"aria-label": "Close tour",
|
|
358
|
+
"data-testid": f("close"),
|
|
359
|
+
children: tt ?? Xt
|
|
360
|
+
}
|
|
361
|
+
),
|
|
362
|
+
e.cover && /* @__PURE__ */ s("div", { className: "rounded-t-lg overflow-hidden", "data-testid": f("cover"), children: e.cover }),
|
|
363
|
+
/* @__PURE__ */ p(
|
|
364
|
+
"div",
|
|
365
|
+
{
|
|
366
|
+
className: `p-4 ${m.content ?? ""}`,
|
|
367
|
+
style: b.content,
|
|
368
|
+
"data-testid": f("content"),
|
|
369
|
+
children: [
|
|
370
|
+
/* @__PURE__ */ p(
|
|
371
|
+
"div",
|
|
372
|
+
{
|
|
373
|
+
className: `${m.header ?? ""}`,
|
|
374
|
+
style: b.header,
|
|
375
|
+
"data-testid": f("header"),
|
|
376
|
+
children: [
|
|
377
|
+
/* @__PURE__ */ s("h3", { className: "font-semibold text-lg mb-1 pr-6", children: e.title }),
|
|
378
|
+
e.description && /* @__PURE__ */ s("p", { className: "text-base-content/70 text-sm mb-4", children: e.description })
|
|
379
|
+
]
|
|
380
|
+
}
|
|
381
|
+
),
|
|
382
|
+
St,
|
|
383
|
+
Et
|
|
384
|
+
]
|
|
385
|
+
}
|
|
386
|
+
)
|
|
387
|
+
]
|
|
388
|
+
}
|
|
389
|
+
)
|
|
390
|
+
]
|
|
391
|
+
}
|
|
392
|
+
), Dt = J ? J(document.body) : document.body;
|
|
393
|
+
return Ft(jt, Dt);
|
|
394
|
+
}
|
|
395
|
+
);
|
|
396
|
+
Gt.displayName = "Tour";
|
|
397
|
+
export {
|
|
398
|
+
Gt as Tour
|
|
399
|
+
};
|
|
400
|
+
//# sourceMappingURL=Tour.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tour.js","sources":["../../src/components/Tour.tsx"],"sourcesContent":["import React, {\n useState,\n useEffect,\n useCallback,\n useRef,\n forwardRef,\n useImperativeHandle,\n} from 'react'\nimport { createPortal } from 'react-dom'\n\n// DaisyUI classes\nconst dBtn = 'd-btn'\nconst dBtnGhost = 'd-btn-ghost'\nconst dBtnSm = 'd-btn-sm'\nconst dBtnPrimary = 'd-btn-primary'\nconst dBtnXs = 'd-btn-xs'\nconst dBtnCircle = 'd-btn-circle'\n\nexport type TourPlacement =\n | 'top'\n | 'topLeft'\n | 'topRight'\n | 'bottom'\n | 'bottomLeft'\n | 'bottomRight'\n | 'left'\n | 'leftTop'\n | 'leftBottom'\n | 'right'\n | 'rightTop'\n | 'rightBottom'\n | 'center'\n\nexport type TourType = 'default' | 'primary'\n\nexport interface TourArrowConfig {\n pointAtCenter?: boolean\n}\n\nexport interface TourMaskConfig {\n style?: React.CSSProperties\n color?: string\n}\n\nexport interface TourButtonProps {\n children?: React.ReactNode\n onClick?: () => void\n}\n\nexport interface TourStepProps {\n /** Target element ref or function returning element */\n target?: React.RefObject<HTMLElement | null> | (() => HTMLElement | null) | null\n /** Step title */\n title: React.ReactNode\n /** Step description */\n description?: React.ReactNode\n /** Cover image or content above title */\n cover?: React.ReactNode\n /** Placement of popover relative to target */\n placement?: TourPlacement\n /** Whether to show arrow (overrides Tour setting) */\n arrow?: boolean | TourArrowConfig\n /** Custom close icon for this step */\n closeIcon?: React.ReactNode\n /** Show mask overlay (overrides Tour setting) */\n mask?: boolean | TourMaskConfig\n /** Type affects styling (overrides Tour setting) */\n type?: TourType\n /** Scroll into view options (overrides Tour setting) */\n scrollIntoViewOptions?: boolean | ScrollIntoViewOptions\n /** Next button props */\n nextButtonProps?: TourButtonProps\n /** Previous button props */\n prevButtonProps?: TourButtonProps\n /** Custom class for this step's popover */\n className?: string\n /** Custom style for this step's popover */\n style?: React.CSSProperties\n /** Called when this step becomes active */\n onClose?: () => void\n}\n\nexport type TourSemanticName = 'root' | 'mask' | 'popover' | 'header' | 'content' | 'footer' | 'indicator' | 'close'\n\nexport interface TourActionInfo {\n current: number\n total: number\n}\n\nexport interface TourRef {\n /** Go to a specific step */\n goTo: (step: number) => void\n /** Go to the next step */\n next: () => void\n /** Go to the previous step */\n prev: () => void\n /** Close the tour */\n close: () => void\n}\n\nexport interface TourProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Whether tour is visible */\n open?: boolean\n /** Callback when tour closes */\n onClose?: () => void\n /** Callback when tour finishes (last step completed) */\n onFinish?: () => void\n /** Tour steps */\n steps: TourStepProps[]\n /** Current step (controlled) */\n current?: number\n /** Callback when step changes */\n onChange?: (current: number) => void\n /** Whether to show arrow on popover */\n arrow?: boolean | TourArrowConfig\n /** Custom close icon */\n closeIcon?: React.ReactNode\n /** Show mask overlay */\n mask?: boolean | TourMaskConfig\n /** Disable interaction on highlighted area */\n disabledInteraction?: boolean\n /** Type affects styling */\n type?: TourType\n /** Gap between highlight and target */\n gap?: { offset?: number | [number, number]; radius?: number }\n /** Text for prev button */\n prevButtonText?: React.ReactNode\n /** Text for next button */\n nextButtonText?: React.ReactNode\n /** Text for finish button */\n finishButtonText?: React.ReactNode\n /** Text for skip button */\n skipButtonText?: React.ReactNode\n /** Show skip button */\n showSkip?: boolean\n /** Show step indicators */\n showIndicators?: boolean\n /** Close on mask click */\n closeOnMaskClick?: boolean\n /** Close on escape key */\n closeOnEscape?: boolean\n /** Scroll target into view */\n scrollIntoViewOptions?: boolean | ScrollIntoViewOptions\n /** Z-index for tour overlay */\n zIndex?: number\n /** Custom indicator renderer */\n indicatorsRender?: (current: number, total: number) => React.ReactNode\n /** Custom action buttons renderer */\n actionsRender?: (originNode: React.ReactNode, info: TourActionInfo) => React.ReactNode\n /** Rendering container for tour */\n getPopupContainer?: (node: HTMLElement) => HTMLElement\n /** Semantic class names */\n classNames?: Partial<Record<TourSemanticName, string>>\n /** Semantic styles */\n styles?: Partial<Record<TourSemanticName, React.CSSProperties>>\n /** Test ID for testing */\n 'data-testid'?: string\n}\n\nconst getTargetElement = (\n target: TourStepProps['target']\n): HTMLElement | null => {\n if (!target) return null\n if (typeof target === 'function') return target()\n return target.current\n}\n\nconst getPopoverPosition = (\n targetRect: DOMRect | null,\n placement: TourPlacement,\n popoverRect: DOMRect,\n gap: number,\n arrow: boolean | TourArrowConfig\n): { top: number; left: number } => {\n if (!targetRect || placement === 'center') {\n return {\n top: window.innerHeight / 2 - popoverRect.height / 2,\n left: window.innerWidth / 2 - popoverRect.width / 2,\n }\n }\n\n const scrollY = window.scrollY\n const scrollX = window.scrollX\n const pointAtCenter = typeof arrow === 'object' && arrow.pointAtCenter\n\n const positions: Record<TourPlacement, { top: number; left: number }> = {\n top: {\n top: targetRect.top + scrollY - popoverRect.height - gap,\n left: pointAtCenter\n ? targetRect.left + scrollX + targetRect.width / 2 - popoverRect.width / 2\n : targetRect.left + scrollX + targetRect.width / 2 - popoverRect.width / 2,\n },\n topLeft: {\n top: targetRect.top + scrollY - popoverRect.height - gap,\n left: targetRect.left + scrollX,\n },\n topRight: {\n top: targetRect.top + scrollY - popoverRect.height - gap,\n left: targetRect.right + scrollX - popoverRect.width,\n },\n bottom: {\n top: targetRect.bottom + scrollY + gap,\n left: targetRect.left + scrollX + targetRect.width / 2 - popoverRect.width / 2,\n },\n bottomLeft: {\n top: targetRect.bottom + scrollY + gap,\n left: targetRect.left + scrollX,\n },\n bottomRight: {\n top: targetRect.bottom + scrollY + gap,\n left: targetRect.right + scrollX - popoverRect.width,\n },\n left: {\n top: targetRect.top + scrollY + targetRect.height / 2 - popoverRect.height / 2,\n left: targetRect.left + scrollX - popoverRect.width - gap,\n },\n leftTop: {\n top: targetRect.top + scrollY,\n left: targetRect.left + scrollX - popoverRect.width - gap,\n },\n leftBottom: {\n top: targetRect.bottom + scrollY - popoverRect.height,\n left: targetRect.left + scrollX - popoverRect.width - gap,\n },\n right: {\n top: targetRect.top + scrollY + targetRect.height / 2 - popoverRect.height / 2,\n left: targetRect.right + scrollX + gap,\n },\n rightTop: {\n top: targetRect.top + scrollY,\n left: targetRect.right + scrollX + gap,\n },\n rightBottom: {\n top: targetRect.bottom + scrollY - popoverRect.height,\n left: targetRect.right + scrollX + gap,\n },\n center: {\n top: window.innerHeight / 2 - popoverRect.height / 2,\n left: window.innerWidth / 2 - popoverRect.width / 2,\n },\n }\n\n return positions[placement]\n}\n\nconst getArrowPosition = (\n placement: TourPlacement\n): { position: string; transform: string } => {\n const arrowPositions: Record<TourPlacement, { position: string; transform: string }> = {\n top: { position: 'bottom-0 left-1/2', transform: 'translate(-50%, 50%) rotate(45deg)' },\n topLeft: { position: 'bottom-0 left-4', transform: 'translate(0, 50%) rotate(45deg)' },\n topRight: { position: 'bottom-0 right-4', transform: 'translate(0, 50%) rotate(45deg)' },\n bottom: { position: 'top-0 left-1/2', transform: 'translate(-50%, -50%) rotate(45deg)' },\n bottomLeft: { position: 'top-0 left-4', transform: 'translate(0, -50%) rotate(45deg)' },\n bottomRight: { position: 'top-0 right-4', transform: 'translate(0, -50%) rotate(45deg)' },\n left: { position: 'right-0 top-1/2', transform: 'translate(50%, -50%) rotate(45deg)' },\n leftTop: { position: 'right-0 top-4', transform: 'translate(50%, 0) rotate(45deg)' },\n leftBottom: { position: 'right-0 bottom-4', transform: 'translate(50%, 0) rotate(45deg)' },\n right: { position: 'left-0 top-1/2', transform: 'translate(-50%, -50%) rotate(45deg)' },\n rightTop: { position: 'left-0 top-4', transform: 'translate(-50%, 0) rotate(45deg)' },\n rightBottom: { position: 'left-0 bottom-4', transform: 'translate(-50%, 0) rotate(45deg)' },\n center: { position: 'hidden', transform: '' },\n }\n return arrowPositions[placement]\n}\n\nconst defaultCloseIcon = (\n <svg className=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n)\n\nexport const Tour = forwardRef<TourRef, TourProps>(\n (\n {\n open = false,\n onClose,\n onFinish,\n steps,\n current: controlledCurrent,\n onChange,\n arrow = true,\n closeIcon,\n mask = true,\n disabledInteraction = false,\n type = 'default',\n gap = { offset: 6, radius: 2 },\n prevButtonText = 'Previous',\n nextButtonText = 'Next',\n finishButtonText = 'Finish',\n skipButtonText = 'Skip',\n showSkip = true,\n showIndicators = true,\n closeOnMaskClick = true,\n closeOnEscape = true,\n scrollIntoViewOptions = true,\n zIndex = 1001,\n indicatorsRender,\n actionsRender,\n getPopupContainer,\n classNames = {},\n styles = {},\n className,\n style,\n 'data-testid': testId,\n ...rest\n },\n ref\n ) => {\n const [internalCurrent, setInternalCurrent] = useState(0)\n const [targetRect, setTargetRect] = useState<DOMRect | null>(null)\n const [popoverPosition, setPopoverPosition] = useState({ top: 0, left: 0 })\n const popoverRef = useRef<HTMLDivElement>(null)\n const containerRef = useRef<HTMLDivElement>(null)\n const liveRegionRef = useRef<HTMLDivElement>(null)\n\n const baseTestId = testId ?? 'tour'\n const getTestId = (suffix: string) => `${baseTestId}-${suffix}`\n\n const isControlled = controlledCurrent !== undefined\n const currentStep = isControlled ? controlledCurrent : internalCurrent\n const step = steps[currentStep]\n\n // Resolve gap values\n const gapOffset = gap.offset ?? 6\n const gapRadius = gap.radius ?? 2\n const gapOffsetValue = Array.isArray(gapOffset) ? gapOffset[0] : gapOffset\n\n // Resolve per-step overrides\n const resolvedArrow = step?.arrow ?? arrow\n const resolvedMask = step?.mask ?? mask\n const resolvedType = step?.type ?? type\n const resolvedScrollOptions = step?.scrollIntoViewOptions ?? scrollIntoViewOptions\n const resolvedCloseIcon = step?.closeIcon ?? closeIcon\n\n const showArrow = resolvedArrow !== false && step?.placement !== 'center'\n\n // Mask color\n const maskColor =\n typeof resolvedMask === 'object' && resolvedMask.color\n ? resolvedMask.color\n : 'rgba(0, 0, 0, 0.5)'\n const maskStyle =\n typeof resolvedMask === 'object' && resolvedMask.style ? resolvedMask.style : {}\n\n const updatePosition = useCallback(() => {\n if (!step) return\n\n const target = getTargetElement(step.target)\n const rect = target?.getBoundingClientRect() ?? null\n setTargetRect(rect)\n\n if (popoverRef.current) {\n const popoverRect = popoverRef.current.getBoundingClientRect()\n const placement = step.placement ?? 'bottom'\n const pos = getPopoverPosition(\n rect,\n placement,\n popoverRect,\n gapOffsetValue + gapRadius,\n resolvedArrow\n )\n setPopoverPosition(pos)\n }\n }, [step, gapOffsetValue, gapRadius, resolvedArrow])\n\n const goToStep = useCallback(\n (stepIndex: number) => {\n if (stepIndex < 0 || stepIndex >= steps.length) return\n\n // Call onClose for current step\n steps[currentStep]?.onClose?.()\n\n if (!isControlled) {\n setInternalCurrent(stepIndex)\n }\n onChange?.(stepIndex)\n\n // Announce step change\n if (liveRegionRef.current) {\n liveRegionRef.current.textContent = `Step ${stepIndex + 1} of ${steps.length}: ${\n typeof steps[stepIndex]?.title === 'string' ? steps[stepIndex]?.title : ''\n }`\n }\n },\n [steps, currentStep, isControlled, onChange]\n )\n\n const handleClose = useCallback(() => {\n onClose?.()\n }, [onClose])\n\n const handlePrev = useCallback(() => {\n step?.prevButtonProps?.onClick?.()\n goToStep(currentStep - 1)\n }, [currentStep, goToStep, step])\n\n const handleNext = useCallback(() => {\n step?.nextButtonProps?.onClick?.()\n if (currentStep === steps.length - 1) {\n onFinish?.()\n onClose?.()\n } else {\n goToStep(currentStep + 1)\n }\n }, [currentStep, steps.length, goToStep, onFinish, onClose, step])\n\n const handleSkip = useCallback(() => {\n onClose?.()\n }, [onClose])\n\n const handleMaskClick = useCallback(() => {\n if (closeOnMaskClick) {\n onClose?.()\n }\n }, [closeOnMaskClick, onClose])\n\n // Expose imperative methods\n useImperativeHandle(\n ref,\n () => ({\n goTo: goToStep,\n next: handleNext,\n prev: handlePrev,\n close: handleClose,\n }),\n [goToStep, handleNext, handlePrev, handleClose]\n )\n\n // Reset to first step when opening\n useEffect(() => {\n if (open && !isControlled) {\n setInternalCurrent(0)\n }\n }, [open, isControlled])\n\n // Update position on step change or open\n useEffect(() => {\n if (!open) return\n\n updatePosition()\n\n // Scroll target into view\n if (resolvedScrollOptions && step?.target) {\n const target = getTargetElement(step.target)\n if (target) {\n const scrollOptions: ScrollIntoViewOptions =\n typeof resolvedScrollOptions === 'object'\n ? resolvedScrollOptions\n : { behavior: 'smooth', block: 'center' }\n target.scrollIntoView(scrollOptions)\n }\n }\n\n // Announce first step\n if (currentStep === 0 && liveRegionRef.current) {\n liveRegionRef.current.textContent = `Tour started. Step 1 of ${steps.length}: ${\n typeof step?.title === 'string' ? step?.title : ''\n }`\n }\n }, [open, currentStep, step, resolvedScrollOptions, updatePosition, steps.length])\n\n // Update position on resize/scroll\n useEffect(() => {\n if (!open) return\n\n const handleUpdate = () => updatePosition()\n window.addEventListener('resize', handleUpdate)\n window.addEventListener('scroll', handleUpdate, true)\n\n // Initial position after popover renders\n requestAnimationFrame(updatePosition)\n\n return () => {\n window.removeEventListener('resize', handleUpdate)\n window.removeEventListener('scroll', handleUpdate, true)\n }\n }, [open, updatePosition])\n\n // Keyboard handling\n useEffect(() => {\n if (!open) return\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && closeOnEscape) {\n onClose?.()\n } else if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n e.preventDefault()\n handleNext()\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n e.preventDefault()\n handlePrev()\n } else if (e.key === 'Tab') {\n // Focus trap within popover\n if (popoverRef.current) {\n const focusableElements = popoverRef.current.querySelectorAll<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n )\n const firstElement = focusableElements[0]\n const lastElement = focusableElements[focusableElements.length - 1]\n\n if (e.shiftKey && document.activeElement === firstElement) {\n e.preventDefault()\n lastElement?.focus()\n } else if (!e.shiftKey && document.activeElement === lastElement) {\n e.preventDefault()\n firstElement?.focus()\n }\n }\n }\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [open, closeOnEscape, onClose, handleNext, handlePrev])\n\n // Focus management - focus first button when tour opens\n useEffect(() => {\n if (open && popoverRef.current) {\n requestAnimationFrame(() => {\n const firstButton = popoverRef.current?.querySelector<HTMLElement>('button')\n firstButton?.focus()\n })\n }\n }, [open, currentStep])\n\n if (!open || !step) return null\n\n const isFirstStep = currentStep === 0\n const isLastStep = currentStep === steps.length - 1\n const placement = step.placement ?? 'bottom'\n const arrowPos = getArrowPosition(placement)\n\n // Default indicators\n const defaultIndicators =\n showIndicators && steps.length > 1 ? (\n <div\n className={`flex gap-1 mb-4 ${classNames.indicator ?? ''}`}\n style={styles.indicator}\n data-testid={getTestId('indicators')}\n >\n {steps.map((_, index) => (\n <button\n key={index}\n className={`w-2 h-2 rounded-full transition-colors ${\n index === currentStep\n ? 'bg-primary'\n : 'bg-base-300 hover:bg-base-content/30'\n }`}\n onClick={() => goToStep(index)}\n aria-label={`Go to step ${index + 1}`}\n aria-current={index === currentStep ? 'step' : undefined}\n data-testid={getTestId(`indicator-${index}`)}\n />\n ))}\n </div>\n ) : null\n\n const indicators = indicatorsRender\n ? indicatorsRender(currentStep, steps.length)\n : defaultIndicators\n\n // Default action buttons\n const defaultActions = (\n <div\n className={`flex items-center justify-between gap-2 ${classNames.footer ?? ''}`}\n style={styles.footer}\n data-testid={getTestId('footer')}\n >\n <div>\n {showSkip && !isLastStep && (\n <button\n className={`${dBtn} ${dBtnGhost} ${dBtnSm}`}\n onClick={handleSkip}\n data-testid={getTestId('skip')}\n >\n {skipButtonText}\n </button>\n )}\n </div>\n <div className=\"flex gap-2\">\n {!isFirstStep && (\n <button\n className={`${dBtn} ${dBtnGhost} ${dBtnSm}`}\n onClick={handlePrev}\n data-testid={getTestId('prev')}\n >\n {step.prevButtonProps?.children ?? prevButtonText}\n </button>\n )}\n <button\n className={`${dBtn} ${dBtnSm} ${resolvedType === 'primary' ? dBtnPrimary : ''}`}\n onClick={handleNext}\n data-testid={getTestId('next')}\n >\n {step.nextButtonProps?.children ?? (isLastStep ? finishButtonText : nextButtonText)}\n </button>\n </div>\n </div>\n )\n\n const actions = actionsRender\n ? actionsRender(defaultActions, { current: currentStep, total: steps.length })\n : defaultActions\n\n const content = (\n <div\n ref={containerRef}\n className={`fixed inset-0 ${classNames.root ?? ''} ${className ?? ''}`}\n style={{ zIndex, ...styles.root, ...style }}\n data-testid={baseTestId}\n data-state={open ? 'open' : 'closed'}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={`Tour step ${currentStep + 1} of ${steps.length}`}\n {...rest}\n >\n {/* Live region for screen reader announcements */}\n <div\n ref={liveRegionRef}\n className=\"sr-only\"\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n />\n\n {/* Mask overlay with spotlight cutout */}\n {resolvedMask && (\n <svg\n className={`absolute inset-0 w-full h-full ${\n disabledInteraction ? 'pointer-events-auto' : 'pointer-events-auto'\n } ${classNames.mask ?? ''}`}\n style={{ zIndex, ...maskStyle, ...styles.mask }}\n onClick={handleMaskClick}\n data-testid={getTestId('mask')}\n aria-hidden=\"true\"\n >\n <defs>\n <mask id={`tour-mask-${baseTestId}`}>\n <rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" fill=\"white\" />\n {targetRect && (\n <rect\n x={targetRect.left - gapRadius}\n y={targetRect.top - gapRadius}\n width={targetRect.width + gapRadius * 2}\n height={targetRect.height + gapRadius * 2}\n rx={gapRadius}\n fill=\"black\"\n />\n )}\n </mask>\n </defs>\n <rect\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n fill={maskColor}\n mask={`url(#tour-mask-${baseTestId})`}\n />\n </svg>\n )}\n\n {/* Interaction blocker for highlighted area */}\n {disabledInteraction && targetRect && (\n <div\n className=\"absolute pointer-events-auto\"\n style={{\n left: targetRect.left - gapRadius,\n top: targetRect.top - gapRadius,\n width: targetRect.width + gapRadius * 2,\n height: targetRect.height + gapRadius * 2,\n zIndex: zIndex + 1,\n }}\n data-testid={getTestId('blocker')}\n />\n )}\n\n {/* Popover */}\n <div\n ref={popoverRef}\n className={`absolute bg-base-100 rounded-lg shadow-xl border border-base-300 max-w-sm ${\n classNames.popover ?? ''\n } ${step.className ?? ''}`}\n style={{\n top: popoverPosition.top,\n left: popoverPosition.left,\n zIndex: zIndex + 2,\n ...styles.popover,\n ...step.style,\n }}\n onClick={(e) => e.stopPropagation()}\n data-testid={getTestId('popover')}\n data-placement={placement}\n >\n {/* Arrow */}\n {showArrow && (\n <div\n className={`absolute w-3 h-3 bg-base-100 border-base-300 ${arrowPos.position}`}\n style={{\n transform: arrowPos.transform,\n borderWidth: '1px',\n borderTopColor: 'transparent',\n borderLeftColor: 'transparent',\n }}\n data-testid={getTestId('arrow')}\n />\n )}\n\n {/* Close button */}\n {resolvedCloseIcon !== false && (\n <button\n className={`absolute top-2 right-2 ${dBtn} ${dBtnGhost} ${dBtnXs} ${dBtnCircle} ${\n classNames.close ?? ''\n }`}\n style={styles.close}\n onClick={handleClose}\n aria-label=\"Close tour\"\n data-testid={getTestId('close')}\n >\n {resolvedCloseIcon ?? defaultCloseIcon}\n </button>\n )}\n\n {/* Cover */}\n {step.cover && (\n <div className=\"rounded-t-lg overflow-hidden\" data-testid={getTestId('cover')}>\n {step.cover}\n </div>\n )}\n\n {/* Content */}\n <div\n className={`p-4 ${classNames.content ?? ''}`}\n style={styles.content}\n data-testid={getTestId('content')}\n >\n <div\n className={`${classNames.header ?? ''}`}\n style={styles.header}\n data-testid={getTestId('header')}\n >\n <h3 className=\"font-semibold text-lg mb-1 pr-6\">{step.title}</h3>\n {step.description && (\n <p className=\"text-base-content/70 text-sm mb-4\">{step.description}</p>\n )}\n </div>\n\n {/* Indicators */}\n {indicators}\n\n {/* Navigation */}\n {actions}\n </div>\n </div>\n </div>\n )\n\n // Get container for portal\n const container = getPopupContainer\n ? getPopupContainer(document.body)\n : document.body\n\n return createPortal(content, container)\n }\n)\n\nTour.displayName = 'Tour'\n"],"names":["dBtn","dBtnGhost","dBtnSm","dBtnPrimary","dBtnXs","dBtnCircle","getTargetElement","target","getPopoverPosition","targetRect","placement","popoverRect","gap","arrow","scrollY","scrollX","pointAtCenter","getArrowPosition","defaultCloseIcon","jsx","Tour","forwardRef","open","onClose","onFinish","steps","controlledCurrent","onChange","closeIcon","mask","disabledInteraction","type","prevButtonText","nextButtonText","finishButtonText","skipButtonText","showSkip","showIndicators","closeOnMaskClick","closeOnEscape","scrollIntoViewOptions","zIndex","indicatorsRender","actionsRender","getPopupContainer","classNames","styles","className","style","testId","rest","ref","internalCurrent","setInternalCurrent","useState","setTargetRect","popoverPosition","setPopoverPosition","popoverRef","useRef","containerRef","liveRegionRef","baseTestId","getTestId","suffix","isControlled","currentStep","step","gapOffset","gapRadius","gapOffsetValue","resolvedArrow","resolvedMask","resolvedType","resolvedScrollOptions","resolvedCloseIcon","showArrow","maskColor","maskStyle","updatePosition","useCallback","rect","pos","goToStep","stepIndex","handleClose","handlePrev","handleNext","handleSkip","handleMaskClick","useImperativeHandle","useEffect","scrollOptions","handleUpdate","handleKeyDown","e","focusableElements","firstElement","lastElement","isFirstStep","isLastStep","arrowPos","defaultIndicators","_","index","indicators","defaultActions","jsxs","actions","content","container","createPortal"],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface TransferItem {
|
|
3
|
+
key: string;
|
|
4
|
+
title: React.ReactNode;
|
|
5
|
+
description?: React.ReactNode;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface TransferProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
|
|
9
|
+
dataSource: TransferItem[];
|
|
10
|
+
targetKeys?: string[];
|
|
11
|
+
defaultTargetKeys?: string[];
|
|
12
|
+
onChange?: (targetKeys: string[], direction: 'left' | 'right', moveKeys: string[]) => void;
|
|
13
|
+
onSelectChange?: (sourceSelectedKeys: string[], targetSelectedKeys: string[]) => void;
|
|
14
|
+
titles?: [React.ReactNode, React.ReactNode];
|
|
15
|
+
render?: (item: TransferItem) => React.ReactNode;
|
|
16
|
+
showSearch?: boolean;
|
|
17
|
+
filterOption?: (inputValue: string, item: TransferItem) => boolean;
|
|
18
|
+
showSelectAll?: boolean;
|
|
19
|
+
disabled?: boolean;
|
|
20
|
+
listStyle?: React.CSSProperties;
|
|
21
|
+
}
|
|
22
|
+
export declare function Transfer({ dataSource, targetKeys: controlledTargetKeys, defaultTargetKeys, onChange, onSelectChange, titles, render, showSearch, filterOption, showSelectAll, disabled, listStyle, className, ...rest }: TransferProps): import("react/jsx-runtime").JSX.Element;
|