@digital-ai/dot-components 2.4.0 → 2.5.0
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/CHANGE_LOG.md +27 -4
- package/index.esm.js +523 -407
- package/index.umd.js +706 -574
- package/lib/components/app-switcher/AppSwitcher.d.ts +2 -1
- package/lib/components/app-switcher/utils/helpers.d.ts +1 -1
- package/lib/components/auto-complete/AutoComplete.d.ts +3 -3
- package/lib/components/button/CopyButton.styles.d.ts +1 -1
- package/lib/components/drawer/Drawer.d.ts +1 -0
- package/lib/components/helpers.d.ts +1 -0
- package/lib/components/search-input/SearchInput.d.ts +11 -0
- package/lib/components/search-input/SearchInput.styles.d.ts +2 -0
- package/package.json +1 -1
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
|
-
import { useState, useEffect, useRef, useMemo, useContext, createContext,
|
|
4
|
-
import { Tooltip, Icon, Typography, Accordion, AccordionSummary, AccordionDetails, AccordionActions, InputAdornment, InputLabel, TextField, Toolbar, Alert, Fade, Avatar,
|
|
3
|
+
import { useState, useEffect, useRef, useMemo, useContext, createContext, forwardRef, useCallback, Fragment as Fragment$1, createElement } from 'react';
|
|
4
|
+
import { Tooltip, Icon, Typography, Accordion, AccordionSummary, AccordionDetails, AccordionActions, InputAdornment, InputLabel, TextField, Toolbar, Alert, Fade, Avatar, Button, darken, IconButton, Link, Drawer, List, ListItem, CircularProgress, Popper, MenuList, MenuItem, Paper, ClickAwayListener, ListItemIcon, Collapse, ListSubheader, Divider, ListItemText, Badge, useMediaQuery, Autocomplete, Chip, AvatarGroup, Breadcrumbs, ToggleButtonGroup, ToggleButton, Card, CardContent, CardHeader, FormControlLabel, Checkbox, FormControl, FormGroup, FormLabel, FormHelperText, Dialog, DialogContent, DialogActions, useTheme as useTheme$1, RadioGroup, Radio, Switch, Skeleton, Snackbar, ButtonGroup, TablePagination, TableContainer, TableCell, TableRow, TableBody, TableSortLabel, TableHead, Table, Tabs, Tab, LinearProgress } from '@mui/material';
|
|
5
5
|
import '@digital-ai/dot-icons';
|
|
6
6
|
import styled, { css, createGlobalStyle, ThemeProvider as ThemeProvider$1, keyframes } from 'styled-components';
|
|
7
7
|
import { createTheme, ThemeProvider, alpha, useTheme } from '@mui/material/styles';
|
|
@@ -43,11 +43,11 @@ const DotTooltip = ({
|
|
|
43
43
|
}), void 0) : children;
|
|
44
44
|
};
|
|
45
45
|
|
|
46
|
-
const rootClassName$
|
|
46
|
+
const rootClassName$12 = 'dot-icon';
|
|
47
47
|
const StyledIcon = styled(Icon).withConfig({
|
|
48
48
|
displayName: "Iconstyles__StyledIcon",
|
|
49
49
|
componentId: "st0ybo-0"
|
|
50
|
-
})(["", ""], () => css(["&.", "{font-size:20px;&.MuiIcon-fontSizeLarge{font-size:28px;height:35px;width:35px;i{height:28px;}}&.MuiIcon-fontSizeSmall{font-size:18px;i{height:18px;}}i{height:20px;}}"], rootClassName$
|
|
50
|
+
})(["", ""], () => css(["&.", "{font-size:20px;&.MuiIcon-fontSizeLarge{font-size:28px;height:35px;width:35px;i{height:28px;}}&.MuiIcon-fontSizeSmall{font-size:18px;i{height:18px;}}i{height:20px;}}"], rootClassName$12));
|
|
51
51
|
|
|
52
52
|
const DotIcon = ({
|
|
53
53
|
ariaLabel,
|
|
@@ -57,7 +57,7 @@ const DotIcon = ({
|
|
|
57
57
|
iconId,
|
|
58
58
|
tooltip
|
|
59
59
|
}) => {
|
|
60
|
-
const rootClasses = useStylesWithRootClass(rootClassName$
|
|
60
|
+
const rootClasses = useStylesWithRootClass(rootClassName$12, className);
|
|
61
61
|
return jsx(DotTooltip, Object.assign({
|
|
62
62
|
title: tooltip
|
|
63
63
|
}, {
|
|
@@ -106,7 +106,7 @@ const DotTypography = ({
|
|
|
106
106
|
}), void 0);
|
|
107
107
|
};
|
|
108
108
|
|
|
109
|
-
const rootClassName$
|
|
109
|
+
const rootClassName$11 = 'dot-accordion';
|
|
110
110
|
const summaryClassName = 'dot-accordion-summary';
|
|
111
111
|
const detailClassName = 'dot-accordion-details';
|
|
112
112
|
const StyledAccordion = styled(Accordion).withConfig({
|
|
@@ -114,7 +114,7 @@ const StyledAccordion = styled(Accordion).withConfig({
|
|
|
114
114
|
componentId: "sc-1amx4r3-0"
|
|
115
115
|
})(["", ""], ({
|
|
116
116
|
theme
|
|
117
|
-
}) => css(["&.", " .", "{align-items:center;display:flex;&.Mui-expanded{border-top:1px solid rgba(0,0,0,0.12);&:before{opacity:1;}}.MuiAccordionSummary-content{align-items:center;gap:", ";width:calc(100% - ", ");.dot-tooltip{overflow:hidden;}}.MuiAccordionSummary-expandIconWrapper{padding:", ";margin-right:", ";}.MuiTypography-root{margin-bottom:0;}.MuiTypography-body1{padding:2px 0;}}"], rootClassName$
|
|
117
|
+
}) => css(["&.", " .", "{align-items:center;display:flex;&.Mui-expanded{border-top:1px solid rgba(0,0,0,0.12);&:before{opacity:1;}}.MuiAccordionSummary-content{align-items:center;gap:", ";width:calc(100% - ", ");.dot-tooltip{overflow:hidden;}}.MuiAccordionSummary-expandIconWrapper{padding:", ";margin-right:", ";}.MuiTypography-root{margin-bottom:0;}.MuiTypography-body1{padding:2px 0;}}"], rootClassName$11, summaryClassName, theme.spacing(1), theme.spacing(5), theme.spacing(1.5), theme.spacing(-1.5)));
|
|
118
118
|
|
|
119
119
|
const DotAccordion = ({
|
|
120
120
|
actions,
|
|
@@ -131,7 +131,7 @@ const DotAccordion = ({
|
|
|
131
131
|
summary,
|
|
132
132
|
noWrap: _noWrap = true
|
|
133
133
|
}) => {
|
|
134
|
-
const rootClasses = useStylesWithRootClass(rootClassName$
|
|
134
|
+
const rootClasses = useStylesWithRootClass(rootClassName$11, className);
|
|
135
135
|
const [elevation, setElevation] = useState();
|
|
136
136
|
useEffect(() => {
|
|
137
137
|
if (onChange && expanded === undefined) {
|
|
@@ -184,7 +184,7 @@ const DotAccordion = ({
|
|
|
184
184
|
}), void 0);
|
|
185
185
|
};
|
|
186
186
|
|
|
187
|
-
const rootClassName
|
|
187
|
+
const rootClassName$10 = 'dot-text-field';
|
|
188
188
|
const rootSelectClassName = 'dot-select-field';
|
|
189
189
|
const labelClassName = 'dot-input-label';
|
|
190
190
|
const errorClassName = 'dot-error';
|
|
@@ -212,15 +212,15 @@ const StyledTextField = styled(TextField).withConfig({
|
|
|
212
212
|
})(["", ""], ({
|
|
213
213
|
theme,
|
|
214
214
|
InputProps
|
|
215
|
-
}) => css(["&.", "{.MuiInputBase-root{margin-bottom:0;}.MuiInputBase-input{box-sizing:content-box;}.MuiOutlinedInput-input{padding:", ";}.MuiInputBase-inputSizeSmall{padding-top:10.5px;padding-bottom:10.5px;&:not(textarea){height:19px;}}.MuiInputBase-inputMultiline{padding:0;}}&.", ",&.", "{.", "{color:", ";.dot-icon i{margin-top:-2px;}}.MuiInputBase-root{margin-bottom:0;}.MuiInputBase-inputSizeSmall:not(textarea){height:19px;padding-top:10.5px;padding-bottom:10.5px;}select.dot-select{padding-left:", ";}.MuiSelect-select:focus{background-color:transparent;}.MuiSelect-icon{right:", ";}&.", "{.MuiOutlinedInput-notchedOutline{border-color:", ";}.MuiFormLabel-root.Mui-focused{color:", ";}.", " .dot-icon{color:", ";}}&.", "{.MuiInputLabel-outlined.MuiInputLabel-shrink{color:", ";}.", " .dot-icon{color:", ";}}&.", "{.MuiOutlinedInput-notchedOutline{border-color:", ";}.MuiInputLabel-outlined.MuiInputLabel-shrink{color:", ";}.", " .dot-icon{color:", ";}}.MuiOutlinedInput-adornedStart{padding-left:12px;&.", " .", "{border-color:", ";}}.MuiInputLabel-outlined.MuiInputLabel-shrink{color:", ";}.MuiInputBase-inputAdornedStart{padding-left:12px;}.MuiInputBase-inputAdornedEnd{padding-right:12px;}.MuiFormHelperText-root{font-family:", ";font-size:", "px;font-weight:400;margin:", ";display:flex;align-items:flex-end;&:not(.Mui-error){color:", ";}&.read-only .MuiOutlinedInput-root:hover > fieldset{border-color:", ";}}}"], rootClassName
|
|
215
|
+
}) => css(["&.", "{.MuiInputBase-root{margin-bottom:0;}.MuiInputBase-input{box-sizing:content-box;}.MuiOutlinedInput-input{padding:", ";}.MuiInputBase-inputSizeSmall{padding-top:10.5px;padding-bottom:10.5px;&:not(textarea){height:19px;}}.MuiInputBase-inputMultiline{padding:0;}}&.", ",&.", "{.", "{color:", ";.dot-icon i{margin-top:-2px;}}.MuiInputBase-root{margin-bottom:0;}.MuiInputBase-inputSizeSmall:not(textarea){height:19px;padding-top:10.5px;padding-bottom:10.5px;}select.dot-select{padding-left:", ";}.MuiSelect-select:focus{background-color:transparent;}.MuiSelect-icon{right:", ";}&.", "{.MuiOutlinedInput-notchedOutline{border-color:", ";}.MuiFormLabel-root.Mui-focused{color:", ";}.", " .dot-icon{color:", ";}}&.", "{.MuiInputLabel-outlined.MuiInputLabel-shrink{color:", ";}.", " .dot-icon{color:", ";}}&.", "{.MuiOutlinedInput-notchedOutline{border-color:", ";}.MuiInputLabel-outlined.MuiInputLabel-shrink{color:", ";}.", " .dot-icon{color:", ";}}.MuiOutlinedInput-adornedStart{padding-left:12px;&.", " .", "{border-color:", ";}}.MuiInputLabel-outlined.MuiInputLabel-shrink{color:", ";}.MuiInputBase-inputAdornedStart{padding-left:12px;}.MuiInputBase-inputAdornedEnd{padding-right:12px;}.MuiFormHelperText-root{font-family:", ";font-size:", "px;font-weight:400;margin:", ";display:flex;align-items:flex-end;&:not(.Mui-error){color:", ";}&.read-only .MuiOutlinedInput-root:hover > fieldset{border-color:", ";}}}"], rootClassName$10, InputProps.startAdornment ? `18px 12px 18px 0px` : `18px 12px`, rootSelectClassName, rootClassName$10, adornmentIconClassName, theme.palette.layer.n700, theme.spacing(1.5), InputProps.endAdornment ? `44px` : `12px`, successClassName, theme.palette.secondary.main, theme.palette.grey[700], adornmentIconClassName, theme.palette.secondary.main, errorClassName, theme.palette.error.main, adornmentIconClassName, theme.palette.error.main, warningClassName, theme.palette.warning.main, theme.palette.grey[700], adornmentIconClassName, theme.palette.warning.main, warningClassName, fieldsetClassName, theme.palette.warning[500], theme.palette.grey[700], theme.typography.fontFamily, theme.typography.body2.fontSize, theme.spacing(0.5, 0, 0, 1.5), theme.palette.grey[400], theme.palette.layer.n200));
|
|
216
216
|
|
|
217
|
-
const rootClassName
|
|
217
|
+
const rootClassName$$ = 'dot-action-toolbar';
|
|
218
218
|
const StyledToolbar = styled(Toolbar).withConfig({
|
|
219
219
|
displayName: "ActionToolbarstyles__StyledToolbar",
|
|
220
220
|
componentId: "sc-5llm03-0"
|
|
221
221
|
})(["", ""], ({
|
|
222
222
|
theme
|
|
223
|
-
}) => css(["&.", "{border-bottom:1px solid ", ";.", " .MuiInputBase-root{margin-bottom:0;}}"], rootClassName
|
|
223
|
+
}) => css(["&.", "{border-bottom:1px solid ", ";.", " .MuiInputBase-root{margin-bottom:0;}}"], rootClassName$$, theme.palette.grey[100], rootClassName$10));
|
|
224
224
|
|
|
225
225
|
const DotActionToolbar = ({
|
|
226
226
|
ariaLabel,
|
|
@@ -229,7 +229,7 @@ const DotActionToolbar = ({
|
|
|
229
229
|
'data-testid': dataTestId,
|
|
230
230
|
variant: _variant = 'dense'
|
|
231
231
|
}) => {
|
|
232
|
-
const rootClasses = useStylesWithRootClass(rootClassName
|
|
232
|
+
const rootClasses = useStylesWithRootClass(rootClassName$$, className);
|
|
233
233
|
return jsx(StyledToolbar, Object.assign({
|
|
234
234
|
"aria-label": ariaLabel,
|
|
235
235
|
className: rootClasses,
|
|
@@ -240,13 +240,13 @@ const DotActionToolbar = ({
|
|
|
240
240
|
}), void 0);
|
|
241
241
|
};
|
|
242
242
|
|
|
243
|
-
const rootClassName$
|
|
243
|
+
const rootClassName$_ = 'dot-alert-banner';
|
|
244
244
|
const StyledAlertBanner = styled(Alert).withConfig({
|
|
245
245
|
displayName: "AlertBannerstyles__StyledAlertBanner",
|
|
246
246
|
componentId: "sc-1u3aqgz-0"
|
|
247
247
|
})(["", ""], ({
|
|
248
248
|
theme
|
|
249
|
-
}) => css(["&.", "{align-items:center;border-radius:8px;box-sizing:border-box;display:flex;min-height:48px;overflow:hidden;padding:", ";.dot-icon,.MuiAlert-icon,.MuiAlert-message{padding:0;.dot-typography{margin-bottom:0;}}&.MuiAlert-standardSuccess{.dot-icon,.MuiAlert-icon,.dot-typography{color:", ";}}&.MuiAlert-standardInfo{background-color:", ";.dot-icon,.MuiAlert-icon,.dot-typography{color:", ";}}&.MuiAlert-standardWarning{background-color:", ";.dot-icon,.MuiAlert-icon,.dot-typography{color:", ";}}&.MuiAlert-standardError{background-color:", ";.dot-typography{color:", ";}.dot-icon,.MuiAlert-icon{color:", ";}}}"], rootClassName$
|
|
249
|
+
}) => css(["&.", "{align-items:center;border-radius:8px;box-sizing:border-box;display:flex;min-height:48px;overflow:hidden;padding:", ";.dot-icon,.MuiAlert-icon,.MuiAlert-message{padding:0;.dot-typography{margin-bottom:0;}}&.MuiAlert-standardSuccess{.dot-icon,.MuiAlert-icon,.dot-typography{color:", ";}}&.MuiAlert-standardInfo{background-color:", ";.dot-icon,.MuiAlert-icon,.dot-typography{color:", ";}}&.MuiAlert-standardWarning{background-color:", ";.dot-icon,.MuiAlert-icon,.dot-typography{color:", ";}}&.MuiAlert-standardError{background-color:", ";.dot-typography{color:", ";}.dot-icon,.MuiAlert-icon{color:", ";}}}"], rootClassName$_, theme.spacing(0.75, 2), theme.palette.success[700], theme.palette.primary[50], theme.palette.primary[500], theme.palette.warning[100], theme.palette.grey[700], theme.palette.error[50], theme.palette.error[700], theme.palette.error[500]));
|
|
250
250
|
|
|
251
251
|
var LatoRegular = "data:font/woff;base64,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";
|
|
252
252
|
|
|
@@ -896,6 +896,7 @@ const getAvatarColorForInputText = value => {
|
|
|
896
896
|
return colorOptions[numberFromValue % colorOptions.length];
|
|
897
897
|
};
|
|
898
898
|
const isString$1 = str => typeof str === 'string';
|
|
899
|
+
const isLowerCase = str => str === str.toLowerCase();
|
|
899
900
|
const isNumber = num => typeof num === 'number';
|
|
900
901
|
const renderNodeOrTypography = (content, typographyVariant = 'body1') => {
|
|
901
902
|
return isString$1(content) ? jsx(DotTypography, Object.assign({
|
|
@@ -927,7 +928,7 @@ const DotAlertBanner = ({
|
|
|
927
928
|
success: AlertBannerIcon('check-solid'),
|
|
928
929
|
warning: AlertBannerIcon('warning-solid')
|
|
929
930
|
};
|
|
930
|
-
const rootClasses = useStylesWithRootClass(rootClassName$
|
|
931
|
+
const rootClasses = useStylesWithRootClass(rootClassName$_, severity, className);
|
|
931
932
|
/* For simple string use default component, for everything else use 'div' */
|
|
932
933
|
const typographyComponent = isString$1(children) ? undefined : 'div';
|
|
933
934
|
return jsx(StyledAlertBanner, Object.assign({
|
|
@@ -1584,7 +1585,7 @@ const useDotCoreApiContext = () => {
|
|
|
1584
1585
|
return useContext(DotCoreApiContext);
|
|
1585
1586
|
};
|
|
1586
1587
|
|
|
1587
|
-
const rootClassName$
|
|
1588
|
+
const rootClassName$Z = 'dot-avatar';
|
|
1588
1589
|
const avatarSpacing = {
|
|
1589
1590
|
small: 3,
|
|
1590
1591
|
medium: 5,
|
|
@@ -1595,7 +1596,7 @@ const StyledAvatar = styled(Avatar).withConfig({
|
|
|
1595
1596
|
componentId: "sc-13bzj2s-0"
|
|
1596
1597
|
})(["", ""], ({
|
|
1597
1598
|
theme
|
|
1598
|
-
}) => css(["&.", "{display:inline-flex;background-color:", ";border:0px;&:focus-visible{box-shadow:0px 0px 0px 3px ", ",0px 0px 0px 5px ", ";outline:0;}img{width:auto;height:105%;}.dot-i,.dot-typography{color:", ";margin-bottom:0;}&.small{height:", ";width:", ";}&.medium{height:", ";width:", ";}&.large{height:", ";width:", ";}}"], rootClassName$
|
|
1599
|
+
}) => css(["&.", "{display:inline-flex;background-color:", ";border:0px;&:focus-visible{box-shadow:0px 0px 0px 3px ", ",0px 0px 0px 5px ", ";outline:0;}img{width:auto;height:105%;}.dot-i,.dot-typography{color:", ";margin-bottom:0;}&.small{height:", ";width:", ";}&.medium{height:", ";width:", ";}&.large{height:", ";width:", ";}}"], rootClassName$Z, ({
|
|
1599
1600
|
color
|
|
1600
1601
|
}) => {
|
|
1601
1602
|
return color && theme.palette.avatarColors[color] ? theme.palette.avatarColors[color].backgroundColor : theme.palette.avatarColors['default'].backgroundColor;
|
|
@@ -1659,7 +1660,7 @@ const DotAvatar = ({
|
|
|
1659
1660
|
variant: _variant = 'circular',
|
|
1660
1661
|
style
|
|
1661
1662
|
}) => {
|
|
1662
|
-
const rootClasses = useStylesWithRootClass(rootClassName$
|
|
1663
|
+
const rootClasses = useStylesWithRootClass(rootClassName$Z, className);
|
|
1663
1664
|
const getAvatarColor = () => {
|
|
1664
1665
|
if (color) return color;
|
|
1665
1666
|
if (_text && _text !== alt) return getAvatarColorForInputText(_text);
|
|
@@ -1697,6 +1698,80 @@ const DotAvatar = ({
|
|
|
1697
1698
|
}), void 0);
|
|
1698
1699
|
};
|
|
1699
1700
|
|
|
1701
|
+
const rootClassName$Y = 'dot-button';
|
|
1702
|
+
const StyledButton = styled(Button).withConfig({
|
|
1703
|
+
displayName: "Buttonstyles__StyledButton",
|
|
1704
|
+
componentId: "sx99hh-0"
|
|
1705
|
+
})(["", ""], ({
|
|
1706
|
+
theme
|
|
1707
|
+
}) => css(["&.", "{margin:", ";min-width:auto;white-space:nowrap;&.MuiButton-outlined:not([disabled]){border-color:rgba(0,0,0,0.23);color:", ";}&:not(.MuiButton-sizeLarge):not(.MuiButton-sizeSmall){height:", ";}&.MuiButton-containedSecondary{background-color:", ";&:hover,&:active{background-color:", ";}}&.MuiButton-text{padding:6px 16px;}.dot-icon{display:flex;padding:0;}}"], rootClassName$Y, theme.spacing(0.5), theme.palette.grey[700], theme.spacing(5), theme.palette.error.main, darken(theme.palette.error.main, 0.2)));
|
|
1708
|
+
|
|
1709
|
+
/** This component wraps the Button component from @material-ui. */
|
|
1710
|
+
const DotButton = /*#__PURE__*/forwardRef(({
|
|
1711
|
+
ariaLabel,
|
|
1712
|
+
autoFocus: _autoFocus = false,
|
|
1713
|
+
children,
|
|
1714
|
+
className,
|
|
1715
|
+
'data-testid': dataTestId,
|
|
1716
|
+
disabled: _disabled = false,
|
|
1717
|
+
disableRipple: _disableRipple = false,
|
|
1718
|
+
endIcon,
|
|
1719
|
+
fullWidth: _fullWidth = false,
|
|
1720
|
+
isSubmit: _isSubmit = false,
|
|
1721
|
+
onClick,
|
|
1722
|
+
size: _size = 'medium',
|
|
1723
|
+
startIcon,
|
|
1724
|
+
tooltip,
|
|
1725
|
+
type: _type = 'primary'
|
|
1726
|
+
}, ref) => {
|
|
1727
|
+
const rootClasses = useStylesWithRootClass(rootClassName$Y, className);
|
|
1728
|
+
let color;
|
|
1729
|
+
let variant;
|
|
1730
|
+
switch (_type) {
|
|
1731
|
+
case 'destructive':
|
|
1732
|
+
color = _disabled ? 'inherit' : 'secondary';
|
|
1733
|
+
variant = 'contained';
|
|
1734
|
+
break;
|
|
1735
|
+
case 'primary':
|
|
1736
|
+
color = 'primary';
|
|
1737
|
+
variant = 'contained';
|
|
1738
|
+
break;
|
|
1739
|
+
case 'outlined':
|
|
1740
|
+
color = 'inherit';
|
|
1741
|
+
variant = 'outlined';
|
|
1742
|
+
break;
|
|
1743
|
+
case 'text':
|
|
1744
|
+
color = 'inherit';
|
|
1745
|
+
variant = 'text';
|
|
1746
|
+
break;
|
|
1747
|
+
}
|
|
1748
|
+
return jsx(DotTooltip, Object.assign({
|
|
1749
|
+
title: tooltip
|
|
1750
|
+
}, {
|
|
1751
|
+
children: jsx(StyledButton, Object.assign({
|
|
1752
|
+
"aria-label": ariaLabel,
|
|
1753
|
+
autoFocus: _autoFocus,
|
|
1754
|
+
classes: {
|
|
1755
|
+
root: rootClasses
|
|
1756
|
+
},
|
|
1757
|
+
color: color,
|
|
1758
|
+
"data-testid": dataTestId,
|
|
1759
|
+
disableRipple: _disableRipple,
|
|
1760
|
+
disabled: _disabled,
|
|
1761
|
+
endIcon: endIcon,
|
|
1762
|
+
fullWidth: _fullWidth,
|
|
1763
|
+
onClick: event => onClick && onClick(event),
|
|
1764
|
+
ref: ref,
|
|
1765
|
+
size: _size,
|
|
1766
|
+
startIcon: startIcon,
|
|
1767
|
+
type: _isSubmit ? 'submit' : 'button',
|
|
1768
|
+
variant: variant
|
|
1769
|
+
}, {
|
|
1770
|
+
children: children
|
|
1771
|
+
}), void 0)
|
|
1772
|
+
}), void 0);
|
|
1773
|
+
});
|
|
1774
|
+
|
|
1700
1775
|
const rootClassName$X = 'dot-icon-btn';
|
|
1701
1776
|
const StyledIconButton = styled(IconButton).withConfig({
|
|
1702
1777
|
displayName: "IconButtonstyles__StyledIconButton",
|
|
@@ -1743,13 +1818,292 @@ const DotIconButton = ({
|
|
|
1743
1818
|
}), void 0);
|
|
1744
1819
|
};
|
|
1745
1820
|
|
|
1746
|
-
const
|
|
1747
|
-
|
|
1821
|
+
const DotInputLabel = ({
|
|
1822
|
+
'data-testid': dataTestId,
|
|
1823
|
+
disabled: _disabled = false,
|
|
1824
|
+
error: _error = false,
|
|
1825
|
+
id,
|
|
1826
|
+
label,
|
|
1827
|
+
required
|
|
1828
|
+
}) => {
|
|
1829
|
+
return jsx(StyledInputLabel, Object.assign({
|
|
1830
|
+
"data-testid": dataTestId,
|
|
1831
|
+
classes: {
|
|
1832
|
+
root: labelClassName
|
|
1833
|
+
},
|
|
1834
|
+
disabled: _disabled,
|
|
1835
|
+
error: _error,
|
|
1836
|
+
htmlFor: id,
|
|
1837
|
+
required: required,
|
|
1838
|
+
shrink: false,
|
|
1839
|
+
variant: "outlined"
|
|
1840
|
+
}, {
|
|
1841
|
+
children: jsx(DotTypography, Object.assign({
|
|
1842
|
+
variant: "subtitle2"
|
|
1843
|
+
}, {
|
|
1844
|
+
children: label
|
|
1845
|
+
}), void 0)
|
|
1846
|
+
}), void 0);
|
|
1847
|
+
};
|
|
1848
|
+
|
|
1849
|
+
const DELAY_MS = 300;
|
|
1850
|
+
const EndAdornment = ({
|
|
1851
|
+
endAdornmentTooltip,
|
|
1852
|
+
error,
|
|
1853
|
+
dataTestId,
|
|
1854
|
+
endIcon,
|
|
1855
|
+
success,
|
|
1856
|
+
warning
|
|
1857
|
+
}) => {
|
|
1858
|
+
const renderIcon = iconType => jsx(DotIcon, {
|
|
1859
|
+
"data-testid": dataTestId && `${dataTestId}-${iconType}-icon`,
|
|
1860
|
+
iconId: `${iconType}-solid`
|
|
1861
|
+
}, void 0);
|
|
1862
|
+
const errorIcon = error && renderIcon('error');
|
|
1863
|
+
const successIcon = success && renderIcon('check');
|
|
1864
|
+
const warningIcon = warning && renderIcon('warning');
|
|
1865
|
+
const endAdornmentIcon = endIcon || errorIcon || warningIcon || successIcon;
|
|
1866
|
+
const styledAdornment = jsx(StyledAdornment, Object.assign({
|
|
1867
|
+
className: `${adornmentIconClassName} end`,
|
|
1868
|
+
position: "end"
|
|
1869
|
+
}, {
|
|
1870
|
+
children: endAdornmentIcon
|
|
1871
|
+
}), void 0);
|
|
1872
|
+
return endAdornmentTooltip ? jsx(DotTooltip, Object.assign({
|
|
1873
|
+
title: endAdornmentTooltip
|
|
1874
|
+
}, {
|
|
1875
|
+
children: styledAdornment
|
|
1876
|
+
}), void 0) : styledAdornment;
|
|
1877
|
+
};
|
|
1878
|
+
const getInitialState = value => ({
|
|
1879
|
+
inputValue: value || ''
|
|
1880
|
+
});
|
|
1881
|
+
const DotInputText = ({
|
|
1882
|
+
autoComplete: _autoComplete = 'off',
|
|
1883
|
+
autoFocus,
|
|
1884
|
+
className,
|
|
1885
|
+
defaultValue,
|
|
1886
|
+
'data-testid': dataTestId,
|
|
1887
|
+
disabled: _disabled = false,
|
|
1888
|
+
error: _error = false,
|
|
1889
|
+
endAdornmentTooltip,
|
|
1890
|
+
fullWidth: _fullWidth = true,
|
|
1891
|
+
hasDebounce,
|
|
1892
|
+
helperText,
|
|
1893
|
+
endIcon,
|
|
1894
|
+
id,
|
|
1895
|
+
inputRef,
|
|
1896
|
+
label,
|
|
1897
|
+
maxRows,
|
|
1898
|
+
minRows,
|
|
1899
|
+
multiline: _multiline = false,
|
|
1900
|
+
name,
|
|
1901
|
+
onBlur,
|
|
1902
|
+
onChange,
|
|
1903
|
+
onFocus,
|
|
1904
|
+
onKeyDown,
|
|
1905
|
+
onMouseUp,
|
|
1906
|
+
persistentLabel,
|
|
1907
|
+
placeholder,
|
|
1908
|
+
readOnly: _readOnly = false,
|
|
1909
|
+
required: _required = false,
|
|
1910
|
+
shrink,
|
|
1911
|
+
startIcon,
|
|
1912
|
+
size: _size = 'small',
|
|
1913
|
+
success,
|
|
1914
|
+
type: _type = 'text',
|
|
1915
|
+
value,
|
|
1916
|
+
warning: _warning = false
|
|
1917
|
+
}) => {
|
|
1918
|
+
const hasError = _error && errorClassName;
|
|
1919
|
+
const hasWarning = !_error && _warning && warningClassName;
|
|
1920
|
+
const hasSuccess = !_error && !_warning && success && successClassName;
|
|
1921
|
+
const hasEndAdornmentIcon = endIcon || _error || hasWarning || hasSuccess;
|
|
1922
|
+
// This state is used only with debounce feature enabled
|
|
1923
|
+
const [inputTextState, setInputTextState] = useState(hasDebounce && getInitialState(value));
|
|
1924
|
+
const rootStyles = useStylesWithRootClass(rootClassName$10, hasError, hasWarning, hasSuccess, _readOnly ? 'read-only' : '');
|
|
1925
|
+
// Used to control text value from the consumer component
|
|
1926
|
+
// when debounce feature is enabled
|
|
1927
|
+
useEffect(() => {
|
|
1928
|
+
if (hasDebounce && value !== inputTextState.inputValue) {
|
|
1929
|
+
setInputTextState(getInitialState(value));
|
|
1930
|
+
}
|
|
1931
|
+
}, [value]);
|
|
1932
|
+
// Improve performance by avoiding callback execution
|
|
1933
|
+
// on each keystroke (if debounce feature is active)
|
|
1934
|
+
useEffect(() => {
|
|
1935
|
+
// Do not proceed if debounce feature is turned
|
|
1936
|
+
// off or there is no event defined
|
|
1937
|
+
if (!hasDebounce || !inputTextState || !inputTextState.changeEvent || !onChange) return;
|
|
1938
|
+
const handler = setTimeout(() => {
|
|
1939
|
+
onChange(inputTextState.changeEvent);
|
|
1940
|
+
}, DELAY_MS);
|
|
1941
|
+
return () => clearTimeout(handler);
|
|
1942
|
+
}, [inputTextState]);
|
|
1943
|
+
const handleChange = e => {
|
|
1944
|
+
// We need to have control over change event and input value separately
|
|
1945
|
+
// so that we can set initial state via 'value' prop (if needed)
|
|
1946
|
+
hasDebounce ? setInputTextState({
|
|
1947
|
+
changeEvent: e,
|
|
1948
|
+
inputValue: e.target.value
|
|
1949
|
+
}) : onChange === null || onChange === void 0 ? void 0 : onChange(e);
|
|
1950
|
+
};
|
|
1951
|
+
const inputTextValue = hasDebounce ? inputTextState.inputValue : value;
|
|
1952
|
+
// Don't use default value when debounce feature is enabled because
|
|
1953
|
+
// in that case component is controlled
|
|
1954
|
+
const defaultInputValue = hasDebounce ? undefined : defaultValue;
|
|
1955
|
+
const startAdornmentIcon = () => {
|
|
1956
|
+
if (!startIcon) return null;
|
|
1957
|
+
return jsx(StyledAdornment, Object.assign({
|
|
1958
|
+
className: `${adornmentIconClassName} start`,
|
|
1959
|
+
position: "start"
|
|
1960
|
+
}, {
|
|
1961
|
+
children: startIcon
|
|
1962
|
+
}), void 0);
|
|
1963
|
+
};
|
|
1964
|
+
const endAdornmentIcon = () => {
|
|
1965
|
+
if (!hasEndAdornmentIcon) return null;
|
|
1966
|
+
return jsx(EndAdornment, Object.assign({}, {
|
|
1967
|
+
endAdornmentTooltip,
|
|
1968
|
+
error: _error,
|
|
1969
|
+
dataTestId,
|
|
1970
|
+
endIcon,
|
|
1971
|
+
success,
|
|
1972
|
+
warning: _warning
|
|
1973
|
+
}), void 0);
|
|
1974
|
+
};
|
|
1975
|
+
const wrapperClassName = useStylesWithRootClass(_fullWidth !== false ? 'dot-input-text--fullwidth' : '', className);
|
|
1976
|
+
return jsxs(StyledTextFieldContainer, Object.assign({
|
|
1977
|
+
className: wrapperClassName
|
|
1978
|
+
}, {
|
|
1979
|
+
children: [persistentLabel && jsx(DotInputLabel, Object.assign({}, {
|
|
1980
|
+
disabled: _disabled,
|
|
1981
|
+
error: _error,
|
|
1982
|
+
id,
|
|
1983
|
+
label,
|
|
1984
|
+
required: _required
|
|
1985
|
+
}), void 0), jsx(StyledTextField, {
|
|
1986
|
+
InputProps: {
|
|
1987
|
+
startAdornment: startAdornmentIcon(),
|
|
1988
|
+
endAdornment: endAdornmentIcon()
|
|
1989
|
+
},
|
|
1990
|
+
"aria-label": name,
|
|
1991
|
+
autoComplete: _autoComplete,
|
|
1992
|
+
autoFocus: autoFocus,
|
|
1993
|
+
classes: {
|
|
1994
|
+
root: rootStyles
|
|
1995
|
+
},
|
|
1996
|
+
defaultValue: defaultInputValue,
|
|
1997
|
+
disabled: _disabled,
|
|
1998
|
+
error: _error,
|
|
1999
|
+
focused: _readOnly ? false : undefined,
|
|
2000
|
+
fullWidth: _fullWidth,
|
|
2001
|
+
helperText: helperText,
|
|
2002
|
+
id: id,
|
|
2003
|
+
InputLabelProps: {
|
|
2004
|
+
shrink: _type === 'date' ? true : shrink
|
|
2005
|
+
},
|
|
2006
|
+
inputProps: {
|
|
2007
|
+
'data-testid': dataTestId,
|
|
2008
|
+
className: 'dot-input',
|
|
2009
|
+
readOnly: _readOnly
|
|
2010
|
+
},
|
|
2011
|
+
inputRef: inputRef,
|
|
2012
|
+
label: persistentLabel ? null : label,
|
|
2013
|
+
multiline: _multiline,
|
|
2014
|
+
name: name,
|
|
2015
|
+
onBlur: onBlur,
|
|
2016
|
+
onChange: hasDebounce ? handleChange : onChange,
|
|
2017
|
+
onFocus: onFocus,
|
|
2018
|
+
onKeyDown: onKeyDown,
|
|
2019
|
+
onMouseUp: onMouseUp,
|
|
2020
|
+
placeholder: placeholder,
|
|
2021
|
+
required: _required,
|
|
2022
|
+
minRows: _multiline ? minRows : null,
|
|
2023
|
+
maxRows: _multiline ? maxRows : null,
|
|
2024
|
+
size: _size,
|
|
2025
|
+
type: _type,
|
|
2026
|
+
value: inputTextValue,
|
|
2027
|
+
variant: "outlined"
|
|
2028
|
+
}, void 0)]
|
|
2029
|
+
}), void 0);
|
|
2030
|
+
};
|
|
2031
|
+
|
|
2032
|
+
const rootClassName$W = 'dot-search-input';
|
|
2033
|
+
const StyledSearchInput = styled.span.withConfig({
|
|
2034
|
+
displayName: "SearchInputstyles__StyledSearchInput",
|
|
2035
|
+
componentId: "qlwzku-0"
|
|
2036
|
+
})(["", ""], () => css(["&.", "{}"], rootClassName$W));
|
|
2037
|
+
|
|
2038
|
+
function SearchInput({
|
|
2039
|
+
'data-testid': dataTestId,
|
|
2040
|
+
autoFocus = true,
|
|
2041
|
+
className,
|
|
2042
|
+
disabled = false,
|
|
2043
|
+
onChange,
|
|
2044
|
+
onClear,
|
|
2045
|
+
placeholder = 'Search',
|
|
2046
|
+
tooltip = null,
|
|
2047
|
+
value
|
|
2048
|
+
}) {
|
|
2049
|
+
const rootClasses = useStylesWithRootClass(rootClassName$W, className);
|
|
2050
|
+
const [searchText, setSearchText] = useState(value);
|
|
2051
|
+
let previousSearchText = '';
|
|
2052
|
+
const handleChange = useCallback(event => {
|
|
2053
|
+
previousSearchText = event.target.value;
|
|
2054
|
+
setSearchText(event.target.value);
|
|
2055
|
+
// Timeout is to give user a chance to finish typing before refreshing data.
|
|
2056
|
+
setTimeout(function () {
|
|
2057
|
+
if (onChange && event.target.value === previousSearchText) {
|
|
2058
|
+
onChange(event.target.value);
|
|
2059
|
+
}
|
|
2060
|
+
}, 500);
|
|
2061
|
+
}, [onChange]);
|
|
2062
|
+
const handleClear = useCallback(() => {
|
|
2063
|
+
setSearchText('');
|
|
2064
|
+
onClear && onClear();
|
|
2065
|
+
}, [onClear]);
|
|
2066
|
+
const searchIcon = jsx(DotIcon, {
|
|
2067
|
+
className: "search-icon",
|
|
2068
|
+
iconId: "search"
|
|
2069
|
+
}, void 0);
|
|
2070
|
+
const clearSearchIcon = jsx(DotIconButton, {
|
|
2071
|
+
iconId: "close",
|
|
2072
|
+
onClick: handleClear,
|
|
2073
|
+
size: "small",
|
|
2074
|
+
tooltip: "Clear search text"
|
|
2075
|
+
}, void 0);
|
|
2076
|
+
return jsx(StyledSearchInput, Object.assign({
|
|
2077
|
+
className: rootClasses
|
|
2078
|
+
}, {
|
|
2079
|
+
children: jsx(DotTooltip, Object.assign({
|
|
2080
|
+
placement: "bottom",
|
|
2081
|
+
title: tooltip
|
|
2082
|
+
}, {
|
|
2083
|
+
children: jsx(DotInputText, {
|
|
2084
|
+
"data-testid": dataTestId,
|
|
2085
|
+
autoFocus: autoFocus,
|
|
2086
|
+
className: "search-text",
|
|
2087
|
+
disabled: disabled,
|
|
2088
|
+
endIcon: (searchText === null || searchText === void 0 ? void 0 : searchText.length) > 0 ? clearSearchIcon : null,
|
|
2089
|
+
id: "app-instance-search-text",
|
|
2090
|
+
name: "app-instance-search-text",
|
|
2091
|
+
onChange: handleChange,
|
|
2092
|
+
placeholder: placeholder,
|
|
2093
|
+
startIcon: searchIcon,
|
|
2094
|
+
value: searchText
|
|
2095
|
+
}, void 0)
|
|
2096
|
+
}), void 0)
|
|
2097
|
+
}), void 0);
|
|
2098
|
+
}
|
|
2099
|
+
|
|
2100
|
+
const rootClassName$V = 'dot-copy-button';
|
|
2101
|
+
const StyledCopyButton = styled.span.withConfig({
|
|
1748
2102
|
displayName: "CopyButtonstyles__StyledCopyButton",
|
|
1749
2103
|
componentId: "sc-18ff0u-0"
|
|
1750
2104
|
})(["", ""], ({
|
|
1751
2105
|
theme
|
|
1752
|
-
}) => css(["&.", "{.copied-to-clipboard{color:", ";}}"], rootClassName$
|
|
2106
|
+
}) => css(["&.", "{.copied-to-clipboard{color:", ";}}"], rootClassName$V, theme.palette.success[400]));
|
|
1753
2107
|
|
|
1754
2108
|
const DotCopyButton = ({
|
|
1755
2109
|
ariaLabel: _ariaLabel = 'Copy to clipboard',
|
|
@@ -1778,7 +2132,7 @@ const DotCopyButton = ({
|
|
|
1778
2132
|
return false;
|
|
1779
2133
|
};
|
|
1780
2134
|
return jsxs(StyledCopyButton, Object.assign({
|
|
1781
|
-
className: rootClassName$
|
|
2135
|
+
className: rootClassName$V,
|
|
1782
2136
|
"data-testid": dataTestId
|
|
1783
2137
|
}, {
|
|
1784
2138
|
children: [!showCopiedIcon && jsx(DotIconButton, {
|
|
@@ -1798,11 +2152,11 @@ const DotCopyButton = ({
|
|
|
1798
2152
|
}), void 0);
|
|
1799
2153
|
};
|
|
1800
2154
|
|
|
1801
|
-
const rootClassName$
|
|
2155
|
+
const rootClassName$U = 'dot-link';
|
|
1802
2156
|
const StyledLink = styled(Link).withConfig({
|
|
1803
2157
|
displayName: "Linkstyles__StyledLink",
|
|
1804
2158
|
componentId: "sc-1lpmaww-0"
|
|
1805
|
-
})(["", ""], () => css(["&.", "{cursor:pointer;&:hover:not(.MuiLink-underlineHover){text-decoration:none;}}"], rootClassName$
|
|
2159
|
+
})(["", ""], () => css(["&.", "{cursor:pointer;&:hover:not(.MuiLink-underlineHover){text-decoration:none;}}"], rootClassName$U));
|
|
1806
2160
|
|
|
1807
2161
|
const DotLink = ({
|
|
1808
2162
|
ariaLabel,
|
|
@@ -1819,7 +2173,7 @@ const DotLink = ({
|
|
|
1819
2173
|
tooltip,
|
|
1820
2174
|
underline
|
|
1821
2175
|
}) => {
|
|
1822
|
-
const rootClasses = useStylesWithRootClass(rootClassName$
|
|
2176
|
+
const rootClasses = useStylesWithRootClass(rootClassName$U, className);
|
|
1823
2177
|
const handleKeyPress = event => {
|
|
1824
2178
|
if (onClick && event.key === 'Enter') {
|
|
1825
2179
|
event.preventDefault();
|
|
@@ -1898,17 +2252,17 @@ const getLogoForAppType = appType => {
|
|
|
1898
2252
|
}
|
|
1899
2253
|
}
|
|
1900
2254
|
};
|
|
1901
|
-
const daiAppsHeaderMenuItem = {
|
|
1902
|
-
children:
|
|
2255
|
+
const daiAppsHeaderMenuItem = (count = 0) => ({
|
|
2256
|
+
children: jsxs(DotTypography, Object.assign({
|
|
1903
2257
|
className: "dai-apps-title"
|
|
1904
2258
|
}, {
|
|
1905
|
-
children: "DIGITAL.AI APPLICATIONS"
|
|
2259
|
+
children: ["DIGITAL.AI APPLICATIONS", count > 0 ? ` (${count})` : '']
|
|
1906
2260
|
}), "menu-item-dai-apps-title"),
|
|
1907
2261
|
key: 'dai-apps-title',
|
|
1908
2262
|
disabled: true,
|
|
1909
2263
|
divider: true,
|
|
1910
2264
|
height: 32
|
|
1911
|
-
};
|
|
2265
|
+
});
|
|
1912
2266
|
const createMenuItem = (url, title, subtitle = null) => jsxs("div", Object.assign({
|
|
1913
2267
|
className: "app-menu-item"
|
|
1914
2268
|
}, {
|
|
@@ -2007,13 +2361,13 @@ const getInstanceStateText = application => {
|
|
|
2007
2361
|
return 'Non-production instance';
|
|
2008
2362
|
};
|
|
2009
2363
|
|
|
2010
|
-
const rootClassName$
|
|
2364
|
+
const rootClassName$T = 'dot-drawer';
|
|
2011
2365
|
const StyledDrawer = styled(Drawer).withConfig({
|
|
2012
2366
|
displayName: "Drawerstyles__StyledDrawer",
|
|
2013
2367
|
componentId: "sc-1uiowy0-0"
|
|
2014
2368
|
})(["", ""], ({
|
|
2015
2369
|
theme
|
|
2016
|
-
}) => css(["&.", " .MuiBackdrop-root{background-color:", ";}.dot-drawer-paper{height:", ";padding:", ";width:", ";}"], rootClassName$
|
|
2370
|
+
}) => css(["&.", " .MuiBackdrop-root{background-color:", ";}.dot-drawer-paper{height:", ";padding:", ";width:", ";}"], rootClassName$T, alpha(theme.palette.grey[900], 0.7), ({
|
|
2017
2371
|
height,
|
|
2018
2372
|
anchor
|
|
2019
2373
|
}) => anchor === 'left' || anchor === 'right' ? '100%' : height, theme.spacing(2), ({
|
|
@@ -2021,13 +2375,13 @@ const StyledDrawer = styled(Drawer).withConfig({
|
|
|
2021
2375
|
anchor
|
|
2022
2376
|
}) => anchor === 'bottom' || anchor === 'top' ? 'auto' : width));
|
|
2023
2377
|
|
|
2024
|
-
const rootClassName$
|
|
2378
|
+
const rootClassName$S = 'dot-drawer-header';
|
|
2025
2379
|
const StyleDrawerHeader = styled.div.withConfig({
|
|
2026
2380
|
displayName: "DrawerHeaderstyles__StyleDrawerHeader",
|
|
2027
2381
|
componentId: "sc-2d2xd3-0"
|
|
2028
2382
|
})(["", ""], ({
|
|
2029
2383
|
theme
|
|
2030
|
-
}) => css(["&.", "{padding:", ";display:flex;align-items:center;.close-button{margin-left:auto;}}"], rootClassName$
|
|
2384
|
+
}) => css(["&.", "{padding:", ";display:flex;align-items:center;.close-button{margin-left:auto;}}"], rootClassName$S, theme.spacing(0, 0, 2)));
|
|
2031
2385
|
|
|
2032
2386
|
const DotDrawerHeader = ({
|
|
2033
2387
|
ariaLabel,
|
|
@@ -2037,7 +2391,7 @@ const DotDrawerHeader = ({
|
|
|
2037
2391
|
onClose,
|
|
2038
2392
|
variant
|
|
2039
2393
|
}) => {
|
|
2040
|
-
const rootClasses = useStylesWithRootClass(rootClassName$
|
|
2394
|
+
const rootClasses = useStylesWithRootClass(rootClassName$S, className);
|
|
2041
2395
|
return jsxs(StyleDrawerHeader, Object.assign({
|
|
2042
2396
|
"aria-label": ariaLabel,
|
|
2043
2397
|
className: rootClasses,
|
|
@@ -2051,11 +2405,11 @@ const DotDrawerHeader = ({
|
|
|
2051
2405
|
}), void 0);
|
|
2052
2406
|
};
|
|
2053
2407
|
|
|
2054
|
-
const rootClassName$
|
|
2408
|
+
const rootClassName$R = 'dot-drawer-body';
|
|
2055
2409
|
const StyleDrawerBody = styled.div.withConfig({
|
|
2056
2410
|
displayName: "DrawerBodystyles__StyleDrawerBody",
|
|
2057
2411
|
componentId: "sc-1mpmjdk-0"
|
|
2058
|
-
})(["", ""], () => css(["&.", "{display:flex;.dot-drawer-close-button{align-self:self-start;padding:0;margin-left:auto;}}"], rootClassName$
|
|
2412
|
+
})(["", ""], () => css(["&.", "{display:flex;.dot-drawer-close-button{align-self:self-start;padding:0;margin-left:auto;}}"], rootClassName$R));
|
|
2059
2413
|
|
|
2060
2414
|
const DotDrawerBody = ({
|
|
2061
2415
|
ariaLabel,
|
|
@@ -2066,7 +2420,7 @@ const DotDrawerBody = ({
|
|
|
2066
2420
|
onClose,
|
|
2067
2421
|
variant
|
|
2068
2422
|
}) => {
|
|
2069
|
-
const rootClasses = useStylesWithRootClass(rootClassName$
|
|
2423
|
+
const rootClasses = useStylesWithRootClass(rootClassName$R, className);
|
|
2070
2424
|
return jsxs(StyleDrawerBody, Object.assign({
|
|
2071
2425
|
"aria-label": ariaLabel,
|
|
2072
2426
|
className: rootClasses,
|
|
@@ -2080,13 +2434,13 @@ const DotDrawerBody = ({
|
|
|
2080
2434
|
}), void 0);
|
|
2081
2435
|
};
|
|
2082
2436
|
|
|
2083
|
-
const rootClassName$
|
|
2437
|
+
const rootClassName$Q = 'dot-drawer-footer';
|
|
2084
2438
|
const StyleDrawerFooter = styled.div.withConfig({
|
|
2085
2439
|
displayName: "DrawerFooterstyles__StyleDrawerFooter",
|
|
2086
2440
|
componentId: "sc-1ki05ze-0"
|
|
2087
2441
|
})(["", ""], ({
|
|
2088
2442
|
theme
|
|
2089
|
-
}) => css(["&.", "{padding:", ";}"], rootClassName$
|
|
2443
|
+
}) => css(["&.", "{padding:", ";}"], rootClassName$Q, theme.spacing(2, 0, 0)));
|
|
2090
2444
|
|
|
2091
2445
|
const DotDrawerFooter = ({
|
|
2092
2446
|
ariaLabel,
|
|
@@ -2094,7 +2448,7 @@ const DotDrawerFooter = ({
|
|
|
2094
2448
|
className,
|
|
2095
2449
|
'data-testid': dataTestId
|
|
2096
2450
|
}) => {
|
|
2097
|
-
const rootClasses = useStylesWithRootClass(rootClassName$
|
|
2451
|
+
const rootClasses = useStylesWithRootClass(rootClassName$Q, className);
|
|
2098
2452
|
return jsx(StyleDrawerFooter, Object.assign({
|
|
2099
2453
|
"aria-label": ariaLabel,
|
|
2100
2454
|
className: rootClasses,
|
|
@@ -2131,7 +2485,7 @@ const DotDrawer = ({
|
|
|
2131
2485
|
onClose(event);
|
|
2132
2486
|
}
|
|
2133
2487
|
};
|
|
2134
|
-
const rootClasses = useStylesWithRootClass(rootClassName$
|
|
2488
|
+
const rootClasses = useStylesWithRootClass(rootClassName$T, className);
|
|
2135
2489
|
const headerExists = !!drawerHeaderProps;
|
|
2136
2490
|
const bodyTestId = drawerBodyProps ? drawerBodyProps[`data-testid`] : 'drawer-body';
|
|
2137
2491
|
return jsxs(StyledDrawer, Object.assign({
|
|
@@ -2174,13 +2528,13 @@ const DotDrawer = ({
|
|
|
2174
2528
|
}), void 0);
|
|
2175
2529
|
};
|
|
2176
2530
|
|
|
2177
|
-
const rootClassName$
|
|
2531
|
+
const rootClassName$P = 'dot-app-switcher';
|
|
2178
2532
|
const StyledAppSwitcher = styled(DotDrawer).withConfig({
|
|
2179
2533
|
displayName: "AppSwitcherstyles__StyledAppSwitcher",
|
|
2180
2534
|
componentId: "hhxfqg-0"
|
|
2181
2535
|
})(["", ""], ({
|
|
2182
2536
|
theme
|
|
2183
|
-
}) => css(["&.", "{.app-menu-item{display:flex;justify-content:space-between;align-items:center;}.dot-link,.product-menu-item{display:flex;justify-content:space-between;align-items:center;width:100%;height:64px;text-decoration:none;cursor:pointer;}.logo-title{display:flex;align-items:center;gap:24px;width:100%;}.dot-avatar{flex-basis:40px;}.dai-apps-title{display:flex;align-items:center;height:32px;padding:", ";background-color:", ";}.dot-app-switcher-app-title{min-width:150px;}.dot-icon{flex-basis:content;}.app-switcher-header{display:flex;justify-content:space-between;align-items:end;border-bottom:1px solid ", ";
|
|
2537
|
+
}) => css(["&.", "{.app-menu-item{display:flex;justify-content:space-between;align-items:center;}.dot-link,.product-menu-item{display:flex;justify-content:space-between;align-items:center;width:100%;height:64px;text-decoration:none;cursor:pointer;}.logo-title{display:flex;align-items:center;gap:24px;width:100%;}.dot-avatar{flex-basis:40px;}.dai-apps-title{display:flex;align-items:center;height:32px;padding:", ";background-color:", ";}.dot-app-switcher-app-title{min-width:150px;}.dot-icon{flex-basis:content;}.app-switcher-header{.app-switcher-header-title{padding-left:", ";display:flex;align-items:center;}display:flex;justify-content:space-between;align-items:end;border-bottom:1px solid ", ";margin:", ";padding-bottom:", ";.app-switcher-label{padding-left:", ";}}.app-switcher-back-button{&.dot-button.MuiButton-text{padding-left:0;}}.product-heading{display:flex;align-items:center;gap:24px;padding-bottom:", ";}.product-applications{width:100%;overflow-y:auto;}.product-applications-search{margin-bottom:", ";}}"], rootClassName$P, theme.spacing(0, 0, 0, 1), theme.palette.grey[50], theme.spacing(2), theme.palette.grey[200], theme.spacing(0, -2, 2), theme.spacing(1), theme.spacing(3), theme.spacing(3), theme.spacing(3)));
|
|
2184
2538
|
|
|
2185
2539
|
const DotAppSwitcherView = ({
|
|
2186
2540
|
activeApp,
|
|
@@ -2190,6 +2544,7 @@ const DotAppSwitcherView = ({
|
|
|
2190
2544
|
platformConsoleUrl,
|
|
2191
2545
|
onClose,
|
|
2192
2546
|
open,
|
|
2547
|
+
searchInstancesThreshold: _searchInstancesThreshold = 5,
|
|
2193
2548
|
selectedAppType,
|
|
2194
2549
|
yOffset: _yOffset = 48,
|
|
2195
2550
|
zIndex: _zIndex = 990
|
|
@@ -2199,11 +2554,12 @@ const DotAppSwitcherView = ({
|
|
|
2199
2554
|
if (dotCoreApiContext !== null) {
|
|
2200
2555
|
setSelectedAppType = dotCoreApiContext.setSelectedAppSwitcherAppType;
|
|
2201
2556
|
}
|
|
2202
|
-
const rootClasses = useStylesWithRootClass(rootClassName$
|
|
2557
|
+
const rootClasses = useStylesWithRootClass(rootClassName$P, className);
|
|
2203
2558
|
const [appTypeMap, setAppTypeMap] = useState();
|
|
2204
2559
|
const [appTypeLabels, setAppTypeLabels] = useState();
|
|
2205
2560
|
const [appTypeMenuItems, setAppTypeMenuItems] = useState();
|
|
2206
2561
|
const [selectedAppTypeAlt, setSelectedAppTypeAlt] = useState(null);
|
|
2562
|
+
const [searchText, setSearchText] = useState('');
|
|
2207
2563
|
if (!setSelectedAppType) {
|
|
2208
2564
|
selectedAppType = selectedAppTypeAlt;
|
|
2209
2565
|
setSelectedAppType = setSelectedAppTypeAlt;
|
|
@@ -2211,13 +2567,18 @@ const DotAppSwitcherView = ({
|
|
|
2211
2567
|
const showApps = useCallback(appType => {
|
|
2212
2568
|
setSelectedAppType(appType);
|
|
2213
2569
|
}, []);
|
|
2214
|
-
const showAppTypes = useCallback(() =>
|
|
2570
|
+
const showAppTypes = useCallback(() => {
|
|
2571
|
+
setSearchText('');
|
|
2572
|
+
setSelectedAppType(null);
|
|
2573
|
+
}, []);
|
|
2215
2574
|
const populateAppTypeMap = useCallback(() => {
|
|
2216
2575
|
const newAppTypeMap = new Map();
|
|
2217
2576
|
// we'll put Other at the end
|
|
2218
2577
|
const otherApps = [];
|
|
2219
2578
|
apps === null || apps === void 0 ? void 0 : apps.forEach(app => {
|
|
2220
|
-
const
|
|
2579
|
+
const instanceStateText = getInstanceStateText(app);
|
|
2580
|
+
const children = createMenuItem(app.url, app.name, instanceStateText);
|
|
2581
|
+
const searchableContent = `${app.name} ${instanceStateText}`;
|
|
2221
2582
|
const appTypeName = app.logo_product_name;
|
|
2222
2583
|
let appTypeApps;
|
|
2223
2584
|
if (appTypeName) {
|
|
@@ -2231,6 +2592,7 @@ const DotAppSwitcherView = ({
|
|
|
2231
2592
|
}
|
|
2232
2593
|
appTypeApps.push({
|
|
2233
2594
|
children,
|
|
2595
|
+
searchableContent,
|
|
2234
2596
|
key: app.id,
|
|
2235
2597
|
height: 64
|
|
2236
2598
|
});
|
|
@@ -2240,11 +2602,15 @@ const DotAppSwitcherView = ({
|
|
|
2240
2602
|
for (const appType of keys) {
|
|
2241
2603
|
sortedAppTypeMap.set(appType, newAppTypeMap.get(appType));
|
|
2242
2604
|
}
|
|
2605
|
+
let appTypeCount = sortedAppTypeMap.size;
|
|
2606
|
+
if (platformConsoleUrl) {
|
|
2607
|
+
appTypeCount++;
|
|
2608
|
+
}
|
|
2243
2609
|
if (otherApps.length > 0) {
|
|
2244
2610
|
sortedAppTypeMap.set(_noAppTypeLabel, otherApps);
|
|
2245
2611
|
}
|
|
2246
2612
|
setAppTypeMap(sortedAppTypeMap);
|
|
2247
|
-
const menuItems = [daiAppsHeaderMenuItem];
|
|
2613
|
+
const menuItems = [daiAppsHeaderMenuItem(appTypeCount)];
|
|
2248
2614
|
if (platformConsoleUrl) {
|
|
2249
2615
|
const children = createTopLevelMenuItem(platformConsoleUrl, getLogoForAppType('Platform'), 'Digital.ai Platform', !window.location.href.startsWith(platformConsoleUrl));
|
|
2250
2616
|
menuItems.push({
|
|
@@ -2278,15 +2644,15 @@ const DotAppSwitcherView = ({
|
|
|
2278
2644
|
setAppTypeMenuItems(menuItems);
|
|
2279
2645
|
setAppTypeLabels(newAppTypeLabels);
|
|
2280
2646
|
}, [apps]);
|
|
2281
|
-
const emptyState = () => {
|
|
2647
|
+
const emptyState = useCallback(() => {
|
|
2282
2648
|
const currentAppMenuItem = createTopLevelMenuItem(window.location.href, getLogoForAppType(activeApp.product), activeApp.name, false);
|
|
2283
|
-
setAppTypeMenuItems([daiAppsHeaderMenuItem, {
|
|
2649
|
+
setAppTypeMenuItems([daiAppsHeaderMenuItem(), {
|
|
2284
2650
|
children: currentAppMenuItem,
|
|
2285
2651
|
key: 'no_applications_configured',
|
|
2286
2652
|
height: 64,
|
|
2287
2653
|
disabled: true
|
|
2288
2654
|
}]);
|
|
2289
|
-
};
|
|
2655
|
+
}, [activeApp]);
|
|
2290
2656
|
useEffect(() => {
|
|
2291
2657
|
if ((apps === null || apps === void 0 ? void 0 : apps.length) > 0) {
|
|
2292
2658
|
populateAppTypeMap();
|
|
@@ -2294,30 +2660,60 @@ const DotAppSwitcherView = ({
|
|
|
2294
2660
|
emptyState();
|
|
2295
2661
|
}
|
|
2296
2662
|
}, [apps]);
|
|
2663
|
+
const onAppInstanceSearchTextChange = useCallback(text => {
|
|
2664
|
+
setSearchText(text);
|
|
2665
|
+
}, []);
|
|
2666
|
+
const clearAppInstanceSearchText = useCallback(() => {
|
|
2667
|
+
setSearchText('');
|
|
2668
|
+
}, []);
|
|
2669
|
+
const closeHandler = useCallback(event => {
|
|
2670
|
+
setSearchText('');
|
|
2671
|
+
onClose && onClose(event);
|
|
2672
|
+
}, [onClose]);
|
|
2673
|
+
const filteredAppInstances = useCallback(() => {
|
|
2674
|
+
var _a;
|
|
2675
|
+
return (_a = appTypeMap.get(selectedAppType)) === null || _a === void 0 ? void 0 : _a.filter(item => {
|
|
2676
|
+
let isMatch = !searchText;
|
|
2677
|
+
if (searchText) {
|
|
2678
|
+
const testStr = isLowerCase(searchText) ? item.searchableContent.toLowerCase() : item.searchableContent;
|
|
2679
|
+
isMatch = testStr.indexOf(searchText) >= 0;
|
|
2680
|
+
}
|
|
2681
|
+
return isMatch;
|
|
2682
|
+
}).map(item => item.children);
|
|
2683
|
+
}, [appTypeMap, selectedAppType, searchText]);
|
|
2297
2684
|
const content = () => {
|
|
2298
2685
|
var _a;
|
|
2299
2686
|
if (selectedAppType && appTypeMap && appTypeLabels) {
|
|
2300
2687
|
const labelConfig = appTypeLabels.get(selectedAppType);
|
|
2301
2688
|
return jsxs(Fragment, {
|
|
2302
|
-
children: [
|
|
2303
|
-
|
|
2304
|
-
|
|
2305
|
-
|
|
2306
|
-
|
|
2307
|
-
|
|
2308
|
-
|
|
2309
|
-
|
|
2689
|
+
children: [jsx("span", {
|
|
2690
|
+
children: jsx(DotButton, Object.assign({
|
|
2691
|
+
className: "app-switcher-back-button",
|
|
2692
|
+
type: "text",
|
|
2693
|
+
onClick: showAppTypes,
|
|
2694
|
+
startIcon: jsx(DotIcon, {
|
|
2695
|
+
iconId: "back"
|
|
2696
|
+
}, void 0)
|
|
2310
2697
|
}, {
|
|
2311
|
-
children: "
|
|
2312
|
-
|
|
2313
|
-
|
|
2698
|
+
children: jsx("span", {
|
|
2699
|
+
children: "Back"
|
|
2700
|
+
}, void 0)
|
|
2701
|
+
}), void 0)
|
|
2702
|
+
}, void 0), jsx("div", Object.assign({
|
|
2314
2703
|
className: "product-heading"
|
|
2315
2704
|
}, {
|
|
2316
2705
|
children: createAppTypeLabel(selectedAppType, labelConfig.logo, labelConfig.singleTypeApps)
|
|
2317
|
-
}), void 0), jsx("div",
|
|
2706
|
+
}), void 0), ((_a = appTypeMap === null || appTypeMap === void 0 ? void 0 : appTypeMap.get(selectedAppType)) === null || _a === void 0 ? void 0 : _a.length) >= _searchInstancesThreshold && jsx("div", {
|
|
2707
|
+
children: jsx(SearchInput, {
|
|
2708
|
+
"data-testid": "app-instance-search-input",
|
|
2709
|
+
onChange: onAppInstanceSearchTextChange,
|
|
2710
|
+
onClear: clearAppInstanceSearchText,
|
|
2711
|
+
value: searchText
|
|
2712
|
+
}, void 0)
|
|
2713
|
+
}, void 0), jsx("div", Object.assign({
|
|
2318
2714
|
className: "product-applications"
|
|
2319
2715
|
}, {
|
|
2320
|
-
children: (
|
|
2716
|
+
children: filteredAppInstances()
|
|
2321
2717
|
}), void 0)]
|
|
2322
2718
|
}, void 0);
|
|
2323
2719
|
}
|
|
@@ -2326,13 +2722,17 @@ const DotAppSwitcherView = ({
|
|
|
2326
2722
|
const header = {
|
|
2327
2723
|
className: 'app-switcher-header',
|
|
2328
2724
|
children: jsxs("div", Object.assign({
|
|
2725
|
+
className: "app-switcher-header-title",
|
|
2329
2726
|
style: {
|
|
2330
2727
|
marginTop: _yOffset + 'px',
|
|
2331
2728
|
width: '80%'
|
|
2332
2729
|
}
|
|
2333
2730
|
}, {
|
|
2334
|
-
children: [jsx(
|
|
2335
|
-
iconId: "apps"
|
|
2731
|
+
children: [jsx(DotAvatar, {
|
|
2732
|
+
iconId: "apps",
|
|
2733
|
+
alt: "app image",
|
|
2734
|
+
type: "image",
|
|
2735
|
+
variant: "circular"
|
|
2336
2736
|
}, void 0), jsx(DotTypography, Object.assign({
|
|
2337
2737
|
className: "app-switcher-label"
|
|
2338
2738
|
}, {
|
|
@@ -2345,135 +2745,62 @@ const DotAppSwitcherView = ({
|
|
|
2345
2745
|
ModalProps: {
|
|
2346
2746
|
style: {
|
|
2347
2747
|
zIndex: _zIndex
|
|
2348
|
-
}
|
|
2748
|
+
},
|
|
2749
|
+
hideBackdrop: true
|
|
2349
2750
|
},
|
|
2350
2751
|
drawerHeaderProps: header,
|
|
2351
2752
|
variant: "temporary",
|
|
2352
2753
|
width: "340px",
|
|
2353
2754
|
open: open,
|
|
2354
|
-
onClose:
|
|
2355
|
-
}, {
|
|
2356
|
-
children: content()
|
|
2357
|
-
}), void 0);
|
|
2358
|
-
};
|
|
2359
|
-
const DotAppSwitcher = _a => {
|
|
2360
|
-
var {
|
|
2361
|
-
accountId,
|
|
2362
|
-
includePlatformConsole = true,
|
|
2363
|
-
onClose
|
|
2364
|
-
} = _a,
|
|
2365
|
-
commonProps = __rest(_a, ["accountId", "includePlatformConsole", "onClose"]);
|
|
2366
|
-
const {
|
|
2367
|
-
applications,
|
|
2368
|
-
applicationsLoading,
|
|
2369
|
-
applicationsError,
|
|
2370
|
-
loadApplications,
|
|
2371
|
-
isAppSwitcherOpen: open,
|
|
2372
|
-
platformConsoleUrl,
|
|
2373
|
-
setIsAppSwitcherOpen: setOpen,
|
|
2374
|
-
selectedAppSwitcherAppType: selectedAppType,
|
|
2375
|
-
setSelectedAppSwitcherAppType: setSelectedAppType
|
|
2376
|
-
} = useDotCoreApiContext();
|
|
2377
|
-
useEffect(() => {
|
|
2378
|
-
if ((!applications || applications.length === 0) && open) {
|
|
2379
|
-
loadApplications(accountId);
|
|
2380
|
-
}
|
|
2381
|
-
}, [accountId, open]);
|
|
2382
|
-
if (applicationsError) {
|
|
2383
|
-
console.error('Error loading application list in AppSwitcher', applicationsError);
|
|
2384
|
-
}
|
|
2385
|
-
const closeHandler = event => {
|
|
2386
|
-
setOpen(false);
|
|
2387
|
-
setSelectedAppType(null);
|
|
2388
|
-
onClose && onClose(event);
|
|
2389
|
-
};
|
|
2390
|
-
const viewProps = includePlatformConsole ? Object.assign(Object.assign({}, commonProps), {
|
|
2391
|
-
platformConsoleUrl
|
|
2392
|
-
}) : Object.assign({}, commonProps);
|
|
2393
|
-
if (!applicationsLoading && !applicationsError) {
|
|
2394
|
-
return jsx(DotAppSwitcherView, Object.assign({}, viewProps, {
|
|
2395
|
-
open: open,
|
|
2396
|
-
apps: applications,
|
|
2397
|
-
selectedAppType: selectedAppType,
|
|
2398
|
-
onClose: closeHandler
|
|
2399
|
-
}), void 0);
|
|
2400
|
-
}
|
|
2401
|
-
return null;
|
|
2402
|
-
};
|
|
2403
|
-
|
|
2404
|
-
const rootClassName$P = 'dot-button';
|
|
2405
|
-
const StyledButton = styled(Button).withConfig({
|
|
2406
|
-
displayName: "Buttonstyles__StyledButton",
|
|
2407
|
-
componentId: "sx99hh-0"
|
|
2408
|
-
})(["", ""], ({
|
|
2409
|
-
theme
|
|
2410
|
-
}) => css(["&.", "{margin:", ";min-width:auto;white-space:nowrap;&.MuiButton-outlined:not([disabled]){border-color:rgba(0,0,0,0.23);color:", ";}&:not(.MuiButton-sizeLarge):not(.MuiButton-sizeSmall){height:", ";}&.MuiButton-containedSecondary{background-color:", ";&:hover,&:active{background-color:", ";}}&.MuiButton-text{padding:6px 16px;}.dot-icon{display:flex;padding:0;}}"], rootClassName$P, theme.spacing(0.5), theme.palette.grey[700], theme.spacing(5), theme.palette.error.main, darken(theme.palette.error.main, 0.2)));
|
|
2411
|
-
|
|
2412
|
-
/** This component wraps the Button component from @material-ui. */
|
|
2413
|
-
const DotButton = /*#__PURE__*/forwardRef(({
|
|
2414
|
-
ariaLabel,
|
|
2415
|
-
autoFocus: _autoFocus = false,
|
|
2416
|
-
children,
|
|
2417
|
-
className,
|
|
2418
|
-
'data-testid': dataTestId,
|
|
2419
|
-
disabled: _disabled = false,
|
|
2420
|
-
disableRipple: _disableRipple = false,
|
|
2421
|
-
endIcon,
|
|
2422
|
-
fullWidth: _fullWidth = false,
|
|
2423
|
-
isSubmit: _isSubmit = false,
|
|
2424
|
-
onClick,
|
|
2425
|
-
size: _size = 'medium',
|
|
2426
|
-
startIcon,
|
|
2427
|
-
tooltip,
|
|
2428
|
-
type: _type = 'primary'
|
|
2429
|
-
}, ref) => {
|
|
2430
|
-
const rootClasses = useStylesWithRootClass(rootClassName$P, className);
|
|
2431
|
-
let color;
|
|
2432
|
-
let variant;
|
|
2433
|
-
switch (_type) {
|
|
2434
|
-
case 'destructive':
|
|
2435
|
-
color = _disabled ? 'inherit' : 'secondary';
|
|
2436
|
-
variant = 'contained';
|
|
2437
|
-
break;
|
|
2438
|
-
case 'primary':
|
|
2439
|
-
color = 'primary';
|
|
2440
|
-
variant = 'contained';
|
|
2441
|
-
break;
|
|
2442
|
-
case 'outlined':
|
|
2443
|
-
color = 'inherit';
|
|
2444
|
-
variant = 'outlined';
|
|
2445
|
-
break;
|
|
2446
|
-
case 'text':
|
|
2447
|
-
color = 'inherit';
|
|
2448
|
-
variant = 'text';
|
|
2449
|
-
break;
|
|
2450
|
-
}
|
|
2451
|
-
return jsx(DotTooltip, Object.assign({
|
|
2452
|
-
title: tooltip
|
|
2453
|
-
}, {
|
|
2454
|
-
children: jsx(StyledButton, Object.assign({
|
|
2455
|
-
"aria-label": ariaLabel,
|
|
2456
|
-
autoFocus: _autoFocus,
|
|
2457
|
-
classes: {
|
|
2458
|
-
root: rootClasses
|
|
2459
|
-
},
|
|
2460
|
-
color: color,
|
|
2461
|
-
"data-testid": dataTestId,
|
|
2462
|
-
disableRipple: _disableRipple,
|
|
2463
|
-
disabled: _disabled,
|
|
2464
|
-
endIcon: endIcon,
|
|
2465
|
-
fullWidth: _fullWidth,
|
|
2466
|
-
onClick: event => onClick && onClick(event),
|
|
2467
|
-
ref: ref,
|
|
2468
|
-
size: _size,
|
|
2469
|
-
startIcon: startIcon,
|
|
2470
|
-
type: _isSubmit ? 'submit' : 'button',
|
|
2471
|
-
variant: variant
|
|
2472
|
-
}, {
|
|
2473
|
-
children: children
|
|
2474
|
-
}), void 0)
|
|
2755
|
+
onClose: closeHandler
|
|
2756
|
+
}, {
|
|
2757
|
+
children: content()
|
|
2475
2758
|
}), void 0);
|
|
2476
|
-
}
|
|
2759
|
+
};
|
|
2760
|
+
const DotAppSwitcher = _a => {
|
|
2761
|
+
var {
|
|
2762
|
+
accountId,
|
|
2763
|
+
includePlatformConsole = true,
|
|
2764
|
+
onClose
|
|
2765
|
+
} = _a,
|
|
2766
|
+
commonProps = __rest(_a, ["accountId", "includePlatformConsole", "onClose"]);
|
|
2767
|
+
const {
|
|
2768
|
+
applications,
|
|
2769
|
+
applicationsLoading,
|
|
2770
|
+
applicationsError,
|
|
2771
|
+
loadApplications,
|
|
2772
|
+
isAppSwitcherOpen: open,
|
|
2773
|
+
platformConsoleUrl,
|
|
2774
|
+
setIsAppSwitcherOpen: setOpen,
|
|
2775
|
+
selectedAppSwitcherAppType: selectedAppType,
|
|
2776
|
+
setSelectedAppSwitcherAppType: setSelectedAppType
|
|
2777
|
+
} = useDotCoreApiContext();
|
|
2778
|
+
useEffect(() => {
|
|
2779
|
+
if ((!applications || applications.length === 0) && open) {
|
|
2780
|
+
loadApplications(accountId);
|
|
2781
|
+
}
|
|
2782
|
+
}, [accountId, open]);
|
|
2783
|
+
if (applicationsError) {
|
|
2784
|
+
console.error('Error loading application list in AppSwitcher', applicationsError);
|
|
2785
|
+
}
|
|
2786
|
+
const closeHandler = useCallback(event => {
|
|
2787
|
+
setOpen(false);
|
|
2788
|
+
setSelectedAppType(null);
|
|
2789
|
+
onClose && onClose(event);
|
|
2790
|
+
}, [onClose]);
|
|
2791
|
+
const viewProps = includePlatformConsole ? Object.assign(Object.assign({}, commonProps), {
|
|
2792
|
+
platformConsoleUrl
|
|
2793
|
+
}) : Object.assign({}, commonProps);
|
|
2794
|
+
if (!applicationsLoading && !applicationsError) {
|
|
2795
|
+
return jsx(DotAppSwitcherView, Object.assign({}, viewProps, {
|
|
2796
|
+
open: open,
|
|
2797
|
+
apps: applications,
|
|
2798
|
+
selectedAppType: selectedAppType,
|
|
2799
|
+
onClose: closeHandler
|
|
2800
|
+
}), void 0);
|
|
2801
|
+
}
|
|
2802
|
+
return null;
|
|
2803
|
+
};
|
|
2477
2804
|
|
|
2478
2805
|
const rootClassName$O = 'dot-list';
|
|
2479
2806
|
const listItemRootClass = 'dot-list-item';
|
|
@@ -3737,7 +4064,7 @@ const StyledAutocomplete = styled(Autocomplete).withConfig({
|
|
|
3737
4064
|
componentId: "j2sgjy-0"
|
|
3738
4065
|
})(["", ""], ({
|
|
3739
4066
|
theme
|
|
3740
|
-
}) => css(["&.", "{.", "{padding-top:", ";padding-bottom:", ";}.dot-chip:first-child{margin-left:", ";}.dot-text-field{.
|
|
4067
|
+
}) => css(["&.", "{&.", " .dot-text-field .", "{height:56px;padding-left:", ";}.", "{padding-top:", ";padding-bottom:", ";}.dot-chip:first-child{margin-left:", ";}.dot-text-field{.", "{height:", ";}.warning-icon{color:", ";}.error-icon{color:", ";}}}"], rootClassName$F, inputMediumClassName, inputRootClassName, theme.spacing(2), inputRootClassName, theme.spacing(0), theme.spacing(0), theme.spacing(0), inputRootClassName, theme.spacing(5), theme.palette.warning.main, theme.palette.error.main));
|
|
3741
4068
|
|
|
3742
4069
|
const rootClassName$E = 'dot-chip';
|
|
3743
4070
|
const StyledChip = styled(Chip).withConfig({
|
|
@@ -3844,34 +4171,6 @@ const getChipsFromAutocomplete = ({
|
|
|
3844
4171
|
};
|
|
3845
4172
|
const checkIfDuplicateItem = (itemText, autocompleteOptions) => autocompleteOptions.some(autocompleteOption => autocompleteOption.title === itemText);
|
|
3846
4173
|
|
|
3847
|
-
const DotInputLabel = ({
|
|
3848
|
-
'data-testid': dataTestId,
|
|
3849
|
-
disabled: _disabled = false,
|
|
3850
|
-
error: _error = false,
|
|
3851
|
-
id,
|
|
3852
|
-
label,
|
|
3853
|
-
required
|
|
3854
|
-
}) => {
|
|
3855
|
-
return jsx(StyledInputLabel, Object.assign({
|
|
3856
|
-
"data-testid": dataTestId,
|
|
3857
|
-
classes: {
|
|
3858
|
-
root: labelClassName
|
|
3859
|
-
},
|
|
3860
|
-
disabled: _disabled,
|
|
3861
|
-
error: _error,
|
|
3862
|
-
htmlFor: id,
|
|
3863
|
-
required: required,
|
|
3864
|
-
shrink: false,
|
|
3865
|
-
variant: "outlined"
|
|
3866
|
-
}, {
|
|
3867
|
-
children: jsx(DotTypography, Object.assign({
|
|
3868
|
-
variant: "subtitle2"
|
|
3869
|
-
}, {
|
|
3870
|
-
children: label
|
|
3871
|
-
}), void 0)
|
|
3872
|
-
}), void 0);
|
|
3873
|
-
};
|
|
3874
|
-
|
|
3875
4174
|
const DEFAULT_ACTION_ITEM_TEXT = 'Add new item';
|
|
3876
4175
|
const DotAutoComplete = ({
|
|
3877
4176
|
ListboxComponent,
|
|
@@ -3925,9 +4224,9 @@ const DotAutoComplete = ({
|
|
|
3925
4224
|
const [isOpened, setIsOpened] = useState(false);
|
|
3926
4225
|
const [inputText, setInputText] = useState('');
|
|
3927
4226
|
const textFieldWarningClassName = !_error && _warning && warningClassName;
|
|
3928
|
-
const rootClasses = useStylesWithRootClass(rootClassName$F, className);
|
|
3929
|
-
const textFieldRootClasses = useStylesWithRootClass(rootClassName
|
|
3930
|
-
const inputRootClasses = useStylesWithRootClass(inputRootClassName, _dense
|
|
4227
|
+
const rootClasses = useStylesWithRootClass(rootClassName$F, _size === 'medium' && inputMediumClassName, className);
|
|
4228
|
+
const textFieldRootClasses = useStylesWithRootClass(rootClassName$10, className, _readOnly ? 'read-only' : '', textFieldWarningClassName);
|
|
4229
|
+
const inputRootClasses = useStylesWithRootClass(inputRootClassName, !_dense && inputMediumClassName);
|
|
3931
4230
|
let textFieldInput;
|
|
3932
4231
|
// Used for focus management while popper is opened
|
|
3933
4232
|
const actionItemRef = useRef();
|
|
@@ -4185,7 +4484,7 @@ const DotAutoComplete = ({
|
|
|
4185
4484
|
},
|
|
4186
4485
|
placeholder: showPlaceholder ? placeholder : undefined,
|
|
4187
4486
|
required: _required,
|
|
4188
|
-
size:
|
|
4487
|
+
size: _size,
|
|
4189
4488
|
variant: "outlined"
|
|
4190
4489
|
}), void 0)]
|
|
4191
4490
|
}, void 0)
|
|
@@ -5410,7 +5709,7 @@ const StyledFormContainer = styled.div.withConfig({
|
|
|
5410
5709
|
componentId: "bbovqo-0"
|
|
5411
5710
|
})(["", ""], ({
|
|
5412
5711
|
theme
|
|
5413
|
-
}) => css(["&.", "{margin:", ";.", ",.", ",.", ",.", "{margin:", ";}.", ",.", "{.", "{margin:0;}}}"], rootClassName$r, theme.spacing(3, 0), rootClassName$x, rootClassName$z, rootClassName
|
|
5712
|
+
}) => css(["&.", "{margin:", ";.", ",.", ",.", ",.", "{margin:", ";}.", ",.", "{.", "{margin:0;}}}"], rootClassName$r, theme.spacing(3, 0), rootClassName$x, rootClassName$z, rootClassName$10, rootSelectClassName, theme.spacing(1, 0), rootClassName$w, groupClassName, rootClassName$z));
|
|
5414
5713
|
|
|
5415
5714
|
const DotForm = ({
|
|
5416
5715
|
ariaLabel,
|
|
@@ -5615,189 +5914,6 @@ const checkIfFormDataValid = formState => {
|
|
|
5615
5914
|
return true;
|
|
5616
5915
|
};
|
|
5617
5916
|
|
|
5618
|
-
const DELAY_MS = 300;
|
|
5619
|
-
const EndAdornment = ({
|
|
5620
|
-
endAdornmentTooltip,
|
|
5621
|
-
error,
|
|
5622
|
-
dataTestId,
|
|
5623
|
-
endIcon,
|
|
5624
|
-
success,
|
|
5625
|
-
warning
|
|
5626
|
-
}) => {
|
|
5627
|
-
const renderIcon = iconType => jsx(DotIcon, {
|
|
5628
|
-
"data-testid": dataTestId && `${dataTestId}-${iconType}-icon`,
|
|
5629
|
-
iconId: `${iconType}-solid`
|
|
5630
|
-
}, void 0);
|
|
5631
|
-
const errorIcon = error && renderIcon('error');
|
|
5632
|
-
const successIcon = success && renderIcon('check');
|
|
5633
|
-
const warningIcon = warning && renderIcon('warning');
|
|
5634
|
-
const endAdornmentIcon = endIcon || errorIcon || warningIcon || successIcon;
|
|
5635
|
-
const styledAdornment = jsx(StyledAdornment, Object.assign({
|
|
5636
|
-
className: `${adornmentIconClassName} end`,
|
|
5637
|
-
position: "end"
|
|
5638
|
-
}, {
|
|
5639
|
-
children: endAdornmentIcon
|
|
5640
|
-
}), void 0);
|
|
5641
|
-
return endAdornmentTooltip ? jsx(DotTooltip, Object.assign({
|
|
5642
|
-
title: endAdornmentTooltip
|
|
5643
|
-
}, {
|
|
5644
|
-
children: styledAdornment
|
|
5645
|
-
}), void 0) : styledAdornment;
|
|
5646
|
-
};
|
|
5647
|
-
const getInitialState = value => ({
|
|
5648
|
-
inputValue: value || ''
|
|
5649
|
-
});
|
|
5650
|
-
const DotInputText = ({
|
|
5651
|
-
autoComplete: _autoComplete = 'off',
|
|
5652
|
-
autoFocus,
|
|
5653
|
-
className,
|
|
5654
|
-
defaultValue,
|
|
5655
|
-
'data-testid': dataTestId,
|
|
5656
|
-
disabled: _disabled = false,
|
|
5657
|
-
error: _error = false,
|
|
5658
|
-
endAdornmentTooltip,
|
|
5659
|
-
fullWidth: _fullWidth = true,
|
|
5660
|
-
hasDebounce,
|
|
5661
|
-
helperText,
|
|
5662
|
-
endIcon,
|
|
5663
|
-
id,
|
|
5664
|
-
inputRef,
|
|
5665
|
-
label,
|
|
5666
|
-
maxRows,
|
|
5667
|
-
minRows,
|
|
5668
|
-
multiline: _multiline = false,
|
|
5669
|
-
name,
|
|
5670
|
-
onBlur,
|
|
5671
|
-
onChange,
|
|
5672
|
-
onFocus,
|
|
5673
|
-
onKeyDown,
|
|
5674
|
-
onMouseUp,
|
|
5675
|
-
persistentLabel,
|
|
5676
|
-
placeholder,
|
|
5677
|
-
readOnly: _readOnly = false,
|
|
5678
|
-
required: _required = false,
|
|
5679
|
-
shrink,
|
|
5680
|
-
startIcon,
|
|
5681
|
-
size: _size = 'small',
|
|
5682
|
-
success,
|
|
5683
|
-
type: _type = 'text',
|
|
5684
|
-
value,
|
|
5685
|
-
warning: _warning = false
|
|
5686
|
-
}) => {
|
|
5687
|
-
const hasError = _error && errorClassName;
|
|
5688
|
-
const hasWarning = !_error && _warning && warningClassName;
|
|
5689
|
-
const hasSuccess = !_error && !_warning && success && successClassName;
|
|
5690
|
-
const hasEndAdornmentIcon = endIcon || _error || hasWarning || hasSuccess;
|
|
5691
|
-
// This state is used only with debounce feature enabled
|
|
5692
|
-
const [inputTextState, setInputTextState] = useState(hasDebounce && getInitialState(value));
|
|
5693
|
-
const rootStyles = useStylesWithRootClass(rootClassName$$, hasError, hasWarning, hasSuccess, _readOnly ? 'read-only' : '');
|
|
5694
|
-
// Used to control text value from the consumer component
|
|
5695
|
-
// when debounce feature is enabled
|
|
5696
|
-
useEffect(() => {
|
|
5697
|
-
if (hasDebounce && value !== inputTextState.inputValue) {
|
|
5698
|
-
setInputTextState(getInitialState(value));
|
|
5699
|
-
}
|
|
5700
|
-
}, [value]);
|
|
5701
|
-
// Improve performance by avoiding callback execution
|
|
5702
|
-
// on each keystroke (if debounce feature is active)
|
|
5703
|
-
useEffect(() => {
|
|
5704
|
-
// Do not proceed if debounce feature is turned
|
|
5705
|
-
// off or there is no event defined
|
|
5706
|
-
if (!hasDebounce || !inputTextState || !inputTextState.changeEvent || !onChange) return;
|
|
5707
|
-
const handler = setTimeout(() => {
|
|
5708
|
-
onChange(inputTextState.changeEvent);
|
|
5709
|
-
}, DELAY_MS);
|
|
5710
|
-
return () => clearTimeout(handler);
|
|
5711
|
-
}, [inputTextState]);
|
|
5712
|
-
const handleChange = e => {
|
|
5713
|
-
// We need to have control over change event and input value separately
|
|
5714
|
-
// so that we can set initial state via 'value' prop (if needed)
|
|
5715
|
-
hasDebounce ? setInputTextState({
|
|
5716
|
-
changeEvent: e,
|
|
5717
|
-
inputValue: e.target.value
|
|
5718
|
-
}) : onChange === null || onChange === void 0 ? void 0 : onChange(e);
|
|
5719
|
-
};
|
|
5720
|
-
const inputTextValue = hasDebounce ? inputTextState.inputValue : value;
|
|
5721
|
-
// Don't use default value when debounce feature is enabled because
|
|
5722
|
-
// in that case component is controlled
|
|
5723
|
-
const defaultInputValue = hasDebounce ? undefined : defaultValue;
|
|
5724
|
-
const startAdornmentIcon = () => {
|
|
5725
|
-
if (!startIcon) return null;
|
|
5726
|
-
return jsx(StyledAdornment, Object.assign({
|
|
5727
|
-
className: `${adornmentIconClassName} start`,
|
|
5728
|
-
position: "start"
|
|
5729
|
-
}, {
|
|
5730
|
-
children: startIcon
|
|
5731
|
-
}), void 0);
|
|
5732
|
-
};
|
|
5733
|
-
const endAdornmentIcon = () => {
|
|
5734
|
-
if (!hasEndAdornmentIcon) return null;
|
|
5735
|
-
return jsx(EndAdornment, Object.assign({}, {
|
|
5736
|
-
endAdornmentTooltip,
|
|
5737
|
-
error: _error,
|
|
5738
|
-
dataTestId,
|
|
5739
|
-
endIcon,
|
|
5740
|
-
success,
|
|
5741
|
-
warning: _warning
|
|
5742
|
-
}), void 0);
|
|
5743
|
-
};
|
|
5744
|
-
const wrapperClassName = useStylesWithRootClass(_fullWidth !== false ? 'dot-input-text--fullwidth' : '', className);
|
|
5745
|
-
return jsxs(StyledTextFieldContainer, Object.assign({
|
|
5746
|
-
className: wrapperClassName
|
|
5747
|
-
}, {
|
|
5748
|
-
children: [persistentLabel && jsx(DotInputLabel, Object.assign({}, {
|
|
5749
|
-
disabled: _disabled,
|
|
5750
|
-
error: _error,
|
|
5751
|
-
id,
|
|
5752
|
-
label,
|
|
5753
|
-
required: _required
|
|
5754
|
-
}), void 0), jsx(StyledTextField, {
|
|
5755
|
-
InputProps: {
|
|
5756
|
-
startAdornment: startAdornmentIcon(),
|
|
5757
|
-
endAdornment: endAdornmentIcon()
|
|
5758
|
-
},
|
|
5759
|
-
"aria-label": name,
|
|
5760
|
-
autoComplete: _autoComplete,
|
|
5761
|
-
autoFocus: autoFocus,
|
|
5762
|
-
classes: {
|
|
5763
|
-
root: rootStyles
|
|
5764
|
-
},
|
|
5765
|
-
defaultValue: defaultInputValue,
|
|
5766
|
-
disabled: _disabled,
|
|
5767
|
-
error: _error,
|
|
5768
|
-
focused: _readOnly ? false : undefined,
|
|
5769
|
-
fullWidth: _fullWidth,
|
|
5770
|
-
helperText: helperText,
|
|
5771
|
-
id: id,
|
|
5772
|
-
InputLabelProps: {
|
|
5773
|
-
shrink: _type === 'date' ? true : shrink
|
|
5774
|
-
},
|
|
5775
|
-
inputProps: {
|
|
5776
|
-
'data-testid': dataTestId,
|
|
5777
|
-
className: 'dot-input',
|
|
5778
|
-
readOnly: _readOnly
|
|
5779
|
-
},
|
|
5780
|
-
inputRef: inputRef,
|
|
5781
|
-
label: persistentLabel ? null : label,
|
|
5782
|
-
multiline: _multiline,
|
|
5783
|
-
name: name,
|
|
5784
|
-
onBlur: onBlur,
|
|
5785
|
-
onChange: hasDebounce ? handleChange : onChange,
|
|
5786
|
-
onFocus: onFocus,
|
|
5787
|
-
onKeyDown: onKeyDown,
|
|
5788
|
-
onMouseUp: onMouseUp,
|
|
5789
|
-
placeholder: placeholder,
|
|
5790
|
-
required: _required,
|
|
5791
|
-
minRows: _multiline ? minRows : null,
|
|
5792
|
-
maxRows: _multiline ? maxRows : null,
|
|
5793
|
-
size: _size,
|
|
5794
|
-
type: _type,
|
|
5795
|
-
value: inputTextValue,
|
|
5796
|
-
variant: "outlined"
|
|
5797
|
-
}, void 0)]
|
|
5798
|
-
}), void 0);
|
|
5799
|
-
};
|
|
5800
|
-
|
|
5801
5917
|
const DotInputSelect = ({
|
|
5802
5918
|
ariaLabel,
|
|
5803
5919
|
autoFocus,
|
|
@@ -8172,7 +8288,7 @@ const DotTable = ({
|
|
|
8172
8288
|
// ignore 'count' prop and use the length of the provided 'data' for the
|
|
8173
8289
|
// total row count.
|
|
8174
8290
|
const getTotalCount = () => {
|
|
8175
|
-
const validCount = count ? count : -1;
|
|
8291
|
+
const validCount = count || count === 0 ? count : -1;
|
|
8176
8292
|
const totalCount = onUpdateData ? validCount : data.length;
|
|
8177
8293
|
return rowsPerPage ? totalCount : null;
|
|
8178
8294
|
};
|