@trackunit/react-components 0.4.9 → 0.4.11
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/index.cjs.js +10 -7
- package/index.esm.js +11 -9
- package/package.json +2 -3
- package/src/components/ToggleGroup/ToggleGroup.d.ts +8 -4
package/index.cjs.js
CHANGED
|
@@ -10,7 +10,6 @@ var IconSpriteMini = require('@trackunit/ui-icons/icons-sprite-mini.svg');
|
|
|
10
10
|
var IconSpriteOutline = require('@trackunit/ui-icons/icons-sprite-outline.svg');
|
|
11
11
|
var IconSpriteSolid = require('@trackunit/ui-icons/icons-sprite-solid.svg');
|
|
12
12
|
var stringTs = require('string-ts');
|
|
13
|
-
var uuid = require('uuid');
|
|
14
13
|
var cssClassVarianceUtilities = require('@trackunit/css-class-variance-utilities');
|
|
15
14
|
var reactSlot = require('@radix-ui/react-slot');
|
|
16
15
|
var isEqual = require('lodash/isEqual');
|
|
@@ -168,7 +167,7 @@ const isSafari = () => {
|
|
|
168
167
|
*/
|
|
169
168
|
const Icon = ({ name, size = "large", className, dataTestId, color, onClick, type, style, forwardedRef, ariaLabel, fontSize, ariaLabelledBy, ariaDescribedBy, }) => {
|
|
170
169
|
const useTagRef = React.useRef(null);
|
|
171
|
-
const ICON_CONTAINER_ID =
|
|
170
|
+
const ICON_CONTAINER_ID = sharedUtils.uuidv4();
|
|
172
171
|
const correctIconType = React.useMemo(() => {
|
|
173
172
|
if (size === "small") {
|
|
174
173
|
return "micro";
|
|
@@ -1459,7 +1458,7 @@ const BreadcrumbForMediumScreen = ({ dataTestId, breadcrumbItems }) => {
|
|
|
1459
1458
|
return reducedArrayElements;
|
|
1460
1459
|
}, [breadcrumbItems, dataTestId]);
|
|
1461
1460
|
const reducedArray = getReducedArray();
|
|
1462
|
-
return (jsxRuntime.jsx("div", { className: cvaBreadcrumbForMediumScreen({ expanded }), "data-testid": dataTestId, children: (!expanded && reducedArray.length !== 0 ? reducedArray : breadcrumbItems).map(item => (jsxRuntime.jsx(BreadcrumbItem, { dataTestId: `breadcrumbItem-${dataTestId}`, item: item }, `${item.props.label}-${
|
|
1461
|
+
return (jsxRuntime.jsx("div", { className: cvaBreadcrumbForMediumScreen({ expanded }), "data-testid": dataTestId, children: (!expanded && reducedArray.length !== 0 ? reducedArray : breadcrumbItems).map(item => (jsxRuntime.jsx(BreadcrumbItem, { dataTestId: `breadcrumbItem-${dataTestId}`, item: item }, `${item.props.label}-${sharedUtils.uuidv4()}`))) }));
|
|
1463
1462
|
};
|
|
1464
1463
|
|
|
1465
1464
|
/**
|
|
@@ -1522,7 +1521,7 @@ const BreadcrumbContainer = ({ dataTestId, breadcrumbItems }) => {
|
|
|
1522
1521
|
* BreadcrumbItem is a helper component that renders the individual breadcrumb item.
|
|
1523
1522
|
*/
|
|
1524
1523
|
const BreadcrumbItem = ({ item, dataTestId }) => {
|
|
1525
|
-
const id =
|
|
1524
|
+
const id = sharedUtils.uuidv4();
|
|
1526
1525
|
return (jsxRuntime.jsx("div", { className: cvaBreadcrumbItem(), "data-testid": dataTestId, id: `${item.props.label}-${id}`, children: item }));
|
|
1527
1526
|
};
|
|
1528
1527
|
|
|
@@ -1792,7 +1791,7 @@ const cvaChevronIcon = cssClassVarianceUtilities.cvaMerge(["transition-transform
|
|
|
1792
1791
|
* @returns {JSX.Element} Collapse component
|
|
1793
1792
|
*/
|
|
1794
1793
|
const Collapse = ({ id, initialExpanded = false, onToggle, label, children, className, headerClassName, headerAddon, dataTestId, }) => {
|
|
1795
|
-
const LABEL_ID =
|
|
1794
|
+
const LABEL_ID = sharedUtils.uuidv4();
|
|
1796
1795
|
const [expanded, setExpanded] = React__namespace.useState(initialExpanded);
|
|
1797
1796
|
const handleClick = React__namespace.useCallback((e) => {
|
|
1798
1797
|
if (onToggle) {
|
|
@@ -4725,7 +4724,7 @@ function defaultHeader(date, showTime) {
|
|
|
4725
4724
|
}
|
|
4726
4725
|
|
|
4727
4726
|
const cvaToggleGroup = cssClassVarianceUtilities.cvaMerge(["inline-flex", "divide-x", "divide-slate-300"]);
|
|
4728
|
-
const cvaToggleItem = cssClassVarianceUtilities.cvaMerge(["text-slate-600", "rounded-none", "bg-transparent", "flex", "border-x-0"], {
|
|
4727
|
+
const cvaToggleItem = cssClassVarianceUtilities.cvaMerge(["text-slate-600", "rounded-none", "bg-transparent", "flex", "border-x-0", "bg-white"], {
|
|
4729
4728
|
variants: {
|
|
4730
4729
|
selected: {
|
|
4731
4730
|
true: ["bg-slate-200", "hover:bg-slate-200", "text-slate-800"],
|
|
@@ -4758,7 +4757,10 @@ const ToggleGroup = ({ list, selected, setSelected, onChange, disabled = false,
|
|
|
4758
4757
|
onChange === null || onChange === void 0 ? void 0 : onChange(item.id);
|
|
4759
4758
|
}, selected: selected === item.id, size: size, text: item.text, title: item.title, tooltip: item.tooltip }, item.id))) }));
|
|
4760
4759
|
};
|
|
4761
|
-
|
|
4760
|
+
/**
|
|
4761
|
+
* Individual TooggleItem to create custom ToggleGroups
|
|
4762
|
+
*/
|
|
4763
|
+
const ToggleItem = ({ title, onClick, disabled = false, isIconOnly = false, iconName, size, className, selected = false, text, tooltip, dataTestId, }) => {
|
|
4762
4764
|
return isIconOnly ? (jsxRuntime.jsx(Tooltip, { label: (tooltip === null || tooltip === void 0 ? void 0 : tooltip.content) || title, placement: (tooltip === null || tooltip === void 0 ? void 0 : tooltip.placement) || "top", children: jsxRuntime.jsx(IconButton, { className: cvaToggleItem({ className, selected }), "data-testid": dataTestId, disabled: disabled, icon: iconName ? (jsxRuntime.jsx(Icon, { className: selected ? "text-slate-600" : "text-slate-400", name: iconName, size: "small" })) : null, onClick: onClick, size: size, title: iconName, variant: "secondary" }) })) : (jsxRuntime.jsx(Tooltip, { disabled: !(text === null || text === void 0 ? void 0 : text.truncate) && (tooltip === null || tooltip === void 0 ? void 0 : tooltip.content) === undefined, label: (tooltip === null || tooltip === void 0 ? void 0 : tooltip.content) || title, placement: (tooltip === null || tooltip === void 0 ? void 0 : tooltip.placement) || "top", children: jsxRuntime.jsx(Button, { className: cvaToggleItem({ className, selected }), "data-testid": dataTestId, disabled: disabled, onClick: onClick, prefix: iconName ? (jsxRuntime.jsx(Icon, { className: selected ? "text-slate-600" : "text-slate-400", name: iconName, size: "small" })) : null, size: size, variant: "secondary", children: jsxRuntime.jsx("span", { className: cvaToggleItemText({ disabledAndSelected: disabled && selected, maxWidth: text === null || text === void 0 ? void 0 : text.maxWidth }), children: title }) }) }));
|
|
4763
4765
|
};
|
|
4764
4766
|
|
|
@@ -5046,6 +5048,7 @@ exports.Text = Text;
|
|
|
5046
5048
|
exports.Timeline = Timeline;
|
|
5047
5049
|
exports.TimelineElement = TimelineElement;
|
|
5048
5050
|
exports.ToggleGroup = ToggleGroup;
|
|
5051
|
+
exports.ToggleItem = ToggleItem;
|
|
5049
5052
|
exports.Tooltip = Tooltip;
|
|
5050
5053
|
exports.ValueBar = ValueBar;
|
|
5051
5054
|
exports.VirtualizedList = VirtualizedList;
|
package/index.esm.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import React__default, { useRef, useMemo, useEffect, useState, useReducer, useCallback, memo, forwardRef, createContext, useContext, isValidElement, cloneElement, Children } from 'react';
|
|
4
|
-
import { objectKeys, objectEntries, objectValues } from '@trackunit/shared-utils';
|
|
4
|
+
import { objectKeys, uuidv4, objectEntries, objectValues } from '@trackunit/shared-utils';
|
|
5
5
|
import { rentalStatusPalette, intentPalette, generalPalette, criticalityPalette, activityPalette, utilizationPalette, sitesPalette, themeScreenSizeAsNumber, color } from '@trackunit/ui-design-tokens';
|
|
6
6
|
import { iconNames } from '@trackunit/ui-icons';
|
|
7
7
|
import IconSpriteMicro from '@trackunit/ui-icons/icons-sprite-micro.svg';
|
|
@@ -9,7 +9,6 @@ import IconSpriteMini from '@trackunit/ui-icons/icons-sprite-mini.svg';
|
|
|
9
9
|
import IconSpriteOutline from '@trackunit/ui-icons/icons-sprite-outline.svg';
|
|
10
10
|
import IconSpriteSolid from '@trackunit/ui-icons/icons-sprite-solid.svg';
|
|
11
11
|
import { snakeCase, titleCase } from 'string-ts';
|
|
12
|
-
import { v4 } from 'uuid';
|
|
13
12
|
import { cvaMerge } from '@trackunit/css-class-variance-utilities';
|
|
14
13
|
import { Slottable, Slot } from '@radix-ui/react-slot';
|
|
15
14
|
import isEqual from 'lodash/isEqual';
|
|
@@ -148,7 +147,7 @@ const isSafari = () => {
|
|
|
148
147
|
*/
|
|
149
148
|
const Icon = ({ name, size = "large", className, dataTestId, color, onClick, type, style, forwardedRef, ariaLabel, fontSize, ariaLabelledBy, ariaDescribedBy, }) => {
|
|
150
149
|
const useTagRef = useRef(null);
|
|
151
|
-
const ICON_CONTAINER_ID =
|
|
150
|
+
const ICON_CONTAINER_ID = uuidv4();
|
|
152
151
|
const correctIconType = useMemo(() => {
|
|
153
152
|
if (size === "small") {
|
|
154
153
|
return "micro";
|
|
@@ -1439,7 +1438,7 @@ const BreadcrumbForMediumScreen = ({ dataTestId, breadcrumbItems }) => {
|
|
|
1439
1438
|
return reducedArrayElements;
|
|
1440
1439
|
}, [breadcrumbItems, dataTestId]);
|
|
1441
1440
|
const reducedArray = getReducedArray();
|
|
1442
|
-
return (jsx("div", { className: cvaBreadcrumbForMediumScreen({ expanded }), "data-testid": dataTestId, children: (!expanded && reducedArray.length !== 0 ? reducedArray : breadcrumbItems).map(item => (jsx(BreadcrumbItem, { dataTestId: `breadcrumbItem-${dataTestId}`, item: item }, `${item.props.label}-${
|
|
1441
|
+
return (jsx("div", { className: cvaBreadcrumbForMediumScreen({ expanded }), "data-testid": dataTestId, children: (!expanded && reducedArray.length !== 0 ? reducedArray : breadcrumbItems).map(item => (jsx(BreadcrumbItem, { dataTestId: `breadcrumbItem-${dataTestId}`, item: item }, `${item.props.label}-${uuidv4()}`))) }));
|
|
1443
1442
|
};
|
|
1444
1443
|
|
|
1445
1444
|
/**
|
|
@@ -1502,7 +1501,7 @@ const BreadcrumbContainer = ({ dataTestId, breadcrumbItems }) => {
|
|
|
1502
1501
|
* BreadcrumbItem is a helper component that renders the individual breadcrumb item.
|
|
1503
1502
|
*/
|
|
1504
1503
|
const BreadcrumbItem = ({ item, dataTestId }) => {
|
|
1505
|
-
const id =
|
|
1504
|
+
const id = uuidv4();
|
|
1506
1505
|
return (jsx("div", { className: cvaBreadcrumbItem(), "data-testid": dataTestId, id: `${item.props.label}-${id}`, children: item }));
|
|
1507
1506
|
};
|
|
1508
1507
|
|
|
@@ -1772,7 +1771,7 @@ const cvaChevronIcon = cvaMerge(["transition-transform"], {
|
|
|
1772
1771
|
* @returns {JSX.Element} Collapse component
|
|
1773
1772
|
*/
|
|
1774
1773
|
const Collapse = ({ id, initialExpanded = false, onToggle, label, children, className, headerClassName, headerAddon, dataTestId, }) => {
|
|
1775
|
-
const LABEL_ID =
|
|
1774
|
+
const LABEL_ID = uuidv4();
|
|
1776
1775
|
const [expanded, setExpanded] = React.useState(initialExpanded);
|
|
1777
1776
|
const handleClick = React.useCallback((e) => {
|
|
1778
1777
|
if (onToggle) {
|
|
@@ -4705,7 +4704,7 @@ function defaultHeader(date, showTime) {
|
|
|
4705
4704
|
}
|
|
4706
4705
|
|
|
4707
4706
|
const cvaToggleGroup = cvaMerge(["inline-flex", "divide-x", "divide-slate-300"]);
|
|
4708
|
-
const cvaToggleItem = cvaMerge(["text-slate-600", "rounded-none", "bg-transparent", "flex", "border-x-0"], {
|
|
4707
|
+
const cvaToggleItem = cvaMerge(["text-slate-600", "rounded-none", "bg-transparent", "flex", "border-x-0", "bg-white"], {
|
|
4709
4708
|
variants: {
|
|
4710
4709
|
selected: {
|
|
4711
4710
|
true: ["bg-slate-200", "hover:bg-slate-200", "text-slate-800"],
|
|
@@ -4738,7 +4737,10 @@ const ToggleGroup = ({ list, selected, setSelected, onChange, disabled = false,
|
|
|
4738
4737
|
onChange === null || onChange === void 0 ? void 0 : onChange(item.id);
|
|
4739
4738
|
}, selected: selected === item.id, size: size, text: item.text, title: item.title, tooltip: item.tooltip }, item.id))) }));
|
|
4740
4739
|
};
|
|
4741
|
-
|
|
4740
|
+
/**
|
|
4741
|
+
* Individual TooggleItem to create custom ToggleGroups
|
|
4742
|
+
*/
|
|
4743
|
+
const ToggleItem = ({ title, onClick, disabled = false, isIconOnly = false, iconName, size, className, selected = false, text, tooltip, dataTestId, }) => {
|
|
4742
4744
|
return isIconOnly ? (jsx(Tooltip, { label: (tooltip === null || tooltip === void 0 ? void 0 : tooltip.content) || title, placement: (tooltip === null || tooltip === void 0 ? void 0 : tooltip.placement) || "top", children: jsx(IconButton, { className: cvaToggleItem({ className, selected }), "data-testid": dataTestId, disabled: disabled, icon: iconName ? (jsx(Icon, { className: selected ? "text-slate-600" : "text-slate-400", name: iconName, size: "small" })) : null, onClick: onClick, size: size, title: iconName, variant: "secondary" }) })) : (jsx(Tooltip, { disabled: !(text === null || text === void 0 ? void 0 : text.truncate) && (tooltip === null || tooltip === void 0 ? void 0 : tooltip.content) === undefined, label: (tooltip === null || tooltip === void 0 ? void 0 : tooltip.content) || title, placement: (tooltip === null || tooltip === void 0 ? void 0 : tooltip.placement) || "top", children: jsx(Button, { className: cvaToggleItem({ className, selected }), "data-testid": dataTestId, disabled: disabled, onClick: onClick, prefix: iconName ? (jsx(Icon, { className: selected ? "text-slate-600" : "text-slate-400", name: iconName, size: "small" })) : null, size: size, variant: "secondary", children: jsx("span", { className: cvaToggleItemText({ disabledAndSelected: disabled && selected, maxWidth: text === null || text === void 0 ? void 0 : text.maxWidth }), children: title }) }) }));
|
|
4743
4745
|
};
|
|
4744
4746
|
|
|
@@ -4973,4 +4975,4 @@ const cvaClickable = cvaMerge([
|
|
|
4973
4975
|
},
|
|
4974
4976
|
});
|
|
4975
4977
|
|
|
4976
|
-
export { Alert, Badge, Breadcrumb, BreadcrumbContainer, BreadcrumbItem, Button, Card, CardBody, CardFooter, CardHeader, Collapse, CompletionStatusIndicator, CopyableText, Drawer, EmptyState, EmptyValue, ExternalLink, Heading, Icon, IconButton, Indicator, KPICard, MenuItem, MenuList, MoreMenu, Notice, PackageNameStoryComponent, Page, PageContent, PageHeader, Pagination, Polygon, Popover, PopoverContent, PopoverTitle, PopoverTrigger, Prompt, ROLE_CARD, SectionHeader, Sidebar, SkeletonLines, Spacer, Spinner, StarButton, Tab, TabContent, TabList, Tabs, Tag, Text, Timeline, TimelineElement, ToggleGroup, Tooltip, ValueBar, VirtualizedList, WidgetBody, cvaButton, cvaButtonPrefixSuffix, cvaButtonSpinner, cvaButtonSpinnerContainer, cvaClickable, cvaIconButton, cvaIndicator, cvaIndicatorIcon, cvaIndicatorIconBackground, cvaIndicatorLabel, cvaIndicatorPing, cvaInteractableItem, cvaMenuItem, cvaMenuItemLabel, cvaMenuItemPrefix, cvaMenuItemStyle, cvaMenuItemSuffix, docs, getDevicePixelRatio, getValueBarColorByValue, iconColorNames, iconPalette, setLocalStorage, useClickOutside, useContinuousTimeout, useDebounce, useDevicePixelRatio, useGeometry, useHover, useIsFirstRender, useIsFullscreen, useIsTextCutOff, useLocalStorage, useLocalStorageReducer, useOptionallyElevatedState, useOverflowItems, usePopoverContext, usePrevious, usePrompt, useResize, useSelfUpdatingRef, useTimeout, useViewportSize, useWindowActivity };
|
|
4978
|
+
export { Alert, Badge, Breadcrumb, BreadcrumbContainer, BreadcrumbItem, Button, Card, CardBody, CardFooter, CardHeader, Collapse, CompletionStatusIndicator, CopyableText, Drawer, EmptyState, EmptyValue, ExternalLink, Heading, Icon, IconButton, Indicator, KPICard, MenuItem, MenuList, MoreMenu, Notice, PackageNameStoryComponent, Page, PageContent, PageHeader, Pagination, Polygon, Popover, PopoverContent, PopoverTitle, PopoverTrigger, Prompt, ROLE_CARD, SectionHeader, Sidebar, SkeletonLines, Spacer, Spinner, StarButton, Tab, TabContent, TabList, Tabs, Tag, Text, Timeline, TimelineElement, ToggleGroup, ToggleItem, Tooltip, ValueBar, VirtualizedList, WidgetBody, cvaButton, cvaButtonPrefixSuffix, cvaButtonSpinner, cvaButtonSpinnerContainer, cvaClickable, cvaIconButton, cvaIndicator, cvaIndicatorIcon, cvaIndicatorIconBackground, cvaIndicatorLabel, cvaIndicatorPing, cvaInteractableItem, cvaMenuItem, cvaMenuItemLabel, cvaMenuItemPrefix, cvaMenuItemStyle, cvaMenuItemSuffix, docs, getDevicePixelRatio, getValueBarColorByValue, iconColorNames, iconPalette, setLocalStorage, useClickOutside, useContinuousTimeout, useDebounce, useDevicePixelRatio, useGeometry, useHover, useIsFirstRender, useIsFullscreen, useIsTextCutOff, useLocalStorage, useLocalStorageReducer, useOptionallyElevatedState, useOverflowItems, usePopoverContext, usePrevious, usePrompt, useResize, useSelfUpdatingRef, useTimeout, useViewportSize, useWindowActivity };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trackunit/react-components",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.11",
|
|
4
4
|
"repository": "https://github.com/Trackunit/manager",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
6
6
|
"engines": {
|
|
@@ -26,8 +26,7 @@
|
|
|
26
26
|
"react-swipeable": "^7.0.1",
|
|
27
27
|
"string-ts": "^2.0.0",
|
|
28
28
|
"tailwind-merge": "^2.0.0",
|
|
29
|
-
"@trackunit/react-table-pagination": "*"
|
|
30
|
-
"uuid": "^9.0.1"
|
|
29
|
+
"@trackunit/react-table-pagination": "*"
|
|
31
30
|
},
|
|
32
31
|
"module": "./index.esm.js",
|
|
33
32
|
"main": "./index.cjs.js",
|
|
@@ -65,8 +65,12 @@ export type ToggleGroupProps<TSelectedId extends string = string> = CommonProps
|
|
|
65
65
|
export declare const ToggleGroup: <TSelectedId extends string = string>({ list, selected, setSelected, onChange, disabled, size, isIconOnly, className, dataTestId, }: ToggleGroupProps<TSelectedId>) => import("react/jsx-runtime").JSX.Element;
|
|
66
66
|
export interface ToggleItemProps extends CommonProps, MappedOmit<BasicToggleGroupListProps<string>, "id"> {
|
|
67
67
|
onClick: () => void;
|
|
68
|
-
disabled
|
|
69
|
-
isIconOnly
|
|
70
|
-
size
|
|
71
|
-
selected
|
|
68
|
+
disabled?: boolean;
|
|
69
|
+
isIconOnly?: boolean;
|
|
70
|
+
size?: "small" | "medium";
|
|
71
|
+
selected?: boolean;
|
|
72
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Individual TooggleItem to create custom ToggleGroups
|
|
75
|
+
*/
|
|
76
|
+
export declare const ToggleItem: ({ title, onClick, disabled, isIconOnly, iconName, size, className, selected, text, tooltip, dataTestId, }: ToggleItemProps) => import("react/jsx-runtime").JSX.Element;
|