@seeqdev/qomponents 0.0.172 → 0.0.173
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Accordion/Accordion.d.ts +4 -0
- package/dist/Accordion/Accordion.js +7 -0
- package/dist/Accordion/Accordion.js.map +1 -0
- package/dist/Accordion/Accordion.stories.d.ts +5 -0
- package/dist/Accordion/Accordion.stories.js +75 -0
- package/dist/Accordion/Accordion.stories.js.map +1 -0
- package/dist/Accordion/Accordion.test.d.ts +1 -0
- package/dist/Accordion/Accordion.test.js +55 -0
- package/dist/Accordion/Accordion.test.js.map +1 -0
- package/dist/Accordion/Accordion.types.d.ts +86 -0
- package/dist/Accordion/Accordion.types.js +2 -0
- package/dist/Accordion/Accordion.types.js.map +1 -0
- package/dist/Accordion/index.d.ts +1 -0
- package/dist/Accordion/index.js +2 -0
- package/dist/Accordion/index.js.map +1 -0
- package/dist/Alert/Alert.d.ts +7 -0
- package/dist/Alert/Alert.js +32 -0
- package/dist/Alert/Alert.js.map +1 -0
- package/dist/Alert/Alert.stories.d.ts +5 -0
- package/dist/Alert/Alert.stories.js +57 -0
- package/dist/Alert/Alert.stories.js.map +1 -0
- package/dist/Alert/Alert.test.d.ts +1 -0
- package/dist/Alert/Alert.test.js +50 -0
- package/dist/Alert/Alert.test.js.map +1 -0
- package/dist/Alert/Alert.types.d.ts +63 -0
- package/dist/Alert/Alert.types.js +2 -0
- package/dist/Alert/Alert.types.js.map +1 -0
- package/dist/Alert/index.d.ts +1 -0
- package/dist/Alert/index.js +2 -0
- package/dist/Alert/index.js.map +1 -0
- package/dist/Button/Button.d.ts +10 -0
- package/dist/Button/Button.js +90 -0
- package/dist/Button/Button.js.map +1 -0
- package/dist/Button/Button.stories.d.ts +9 -0
- package/dist/Button/Button.stories.js +29 -0
- package/dist/Button/Button.stories.js.map +1 -0
- package/dist/Button/Button.test.d.ts +1 -0
- package/dist/Button/Button.test.js +47 -0
- package/dist/Button/Button.test.js.map +1 -0
- package/dist/Button/Button.types.d.ts +148 -0
- package/dist/Button/Button.types.js +5 -0
- package/dist/Button/Button.types.js.map +1 -0
- package/dist/Button/index.d.ts +1 -0
- package/dist/Button/index.js +2 -0
- package/dist/Button/index.js.map +1 -0
- package/dist/ButtonGroup/ButtonGroup.d.ts +7 -0
- package/dist/ButtonGroup/ButtonGroup.js +35 -0
- package/dist/ButtonGroup/ButtonGroup.js.map +1 -0
- package/dist/ButtonGroup/ButtonGroup.stories.d.ts +5 -0
- package/dist/ButtonGroup/ButtonGroup.stories.js +317 -0
- package/dist/ButtonGroup/ButtonGroup.stories.js.map +1 -0
- package/dist/ButtonGroup/ButtonGroup.test.d.ts +1 -0
- package/dist/ButtonGroup/ButtonGroup.test.js +66 -0
- package/dist/ButtonGroup/ButtonGroup.test.js.map +1 -0
- package/dist/ButtonGroup/ButtonGroup.types.d.ts +81 -0
- package/dist/ButtonGroup/ButtonGroup.types.js +2 -0
- package/dist/ButtonGroup/ButtonGroup.types.js.map +1 -0
- package/dist/ButtonGroup/index.d.ts +1 -0
- package/dist/ButtonGroup/index.js +2 -0
- package/dist/ButtonGroup/index.js.map +1 -0
- package/dist/ButtonWithDropdown/ButtonWithDropdown.d.ts +4 -0
- package/dist/ButtonWithDropdown/ButtonWithDropdown.js +36 -0
- package/dist/ButtonWithDropdown/ButtonWithDropdown.js.map +1 -0
- package/dist/ButtonWithDropdown/ButtonWithDropdown.stories.d.ts +5 -0
- package/dist/ButtonWithDropdown/ButtonWithDropdown.stories.js +104 -0
- package/dist/ButtonWithDropdown/ButtonWithDropdown.stories.js.map +1 -0
- package/dist/ButtonWithDropdown/ButtonWithDropdown.test.d.ts +1 -0
- package/dist/ButtonWithDropdown/ButtonWithDropdown.test.js +93 -0
- package/dist/ButtonWithDropdown/ButtonWithDropdown.test.js.map +1 -0
- package/dist/ButtonWithDropdown/ButtonWithDropdown.types.d.ts +233 -0
- package/dist/ButtonWithDropdown/ButtonWithDropdown.types.js +2 -0
- package/dist/ButtonWithDropdown/ButtonWithDropdown.types.js.map +1 -0
- package/dist/ButtonWithDropdown/index.d.ts +1 -0
- package/dist/ButtonWithDropdown/index.js +2 -0
- package/dist/ButtonWithDropdown/index.js.map +1 -0
- package/dist/ButtonWithPopover/ButtonWithPopover.d.ts +4 -0
- package/dist/ButtonWithPopover/ButtonWithPopover.js +55 -0
- package/dist/ButtonWithPopover/ButtonWithPopover.js.map +1 -0
- package/dist/ButtonWithPopover/ButtonWithPopover.stories.d.ts +5 -0
- package/dist/ButtonWithPopover/ButtonWithPopover.stories.js +25 -0
- package/dist/ButtonWithPopover/ButtonWithPopover.stories.js.map +1 -0
- package/dist/ButtonWithPopover/ButtonWithPopover.test.d.ts +1 -0
- package/dist/ButtonWithPopover/ButtonWithPopover.test.js +81 -0
- package/dist/ButtonWithPopover/ButtonWithPopover.test.js.map +1 -0
- package/dist/ButtonWithPopover/ButtonWithPopover.types.d.ts +134 -0
- package/dist/ButtonWithPopover/ButtonWithPopover.types.js +2 -0
- package/dist/ButtonWithPopover/ButtonWithPopover.types.js.map +1 -0
- package/dist/ButtonWithPopover/index.d.ts +1 -0
- package/dist/ButtonWithPopover/index.js +2 -0
- package/dist/ButtonWithPopover/index.js.map +1 -0
- package/dist/Carousel/Carousel.d.ts +9 -0
- package/dist/Carousel/Carousel.js +75 -0
- package/dist/Carousel/Carousel.js.map +1 -0
- package/dist/Carousel/Carousel.stories.d.ts +5 -0
- package/dist/Carousel/Carousel.stories.js +63 -0
- package/dist/Carousel/Carousel.stories.js.map +1 -0
- package/dist/Carousel/Carousel.test.d.ts +1 -0
- package/dist/Carousel/Carousel.test.js +48 -0
- package/dist/Carousel/Carousel.test.js.map +1 -0
- package/dist/Carousel/Carousel.types.d.ts +86 -0
- package/dist/Carousel/Carousel.types.js +2 -0
- package/dist/Carousel/Carousel.types.js.map +1 -0
- package/dist/Carousel/index.d.ts +1 -0
- package/dist/Carousel/index.js +2 -0
- package/dist/Carousel/index.js.map +1 -0
- package/dist/Checkbox/Checkbox.d.ts +7 -0
- package/dist/Checkbox/Checkbox.js +25 -0
- package/dist/Checkbox/Checkbox.js.map +1 -0
- package/dist/Checkbox/Checkbox.stories.d.ts +5 -0
- package/dist/Checkbox/Checkbox.stories.js +12 -0
- package/dist/Checkbox/Checkbox.stories.js.map +1 -0
- package/dist/Checkbox/Checkbox.test.d.ts +1 -0
- package/dist/Checkbox/Checkbox.test.js +94 -0
- package/dist/Checkbox/Checkbox.test.js.map +1 -0
- package/dist/Checkbox/Checkbox.types.d.ts +92 -0
- package/dist/Checkbox/Checkbox.types.js +2 -0
- package/dist/Checkbox/Checkbox.types.js.map +1 -0
- package/dist/Checkbox/index.d.ts +1 -0
- package/dist/Checkbox/index.js +2 -0
- package/dist/Checkbox/index.js.map +1 -0
- package/dist/Collapse/Collapse.d.ts +4 -0
- package/dist/Collapse/Collapse.js +17 -0
- package/dist/Collapse/Collapse.js.map +1 -0
- package/dist/Collapse/Collapse.stories.d.ts +5 -0
- package/dist/Collapse/Collapse.stories.js +15 -0
- package/dist/Collapse/Collapse.stories.js.map +1 -0
- package/dist/Collapse/Collapse.test.d.ts +1 -0
- package/dist/Collapse/Collapse.test.js +17 -0
- package/dist/Collapse/Collapse.test.js.map +1 -0
- package/dist/Collapse/Collapse.types.d.ts +19 -0
- package/dist/Collapse/Collapse.types.js +2 -0
- package/dist/Collapse/Collapse.types.js.map +1 -0
- package/dist/Collapse/index.d.ts +1 -0
- package/dist/Collapse/index.js +2 -0
- package/dist/Collapse/index.js.map +1 -0
- package/dist/Icon/Icon.d.ts +10 -0
- package/dist/Icon/Icon.js +56 -0
- package/dist/Icon/Icon.js.map +1 -0
- package/dist/Icon/Icon.stories.d.ts +5 -0
- package/dist/Icon/Icon.stories.js +15 -0
- package/dist/Icon/Icon.stories.js.map +1 -0
- package/dist/Icon/Icon.test.d.ts +1 -0
- package/dist/Icon/Icon.test.js +55 -0
- package/dist/Icon/Icon.test.js.map +1 -0
- package/dist/Icon/Icon.types.d.ts +91 -0
- package/dist/Icon/Icon.types.js +16 -0
- package/dist/Icon/Icon.types.js.map +1 -0
- package/dist/Icon/index.d.ts +1 -0
- package/dist/Icon/index.js +2 -0
- package/dist/Icon/index.js.map +1 -0
- package/dist/InputGroup/InputGroup.d.ts +7 -0
- package/dist/InputGroup/InputGroup.js +34 -0
- package/dist/InputGroup/InputGroup.js.map +1 -0
- package/dist/InputGroup/InputGroup.stories.d.ts +5 -0
- package/dist/InputGroup/InputGroup.stories.js +129 -0
- package/dist/InputGroup/InputGroup.stories.js.map +1 -0
- package/dist/InputGroup/InputGroup.test.d.ts +1 -0
- package/dist/InputGroup/InputGroup.test.js +42 -0
- package/dist/InputGroup/InputGroup.test.js.map +1 -0
- package/dist/InputGroup/InputGroup.types.d.ts +62 -0
- package/dist/InputGroup/InputGroup.types.js +2 -0
- package/dist/InputGroup/InputGroup.types.js.map +1 -0
- package/dist/InputGroup/index.d.ts +2 -0
- package/dist/InputGroup/index.js +2 -0
- package/dist/InputGroup/index.js.map +1 -0
- package/dist/Modal/Modal.d.ts +5 -0
- package/dist/Modal/Modal.js +76 -0
- package/dist/Modal/Modal.js.map +1 -0
- package/dist/Modal/Modal.stories.d.ts +10 -0
- package/dist/Modal/Modal.stories.js +44 -0
- package/dist/Modal/Modal.stories.js.map +1 -0
- package/dist/Modal/Modal.test.d.ts +1 -0
- package/dist/Modal/Modal.test.js +108 -0
- package/dist/Modal/Modal.test.js.map +1 -0
- package/dist/Modal/Modal.types.d.ts +244 -0
- package/dist/Modal/Modal.types.js +2 -0
- package/dist/Modal/Modal.types.js.map +1 -0
- package/dist/Modal/index.d.ts +1 -0
- package/dist/Modal/index.js +2 -0
- package/dist/Modal/index.js.map +1 -0
- package/dist/ProgressBar/ProgressBar.d.ts +4 -0
- package/dist/ProgressBar/ProgressBar.js +72 -0
- package/dist/ProgressBar/ProgressBar.js.map +1 -0
- package/dist/ProgressBar/ProgressBar.stories.d.ts +5 -0
- package/dist/ProgressBar/ProgressBar.stories.js +35 -0
- package/dist/ProgressBar/ProgressBar.stories.js.map +1 -0
- package/dist/ProgressBar/ProgressBar.test.d.ts +1 -0
- package/dist/ProgressBar/ProgressBar.test.js +43 -0
- package/dist/ProgressBar/ProgressBar.test.js.map +1 -0
- package/dist/ProgressBar/ProgressBar.types.d.ts +77 -0
- package/dist/ProgressBar/ProgressBar.types.js +2 -0
- package/dist/ProgressBar/ProgressBar.types.js.map +1 -0
- package/dist/ProgressBar/index.d.ts +1 -0
- package/dist/ProgressBar/index.js +2 -0
- package/dist/ProgressBar/index.js.map +1 -0
- package/dist/SeeqActionDropdown/SeeqActionDropdown.d.ts +4 -0
- package/dist/SeeqActionDropdown/SeeqActionDropdown.js +39 -0
- package/dist/SeeqActionDropdown/SeeqActionDropdown.js.map +1 -0
- package/dist/SeeqActionDropdown/SeeqActionDropdown.stories.d.ts +5 -0
- package/dist/SeeqActionDropdown/SeeqActionDropdown.stories.js +56 -0
- package/dist/SeeqActionDropdown/SeeqActionDropdown.stories.js.map +1 -0
- package/dist/SeeqActionDropdown/SeeqActionDropdown.test.d.ts +1 -0
- package/dist/SeeqActionDropdown/SeeqActionDropdown.test.js +73 -0
- package/dist/SeeqActionDropdown/SeeqActionDropdown.test.js.map +1 -0
- package/dist/SeeqActionDropdown/SeeqActionDropdown.types.d.ts +160 -0
- package/dist/SeeqActionDropdown/SeeqActionDropdown.types.js +2 -0
- package/dist/SeeqActionDropdown/SeeqActionDropdown.types.js.map +1 -0
- package/dist/SeeqActionDropdown/index.d.ts +1 -0
- package/dist/SeeqActionDropdown/index.js +2 -0
- package/dist/SeeqActionDropdown/index.js.map +1 -0
- package/dist/SeeqActionDropdown/variants.d.ts +5 -0
- package/dist/SeeqActionDropdown/variants.js +29 -0
- package/dist/SeeqActionDropdown/variants.js.map +1 -0
- package/dist/Select/Select.d.ts +15 -0
- package/dist/Select/Select.js +177 -0
- package/dist/Select/Select.js.map +1 -0
- package/dist/Select/Select.stories.d.ts +5 -0
- package/dist/Select/Select.stories.js +40 -0
- package/dist/Select/Select.stories.js.map +1 -0
- package/dist/Select/Select.test.d.ts +1 -0
- package/dist/Select/Select.test.js +175 -0
- package/dist/Select/Select.test.js.map +1 -0
- package/dist/Select/Select.types.d.ts +220 -0
- package/dist/Select/Select.types.js +2 -0
- package/dist/Select/Select.types.js.map +1 -0
- package/dist/Select/index.d.ts +2 -0
- package/dist/Select/index.js +3 -0
- package/dist/Select/index.js.map +1 -0
- package/dist/Slider/Slider.d.ts +6 -0
- package/dist/Slider/Slider.js +10 -0
- package/dist/Slider/Slider.js.map +1 -0
- package/dist/Slider/Slider.stories.d.ts +5 -0
- package/dist/Slider/Slider.stories.js +14 -0
- package/dist/Slider/Slider.stories.js.map +1 -0
- package/dist/Slider/Slider.test.d.ts +1 -0
- package/dist/Slider/Slider.test.js +32 -0
- package/dist/Slider/Slider.test.js.map +1 -0
- package/dist/Slider/Slider.types.d.ts +85 -0
- package/dist/Slider/Slider.types.js +2 -0
- package/dist/Slider/Slider.types.js.map +1 -0
- package/dist/Slider/index.d.ts +1 -0
- package/dist/Slider/index.js +2 -0
- package/dist/Slider/index.js.map +1 -0
- package/dist/SvgIcon/SvgIcon.d.ts +20 -0
- package/dist/SvgIcon/SvgIcon.js +28 -0
- package/dist/SvgIcon/SvgIcon.js.map +1 -0
- package/dist/SvgIcon/SvgIcon.stories.d.ts +5 -0
- package/dist/SvgIcon/SvgIcon.stories.js +18 -0
- package/dist/SvgIcon/SvgIcon.stories.js.map +1 -0
- package/dist/SvgIcon/SvgIcon.test.d.ts +1 -0
- package/dist/SvgIcon/SvgIcon.test.js +41 -0
- package/dist/SvgIcon/SvgIcon.test.js.map +1 -0
- package/dist/SvgIcon/SvgIcon.types.d.ts +76 -0
- package/dist/SvgIcon/SvgIcon.types.js +3 -0
- package/dist/SvgIcon/SvgIcon.types.js.map +1 -0
- package/dist/SvgIcon/index.d.ts +1 -0
- package/dist/SvgIcon/index.js +2 -0
- package/dist/SvgIcon/index.js.map +1 -0
- package/dist/Tabs/Tabs.d.ts +4 -0
- package/dist/Tabs/Tabs.js +17 -0
- package/dist/Tabs/Tabs.js.map +1 -0
- package/dist/Tabs/Tabs.stories.d.ts +5 -0
- package/dist/Tabs/Tabs.stories.js +73 -0
- package/dist/Tabs/Tabs.stories.js.map +1 -0
- package/dist/Tabs/Tabs.test.d.ts +1 -0
- package/dist/Tabs/Tabs.test.js +86 -0
- package/dist/Tabs/Tabs.test.js.map +1 -0
- package/dist/Tabs/Tabs.types.d.ts +95 -0
- package/dist/Tabs/Tabs.types.js +2 -0
- package/dist/Tabs/Tabs.types.js.map +1 -0
- package/dist/Tabs/index.d.ts +1 -0
- package/dist/Tabs/index.js +2 -0
- package/dist/Tabs/index.js.map +1 -0
- package/dist/TextArea/TextArea.d.ts +7 -0
- package/dist/TextArea/TextArea.js +55 -0
- package/dist/TextArea/TextArea.js.map +1 -0
- package/dist/TextArea/TextArea.stories.d.ts +5 -0
- package/dist/TextArea/TextArea.stories.js +10 -0
- package/dist/TextArea/TextArea.stories.js.map +1 -0
- package/dist/TextArea/TextArea.test.d.ts +1 -0
- package/dist/TextArea/TextArea.test.js +130 -0
- package/dist/TextArea/TextArea.test.js.map +1 -0
- package/dist/TextArea/TextArea.types.d.ts +116 -0
- package/dist/TextArea/TextArea.types.js +2 -0
- package/dist/TextArea/TextArea.types.js.map +1 -0
- package/dist/TextArea/index.d.ts +1 -0
- package/dist/TextArea/index.js +2 -0
- package/dist/TextArea/index.js.map +1 -0
- package/dist/TextField/TextField.d.ts +7 -0
- package/dist/TextField/TextField.js +85 -0
- package/dist/TextField/TextField.js.map +1 -0
- package/dist/TextField/TextField.stories.d.ts +5 -0
- package/dist/TextField/TextField.stories.js +11 -0
- package/dist/TextField/TextField.stories.js.map +1 -0
- package/dist/TextField/TextField.test.d.ts +1 -0
- package/dist/TextField/TextField.test.js +41 -0
- package/dist/TextField/TextField.test.js.map +1 -0
- package/dist/TextField/TextField.types.d.ts +199 -0
- package/dist/TextField/TextField.types.js +2 -0
- package/dist/TextField/TextField.types.js.map +1 -0
- package/dist/TextField/index.d.ts +1 -0
- package/dist/TextField/index.js +2 -0
- package/dist/TextField/index.js.map +1 -0
- package/dist/ToolbarButton/ToolbarButton.d.ts +3 -0
- package/dist/ToolbarButton/ToolbarButton.js +57 -0
- package/dist/ToolbarButton/ToolbarButton.js.map +1 -0
- package/dist/ToolbarButton/ToolbarButton.stories.d.ts +5 -0
- package/dist/ToolbarButton/ToolbarButton.stories.js +28 -0
- package/dist/ToolbarButton/ToolbarButton.stories.js.map +1 -0
- package/dist/ToolbarButton/ToolbarButton.test.d.ts +1 -0
- package/dist/ToolbarButton/ToolbarButton.test.js +85 -0
- package/dist/ToolbarButton/ToolbarButton.test.js.map +1 -0
- package/dist/ToolbarButton/ToolbarButton.types.d.ts +122 -0
- package/dist/ToolbarButton/ToolbarButton.types.js +2 -0
- package/dist/ToolbarButton/ToolbarButton.types.js.map +1 -0
- package/dist/ToolbarButton/index.d.ts +1 -0
- package/dist/ToolbarButton/index.js +2 -0
- package/dist/ToolbarButton/index.js.map +1 -0
- package/dist/Tooltip/QTip.stories.d.ts +5 -0
- package/dist/Tooltip/QTip.stories.js +19 -0
- package/dist/Tooltip/QTip.stories.js.map +1 -0
- package/dist/Tooltip/QTip.types.d.ts +13 -0
- package/dist/Tooltip/QTip.types.js +2 -0
- package/dist/Tooltip/QTip.types.js.map +1 -0
- package/dist/Tooltip/QTipPerformance.stories.d.ts +5 -0
- package/dist/Tooltip/QTipPerformance.stories.js +26 -0
- package/dist/Tooltip/QTipPerformance.stories.js.map +1 -0
- package/dist/Tooltip/Qtip.d.ts +26 -0
- package/dist/Tooltip/Qtip.js +168 -0
- package/dist/Tooltip/Qtip.js.map +1 -0
- package/dist/Tooltip/Tooltip.d.ts +13 -0
- package/dist/Tooltip/Tooltip.js +34 -0
- package/dist/Tooltip/Tooltip.js.map +1 -0
- package/dist/Tooltip/Tooltip.stories.d.ts +5 -0
- package/dist/Tooltip/Tooltip.stories.js +15 -0
- package/dist/Tooltip/Tooltip.stories.js.map +1 -0
- package/dist/Tooltip/Tooltip.types.d.ts +22 -0
- package/dist/Tooltip/Tooltip.types.js +3 -0
- package/dist/Tooltip/Tooltip.types.js.map +1 -0
- package/dist/Tooltip/TooltipPerformance.stories.d.ts +5 -0
- package/dist/Tooltip/TooltipPerformance.stories.js +26 -0
- package/dist/Tooltip/TooltipPerformance.stories.js.map +1 -0
- package/dist/Tooltip/index.d.ts +2 -0
- package/dist/Tooltip/index.js +3 -0
- package/dist/Tooltip/index.js.map +1 -0
- package/dist/Tooltip/qTip.utilities.d.ts +3 -0
- package/dist/Tooltip/qTip.utilities.js +11 -0
- package/dist/Tooltip/qTip.utilities.js.map +1 -0
- package/dist/index.d.ts +46 -0
- package/dist/index.esm.js +3 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/setupTests.d.ts +1 -0
- package/dist/setupTests.js +6 -0
- package/dist/setupTests.js.map +1 -0
- package/dist/src/Alert/Alert.stories.d.ts +1 -0
- package/dist/src/Alert/Alert.types.d.ts +1 -1
- package/dist/styles.css +19 -0
- package/dist/types.d.ts +27 -0
- package/dist/types.js +26 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/browserId.d.ts +9 -0
- package/dist/utils/browserId.js +29 -0
- package/dist/utils/browserId.js.map +1 -0
- package/dist/utils/svg.d.ts +15 -0
- package/dist/utils/svg.js +20 -0
- package/dist/utils/svg.js.map +1 -0
- package/dist/utils/validateStyleDimension.d.ts +2 -0
- package/dist/utils/validateStyleDimension.js +14 -0
- package/dist/utils/validateStyleDimension.js.map +1 -0
- package/dist/utils/validateStyleDimension.test.d.ts +1 -0
- package/dist/utils/validateStyleDimension.test.js +20 -0
- package/dist/utils/validateStyleDimension.test.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import ButtonWithDropdown from './ButtonWithDropdown';
|
|
4
|
+
import Icon from '../Icon';
|
|
5
|
+
import { QTip } from '../Tooltip/Qtip';
|
|
6
|
+
export default {
|
|
7
|
+
title: 'Button with Dropdown',
|
|
8
|
+
};
|
|
9
|
+
export const AllButtonWithDropdownVariants = () => {
|
|
10
|
+
const [openDropdown, setOpenDropdown] = React.useState('');
|
|
11
|
+
const allButtonWithDropdowns = (color, isDark) => (_jsxs("div", { className: isDark ? 'tw-dark tw-bg-sq-dark-background' : '', children: [_jsx("div", { className: "tw-p-5 ", children: _jsx(ButtonWithDropdown, { onOpenChange: (isOpen) => setOpenDropdown(isOpen ? `dropdown-1-${color}-${isDark ? 'dark' : 'light'}` : ''), isOpen: openDropdown === `dropdown-1-${color}-${isDark ? 'dark' : 'light'}`, triggerIcon: _jsx(Icon, { icon: "fc-more", type: "text", extraClassNames: "tw-text-sq-text-color dark:tw-text-sq-white tw-w-[18px]" }), containerTestId: "basic-dropdown1", tooltip: "This is a small dropdown.", tooltipDelay: 0, tooltipPlacement: "top", dropdownItems: [
|
|
12
|
+
{ label: 'Orange', icon: 'fc-data-file', onClick: () => setOpenDropdown('') },
|
|
13
|
+
{ label: 'Mango', icon: 'fc-user-community', onClick: () => setOpenDropdown('') },
|
|
14
|
+
{ label: 'Guava', icon: 'fc-user-community', onClick: () => setOpenDropdown('') },
|
|
15
|
+
{
|
|
16
|
+
label: 'Banana',
|
|
17
|
+
icon: 'fc-user-community',
|
|
18
|
+
onClick: () => setOpenDropdown(''),
|
|
19
|
+
tooltipDelay: 0,
|
|
20
|
+
tooltip: 'This is a banana',
|
|
21
|
+
},
|
|
22
|
+
] }) }), _jsx("div", { className: "tw-p-5 ", children: _jsx(ButtonWithDropdown, { triggerIcon: _jsx(Icon, { icon: "fc-more", type: "text", extraClassNames: "tw-text-sq-text-color dark:tw-text-sq-white tw-w-[18px]" }), onOpenChange: (isOpen) => setOpenDropdown(isOpen ? `dropdown-2-${color}-${isDark ? 'dark' : 'light'}` : ''), isOpen: openDropdown === `dropdown-2-${color}-${isDark ? 'dark' : 'light'}`, dropdownItems: [
|
|
23
|
+
{ label: 'Orange', icon: 'fc-data-file', onClick: () => setOpenDropdown(''), hasDivider: true },
|
|
24
|
+
{ label: 'Mango', icon: 'fc-user-community', onClick: () => setOpenDropdown('') },
|
|
25
|
+
{ label: 'Guava', icon: 'fc-user-community', onClick: () => setOpenDropdown(''), hasDivider: true },
|
|
26
|
+
{ label: 'Banana', icon: 'fc-user-community', onClick: () => setOpenDropdown('') },
|
|
27
|
+
], containerTestId: "basic-dropdown1", tooltip: "This is a normal dropdown.", tooltipDelay: 0, tooltipPlacement: "top" }) }), _jsxs("div", { className: "tw-p-5 ", children: [_jsx("div", { className: "dark:tw-text-white tw-text-xs", children: "Dropdown with arrow" }), _jsx(ButtonWithDropdown, { triggerIcon: _jsx(Icon, { icon: "fc-more", type: "text", extraClassNames: "tw-text-sq-text-color dark:tw-text-sq-white tw-w-[18px]" }), onOpenChange: (isOpen) => setOpenDropdown(isOpen ? `dropdown-3-${color}-${isDark ? 'dark' : 'light'}` : ''), isOpen: openDropdown === `dropdown-3-${color}-${isDark ? 'dark' : 'light'}`, dropdownItems: [
|
|
28
|
+
{ label: 'Orange', icon: 'fc-data-file', onClick: () => setOpenDropdown(''), hasDivider: true },
|
|
29
|
+
{ label: 'Mango', icon: 'fc-user-community', onClick: () => setOpenDropdown('') },
|
|
30
|
+
{ label: 'Guava', icon: 'fc-user-community', onClick: () => setOpenDropdown(''), hasDivider: true },
|
|
31
|
+
{ label: 'Banana', icon: 'fc-user-community', onClick: () => setOpenDropdown('') },
|
|
32
|
+
], containerTestId: "basic-dropdown1", hasArrow: true, tooltip: "This is a normal dropdown aligned to the end", tooltipDelay: 0, tooltipPlacement: "top" })] }), _jsxs("div", { className: "tw-p-5 ", children: [_jsx("div", { className: "dark:tw-text-white tw-text-xs", children: "Dropdown aligned at center" }), _jsx(ButtonWithDropdown, { triggerIcon: _jsx(Icon, { icon: "fc-more", type: "text", extraClassNames: "tw-text-sq-text-color dark:tw-text-sq-white tw-w-[18px]" }), onOpenChange: (isOpen) => setOpenDropdown(isOpen ? `dropdown-4-${color}-${isDark ? 'dark' : 'light'}` : ''), isOpen: openDropdown === `dropdown-4-${color}-${isDark ? 'dark' : 'light'}`, dropdownItems: [
|
|
33
|
+
{ label: 'Orange', icon: 'fc-data-file', onClick: () => setOpenDropdown(''), hasDivider: true },
|
|
34
|
+
{ label: 'Mango', icon: 'fc-user-community', onClick: () => setOpenDropdown('') },
|
|
35
|
+
{ label: 'Guava', icon: 'fc-user-community', onClick: () => setOpenDropdown(''), hasDivider: true },
|
|
36
|
+
{ label: 'Banana', icon: 'fc-user-community', onClick: () => setOpenDropdown('') },
|
|
37
|
+
], containerTestId: "basic-dropdown1", hasArrow: true, tooltip: "This is a normal dropdown aligned to the center", align: "center", tooltipDelay: 0, tooltipPlacement: "top" })] }), _jsxs("div", { className: "tw-p-5 ", children: [_jsx("div", { className: "dark:tw-text-white tw-text-xs", children: "Dropdown aligned at start" }), _jsx(ButtonWithDropdown, { triggerIcon: _jsx(Icon, { icon: "fc-more", type: "text", extraClassNames: "tw-text-sq-text-color dark:tw-text-sq-white tw-w-[18px]" }), onOpenChange: (isOpen) => setOpenDropdown(isOpen ? `dropdown-5-${color}-${isDark ? 'dark' : 'light'}` : ''), isOpen: openDropdown === `dropdown-5-${color}-${isDark ? 'dark' : 'light'}`, dropdownItems: [
|
|
38
|
+
{ label: 'Orange', icon: 'fc-data-file', onClick: () => setOpenDropdown(''), hasDivider: true },
|
|
39
|
+
{ label: 'Mango', icon: 'fc-user-community', onClick: () => setOpenDropdown('') },
|
|
40
|
+
{ label: 'Guava', icon: 'fc-user-community', onClick: () => setOpenDropdown(''), hasDivider: true },
|
|
41
|
+
{ label: 'Banana', icon: 'fc-user-community', onClick: () => setOpenDropdown('') },
|
|
42
|
+
], containerTestId: "basic-dropdown1", hasArrow: true, tooltip: "This is a normal dropdown aligned to the center", align: "start", tooltipDelay: 0, tooltipPlacement: "top" })] }), _jsx("div", { className: "tw-p-5 ", children: _jsx(ButtonWithDropdown, { triggerIcon: _jsx(Icon, { icon: "fc-gears-2", type: "text", extraClassNames: "tw-text-sq-text-color dark:tw-text-sq-white tw-w-[18px]" }), dropdownItems: [], onOpenChange: (isOpen) => setOpenDropdown(isOpen ? `dropdown-6-${color}-${isDark ? 'dark' : 'light'}` : ''), isOpen: openDropdown === `dropdown-6-${color}-${isDark ? 'dark' : 'light'}`, containerTestId: "basic-dropdown2", tooltip: "This is a disabled dropdown.", tooltipDelay: 0, tooltipPlacement: "top", disabled: true }) }), _jsx("div", { className: "tw-p-5 ", children: _jsx(ButtonWithDropdown, { onOpenChange: (isOpen) => setOpenDropdown(isOpen ? `dropdown-7-${color}-${isDark ? 'dark' : 'light'}` : ''), isOpen: openDropdown === `dropdown-7-${color}-${isDark ? 'dark' : 'light'}`, triggerIcon: _jsx(Icon, { icon: "fc-more", type: "text", extraClassNames: "tw-text-sq-text-color dark:tw-text-sq-white tw-w-[18px]" }), containerTestId: "basic-dropdown7", tooltip: "This is a dropdown with submenu", tooltipDelay: 0, tooltipPlacement: "top", dropdownItems: [
|
|
43
|
+
{ label: 'Orange', icon: 'fc-data-file', onClick: () => setOpenDropdown('') },
|
|
44
|
+
{ label: 'Mango', icon: 'fc-user-community', onClick: () => setOpenDropdown('') },
|
|
45
|
+
{
|
|
46
|
+
label: 'Guava',
|
|
47
|
+
icon: 'fc-user-community',
|
|
48
|
+
onClick: () => setOpenDropdown(''),
|
|
49
|
+
tooltipDelay: 0,
|
|
50
|
+
tooltip: 'This is a guava',
|
|
51
|
+
subMenuItems: [
|
|
52
|
+
{ label: 'Orange', iconClass: 'fc-data-file', onClick: () => setOpenDropdown('') },
|
|
53
|
+
{ label: 'Mango', iconClass: 'fc-user-community', onClick: () => setOpenDropdown('') },
|
|
54
|
+
{ label: 'Apple', iconClass: 'fc-user-community', onClick: () => setOpenDropdown(''), disabled: true },
|
|
55
|
+
],
|
|
56
|
+
},
|
|
57
|
+
{ label: 'Banana', icon: 'fc-user-community', onClick: () => setOpenDropdown(''), disabled: true },
|
|
58
|
+
{
|
|
59
|
+
label: 'Cashew',
|
|
60
|
+
icon: 'fc-user-community',
|
|
61
|
+
disabled: true,
|
|
62
|
+
onClick: () => setOpenDropdown(''),
|
|
63
|
+
subMenuItems: [
|
|
64
|
+
{ label: 'Orange', iconClass: 'fc-data-file', onClick: () => setOpenDropdown('') },
|
|
65
|
+
{ label: 'Mango', iconClass: 'fc-user-community', onClick: () => setOpenDropdown('') },
|
|
66
|
+
{ label: 'Apple', iconClass: 'fc-user-community', onClick: () => setOpenDropdown(''), disabled: true },
|
|
67
|
+
],
|
|
68
|
+
},
|
|
69
|
+
] }) }), _jsx("div", { className: "tw-p-5 ", children: _jsx(ButtonWithDropdown, { onOpenChange: (isOpen) => setOpenDropdown(isOpen ? `dropdown-8-${color}-${isDark ? 'dark' : 'light'}` : ''), isOpen: openDropdown === `dropdown-8-${color}-${isDark ? 'dark' : 'light'}`, triggerIcon: _jsx(Icon, { icon: "fc-more", type: "text", extraClassNames: "tw-text-sq-text-color dark:tw-text-sq-white tw-w-[18px]" }), containerTestId: "basic-dropdown8", tooltip: "This is a dropdown with submenu", tooltipDelay: 0, tooltipPlacement: "top", dropdownItems: [
|
|
70
|
+
{
|
|
71
|
+
label: (_jsxs("div", { children: [_jsx("h5", { children: "Label heading" }), _jsx("p", { children: "Label description" }), _jsx("p", { children: "Dropdown is my work" }), _jsx("p", { children: "I do it happily" }), _jsx("p", { children: "Final remards" }), _jsx("p", { children: "Thank you" })] })),
|
|
72
|
+
icon: 'fc-data-file',
|
|
73
|
+
onClick: () => setOpenDropdown(''),
|
|
74
|
+
},
|
|
75
|
+
{ label: 'Mango', icon: 'fc-user-community', onClick: () => setOpenDropdown('') },
|
|
76
|
+
{
|
|
77
|
+
label: 'Guava',
|
|
78
|
+
icon: 'fc-user-community',
|
|
79
|
+
onClick: () => setOpenDropdown(''),
|
|
80
|
+
tooltipDelay: 0,
|
|
81
|
+
tooltip: 'This is a guava',
|
|
82
|
+
subMenuItems: [
|
|
83
|
+
{ label: 'Orange', iconClass: 'fc-data-file', onClick: () => setOpenDropdown('') },
|
|
84
|
+
{ label: 'Mango', iconClass: 'fc-user-community', onClick: () => setOpenDropdown('') },
|
|
85
|
+
{ label: 'Apple', iconClass: 'fc-user-community', onClick: () => setOpenDropdown(''), disabled: true },
|
|
86
|
+
],
|
|
87
|
+
},
|
|
88
|
+
{ label: 'Banana', icon: 'fc-user-community', onClick: () => setOpenDropdown(''), disabled: true },
|
|
89
|
+
{
|
|
90
|
+
label: 'Cashew',
|
|
91
|
+
icon: 'fc-user-community',
|
|
92
|
+
disabled: true,
|
|
93
|
+
onClick: () => setOpenDropdown(''),
|
|
94
|
+
subMenuItems: [
|
|
95
|
+
{ label: 'Orange', iconClass: 'fc-data-file', onClick: () => setOpenDropdown('') },
|
|
96
|
+
{ label: 'Mango', iconClass: 'fc-user-community', onClick: () => setOpenDropdown('') },
|
|
97
|
+
{ label: 'Apple', iconClass: 'fc-user-community', onClick: () => setOpenDropdown(''), disabled: true },
|
|
98
|
+
],
|
|
99
|
+
},
|
|
100
|
+
] }) })] }));
|
|
101
|
+
const renderAllVariations = (color) => (_jsxs("div", { className: "tw-grid tw-grid-cols-2 tw-gap-4 tw-p-4", children: [allButtonWithDropdowns(color), allButtonWithDropdowns(color, true)] }));
|
|
102
|
+
return (_jsxs("div", { className: "tw-grid tw-grid-cols-4 tw-gap-4", children: [_jsx(QTip, {}), _jsxs("div", { className: "color_topic", children: [_jsx("b", { children: "Topic Colors" }), renderAllVariations('topic')] }), _jsxs("div", { className: "color_analysis", children: [_jsx("b", { children: "Analysis Colors" }), renderAllVariations('analysis')] }), _jsxs("div", { className: "color_datalab", children: [_jsx("b", { children: "Datalab Colors" }), renderAllVariations('datalab')] }), _jsxs("div", { className: "color_vantage", children: [_jsx("b", { children: "Vantage Colors" }), renderAllVariations('vantage')] })] }));
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=ButtonWithDropdown.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ButtonWithDropdown.stories.js","sourceRoot":"","sources":["../../src/ButtonWithDropdown/ButtonWithDropdown.stories.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@testing-library/jest-dom';
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import '@testing-library/jest-dom';
|
|
3
|
+
import { render, screen } from '@testing-library/react';
|
|
4
|
+
import userEvent from '@testing-library/user-event';
|
|
5
|
+
import ButtonWithDropdown from './ButtonWithDropdown';
|
|
6
|
+
import Icon from '../Icon';
|
|
7
|
+
describe('ButtonWithDropdown', () => {
|
|
8
|
+
const mockOnClick = jest.fn();
|
|
9
|
+
const testId = 'trigger-icon';
|
|
10
|
+
const tooltip = 'This is a small dropdown.';
|
|
11
|
+
const itemTooltip = 'This is an item from the dropdown.';
|
|
12
|
+
class Context {
|
|
13
|
+
props = {
|
|
14
|
+
triggerIcon: (_jsx(Icon, { icon: "fc-more", type: "text", testId: testId, extraClassNames: "tw-text-sq-text-color dark:tw-text-sq-white tw-w-[18px]" })),
|
|
15
|
+
containerTestId: 'basic-dropdown1',
|
|
16
|
+
tooltip,
|
|
17
|
+
tooltipDelay: 0,
|
|
18
|
+
tooltipPlacement: 'top',
|
|
19
|
+
isHtmlTooltip: false,
|
|
20
|
+
dropdownItems: [
|
|
21
|
+
{ label: 'Orange', icon: 'fc-data-file', onClick: mockOnClick },
|
|
22
|
+
{ label: 'Mango', icon: 'fc-user-community', onClick: mockOnClick },
|
|
23
|
+
{ label: 'Guava', icon: 'fc-user-community', onClick: mockOnClick },
|
|
24
|
+
{
|
|
25
|
+
label: 'Banana',
|
|
26
|
+
icon: 'fc-user-community',
|
|
27
|
+
onClick: mockOnClick,
|
|
28
|
+
tooltip: itemTooltip,
|
|
29
|
+
tooltipPlacement: 'top',
|
|
30
|
+
tooltipDelay: 0,
|
|
31
|
+
isHtmlTooltip: false,
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
let tc;
|
|
37
|
+
beforeEach(() => {
|
|
38
|
+
tc = new Context();
|
|
39
|
+
jest.clearAllMocks();
|
|
40
|
+
});
|
|
41
|
+
const renderButtonWithDropdown = (props) => render(_jsx(ButtonWithDropdown, { ...props }));
|
|
42
|
+
const openDropdown = async () => {
|
|
43
|
+
const popover = screen.getByTestId(testId);
|
|
44
|
+
await userEvent.click(popover);
|
|
45
|
+
};
|
|
46
|
+
test('renders trigger and opens dropdown content on trigger click', async () => {
|
|
47
|
+
renderButtonWithDropdown(tc.props);
|
|
48
|
+
expect(screen.getByTestId('trigger-icon')).toBeInTheDocument();
|
|
49
|
+
await openDropdown();
|
|
50
|
+
expect(screen.getByText('Orange')).toBeInTheDocument();
|
|
51
|
+
});
|
|
52
|
+
test('renders dividers correctly', async () => {
|
|
53
|
+
tc.props.dropdownItems[1].hasDivider = true;
|
|
54
|
+
renderButtonWithDropdown(tc.props);
|
|
55
|
+
expect(screen.getByTestId('trigger-icon')).toBeInTheDocument();
|
|
56
|
+
await openDropdown();
|
|
57
|
+
expect(screen.getByText('Orange')).toBeInTheDocument();
|
|
58
|
+
expect(screen.getByTestId('dropdown-divider-1')).toBeInTheDocument();
|
|
59
|
+
});
|
|
60
|
+
test('calls onClick handler when dropdown item is selected', async () => {
|
|
61
|
+
renderButtonWithDropdown(tc.props);
|
|
62
|
+
await openDropdown();
|
|
63
|
+
const item1 = screen.getByText('Orange');
|
|
64
|
+
await userEvent.click(item1);
|
|
65
|
+
expect(mockOnClick).toHaveBeenCalledTimes(1);
|
|
66
|
+
});
|
|
67
|
+
test('closes dropdown when item is clicked', async () => {
|
|
68
|
+
renderButtonWithDropdown(tc.props);
|
|
69
|
+
await openDropdown();
|
|
70
|
+
const item1 = screen.getByText('Orange');
|
|
71
|
+
await userEvent.click(item1);
|
|
72
|
+
expect(mockOnClick).toHaveBeenCalledTimes(1);
|
|
73
|
+
expect(screen.queryByText('Orange')).not.toBeInTheDocument();
|
|
74
|
+
});
|
|
75
|
+
test('does not open when disabled', async () => {
|
|
76
|
+
tc.props.disabled = true;
|
|
77
|
+
renderButtonWithDropdown(tc.props);
|
|
78
|
+
await openDropdown();
|
|
79
|
+
expect(screen.queryByText('Orange')).not.toBeInTheDocument();
|
|
80
|
+
});
|
|
81
|
+
test('renders button tooltip correctly', async () => {
|
|
82
|
+
renderButtonWithDropdown(tc.props);
|
|
83
|
+
const tooltipText = document.querySelector(`[data-qtip-text="${tooltip}"]`);
|
|
84
|
+
expect(tooltipText).toBeInTheDocument();
|
|
85
|
+
});
|
|
86
|
+
test('renders dropdown item tooltip correctly', async () => {
|
|
87
|
+
renderButtonWithDropdown(tc.props);
|
|
88
|
+
await openDropdown();
|
|
89
|
+
const tooltipText = document.querySelector(`[data-qtip-text="${itemTooltip}"]`);
|
|
90
|
+
expect(tooltipText).toBeInTheDocument();
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
//# sourceMappingURL=ButtonWithDropdown.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ButtonWithDropdown.test.js","sourceRoot":"","sources":["../../src/ButtonWithDropdown/ButtonWithDropdown.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { TooltipComponentProps } from '../Tooltip/Tooltip.types';
|
|
3
|
+
/**
|
|
4
|
+
* Interface for sub-menu items that appear in nested dropdown menus.
|
|
5
|
+
* Used to create hierarchical menu structures within dropdown items.
|
|
6
|
+
*/
|
|
7
|
+
interface DropdownSubItem {
|
|
8
|
+
/**
|
|
9
|
+
* Icon class name to display next to the sub-item label.
|
|
10
|
+
* Typically uses FontAwesome classes (e.g., 'fc-zoom', 'fc-delete').
|
|
11
|
+
* Optional visual enhancement for better user recognition.
|
|
12
|
+
*/
|
|
13
|
+
iconClass?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Text label for the dropdown sub-item.
|
|
16
|
+
* This is the clickable text that users will see and interact with.
|
|
17
|
+
*/
|
|
18
|
+
label: string;
|
|
19
|
+
/**
|
|
20
|
+
* Callback function triggered when the sub-item is clicked.
|
|
21
|
+
* Use this to define the action that should occur when users select this sub-item.
|
|
22
|
+
*/
|
|
23
|
+
onClick?: (e?: Event) => void;
|
|
24
|
+
/**
|
|
25
|
+
* When true, disables the sub-item preventing user interaction.
|
|
26
|
+
* Disabled items appear visually dimmed and don't respond to clicks.
|
|
27
|
+
*/
|
|
28
|
+
disabled?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Tooltip text to display when hovering over the sub-item.
|
|
31
|
+
* Provides additional context or information about the sub-item's action.
|
|
32
|
+
*/
|
|
33
|
+
tooltip?: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Interface for main dropdown menu items that can contain sub-menus.
|
|
37
|
+
* Extends TooltipComponentProps for enhanced tooltip functionality.
|
|
38
|
+
*/
|
|
39
|
+
interface DropdownItems extends TooltipComponentProps {
|
|
40
|
+
/**
|
|
41
|
+
* HTML ID attribute for the dropdown item element.
|
|
42
|
+
* Should be unique for proper HTML semantics and accessibility.
|
|
43
|
+
*/
|
|
44
|
+
id?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Icon class name to display next to the item label.
|
|
47
|
+
* Typically uses Seeq or FontAwesome classes for consistent visual styling.
|
|
48
|
+
*/
|
|
49
|
+
icon?: string;
|
|
50
|
+
/**
|
|
51
|
+
* Type/style of the icon that determines its rendering and colors.
|
|
52
|
+
* Common values include 'theme', 'text', 'color' based on the Icon component.
|
|
53
|
+
*/
|
|
54
|
+
iconType?: string;
|
|
55
|
+
/**
|
|
56
|
+
* Custom color for the icon when using color-type icons.
|
|
57
|
+
* Can be any valid CSS color value (hex, rgb, color names).
|
|
58
|
+
*/
|
|
59
|
+
iconColor?: string;
|
|
60
|
+
/**
|
|
61
|
+
* Custom HTML ID attribute specifically for the icon element.
|
|
62
|
+
* Useful for targeting the icon separately from the item container.
|
|
63
|
+
*/
|
|
64
|
+
iconCustomId?: string;
|
|
65
|
+
/**
|
|
66
|
+
* Additional CSS classes to apply to the icon element.
|
|
67
|
+
* Use this to customize icon appearance beyond standard styling.
|
|
68
|
+
*/
|
|
69
|
+
iconExtraClassNames?: string;
|
|
70
|
+
/**
|
|
71
|
+
* Content to display as the item label.
|
|
72
|
+
* Can be simple text or any React element for rich content like formatted text or badges.
|
|
73
|
+
*/
|
|
74
|
+
label: string | React.ReactNode;
|
|
75
|
+
/**
|
|
76
|
+
* Custom HTML ID attribute specifically for the label element.
|
|
77
|
+
* Useful for accessibility or when you need to target the label separately.
|
|
78
|
+
*/
|
|
79
|
+
labelCustomId?: string;
|
|
80
|
+
/**
|
|
81
|
+
* When true, treats this item as a non-interactive label/header.
|
|
82
|
+
* Label items typically appear different visually and don't trigger onClick events.
|
|
83
|
+
*/
|
|
84
|
+
isLabel?: boolean;
|
|
85
|
+
/**
|
|
86
|
+
* Callback function triggered when the dropdown item is clicked.
|
|
87
|
+
* Required for interactive items. Use this to define the primary action for the item.
|
|
88
|
+
*/
|
|
89
|
+
onClick: (e?: Event) => void;
|
|
90
|
+
/**
|
|
91
|
+
* Additional CSS classes to apply to the label element.
|
|
92
|
+
* Use this to customize label appearance, typography, or spacing.
|
|
93
|
+
*/
|
|
94
|
+
labelClasses?: string;
|
|
95
|
+
/**
|
|
96
|
+
* When true, disables this dropdown item preventing user interaction.
|
|
97
|
+
* Disabled items appear visually dimmed and don't respond to clicks.
|
|
98
|
+
*/
|
|
99
|
+
disabled?: boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Custom HTML ID attribute for the entire dropdown item container.
|
|
102
|
+
* Useful for unique identification and accessibility purposes.
|
|
103
|
+
*/
|
|
104
|
+
itemCustomId?: string;
|
|
105
|
+
/**
|
|
106
|
+
* Additional CSS classes to apply to the dropdown item container.
|
|
107
|
+
* Use this to customize item appearance, spacing, or hover effects.
|
|
108
|
+
*/
|
|
109
|
+
itemExtraClassNames?: string;
|
|
110
|
+
/**
|
|
111
|
+
* Test ID attribute for the label element used in automated testing.
|
|
112
|
+
* Helps identify and interact with specific dropdown item labels in tests.
|
|
113
|
+
*/
|
|
114
|
+
labelTestId?: string;
|
|
115
|
+
/**
|
|
116
|
+
* Test ID attribute for the icon element used in automated testing.
|
|
117
|
+
* Helps identify and interact with specific dropdown item icons in tests.
|
|
118
|
+
*/
|
|
119
|
+
iconTestId?: string;
|
|
120
|
+
/**
|
|
121
|
+
* When true, displays a visual divider line below this dropdown item.
|
|
122
|
+
* Useful for grouping related items or separating different sections of the menu.
|
|
123
|
+
*/
|
|
124
|
+
hasDivider?: boolean;
|
|
125
|
+
/**
|
|
126
|
+
* Test ID attribute for the dropdown item container used in automated testing.
|
|
127
|
+
* Helps identify and interact with specific dropdown items in test suites.
|
|
128
|
+
*/
|
|
129
|
+
testId?: string;
|
|
130
|
+
/**
|
|
131
|
+
* Array of sub-menu items that appear when this item is hovered or clicked.
|
|
132
|
+
* Creates hierarchical dropdown menus for organizing related actions.
|
|
133
|
+
*/
|
|
134
|
+
subMenuItems?: DropdownSubItem[];
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Props for the ButtonWithDropdown component that creates a button with an attached dropdown menu.
|
|
138
|
+
* Extends TooltipComponentProps to support tooltip functionality on the trigger button.
|
|
139
|
+
*/
|
|
140
|
+
export interface ButtonWithDropdownProps extends TooltipComponentProps {
|
|
141
|
+
/**
|
|
142
|
+
* Array of items to display in the dropdown menu.
|
|
143
|
+
* Each item can be interactive (with onClick) or decorative (labels/dividers).
|
|
144
|
+
* Items can also contain sub-menus for hierarchical organization.
|
|
145
|
+
*/
|
|
146
|
+
dropdownItems: DropdownItems[];
|
|
147
|
+
/**
|
|
148
|
+
* React element to use as the clickable trigger button.
|
|
149
|
+
* Typically an icon, text, or button element that users click to open the dropdown.
|
|
150
|
+
*/
|
|
151
|
+
triggerIcon: React.ReactNode;
|
|
152
|
+
/**
|
|
153
|
+
* HTML ID attribute for the dropdown trigger element.
|
|
154
|
+
* Should be unique across the page for proper HTML semantics and accessibility.
|
|
155
|
+
*/
|
|
156
|
+
id?: string;
|
|
157
|
+
/**
|
|
158
|
+
* Additional CSS classes to apply to the dropdown trigger button.
|
|
159
|
+
* Use this to customize the trigger's appearance beyond default styling.
|
|
160
|
+
*/
|
|
161
|
+
extraClassNames?: string;
|
|
162
|
+
/**
|
|
163
|
+
* Test ID attribute for the dropdown container element used in automated testing.
|
|
164
|
+
* Applied to the main container that wraps both trigger and dropdown content.
|
|
165
|
+
*/
|
|
166
|
+
containerTestId?: string;
|
|
167
|
+
/**
|
|
168
|
+
* Additional CSS classes to apply to the dropdown content container.
|
|
169
|
+
* Use this to customize the dropdown menu's appearance, spacing, or styling.
|
|
170
|
+
*/
|
|
171
|
+
contentExtraClassNames?: string;
|
|
172
|
+
/**
|
|
173
|
+
* When true, disables the dropdown trigger preventing user interaction.
|
|
174
|
+
* Disabled triggers appear visually dimmed and don't open the dropdown when clicked.
|
|
175
|
+
*/
|
|
176
|
+
disabled?: boolean;
|
|
177
|
+
/**
|
|
178
|
+
* Horizontal alignment of the dropdown content relative to the trigger:
|
|
179
|
+
* - `start`: Aligns to the left edge of the trigger
|
|
180
|
+
* - `center`: Centers the dropdown on the trigger
|
|
181
|
+
* - `end`: Aligns to the right edge of the trigger
|
|
182
|
+
*/
|
|
183
|
+
align?: 'start' | 'center' | 'end';
|
|
184
|
+
/**
|
|
185
|
+
* Numeric offset in pixels from the aligned position.
|
|
186
|
+
* Positive values move the dropdown further from the trigger in the align direction.
|
|
187
|
+
*/
|
|
188
|
+
alignOffset?: number;
|
|
189
|
+
/**
|
|
190
|
+
* Position of the dropdown relative to the trigger element:
|
|
191
|
+
* - `top`: Dropdown appears above the trigger
|
|
192
|
+
* - `bottom`: Dropdown appears below the trigger
|
|
193
|
+
* - `left`: Dropdown appears to the left of the trigger
|
|
194
|
+
* - `right`: Dropdown appears to the right of the trigger
|
|
195
|
+
*/
|
|
196
|
+
placement?: 'top' | 'bottom' | 'left' | 'right';
|
|
197
|
+
/**
|
|
198
|
+
* Numeric offset in pixels from the placement position.
|
|
199
|
+
* Positive values move the dropdown further away from the trigger.
|
|
200
|
+
*/
|
|
201
|
+
placementOffset?: number;
|
|
202
|
+
/**
|
|
203
|
+
* When true, displays a visual arrow pointing from the dropdown to the trigger.
|
|
204
|
+
* Helps users understand the relationship between trigger and dropdown content.
|
|
205
|
+
*/
|
|
206
|
+
hasArrow?: boolean;
|
|
207
|
+
/**
|
|
208
|
+
* Controls whether the dropdown is currently open and visible.
|
|
209
|
+
* Use this for controlled dropdown behavior where you manage open state externally.
|
|
210
|
+
*/
|
|
211
|
+
isOpen?: boolean;
|
|
212
|
+
/**
|
|
213
|
+
* Callback function triggered when the dropdown open state changes.
|
|
214
|
+
* Receives the new open state as a boolean parameter. Use this to sync with external state.
|
|
215
|
+
*/
|
|
216
|
+
onOpenChange?: (isOpen: boolean) => void;
|
|
217
|
+
/**
|
|
218
|
+
* When true, automatically focuses the trigger button when the dropdown closes.
|
|
219
|
+
* Improves keyboard navigation and accessibility by returning focus to the trigger.
|
|
220
|
+
*/
|
|
221
|
+
setFocusOnTriggerOnClose?: boolean;
|
|
222
|
+
/**
|
|
223
|
+
* When true, traps keyboard focus within the dropdown when it's open.
|
|
224
|
+
* Prevents users from tabbing outside the dropdown, improving accessibility.
|
|
225
|
+
*/
|
|
226
|
+
keepFocusInsideDropdown?: boolean;
|
|
227
|
+
/**
|
|
228
|
+
* Callback function triggered when the dropdown container is clicked.
|
|
229
|
+
* Receives the click event. Use this for handling container-level interactions.
|
|
230
|
+
*/
|
|
231
|
+
onContainerClick?: (e: React.MouseEvent<HTMLDivElement>) => void;
|
|
232
|
+
}
|
|
233
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ButtonWithDropdown.types.js","sourceRoot":"","sources":["../../src/ButtonWithDropdown/ButtonWithDropdown.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './ButtonWithDropdown';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ButtonWithDropdown/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { useRef } from 'react';
|
|
4
|
+
import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
5
|
+
import { getQTipData } from '../Tooltip/qTip.utilities';
|
|
6
|
+
const bgStyles = ['tw-bg-sq-white', 'dark:tw-bg-sq-dark-background'].join(' ');
|
|
7
|
+
const borderStyles = [
|
|
8
|
+
'tw-border-solid',
|
|
9
|
+
'tw-border',
|
|
10
|
+
'tw-rounded-popover',
|
|
11
|
+
'tw-border-sq-disabled-gray',
|
|
12
|
+
'dark:tw-border-gray-500',
|
|
13
|
+
].join(' ');
|
|
14
|
+
const disabledClasses = ['tw-opacity-50', 'tw-cursor-not-allowed'].join(' ');
|
|
15
|
+
const ButtonWithPopover = ({ children, trigger, id, hasArrow, extraTriggerClassNames, extraPopoverClassNames, containerTestId, onInteractOutside, onPointerDownOutside, isTriggerAsChild = false, shouldTriggerFullWidth = false, disabled = false, align = 'end', alignOffset = -35, placement = 'bottom', placementOffset = 2, isHoverEnabled = false, hoverOpenDelay = 300, onOpenChange, isOpen, isCloseOnContentClick = false, isPortal = false, ...tooltipProps }) => {
|
|
16
|
+
const tooltipData = getQTipData(tooltipProps);
|
|
17
|
+
const timeout = useRef(null);
|
|
18
|
+
const [isHoveredOpen, setIsHoveredOpen] = React.useState(false);
|
|
19
|
+
const clearHoverTimeout = () => {
|
|
20
|
+
if (timeout.current) {
|
|
21
|
+
clearTimeout(timeout.current);
|
|
22
|
+
timeout.current = null;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
const onHoverStart = () => {
|
|
26
|
+
if (isHoverEnabled) {
|
|
27
|
+
clearHoverTimeout();
|
|
28
|
+
timeout.current = setTimeout(() => {
|
|
29
|
+
setIsHoveredOpen(true);
|
|
30
|
+
onOpenChange && onOpenChange(true);
|
|
31
|
+
}, hoverOpenDelay);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
const onHoverEnd = () => {
|
|
35
|
+
if (isHoverEnabled) {
|
|
36
|
+
clearHoverTimeout();
|
|
37
|
+
timeout.current = setTimeout(() => {
|
|
38
|
+
setIsHoveredOpen(false);
|
|
39
|
+
onOpenChange && onOpenChange(false);
|
|
40
|
+
}, 200);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
React.useEffect(() => clearHoverTimeout, []);
|
|
44
|
+
const renderContent = () => {
|
|
45
|
+
return (_jsx(PopoverPrimitive.Content, { sideOffset: placementOffset, align: align, side: placement, onInteractOutside: onInteractOutside, onPointerDownOutside: onPointerDownOutside, alignOffset: isHoverEnabled ? -10 : alignOffset, asChild: true, onClick: () => isCloseOnContentClick && onOpenChange && onOpenChange(false), className: "focus-visible:tw-outline-none tw-outline-none tw-w-full tw-h-full", children: _jsxs("div", { "data-testid": containerTestId, className: `${bgStyles} ${borderStyles} tw-relative tw-z-[1200] tw-min-w-6 focus-visible:tw-outline-none tw-outline-none data-[state=open]:tw-animate-in data-[state=closed]:tw-animate-out
|
|
46
|
+
data-[side=top]:tw-animate-slideDownAndFade data-[side=right]:tw-animate-slideLeftAndFade data-[side=bottom]:tw-animate-slideUpAndFade data-[side=left]:tw-animate-slideRightAndFade tw-text-sq-text-color
|
|
47
|
+
${extraPopoverClassNames || ''}`, children: [hasArrow && (_jsx(PopoverPrimitive.Arrow, { asChild: true, children: _jsx("div", { className: "tw-fill-transparent tw-bg-white tw-w-[15px] tw-h-[15px] tw-mt-[-7px] tw-rotate-45 dark:tw-bg-sq-dark-background tw-border-b tw-border-r tw-border-sq-disabled-gray dark:tw-border-gray-500" }) })), children] }) }));
|
|
48
|
+
};
|
|
49
|
+
const renderPopover = (popoverOpenState) => {
|
|
50
|
+
return (_jsxs(PopoverPrimitive.Root, { open: popoverOpenState, defaultOpen: false, onOpenChange: onOpenChange, children: [trigger ? (_jsx(PopoverPrimitive.Trigger, { id: id, asChild: isTriggerAsChild, className: `focus-visible:tw-outline-none tw-outline-none ${shouldTriggerFullWidth ? 'tw-w-full tw-h-full' : ''}`, disabled: disabled, children: _jsx("div", { ...tooltipData, onMouseOver: onHoverStart, onMouseOut: onHoverEnd, className: `tw-bg-transparent focus-visible:tw-outline-none tw-outline-none ${disabled ? disabledClasses : ''} ${shouldTriggerFullWidth ? 'tw-flex tw-flex-col tw-items-center tw-justify-center' : 'tw-inline'} ${extraTriggerClassNames || ''}`, children: trigger }) })) : (_jsx(PopoverPrimitive.Trigger, { asChild: true, children: _jsx("div", {}) })), isPortal ? _jsx(PopoverPrimitive.Portal, { children: renderContent() }) : renderContent()] }));
|
|
51
|
+
};
|
|
52
|
+
return isHoverEnabled ? renderPopover(isHoveredOpen) : renderPopover(isOpen);
|
|
53
|
+
};
|
|
54
|
+
export default ButtonWithPopover;
|
|
55
|
+
//# sourceMappingURL=ButtonWithPopover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ButtonWithPopover.js","sourceRoot":"","sources":["../../src/ButtonWithPopover/ButtonWithPopover.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import ButtonWithPopover from './ButtonWithPopover';
|
|
4
|
+
import Icon from '../Icon';
|
|
5
|
+
import { QTip } from '../Tooltip/Qtip';
|
|
6
|
+
export default {
|
|
7
|
+
title: 'Button with Popover',
|
|
8
|
+
};
|
|
9
|
+
export const AllButtonWithPopoverVariants = () => {
|
|
10
|
+
const options = ['Chocolate', 'Strawberry', 'Vanilla', 'Rocky Road', 'Crazy Cow', 'Almond Joy'];
|
|
11
|
+
const renderFlavours = () => (_jsxs("div", { className: "tw-text-sm dark:tw-text-white tw-w-72 tw-p-4", children: [_jsx("p", { className: "tw-font-bold", children: "Flavors" }), _jsx("div", { className: "tw-w-full tw-flex tw-flex-wrap tw-gap-1", children: options.map((option) => (_jsxs("div", { className: "tw-flex tw-items-center tw-px-2 tw-py-1 tw-mt-2 tw tw-rounded-full tw-border-sq-color-dark-dark tw-border", children: [_jsx(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-check", extraClassNames: "tw-mr-2" }), _jsx("span", { children: option })] }, option))) })] }));
|
|
12
|
+
const renderInputFields = () => {
|
|
13
|
+
const [name, setName] = React.useState('');
|
|
14
|
+
const [email, setEmail] = React.useState('');
|
|
15
|
+
return (_jsx("div", { className: "tw-w-72 tw-p-4", children: _jsxs("div", { className: "tw-flex tw-flex-col tw-gap-2", children: [_jsx("input", { type: "text", value: name, onChange: (e) => setName(e.target.value), placeholder: "Enter your name", className: "tw-p-2 tw-rounded tw-border tw-border-sq-color-dark-dark dark:tw-border-sq-dark-background tw-bg-transparent" }), _jsx("input", { type: "text", value: email, onChange: (e) => setEmail(e.target.value), placeholder: "Enter your email", className: "tw-p-2 tw-rounded tw-border tw-border-sq-color-dark-dark dark:tw-border-sq-dark-background tw-bg-transparent" }), _jsx("button", { className: "tw-p-2 tw-rounded tw-border tw-border-sq-color-dark-dark dark:tw-border-sq-dark-background tw-bg-transparent tw-text-sq-color", children: "Submit" })] }) }));
|
|
16
|
+
};
|
|
17
|
+
const [openPopver, setOpenPopover] = React.useState('');
|
|
18
|
+
const iconRef = React.useRef(null);
|
|
19
|
+
const allButtonWithPopovers = (isDark = false, topic) => (_jsxs("div", { className: isDark ? 'tw-dark tw-bg-sq-dark-background ' : '', children: [_jsx("div", { className: "tw-p-5 ", children: _jsx(ButtonWithPopover, { trigger: _jsx(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-1`, tooltip: "This is a small popover.", tooltipDelay: 0, tooltipPlacement: "top", isHtmlTooltip: false, children: renderFlavours() }) }), _jsx("div", { className: "tw-p-5 ", children: _jsx(ButtonWithPopover, { trigger: _jsx(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-2`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-2`, onOpenChange: (isOpen) => setOpenPopover(isOpen ? `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-2` : ''), tooltip: "This is a normal popover.", tooltipDelay: 0, tooltipPlacement: "top", isHtmlTooltip: false, children: renderFlavours() }) }), _jsxs("div", { className: "tw-p-5 ", children: [_jsx("p", { className: "dark:tw-text-sq-white tw-text-sm tw-mb-4", children: "Close popover on content click" }), _jsx(ButtonWithPopover, { trigger: _jsx(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-3`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-3`, onOpenChange: (isOpen) => setOpenPopover(isOpen ? `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-3` : ''), tooltip: "This is a normal popover.", tooltipDelay: 0, tooltipPlacement: "top", isCloseOnContentClick: true, isHtmlTooltip: false, children: renderFlavours() })] }), _jsx("div", { className: "tw-p-5 ", children: _jsx(ButtonWithPopover, { trigger: _jsx(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-4`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-4`, onOpenChange: (isOpen) => setOpenPopover(isOpen ? `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-4` : ''), tooltip: "This is a disabled popover.", tooltipDelay: 0, tooltipPlacement: "top", isHtmlTooltip: false, disabled: true, children: renderFlavours() }) }), _jsxs("div", { className: "tw-p-5 ", children: [_jsx("div", { className: "dark:tw-text-white tw-text-xs", children: "Popover with arrow" }), _jsx(ButtonWithPopover, { trigger: _jsx(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-5`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-5`, onOpenChange: (isOpen) => setOpenPopover(isOpen ? `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-5` : ''), tooltip: "This is a normal popover with arrow.", tooltipDelay: 0, tooltipPlacement: "top", hasArrow: true, isHtmlTooltip: false, children: renderFlavours() })] }), _jsxs("div", { className: "tw-p-5 ", children: [_jsx("div", { className: "dark:tw-text-white tw-text-xs", children: "Popover aligned at center" }), _jsx(ButtonWithPopover, { trigger: _jsx(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-6`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-6`, onOpenChange: (isOpen) => setOpenPopover(isOpen ? `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-6` : ''), tooltip: "This is a normal popover with arrow.", tooltipDelay: 0, tooltipPlacement: "top", align: "center", hasArrow: true, isHtmlTooltip: false, children: renderFlavours() })] }), _jsxs("div", { className: "tw-p-5 ", children: [_jsx("div", { className: "dark:tw-text-white tw-text-xs", children: "Popover aligned at start" }), _jsx(ButtonWithPopover, { trigger: _jsx(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-7`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-7`, onOpenChange: (isOpen) => setOpenPopover(isOpen ? `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-7` : ''), tooltip: "This is a normal popover with arrow.", tooltipDelay: 0, align: "start", tooltipPlacement: "top", hasArrow: true, isHtmlTooltip: false, children: renderFlavours() })] }), _jsxs("div", { className: "tw-p-5 ", children: [_jsx("div", { className: "dark:tw-text-white tw-text-xs", children: "Popover triggered by hover" }), _jsx(ButtonWithPopover, { trigger: _jsx(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-8`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-8`, onOpenChange: (isOpen) => setOpenPopover(isOpen ? `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-8` : ''), isHoverEnabled: true, align: "start", tooltipPlacement: "top", hasArrow: true, isHtmlTooltip: false, children: renderFlavours() })] }), _jsxs("div", { className: "tw-p-5 ", children: [_jsx(ButtonWithPopover, { trigger: _jsx("div", { className: "dark:tw-text-white tw-text-xs", children: "Popover triggered by another element" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-9`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-9`, onInteractOutside: () => setOpenPopover(''), align: "start", tooltipPlacement: "top", hasArrow: true, isHtmlTooltip: false, children: renderFlavours() }), openPopver != `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-9` && (_jsx("div", { ref: iconRef, onClick: () => {
|
|
20
|
+
setOpenPopover(`basic-popover-${isDark ? 'dark' : 'light'}-${topic}-9`);
|
|
21
|
+
}, children: _jsx(Icon, { type: "text", icon: "fc-all-items" }) }))] }), _jsxs("div", { className: "tw-p-5 ", children: [_jsx("div", { className: "dark:tw-text-white tw-text-xs", children: "Popover with input fields" }), _jsx(ButtonWithPopover, { trigger: _jsx(Icon, { type: "color", color: "rgb(var(--sq-color-dark-dark))", icon: "fc-more" }), containerTestId: `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-10`, isOpen: openPopver === `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-10`, onOpenChange: (isOpen) => setOpenPopover(isOpen ? `basic-popover-${isDark ? 'dark' : 'light'}-${topic}-10` : ''), tooltip: "This is a normal popover with arrow.", tooltipDelay: 0, tooltipPlacement: "top", align: "center", hasArrow: true, isHtmlTooltip: false, children: renderInputFields() })] })] }));
|
|
22
|
+
const renderAllVariations = (color) => (_jsxs("div", { className: "tw-grid tw-grid-cols-2 tw-gap-4 tw-p-4", children: [allButtonWithPopovers(false, color), allButtonWithPopovers(true, color)] }));
|
|
23
|
+
return (_jsxs("div", { className: "tw-grid tw-grid-cols-4 tw-gap-4", children: [_jsx(QTip, {}), _jsxs("div", { className: "color_topic", children: [_jsx("b", { children: "Topic Colors" }), renderAllVariations('topic')] }), _jsxs("div", { className: "color_analysis", children: [_jsx("b", { children: "Analysis Colors" }), renderAllVariations('analysis')] }), _jsxs("div", { className: "color_datalab", children: [_jsx("b", { children: "Datalab Colors" }), renderAllVariations('datalab')] }), _jsxs("div", { className: "color_vantage", children: [_jsx("b", { children: "Vantage Colors" }), renderAllVariations('vantage')] })] }));
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=ButtonWithPopover.stories.js.map
|