mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-08-16 13:05:56 +08:00
[Feat]: Threshold in dashboard for Value Component (#3949)
* feat: done with the basic design * refactor: started working with functionality * refactor: done with saving the thresholds * refactor: done with coloring and conflicting threshold in value chart * refactor: done with the backgound color and text * refactor: done with unit in value graphs * refactor: done with precedence and drag and drop * refactor: removed the unwanted console * chore: updated snapshot and test * refactor: support for dark mode * refactor: done with the review changes * refactor: removed the extra created file * refactor: tsc fixes * refactor: updated border color * refactor: updated required mark * refactor: added missing props * refactor: tsc fixes * refactor: addressed review comments
This commit is contained in:
parent
37f61ebe60
commit
12819113c1
@ -36,7 +36,7 @@
|
||||
"@uiw/react-md-editor": "3.23.5",
|
||||
"@xstate/react": "^3.0.0",
|
||||
"ansi-to-html": "0.7.2",
|
||||
"antd": "5.0.5",
|
||||
"antd": "5.11.0",
|
||||
"antd-table-saveas-excel": "2.2.1",
|
||||
"axios": "^0.21.0",
|
||||
"babel-eslint": "^10.1.0",
|
||||
|
3
frontend/public/locales/en/valueGraph.json
Normal file
3
frontend/public/locales/en/valueGraph.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"this_value_satisfies_multiple_thresholds": "This value satisfies multiple thresholds."
|
||||
}
|
@ -3,10 +3,10 @@
|
||||
exports[`DraggableTableRow Snapshot test should render DraggableTableRow 1`] = `
|
||||
<DocumentFragment>
|
||||
<div
|
||||
class="ant-table-wrapper css-dev-only-do-not-override-1i536d8"
|
||||
class="ant-table-wrapper css-dev-only-do-not-override-2i2tap"
|
||||
>
|
||||
<div
|
||||
class="ant-spin-nested-loading css-dev-only-do-not-override-1i536d8"
|
||||
class="ant-spin-nested-loading css-dev-only-do-not-override-2i2tap"
|
||||
>
|
||||
<div
|
||||
class="ant-spin-container"
|
||||
@ -28,7 +28,7 @@ exports[`DraggableTableRow Snapshot test should render DraggableTableRow 1`] = `
|
||||
class="ant-table-thead"
|
||||
>
|
||||
<tr>
|
||||
<th
|
||||
<td
|
||||
class="ant-table-cell"
|
||||
/>
|
||||
</tr>
|
||||
@ -43,7 +43,7 @@ exports[`DraggableTableRow Snapshot test should render DraggableTableRow 1`] = `
|
||||
class="ant-table-cell"
|
||||
>
|
||||
<div
|
||||
class="css-dev-only-do-not-override-1i536d8 ant-empty ant-empty-normal"
|
||||
class="css-dev-only-do-not-override-2i2tap ant-empty ant-empty-normal"
|
||||
>
|
||||
<div
|
||||
class="ant-empty-image"
|
||||
|
@ -51,11 +51,10 @@ function SaveViewWithName({
|
||||
return (
|
||||
<Card>
|
||||
<Typography>{t('name_of_the_view')}</Typography>
|
||||
<Form form={form} onFinish={onSaveHandler}>
|
||||
<Form form={form} onFinish={onSaveHandler} requiredMark>
|
||||
<Form.Item
|
||||
name={['viewName']}
|
||||
required
|
||||
requiredMark
|
||||
rules={[
|
||||
{
|
||||
required: true,
|
||||
|
@ -9,7 +9,7 @@ exports[`MessageTip custom action 1`] = `
|
||||
}
|
||||
|
||||
<div
|
||||
class="ant-alert ant-alert-info ant-alert-with-description c0 css-dev-only-do-not-override-1i536d8"
|
||||
class="ant-alert ant-alert-info ant-alert-with-description c0 css-dev-only-do-not-override-2i2tap"
|
||||
data-show="true"
|
||||
role="alert"
|
||||
>
|
||||
|
31
frontend/src/components/ValueGraph/ValueGraph.styles.scss
Normal file
31
frontend/src/components/ValueGraph/ValueGraph.styles.scss
Normal file
@ -0,0 +1,31 @@
|
||||
.value-graph-container {
|
||||
width: 50%;
|
||||
height: 50%;
|
||||
max-width: 200px;
|
||||
max-height: 200px;
|
||||
border-radius: 10px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
|
||||
.value-graph-text {
|
||||
font-size: 2.5vw;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.value-graph-bgconflict {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 10px;
|
||||
}
|
||||
|
||||
.value-graph-textconflict {
|
||||
margin-left: 10px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.value-graph-icon {
|
||||
color: #E89A3C;
|
||||
}
|
||||
}
|
@ -1,11 +1,66 @@
|
||||
import { Value } from './styles';
|
||||
import './ValueGraph.styles.scss';
|
||||
|
||||
function ValueGraph({ value }: ValueGraphProps): JSX.Element {
|
||||
return <Value>{value}</Value>;
|
||||
import { ExclamationCircleFilled } from '@ant-design/icons';
|
||||
import { Tooltip, Typography } from 'antd';
|
||||
import { ThresholdProps } from 'container/NewWidget/RightContainer/Threshold/types';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
import { getBackgroundColorAndThresholdCheck } from './utils';
|
||||
|
||||
function ValueGraph({
|
||||
value,
|
||||
rawValue,
|
||||
thresholds,
|
||||
}: ValueGraphProps): JSX.Element {
|
||||
const { t } = useTranslation(['valueGraph']);
|
||||
|
||||
const {
|
||||
threshold,
|
||||
isConflictingThresholds,
|
||||
} = getBackgroundColorAndThresholdCheck(thresholds, rawValue);
|
||||
|
||||
return (
|
||||
<div
|
||||
className="value-graph-container"
|
||||
style={{
|
||||
backgroundColor:
|
||||
threshold.thresholdFormat === 'Background'
|
||||
? threshold.thresholdColor
|
||||
: undefined,
|
||||
}}
|
||||
>
|
||||
<Typography.Text
|
||||
className="value-graph-text"
|
||||
style={{
|
||||
color:
|
||||
threshold.thresholdFormat === 'Text'
|
||||
? threshold.thresholdColor
|
||||
: undefined,
|
||||
}}
|
||||
>
|
||||
{value}
|
||||
</Typography.Text>
|
||||
{isConflictingThresholds && (
|
||||
<div
|
||||
className={
|
||||
threshold.thresholdFormat === 'Background'
|
||||
? 'value-graph-bgconflict'
|
||||
: 'value-graph-textconflict'
|
||||
}
|
||||
>
|
||||
<Tooltip title={t('this_value_satisfies_multiple_thresholds')}>
|
||||
<ExclamationCircleFilled className="value-graph-icon" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
interface ValueGraphProps {
|
||||
value: string;
|
||||
rawValue: number;
|
||||
thresholds: ThresholdProps[];
|
||||
}
|
||||
|
||||
export default ValueGraph;
|
||||
|
@ -1,7 +0,0 @@
|
||||
import { Typography } from 'antd';
|
||||
import styled from 'styled-components';
|
||||
|
||||
export const Value = styled(Typography)`
|
||||
font-size: 2.5vw;
|
||||
text-align: center;
|
||||
`;
|
97
frontend/src/components/ValueGraph/utils.ts
Normal file
97
frontend/src/components/ValueGraph/utils.ts
Normal file
@ -0,0 +1,97 @@
|
||||
import { getYAxisFormattedValue } from 'components/Graph/yAxisConfig';
|
||||
import { ThresholdProps } from 'container/NewWidget/RightContainer/Threshold/types';
|
||||
|
||||
function compareThreshold(
|
||||
rawValue: number,
|
||||
threshold: ThresholdProps,
|
||||
): boolean {
|
||||
if (
|
||||
threshold.thresholdOperator === undefined ||
|
||||
threshold.thresholdValue === undefined
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
switch (threshold.thresholdOperator) {
|
||||
case '>':
|
||||
return rawValue > threshold.thresholdValue;
|
||||
case '>=':
|
||||
return rawValue >= threshold.thresholdValue;
|
||||
case '<':
|
||||
return rawValue < threshold.thresholdValue;
|
||||
case '<=':
|
||||
return rawValue <= threshold.thresholdValue;
|
||||
case '=':
|
||||
return rawValue === threshold.thresholdValue;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function extractNumbersFromString(inputString: string): number[] {
|
||||
const regex = /[+-]?\d+(\.\d+)?/g;
|
||||
const matches = inputString.match(regex);
|
||||
|
||||
if (matches) {
|
||||
return matches.map(Number);
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
function getHighestPrecedenceThreshold(
|
||||
matchingThresholds: ThresholdProps[],
|
||||
thresholds: ThresholdProps[],
|
||||
): ThresholdProps | null {
|
||||
if (matchingThresholds.length === 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// whichever threshold from matchingThresholds is found first in thresholds array return the threshold from thresholds array
|
||||
let highestPrecedenceThreshold = matchingThresholds[0];
|
||||
for (let i = 1; i < matchingThresholds.length; i += 1) {
|
||||
if (
|
||||
thresholds.indexOf(matchingThresholds[i]) <
|
||||
thresholds.indexOf(highestPrecedenceThreshold)
|
||||
) {
|
||||
highestPrecedenceThreshold = matchingThresholds[i];
|
||||
}
|
||||
}
|
||||
|
||||
return highestPrecedenceThreshold;
|
||||
}
|
||||
|
||||
export function getBackgroundColorAndThresholdCheck(
|
||||
thresholds: ThresholdProps[],
|
||||
rawValue: number,
|
||||
): {
|
||||
threshold: ThresholdProps;
|
||||
isConflictingThresholds: boolean;
|
||||
} {
|
||||
const matchingThresholds = thresholds.filter((threshold) =>
|
||||
compareThreshold(
|
||||
extractNumbersFromString(
|
||||
getYAxisFormattedValue(rawValue.toString(), threshold.thresholdUnit || ''),
|
||||
)[0],
|
||||
threshold,
|
||||
),
|
||||
);
|
||||
|
||||
if (matchingThresholds.length === 0) {
|
||||
return {
|
||||
threshold: {} as ThresholdProps,
|
||||
isConflictingThresholds: false,
|
||||
};
|
||||
}
|
||||
|
||||
const highestPrecedenceThreshold = getHighestPrecedenceThreshold(
|
||||
matchingThresholds,
|
||||
thresholds,
|
||||
);
|
||||
|
||||
const isConflictingThresholds = matchingThresholds.length > 1;
|
||||
|
||||
return {
|
||||
threshold: highestPrecedenceThreshold || ({} as ThresholdProps),
|
||||
isConflictingThresholds,
|
||||
};
|
||||
}
|
@ -171,6 +171,7 @@ function FullView({
|
||||
panelData={response.data?.payload.data.newResult.data.result || []}
|
||||
query={widget.query}
|
||||
ref={fullViewChartRef}
|
||||
thresholds={widget.thresholds}
|
||||
/>
|
||||
</GraphContainer>
|
||||
)}
|
||||
|
@ -281,6 +281,7 @@ function WidgetGraphComponent({
|
||||
onClickHandler={onClickHandler}
|
||||
panelData={queryResponse.data?.payload?.data.newResult.data.result || []}
|
||||
query={widget.query}
|
||||
thresholds={widget.thresholds}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
|
@ -169,9 +169,9 @@ function WidgetHeader({
|
||||
|
||||
const updatedMenuList = useMemo(() => generateMenuList(actions), [actions]);
|
||||
|
||||
const onClickHandler = useCallback(() => {
|
||||
setIsOpen((open) => !open);
|
||||
}, []);
|
||||
const onClickHandler = (): void => {
|
||||
setIsOpen(!isOpen);
|
||||
};
|
||||
|
||||
const menu = useMemo(
|
||||
() => ({
|
||||
|
@ -11,7 +11,7 @@ const GridPanelSwitch = forwardRef<
|
||||
GridPanelSwitchProps
|
||||
>(
|
||||
(
|
||||
{ panelType, data, yAxisUnit, panelData, query, options },
|
||||
{ panelType, data, yAxisUnit, panelData, query, options, thresholds },
|
||||
ref,
|
||||
): JSX.Element | null => {
|
||||
const currentProps: PropsTypePropsMap = useMemo(() => {
|
||||
@ -24,6 +24,7 @@ const GridPanelSwitch = forwardRef<
|
||||
[PANEL_TYPES.VALUE]: {
|
||||
data,
|
||||
yAxisUnit,
|
||||
thresholds,
|
||||
},
|
||||
[PANEL_TYPES.TABLE]: { ...GRID_TABLE_CONFIG, data: panelData, query },
|
||||
[PANEL_TYPES.LIST]: null,
|
||||
@ -32,7 +33,7 @@ const GridPanelSwitch = forwardRef<
|
||||
};
|
||||
|
||||
return result;
|
||||
}, [data, options, ref, yAxisUnit, panelData, query]);
|
||||
}, [data, options, ref, yAxisUnit, thresholds, panelData, query]);
|
||||
|
||||
const Component = PANEL_TYPES_COMPONENT_MAP[panelType] as FC<
|
||||
PropsTypePropsMap[typeof panelType]
|
||||
|
@ -4,6 +4,7 @@ import { GridTableComponentProps } from 'container/GridTableComponent/types';
|
||||
import { GridValueComponentProps } from 'container/GridValueComponent/types';
|
||||
import { OnClickPluginOpts } from 'lib/uPlotLib/plugins/onClickPlugin';
|
||||
import { ForwardedRef } from 'react';
|
||||
import { Widgets } from 'types/api/dashboard/getAll';
|
||||
import { Query } from 'types/api/queryBuilder/queryBuilderData';
|
||||
import { QueryDataV3 } from 'types/api/widgets/getQuery';
|
||||
import uPlot from 'uplot';
|
||||
@ -21,6 +22,7 @@ export type GridPanelSwitchProps = {
|
||||
onDragSelect?: (start: number, end: number) => void;
|
||||
panelData: QueryDataV3[];
|
||||
query: Query;
|
||||
thresholds?: Widgets['thresholds'];
|
||||
};
|
||||
|
||||
export type PropsTypePropsMap = {
|
||||
|
@ -12,6 +12,7 @@ function GridValueComponent({
|
||||
data,
|
||||
title,
|
||||
yAxisUnit,
|
||||
thresholds,
|
||||
}: GridValueComponentProps): JSX.Element {
|
||||
const value = ((data[1] || [])[0] || 0) as number;
|
||||
|
||||
@ -35,6 +36,8 @@ function GridValueComponent({
|
||||
</TitleContainer>
|
||||
<ValueContainer>
|
||||
<ValueGraph
|
||||
thresholds={thresholds || []}
|
||||
rawValue={value}
|
||||
value={
|
||||
yAxisUnit
|
||||
? getYAxisFormattedValue(String(value), yAxisUnit)
|
||||
|
@ -1,3 +1,4 @@
|
||||
import { ThresholdProps } from 'container/NewWidget/RightContainer/Threshold/types';
|
||||
import uPlot from 'uplot';
|
||||
|
||||
export type GridValueComponentProps = {
|
||||
@ -5,4 +6,5 @@ export type GridValueComponentProps = {
|
||||
options?: uPlot.Options;
|
||||
title?: React.ReactNode;
|
||||
yAxisUnit?: string;
|
||||
thresholds?: ThresholdProps[];
|
||||
};
|
||||
|
@ -33,21 +33,29 @@ function QueryHeader({
|
||||
<Row style={{ justifyContent: 'space-between' }}>
|
||||
<Row>
|
||||
<Button
|
||||
type="ghost"
|
||||
type="default"
|
||||
ghost
|
||||
icon={disabled ? <EyeInvisibleFilled /> : <EyeFilled />}
|
||||
onClick={onDisable}
|
||||
>
|
||||
{name}
|
||||
</Button>
|
||||
<Button
|
||||
type="ghost"
|
||||
type="default"
|
||||
ghost
|
||||
icon={collapse ? <RightOutlined /> : <DownOutlined />}
|
||||
onClick={(): void => setCollapse(!collapse)}
|
||||
/>
|
||||
</Row>
|
||||
|
||||
{deletable && (
|
||||
<Button type="ghost" danger icon={<DeleteOutlined />} onClick={onDelete} />
|
||||
<Button
|
||||
type="default"
|
||||
ghost
|
||||
danger
|
||||
icon={<DeleteOutlined />}
|
||||
onClick={onDelete}
|
||||
/>
|
||||
)}
|
||||
</Row>
|
||||
{!collapse && children}
|
||||
|
@ -12,6 +12,7 @@ function WidgetGraphContainer({
|
||||
selectedGraph,
|
||||
yAxisUnit,
|
||||
selectedTime,
|
||||
thresholds,
|
||||
}: WidgetGraphProps): JSX.Element {
|
||||
const { selectedDashboard } = useDashboard();
|
||||
|
||||
@ -55,6 +56,7 @@ function WidgetGraphContainer({
|
||||
yAxisUnit={yAxisUnit || ''}
|
||||
getWidgetQueryRange={getWidgetQueryRange}
|
||||
selectedWidget={selectedWidget}
|
||||
thresholds={thresholds}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
import GridPanelSwitch from 'container/GridPanelSwitch';
|
||||
import { ThresholdProps } from 'container/NewWidget/RightContainer/Threshold/types';
|
||||
import { useQueryBuilder } from 'hooks/queryBuilder/useQueryBuilder';
|
||||
import { useIsDarkMode } from 'hooks/useDarkMode';
|
||||
import { useResizeObserver } from 'hooks/useDimensions';
|
||||
@ -17,6 +18,7 @@ function WidgetGraph({
|
||||
getWidgetQueryRange,
|
||||
selectedWidget,
|
||||
yAxisUnit,
|
||||
thresholds,
|
||||
}: WidgetGraphProps): JSX.Element {
|
||||
const { stagedQuery } = useQueryBuilder();
|
||||
|
||||
@ -78,12 +80,14 @@ function WidgetGraph({
|
||||
getWidgetQueryRange.data?.payload.data.newResult.data.result || []
|
||||
}
|
||||
query={stagedQuery || selectedWidget.query}
|
||||
thresholds={thresholds}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
interface WidgetGraphProps {
|
||||
thresholds: ThresholdProps[];
|
||||
yAxisUnit: string;
|
||||
selectedWidget: Widgets;
|
||||
getWidgetQueryRange: UseQueryResult<
|
||||
|
@ -15,6 +15,7 @@ function WidgetGraph({
|
||||
selectedGraph,
|
||||
yAxisUnit,
|
||||
selectedTime,
|
||||
thresholds,
|
||||
}: WidgetGraphProps): JSX.Element {
|
||||
const { currentQuery } = useQueryBuilder();
|
||||
const { selectedDashboard } = useDashboard();
|
||||
@ -46,6 +47,7 @@ function WidgetGraph({
|
||||
)}
|
||||
|
||||
<WidgetGraphComponent
|
||||
thresholds={thresholds}
|
||||
selectedTime={selectedTime}
|
||||
selectedGraph={selectedGraph}
|
||||
yAxisUnit={yAxisUnit}
|
||||
|
@ -9,10 +9,12 @@ function LeftContainer({
|
||||
selectedGraph,
|
||||
yAxisUnit,
|
||||
selectedTime,
|
||||
thresholds,
|
||||
}: WidgetGraphProps): JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<WidgetGraph
|
||||
thresholds={thresholds}
|
||||
selectedTime={selectedTime}
|
||||
selectedGraph={selectedGraph}
|
||||
yAxisUnit={yAxisUnit}
|
||||
|
@ -0,0 +1,3 @@
|
||||
.color-selector-button {
|
||||
border: none;
|
||||
}
|
@ -0,0 +1,89 @@
|
||||
import './ColorSelector.styles.scss';
|
||||
|
||||
import { DownOutlined } from '@ant-design/icons';
|
||||
import { Button, ColorPicker, Dropdown, Space } from 'antd';
|
||||
import { Color } from 'antd/es/color-picker';
|
||||
import { MenuProps } from 'antd/lib';
|
||||
import useDebounce from 'hooks/useDebounce';
|
||||
import { Dispatch, SetStateAction, useEffect, useState } from 'react';
|
||||
|
||||
import CustomColor from './CustomColor';
|
||||
|
||||
function ColorSelector({
|
||||
thresholdColor = 'Red',
|
||||
setColor,
|
||||
}: ColorSelectorProps): JSX.Element {
|
||||
const [colorFromPicker, setColorFromPicker] = useState<string>('');
|
||||
|
||||
const debounceColor = useDebounce(colorFromPicker);
|
||||
|
||||
useEffect(() => {
|
||||
if (debounceColor) {
|
||||
setColor(debounceColor);
|
||||
}
|
||||
}, [debounceColor, setColor]);
|
||||
|
||||
const handleColorChange = (_: Color, hex: string): void => {
|
||||
setColorFromPicker(hex);
|
||||
};
|
||||
|
||||
const items: MenuProps['items'] = [
|
||||
{
|
||||
key: 'Red',
|
||||
label: <CustomColor color="Red" />,
|
||||
onClick: (): void => setColor('Red'),
|
||||
},
|
||||
{
|
||||
key: 'Orange',
|
||||
label: <CustomColor color="Orange" />,
|
||||
onClick: (): void => setColor('Orange'),
|
||||
},
|
||||
{
|
||||
key: 'Green',
|
||||
label: <CustomColor color="Green" />,
|
||||
onClick: (): void => setColor('Green'),
|
||||
},
|
||||
{
|
||||
key: 'Blue',
|
||||
label: <CustomColor color="Blue" />,
|
||||
onClick: (): void => setColor('Blue'),
|
||||
},
|
||||
{
|
||||
key: 'Custom Color',
|
||||
label: (
|
||||
<ColorPicker
|
||||
trigger="hover"
|
||||
onChange={handleColorChange}
|
||||
placement="bottomLeft"
|
||||
>
|
||||
Custom Color
|
||||
</ColorPicker>
|
||||
),
|
||||
},
|
||||
];
|
||||
|
||||
return (
|
||||
<Dropdown menu={{ items }} trigger={['click']}>
|
||||
<Button
|
||||
onClick={(e): void => e.preventDefault()}
|
||||
className="color-selector-button"
|
||||
>
|
||||
<Space>
|
||||
<CustomColor color={thresholdColor} />
|
||||
<DownOutlined />
|
||||
</Space>
|
||||
</Button>
|
||||
</Dropdown>
|
||||
);
|
||||
}
|
||||
|
||||
interface ColorSelectorProps {
|
||||
thresholdColor?: string;
|
||||
setColor: Dispatch<SetStateAction<string>>;
|
||||
}
|
||||
|
||||
ColorSelector.defaultProps = {
|
||||
thresholdColor: undefined,
|
||||
};
|
||||
|
||||
export default ColorSelector;
|
@ -0,0 +1,18 @@
|
||||
.custom-color-container {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
align-items: center;
|
||||
|
||||
.custom-color-typography-dark {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
.custom-color-typography-light {
|
||||
color: #000 !important;
|
||||
}
|
||||
|
||||
.custom-color-tag {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
import './CustomColor.styles.scss';
|
||||
|
||||
import { Typography } from 'antd';
|
||||
import { useIsDarkMode } from 'hooks/useDarkMode';
|
||||
|
||||
import { CustomColorProps } from './types';
|
||||
|
||||
function CustomColor({ color }: CustomColorProps): JSX.Element {
|
||||
const isDarkMode = useIsDarkMode();
|
||||
return (
|
||||
<div className="custom-color-container">
|
||||
<div className="custom-color-tag" style={{ background: color }} />
|
||||
<Typography.Text
|
||||
className={
|
||||
isDarkMode
|
||||
? `custom-color-typography-dark`
|
||||
: `custom-color-typograph-light`
|
||||
}
|
||||
>
|
||||
{color}
|
||||
</Typography.Text>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default CustomColor;
|
@ -0,0 +1,13 @@
|
||||
.show-case-container {
|
||||
padding: 5px 15px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.show-case-dark {
|
||||
background-color: #141414;
|
||||
}
|
||||
|
||||
.show-case-light {
|
||||
background-color: rgb(255, 255, 255);
|
||||
border: 1px solid #141414;
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
import './ShowCaseValue.styles.scss';
|
||||
|
||||
import { useIsDarkMode } from 'hooks/useDarkMode';
|
||||
|
||||
import { ShowCaseValueProps } from './types';
|
||||
|
||||
function ShowCaseValue({ width, value }: ShowCaseValueProps): JSX.Element {
|
||||
const isDarkMode = useIsDarkMode();
|
||||
return (
|
||||
<div
|
||||
className={
|
||||
isDarkMode
|
||||
? `show-case-container show-case-dark`
|
||||
: `show-case-container show-case-light`
|
||||
}
|
||||
style={{ minWidth: width }}
|
||||
>
|
||||
{value}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default ShowCaseValue;
|
@ -0,0 +1,58 @@
|
||||
.threshold-container {
|
||||
|
||||
.threshold-card {
|
||||
padding: 0px;
|
||||
border-radius: 10px;
|
||||
position: relative;
|
||||
margin-top: 10px;
|
||||
|
||||
.threshold-card-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.ant-typography {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
line-height: 22px;
|
||||
}
|
||||
|
||||
.ant-typograph-dark {
|
||||
color: #FFFFFF73;
|
||||
}
|
||||
|
||||
.ant-typograph-light {
|
||||
color: #00000073;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.threshold-card-dark {
|
||||
background-color: #1F1F1F;
|
||||
}
|
||||
|
||||
.threshold-card-light {
|
||||
background-color: rgb(255, 255, 255);
|
||||
}
|
||||
|
||||
.threshold-action-button {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
top: 10px;
|
||||
}
|
||||
|
||||
.threshold-action-icon {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.threshold-units-selector {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.threshold-color-picker {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
@ -0,0 +1,262 @@
|
||||
import './Threshold.styles.scss';
|
||||
|
||||
import { CheckOutlined, DeleteOutlined, EditOutlined } from '@ant-design/icons';
|
||||
import { Card, Divider, InputNumber, Select, Space, Typography } from 'antd';
|
||||
import { useIsDarkMode } from 'hooks/useDarkMode';
|
||||
import { useRef, useState } from 'react';
|
||||
import { useDrag, useDrop, XYCoord } from 'react-dnd';
|
||||
|
||||
import { operatorOptions, showAsOptions, unitOptions } from '../constants';
|
||||
import ColorSelector from './ColorSelector';
|
||||
import CustomColor from './CustomColor';
|
||||
import ShowCaseValue from './ShowCaseValue';
|
||||
import { ThresholdProps } from './types';
|
||||
|
||||
function Threshold({
|
||||
index,
|
||||
thresholdOperator = '>',
|
||||
thresholdValue = 0,
|
||||
isEditEnabled = false,
|
||||
thresholdUnit = 'ms',
|
||||
thresholdColor = 'Red',
|
||||
thresholdFormat = 'Text',
|
||||
thresholdDeleteHandler,
|
||||
setThresholds,
|
||||
keyIndex,
|
||||
moveThreshold,
|
||||
}: ThresholdProps): JSX.Element {
|
||||
const [isEditMode, setIsEditMode] = useState<boolean>(isEditEnabled);
|
||||
const [operator, setOperator] = useState<string | number>(
|
||||
thresholdOperator as string | number,
|
||||
);
|
||||
const [value, setValue] = useState<number>(thresholdValue);
|
||||
const [unit, setUnit] = useState<string>(thresholdUnit);
|
||||
const [color, setColor] = useState<string>(thresholdColor);
|
||||
const [format, setFormat] = useState<ThresholdProps['thresholdFormat']>(
|
||||
thresholdFormat,
|
||||
);
|
||||
|
||||
const isDarkMode = useIsDarkMode();
|
||||
|
||||
const saveHandler = (): void => {
|
||||
setIsEditMode(false);
|
||||
if (setThresholds === undefined) {
|
||||
return;
|
||||
}
|
||||
setThresholds((prevThresholds) =>
|
||||
prevThresholds.map((threshold) => {
|
||||
if (threshold.index === index) {
|
||||
return {
|
||||
...threshold,
|
||||
isEditEnabled: false,
|
||||
thresholdColor: color,
|
||||
thresholdFormat: format,
|
||||
thresholdOperator: operator as ThresholdProps['thresholdOperator'],
|
||||
thresholdUnit: unit,
|
||||
thresholdValue: value,
|
||||
};
|
||||
}
|
||||
return threshold;
|
||||
}),
|
||||
);
|
||||
};
|
||||
|
||||
const editHandler = (): void => {
|
||||
setIsEditMode(true);
|
||||
};
|
||||
|
||||
const handleOperatorChange = (value: string | number): void => {
|
||||
setOperator(value);
|
||||
};
|
||||
|
||||
const handleValueChange = (value: number | null): void => {
|
||||
if (value === null) {
|
||||
return;
|
||||
}
|
||||
setValue(value);
|
||||
};
|
||||
|
||||
const handleUnitChange = (value: string): void => {
|
||||
setUnit(value);
|
||||
};
|
||||
|
||||
const handlerFormatChange = (
|
||||
value: ThresholdProps['thresholdFormat'],
|
||||
): void => {
|
||||
setFormat(value);
|
||||
};
|
||||
|
||||
const deleteHandler = (): void => {
|
||||
if (thresholdDeleteHandler) {
|
||||
thresholdDeleteHandler(index);
|
||||
}
|
||||
};
|
||||
|
||||
const ref = useRef<HTMLDivElement>(null);
|
||||
const [{ handlerId }, drop] = useDrop<
|
||||
ThresholdProps,
|
||||
void,
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
{ handlerId: any }
|
||||
>({
|
||||
accept: 'Threshold',
|
||||
collect(monitor) {
|
||||
return {
|
||||
handlerId: monitor.getHandlerId(),
|
||||
};
|
||||
},
|
||||
hover(item: ThresholdProps, monitor) {
|
||||
if (!ref.current) {
|
||||
return;
|
||||
}
|
||||
const dragIndex = item.keyIndex;
|
||||
const hoverIndex = keyIndex;
|
||||
|
||||
if (dragIndex === hoverIndex) {
|
||||
return;
|
||||
}
|
||||
|
||||
const hoverBoundingRect = ref.current?.getBoundingClientRect();
|
||||
|
||||
const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;
|
||||
|
||||
const clientOffset = monitor.getClientOffset();
|
||||
|
||||
const hoverClientY = (clientOffset as XYCoord).y - hoverBoundingRect.top;
|
||||
|
||||
if (dragIndex < hoverIndex && hoverClientY < hoverMiddleY) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (dragIndex > hoverIndex && hoverClientY > hoverMiddleY) {
|
||||
return;
|
||||
}
|
||||
|
||||
moveThreshold(dragIndex, hoverIndex);
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
item.keyIndex = hoverIndex;
|
||||
},
|
||||
});
|
||||
|
||||
const [{ isDragging }, drag] = useDrag({
|
||||
type: 'Threshold',
|
||||
item: () => ({ keyIndex }),
|
||||
collect: (monitor) => ({
|
||||
isDragging: monitor.isDragging(),
|
||||
}),
|
||||
});
|
||||
|
||||
const opacity = isDragging ? 0 : 1;
|
||||
drag(drop(ref));
|
||||
|
||||
return (
|
||||
<div
|
||||
ref={ref}
|
||||
style={{ opacity }}
|
||||
data-handler-id={handlerId}
|
||||
className="threshold-container"
|
||||
>
|
||||
<Card
|
||||
className={
|
||||
isDarkMode
|
||||
? `threshold-card threshold-card-dark`
|
||||
: `threshold-card threshold-card-light`
|
||||
}
|
||||
>
|
||||
<div className="threshold-card-container">
|
||||
<div className="threshold-action-button">
|
||||
{isEditMode ? (
|
||||
<CheckOutlined onClick={saveHandler} />
|
||||
) : (
|
||||
<EditOutlined className="threshold-action-icon" onClick={editHandler} />
|
||||
)}
|
||||
<Divider type="vertical" />
|
||||
<DeleteOutlined
|
||||
className="threshold-action-icon"
|
||||
onClick={deleteHandler}
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<Space>
|
||||
<Typography.Text>If value is</Typography.Text>
|
||||
{isEditMode ? (
|
||||
<Select
|
||||
style={{ maxWidth: '73px', backgroundColor: '#141414' }}
|
||||
bordered={false}
|
||||
defaultValue={operator}
|
||||
options={operatorOptions}
|
||||
onChange={handleOperatorChange}
|
||||
showSearch
|
||||
/>
|
||||
) : (
|
||||
<ShowCaseValue width="49px" value={operator} />
|
||||
)}
|
||||
</Space>
|
||||
</div>
|
||||
<div className="threshold-units-selector">
|
||||
<Space>
|
||||
{isEditMode ? (
|
||||
<InputNumber
|
||||
style={{ backgroundColor: '#141414' }}
|
||||
defaultValue={value}
|
||||
onChange={handleValueChange}
|
||||
bordered={false}
|
||||
/>
|
||||
) : (
|
||||
<ShowCaseValue width="60px" value={value} />
|
||||
)}
|
||||
{isEditMode ? (
|
||||
<Select
|
||||
style={{ maxWidth: '200px', backgroundColor: '#141414' }}
|
||||
bordered={false}
|
||||
defaultValue={unit}
|
||||
options={unitOptions}
|
||||
onChange={handleUnitChange}
|
||||
showSearch
|
||||
/>
|
||||
) : (
|
||||
<ShowCaseValue width="200px" value={unit} />
|
||||
)}
|
||||
</Space>
|
||||
</div>
|
||||
<div>
|
||||
<Space direction="vertical">
|
||||
<Typography.Text>Show with</Typography.Text>
|
||||
<Space>
|
||||
{isEditMode ? (
|
||||
<ColorSelector setColor={setColor} thresholdColor={color} />
|
||||
) : (
|
||||
<ShowCaseValue width="100px" value={<CustomColor color={color} />} />
|
||||
)}
|
||||
{isEditMode ? (
|
||||
<Select
|
||||
style={{ maxWidth: '100px', backgroundColor: '#141414' }}
|
||||
bordered={false}
|
||||
defaultValue={format}
|
||||
options={showAsOptions}
|
||||
onChange={handlerFormatChange}
|
||||
showSearch
|
||||
/>
|
||||
) : (
|
||||
<ShowCaseValue width="100px" value={format} />
|
||||
)}
|
||||
</Space>
|
||||
</Space>
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
Threshold.defaultProps = {
|
||||
thresholdOperator: undefined,
|
||||
thresholdValue: undefined,
|
||||
thresholdUnit: undefined,
|
||||
thresholdColor: undefined,
|
||||
thresholdFormat: undefined,
|
||||
isEditEnabled: false,
|
||||
thresholdDeleteHandler: undefined,
|
||||
};
|
||||
|
||||
export default Threshold;
|
@ -0,0 +1,18 @@
|
||||
.threshold-selector-container {
|
||||
.threshold-selector-button {
|
||||
margin-top: 20px;
|
||||
width: 100%;
|
||||
border-radius: 10px;
|
||||
padding: 10px 0;
|
||||
height: 50px;
|
||||
border-color: #1C64F2;
|
||||
color: #1C64F2;
|
||||
|
||||
span {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
line-height: 22px;
|
||||
letter-spacing: 0.5px;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,84 @@
|
||||
import './ThresholdSelector.styles.scss';
|
||||
|
||||
import { Button, Typography } from 'antd';
|
||||
import { useCallback } from 'react';
|
||||
import { DndProvider } from 'react-dnd';
|
||||
import { HTML5Backend } from 'react-dnd-html5-backend';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
|
||||
import Threshold from './Threshold';
|
||||
import { ThresholdSelectorProps } from './types';
|
||||
|
||||
function ThresholdSelector({
|
||||
thresholds,
|
||||
setThresholds,
|
||||
yAxisUnit,
|
||||
}: ThresholdSelectorProps): JSX.Element {
|
||||
const moveThreshold = useCallback(
|
||||
(dragIndex: number, hoverIndex: number) => {
|
||||
setThresholds((prevCards) => {
|
||||
const draggedCard = prevCards[dragIndex];
|
||||
const remainingCards = prevCards.filter((_, index) => index !== dragIndex);
|
||||
return [
|
||||
...remainingCards.slice(0, hoverIndex),
|
||||
draggedCard,
|
||||
...remainingCards.slice(hoverIndex),
|
||||
];
|
||||
});
|
||||
},
|
||||
[setThresholds],
|
||||
);
|
||||
|
||||
const addThresholdHandler = (): void => {
|
||||
setThresholds([
|
||||
...thresholds,
|
||||
{
|
||||
index: uuid(),
|
||||
isEditEnabled: true,
|
||||
thresholdColor: 'Red',
|
||||
thresholdFormat: 'Text',
|
||||
thresholdOperator: '>',
|
||||
thresholdUnit: yAxisUnit,
|
||||
thresholdValue: 0,
|
||||
moveThreshold,
|
||||
keyIndex: thresholds.length,
|
||||
},
|
||||
]);
|
||||
};
|
||||
|
||||
const deleteThresholdHandler = (index: string): void => {
|
||||
const newThresholds = thresholds.filter(
|
||||
(threshold) => threshold.index !== index,
|
||||
);
|
||||
setThresholds(newThresholds);
|
||||
};
|
||||
|
||||
return (
|
||||
<DndProvider backend={HTML5Backend}>
|
||||
<div className="threshold-selector-container">
|
||||
<Typography.Text>Thresholds</Typography.Text>
|
||||
{thresholds.map((threshold, idx) => (
|
||||
<Threshold
|
||||
key={threshold.index}
|
||||
index={threshold.index}
|
||||
isEditEnabled={threshold.isEditEnabled}
|
||||
thresholdColor={threshold.thresholdColor}
|
||||
thresholdFormat={threshold.thresholdFormat}
|
||||
thresholdOperator={threshold.thresholdOperator}
|
||||
thresholdUnit={threshold.thresholdUnit}
|
||||
thresholdValue={threshold.thresholdValue}
|
||||
thresholdDeleteHandler={deleteThresholdHandler}
|
||||
setThresholds={setThresholds}
|
||||
keyIndex={idx}
|
||||
moveThreshold={moveThreshold}
|
||||
/>
|
||||
))}
|
||||
<Button className="threshold-selector-button" onClick={addThresholdHandler}>
|
||||
+ Add threshold
|
||||
</Button>
|
||||
</div>
|
||||
</DndProvider>
|
||||
);
|
||||
}
|
||||
|
||||
export default ThresholdSelector;
|
@ -0,0 +1,32 @@
|
||||
import { Dispatch, ReactNode, SetStateAction } from 'react';
|
||||
|
||||
type ThresholdOperators = '>' | '<' | '>=' | '<=' | '=';
|
||||
|
||||
export type ThresholdProps = {
|
||||
index: string;
|
||||
keyIndex: number;
|
||||
thresholdDeleteHandler?: (index: string) => void;
|
||||
thresholdOperator?: ThresholdOperators;
|
||||
thresholdValue?: number;
|
||||
thresholdUnit?: string;
|
||||
thresholdColor?: string;
|
||||
thresholdFormat?: 'Text' | 'Background';
|
||||
isEditEnabled?: boolean;
|
||||
setThresholds?: Dispatch<SetStateAction<ThresholdProps[]>>;
|
||||
moveThreshold: (dragIndex: number, hoverIndex: number) => void;
|
||||
};
|
||||
|
||||
export type ShowCaseValueProps = {
|
||||
width: string;
|
||||
value: ReactNode;
|
||||
};
|
||||
|
||||
export type CustomColorProps = {
|
||||
color: string;
|
||||
};
|
||||
|
||||
export type ThresholdSelectorProps = {
|
||||
yAxisUnit: string;
|
||||
thresholds: ThresholdProps[];
|
||||
setThresholds: Dispatch<SetStateAction<ThresholdProps[]>>;
|
||||
};
|
21
frontend/src/container/NewWidget/RightContainer/constants.ts
Normal file
21
frontend/src/container/NewWidget/RightContainer/constants.ts
Normal file
@ -0,0 +1,21 @@
|
||||
import { DefaultOptionType } from 'antd/es/select';
|
||||
import { categoryToSupport } from 'container/QueryBuilder/filters/BuilderUnitsFilter/config';
|
||||
|
||||
import { getCategorySelectOptionByName } from './alertFomatCategories';
|
||||
|
||||
export const operatorOptions: DefaultOptionType[] = [
|
||||
{ value: '>', label: '>' },
|
||||
{ value: '>=', label: '>=' },
|
||||
{ value: '<', label: '<' },
|
||||
{ value: '<=', label: '<=' },
|
||||
];
|
||||
|
||||
export const unitOptions = categoryToSupport.map((category) => ({
|
||||
label: category,
|
||||
options: getCategorySelectOptionByName(category),
|
||||
}));
|
||||
|
||||
export const showAsOptions: DefaultOptionType[] = [
|
||||
{ value: 'Text', label: 'Text' },
|
||||
{ value: 'Background', label: 'Background' },
|
||||
];
|
@ -1,5 +1,5 @@
|
||||
import { UploadOutlined } from '@ant-design/icons';
|
||||
import { Button, Input, Select, Space } from 'antd';
|
||||
import { Button, Divider, Input, Select, Space } from 'antd';
|
||||
import InputComponent from 'components/Input';
|
||||
import TimePreference from 'components/TimePreferenceDropDown';
|
||||
import { QueryParams } from 'constants/query';
|
||||
@ -11,6 +11,8 @@ import { Dispatch, SetStateAction, useCallback } from 'react';
|
||||
import { Widgets } from 'types/api/dashboard/getAll';
|
||||
|
||||
import { Container, Title } from './styles';
|
||||
import ThresholdSelector from './Threshold/ThresholdSelector';
|
||||
import { ThresholdProps } from './Threshold/types';
|
||||
import { timePreferance } from './timeItems';
|
||||
import YAxisUnitSelector from './YAxisUnitSelector';
|
||||
|
||||
@ -28,6 +30,8 @@ function RightContainer({
|
||||
yAxisUnit,
|
||||
setYAxisUnit,
|
||||
setGraphHandler,
|
||||
thresholds,
|
||||
setThresholds,
|
||||
selectedWidget,
|
||||
}: RightContainerProps): JSX.Element {
|
||||
const onChangeHandler = useCallback(
|
||||
@ -152,6 +156,14 @@ function RightContainer({
|
||||
</Button>
|
||||
)}
|
||||
</Space>
|
||||
|
||||
<Divider />
|
||||
|
||||
<ThresholdSelector
|
||||
thresholds={thresholds}
|
||||
setThresholds={setThresholds}
|
||||
yAxisUnit={yAxisUnit}
|
||||
/>
|
||||
</Container>
|
||||
);
|
||||
}
|
||||
@ -173,6 +185,8 @@ interface RightContainerProps {
|
||||
yAxisUnit: string;
|
||||
setYAxisUnit: Dispatch<SetStateAction<string>>;
|
||||
setGraphHandler: (type: PANEL_TYPES) => void;
|
||||
thresholds: ThresholdProps[];
|
||||
setThresholds: Dispatch<SetStateAction<ThresholdProps[]>>;
|
||||
selectedWidget?: Widgets;
|
||||
}
|
||||
|
||||
|
@ -29,6 +29,7 @@ import AppReducer from 'types/reducer/app';
|
||||
import LeftContainer from './LeftContainer';
|
||||
import QueryTypeTag from './LeftContainer/QueryTypeTag';
|
||||
import RightContainer from './RightContainer';
|
||||
import { ThresholdProps } from './RightContainer/Threshold/types';
|
||||
import TimeItems, { timePreferance } from './RightContainer/timeItems';
|
||||
import {
|
||||
ButtonContainer,
|
||||
@ -77,6 +78,9 @@ function NewWidget({ selectedGraph }: NewWidgetProps): JSX.Element {
|
||||
selectedWidget?.isStacked || false,
|
||||
);
|
||||
const [opacity, setOpacity] = useState<string>(selectedWidget?.opacity || '1');
|
||||
const [thresholds, setThresholds] = useState<ThresholdProps[]>(
|
||||
selectedWidget?.thresholds || [],
|
||||
);
|
||||
const [selectedNullZeroValue, setSelectedNullZeroValue] = useState<string>(
|
||||
selectedWidget?.nullZeroValues || 'zero',
|
||||
);
|
||||
@ -150,6 +154,7 @@ function NewWidget({ selectedGraph }: NewWidgetProps): JSX.Element {
|
||||
title,
|
||||
yAxisUnit,
|
||||
panelTypes: graphType,
|
||||
thresholds,
|
||||
},
|
||||
...afterWidgets,
|
||||
],
|
||||
@ -180,6 +185,7 @@ function NewWidget({ selectedGraph }: NewWidgetProps): JSX.Element {
|
||||
title,
|
||||
yAxisUnit,
|
||||
graphType,
|
||||
thresholds,
|
||||
afterWidgets,
|
||||
featureResponse,
|
||||
dashboardId,
|
||||
@ -265,6 +271,7 @@ function NewWidget({ selectedGraph }: NewWidgetProps): JSX.Element {
|
||||
selectedTime={selectedTime}
|
||||
selectedGraph={graphType}
|
||||
yAxisUnit={yAxisUnit}
|
||||
thresholds={thresholds}
|
||||
/>
|
||||
</LeftContainerWrapper>
|
||||
|
||||
@ -286,6 +293,8 @@ function NewWidget({ selectedGraph }: NewWidgetProps): JSX.Element {
|
||||
setSelectedTime={setSelectedTime}
|
||||
selectedTime={selectedTime}
|
||||
setYAxisUnit={setYAxisUnit}
|
||||
thresholds={thresholds}
|
||||
setThresholds={setThresholds}
|
||||
selectedWidget={selectedWidget}
|
||||
/>
|
||||
</RightContainerWrapper>
|
||||
|
@ -1,6 +1,7 @@
|
||||
import { PANEL_TYPES } from 'constants/queryBuilder';
|
||||
import { Widgets } from 'types/api/dashboard/getAll';
|
||||
|
||||
import { ThresholdProps } from './RightContainer/Threshold/types';
|
||||
import { timePreferance } from './RightContainer/timeItems';
|
||||
|
||||
export interface NewWidgetProps {
|
||||
@ -10,4 +11,5 @@ export interface NewWidgetProps {
|
||||
|
||||
export interface WidgetGraphProps extends NewWidgetProps {
|
||||
selectedTime: timePreferance;
|
||||
thresholds: ThresholdProps[];
|
||||
}
|
||||
|
@ -108,13 +108,14 @@ export default function Javascript({
|
||||
name="service-name"
|
||||
style={{ minWidth: '300px' }}
|
||||
scrollToFirstError
|
||||
requiredMark
|
||||
>
|
||||
<Form.Item
|
||||
hasFeedback
|
||||
name="Service Name"
|
||||
rules={[{ required: true }]}
|
||||
validateTrigger="onBlur"
|
||||
requiredMark
|
||||
required
|
||||
>
|
||||
<Input autoFocus />
|
||||
</Form.Item>
|
||||
|
@ -76,10 +76,9 @@ function AddDomain({ refetch }: Props): JSX.Element {
|
||||
destroyOnClose
|
||||
onCancel={(): void => setIsDomain(false)}
|
||||
>
|
||||
<Form form={form} onFinish={onCreateHandler}>
|
||||
<Form form={form} onFinish={onCreateHandler} requiredMark>
|
||||
<Form.Item
|
||||
required
|
||||
requiredMark
|
||||
name={['domain']}
|
||||
rules={[
|
||||
{
|
||||
|
@ -46,27 +46,31 @@ exports[`PipelinePage container test should render CreatePipelineButton section
|
||||
</svg>
|
||||
</span>
|
||||
<button
|
||||
class="ant-btn css-dev-only-do-not-override-1i536d8 ant-btn-default c1"
|
||||
class="ant-btn css-dev-only-do-not-override-2i2tap ant-btn-default c1"
|
||||
type="button"
|
||||
>
|
||||
<span
|
||||
aria-label="edit"
|
||||
class="anticon anticon-edit"
|
||||
role="img"
|
||||
class="ant-btn-icon"
|
||||
>
|
||||
<svg
|
||||
aria-hidden="true"
|
||||
data-icon="edit"
|
||||
fill="currentColor"
|
||||
focusable="false"
|
||||
height="1em"
|
||||
viewBox="64 64 896 896"
|
||||
width="1em"
|
||||
<span
|
||||
aria-label="edit"
|
||||
class="anticon anticon-edit"
|
||||
role="img"
|
||||
>
|
||||
<path
|
||||
d="M880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32zm-622.3-84c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 000-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 009.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9z"
|
||||
/>
|
||||
</svg>
|
||||
<svg
|
||||
aria-hidden="true"
|
||||
data-icon="edit"
|
||||
fill="currentColor"
|
||||
focusable="false"
|
||||
height="1em"
|
||||
viewBox="64 64 896 896"
|
||||
width="1em"
|
||||
>
|
||||
<path
|
||||
d="M880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32zm-622.3-84c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 000-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 009.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9z"
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
</span>
|
||||
<span>
|
||||
enter_edit_mode
|
||||
|
@ -23,7 +23,7 @@ exports[`PipelinePage container test should render DragAction section 1`] = `
|
||||
>
|
||||
<button
|
||||
aria-checked="true"
|
||||
class="ant-switch css-dev-only-do-not-override-1i536d8 ant-switch-checked"
|
||||
class="ant-switch css-dev-only-do-not-override-2i2tap ant-switch-checked"
|
||||
role="switch"
|
||||
type="button"
|
||||
>
|
||||
|
@ -36,10 +36,10 @@ exports[`PipelinePage should render PipelineExpandView section 1`] = `
|
||||
}
|
||||
|
||||
<div
|
||||
class="ant-table-wrapper c0 css-dev-only-do-not-override-1i536d8"
|
||||
class="ant-table-wrapper c0 css-dev-only-do-not-override-2i2tap"
|
||||
>
|
||||
<div
|
||||
class="ant-spin-nested-loading css-dev-only-do-not-override-1i536d8"
|
||||
class="ant-spin-nested-loading css-dev-only-do-not-override-2i2tap"
|
||||
>
|
||||
<div
|
||||
class="ant-spin-container"
|
||||
@ -74,7 +74,7 @@ exports[`PipelinePage should render PipelineExpandView section 1`] = `
|
||||
style="text-align: right;"
|
||||
>
|
||||
<span
|
||||
class="ant-avatar ant-avatar-circle c1 css-dev-only-do-not-override-1i536d8"
|
||||
class="ant-avatar ant-avatar-circle c1 css-dev-only-do-not-override-2i2tap"
|
||||
>
|
||||
<span
|
||||
class="ant-avatar-string"
|
||||
@ -105,7 +105,7 @@ exports[`PipelinePage should render PipelineExpandView section 1`] = `
|
||||
style="text-align: right;"
|
||||
>
|
||||
<span
|
||||
class="ant-avatar ant-avatar-circle c1 css-dev-only-do-not-override-1i536d8"
|
||||
class="ant-avatar ant-avatar-circle c1 css-dev-only-do-not-override-2i2tap"
|
||||
>
|
||||
<span
|
||||
class="ant-avatar-string"
|
||||
|
@ -48,33 +48,37 @@ exports[`PipelinePage container test should render PipelinePageLayout section 1`
|
||||
</svg>
|
||||
</span>
|
||||
<button
|
||||
class="ant-btn css-dev-only-do-not-override-1i536d8 ant-btn-primary c1"
|
||||
class="ant-btn css-dev-only-do-not-override-2i2tap ant-btn-primary c1"
|
||||
type="button"
|
||||
>
|
||||
<span
|
||||
aria-label="plus"
|
||||
class="anticon anticon-plus"
|
||||
role="img"
|
||||
class="ant-btn-icon"
|
||||
>
|
||||
<svg
|
||||
aria-hidden="true"
|
||||
data-icon="plus"
|
||||
fill="currentColor"
|
||||
focusable="false"
|
||||
height="1em"
|
||||
viewBox="64 64 896 896"
|
||||
width="1em"
|
||||
<span
|
||||
aria-label="plus"
|
||||
class="anticon anticon-plus"
|
||||
role="img"
|
||||
>
|
||||
<defs>
|
||||
<style />
|
||||
</defs>
|
||||
<path
|
||||
d="M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z"
|
||||
/>
|
||||
<path
|
||||
d="M176 474h672q8 0 8 8v60q0 8-8 8H176q-8 0-8-8v-60q0-8 8-8z"
|
||||
/>
|
||||
</svg>
|
||||
<svg
|
||||
aria-hidden="true"
|
||||
data-icon="plus"
|
||||
fill="currentColor"
|
||||
focusable="false"
|
||||
height="1em"
|
||||
viewBox="64 64 896 896"
|
||||
width="1em"
|
||||
>
|
||||
<defs>
|
||||
<style />
|
||||
</defs>
|
||||
<path
|
||||
d="M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z"
|
||||
/>
|
||||
<path
|
||||
d="M176 474h672q8 0 8 8v60q0 8-8 8H176q-8 0-8-8v-60q0-8 8-8z"
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
</span>
|
||||
<span>
|
||||
new_pipeline
|
||||
@ -82,10 +86,10 @@ exports[`PipelinePage container test should render PipelinePageLayout section 1`
|
||||
</button>
|
||||
</div>
|
||||
<span
|
||||
class="ant-input-affix-wrapper css-dev-only-do-not-override-1i536d8"
|
||||
class="ant-input-affix-wrapper css-dev-only-do-not-override-2i2tap"
|
||||
>
|
||||
<input
|
||||
class="ant-input css-dev-only-do-not-override-1i536d8"
|
||||
class="ant-input css-dev-only-do-not-override-2i2tap"
|
||||
placeholder="search_pipeline_placeholder"
|
||||
type="text"
|
||||
value=""
|
||||
@ -107,13 +111,14 @@ exports[`PipelinePage container test should render PipelinePageLayout section 1`
|
||||
aria-hidden="true"
|
||||
data-icon="close-circle"
|
||||
fill="currentColor"
|
||||
fill-rule="evenodd"
|
||||
focusable="false"
|
||||
height="1em"
|
||||
viewBox="64 64 896 896"
|
||||
width="1em"
|
||||
>
|
||||
<path
|
||||
d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z"
|
||||
d="M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm127.98 274.82h-.04l-.08.06L512 466.75 384.14 338.88c-.04-.05-.06-.06-.08-.06a.12.12 0 00-.07 0c-.03 0-.05.01-.09.05l-45.02 45.02a.2.2 0 00-.05.09.12.12 0 000 .07v.02a.27.27 0 00.06.06L466.75 512 338.88 639.86c-.05.04-.06.06-.06.08a.12.12 0 000 .07c0 .03.01.05.05.09l45.02 45.02a.2.2 0 00.09.05.12.12 0 00.07 0c.02 0 .04-.01.08-.05L512 557.25l127.86 127.87c.04.04.06.05.08.05a.12.12 0 00.07 0c.03 0 .05-.01.09-.05l45.02-45.02a.2.2 0 00.05-.09.12.12 0 000-.07v-.02a.27.27 0 00-.05-.06L557.25 512l127.87-127.86c.04-.04.05-.06.05-.08a.12.12 0 000-.07c0-.03-.01-.05-.05-.09l-45.02-45.02a.2.2 0 00-.09-.05.12.12 0 00-.07 0z"
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
@ -154,10 +159,10 @@ exports[`PipelinePage container test should render PipelinePageLayout section 1`
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="ant-table-wrapper css-dev-only-do-not-override-1i536d8"
|
||||
class="ant-table-wrapper css-dev-only-do-not-override-2i2tap"
|
||||
>
|
||||
<div
|
||||
class="ant-spin-nested-loading css-dev-only-do-not-override-1i536d8"
|
||||
class="ant-spin-nested-loading css-dev-only-do-not-override-2i2tap"
|
||||
>
|
||||
<div
|
||||
class="ant-spin-container"
|
||||
@ -183,39 +188,44 @@ exports[`PipelinePage container test should render PipelinePageLayout section 1`
|
||||
class="ant-table-thead"
|
||||
>
|
||||
<tr>
|
||||
<th
|
||||
<td
|
||||
class="ant-table-cell ant-table-row-expand-icon-cell"
|
||||
/>
|
||||
<th
|
||||
<td
|
||||
class="ant-table-cell"
|
||||
style="text-align: left;"
|
||||
/>
|
||||
<th
|
||||
class="ant-table-cell"
|
||||
scope="col"
|
||||
style="text-align: left;"
|
||||
>
|
||||
Pipeline Name
|
||||
</th>
|
||||
<th
|
||||
class="ant-table-cell"
|
||||
scope="col"
|
||||
style="text-align: left;"
|
||||
>
|
||||
Filters
|
||||
</th>
|
||||
<th
|
||||
class="ant-table-cell"
|
||||
scope="col"
|
||||
style="text-align: left;"
|
||||
>
|
||||
Last Edited
|
||||
</th>
|
||||
<th
|
||||
class="ant-table-cell"
|
||||
scope="col"
|
||||
style="text-align: left;"
|
||||
>
|
||||
Edited By
|
||||
</th>
|
||||
<th
|
||||
class="ant-table-cell"
|
||||
scope="col"
|
||||
style="text-align: center;"
|
||||
>
|
||||
Actions
|
||||
@ -234,7 +244,7 @@ exports[`PipelinePage container test should render PipelinePageLayout section 1`
|
||||
colspan="7"
|
||||
>
|
||||
<div
|
||||
class="css-dev-only-do-not-override-1i536d8 ant-empty ant-empty-normal"
|
||||
class="css-dev-only-do-not-override-2i2tap ant-empty ant-empty-normal"
|
||||
>
|
||||
<div
|
||||
class="ant-empty-image"
|
||||
|
@ -3,10 +3,10 @@
|
||||
exports[`PipelinePage container test should render PipelinesSearchSection section 1`] = `
|
||||
<DocumentFragment>
|
||||
<span
|
||||
class="ant-input-affix-wrapper css-dev-only-do-not-override-1i536d8"
|
||||
class="ant-input-affix-wrapper css-dev-only-do-not-override-2i2tap"
|
||||
>
|
||||
<input
|
||||
class="ant-input css-dev-only-do-not-override-1i536d8"
|
||||
class="ant-input css-dev-only-do-not-override-2i2tap"
|
||||
placeholder="search_pipeline_placeholder"
|
||||
type="text"
|
||||
value=""
|
||||
@ -28,13 +28,14 @@ exports[`PipelinePage container test should render PipelinesSearchSection sectio
|
||||
aria-hidden="true"
|
||||
data-icon="close-circle"
|
||||
fill="currentColor"
|
||||
fill-rule="evenodd"
|
||||
focusable="false"
|
||||
height="1em"
|
||||
viewBox="64 64 896 896"
|
||||
width="1em"
|
||||
>
|
||||
<path
|
||||
d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z"
|
||||
d="M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm127.98 274.82h-.04l-.08.06L512 466.75 384.14 338.88c-.04-.05-.06-.06-.08-.06a.12.12 0 00-.07 0c-.03 0-.05.01-.09.05l-45.02 45.02a.2.2 0 00-.05.09.12.12 0 000 .07v.02a.27.27 0 00.06.06L466.75 512 338.88 639.86c-.05.04-.06.06-.06.08a.12.12 0 000 .07c0 .03.01.05.05.09l45.02 45.02a.2.2 0 00.09.05.12.12 0 00.07 0c.02 0 .04-.01.08-.05L512 557.25l127.86 127.87c.04.04.06.05.08.05a.12.12 0 00.07 0c.03 0 .05-.01.09-.05l45.02-45.02a.2.2 0 00.05-.09.12.12 0 000-.07v-.02a.27.27 0 00-.05-.06L557.25 512l127.87-127.86c.04-.04.05-.06.05-.08a.12.12 0 000-.07c0-.03-.01-.05-.05-.09l-45.02-45.02a.2.2 0 00-.09-.05.12.12 0 00-.07 0z"
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
|
@ -14,14 +14,14 @@ exports[`Pipeline Page should render TagInput section 1`] = `
|
||||
class="c0"
|
||||
>
|
||||
<span
|
||||
class="ant-input-affix-wrapper css-dev-only-do-not-override-1i536d8"
|
||||
class="ant-input-affix-wrapper css-dev-only-do-not-override-2i2tap"
|
||||
style="width: 78px; vertical-align: top; flex: 1;"
|
||||
>
|
||||
<span
|
||||
class="ant-input-prefix"
|
||||
/>
|
||||
<input
|
||||
class="ant-input css-dev-only-do-not-override-1i536d8"
|
||||
class="ant-input css-dev-only-do-not-override-2i2tap"
|
||||
placeholder=""
|
||||
type="text"
|
||||
value=""
|
||||
|
@ -4,12 +4,12 @@ exports[`PipelinePage container test should render Tags section 1`] = `
|
||||
<DocumentFragment>
|
||||
<span>
|
||||
<span
|
||||
class="ant-tag ant-tag-magenta css-dev-only-do-not-override-1i536d8"
|
||||
class="ant-tag ant-tag-magenta css-dev-only-do-not-override-2i2tap"
|
||||
>
|
||||
server
|
||||
</span>
|
||||
<span
|
||||
class="ant-tag ant-tag-magenta css-dev-only-do-not-override-1i536d8"
|
||||
class="ant-tag ant-tag-magenta css-dev-only-do-not-override-2i2tap"
|
||||
>
|
||||
app
|
||||
</span>
|
||||
|
@ -40,8 +40,6 @@ describe('ServicesUsingMetrics', () => {
|
||||
),
|
||||
);
|
||||
render(<ServicesUsingMetrics />);
|
||||
const loading = screen.getByText(/Loading.../i);
|
||||
expect(loading).toBeInTheDocument();
|
||||
const sampleAppText = await screen.findByText(/SampleApp/i);
|
||||
expect(sampleAppText).toBeInTheDocument();
|
||||
const testAppText = await screen.findByText(/TestApp/i);
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { useEffect, useState } from 'react';
|
||||
|
||||
export default function useDebounce<T>(value: T, delay: number): T {
|
||||
export default function useDebounce<T>(value: T, delay = 500): T {
|
||||
const [debouncedValue, setDebouncedValue] = useState<T>(value);
|
||||
|
||||
useEffect(() => {
|
||||
|
@ -28,7 +28,7 @@ describe('ApDexSettings', () => {
|
||||
});
|
||||
|
||||
it('should render the spinner when the data is loading', () => {
|
||||
render(
|
||||
const { container } = render(
|
||||
<ApDexSettings
|
||||
servicename="mockServiceName"
|
||||
handlePopOverClose={jest.fn()}
|
||||
@ -38,7 +38,10 @@ describe('ApDexSettings', () => {
|
||||
/>,
|
||||
);
|
||||
|
||||
expect(screen.getByText('Loading...')).toBeInTheDocument();
|
||||
const loadingSpan = container.querySelector('[aria-label="loading"]');
|
||||
|
||||
// Assert that the loading span is found
|
||||
expect(loadingSpan).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('should close the popover when the cancel button is clicked', async () => {
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { PANEL_TYPES } from 'constants/queryBuilder';
|
||||
import { ThresholdProps } from 'container/NewWidget/RightContainer/Threshold/types';
|
||||
import { timePreferenceType } from 'container/NewWidget/RightContainer/timeItems';
|
||||
import { ReactNode } from 'react';
|
||||
import { Layout } from 'react-grid-layout';
|
||||
@ -69,6 +70,7 @@ export interface IBaseWidget {
|
||||
timePreferance: timePreferenceType;
|
||||
stepSize?: number;
|
||||
yAxisUnit?: string;
|
||||
thresholds?: ThresholdProps[];
|
||||
}
|
||||
export interface Widgets extends IBaseWidget {
|
||||
query: Query;
|
||||
|
@ -53,17 +53,24 @@
|
||||
dependencies:
|
||||
"@ctrl/tinycolor" "^3.4.0"
|
||||
|
||||
"@ant-design/cssinjs@^1.0.0":
|
||||
version "1.9.1"
|
||||
resolved "https://registry.npmjs.org/@ant-design/cssinjs/-/cssinjs-1.9.1.tgz"
|
||||
integrity sha512-CZt1vCMs/sY7RoacYuIkZwQmb8Bhp99ReNNE9Y8lnUzik8fmCdKAQA7ecvVOFwmNFdcBHga7ye/XIRrsbkiqWw==
|
||||
"@ant-design/colors@^7.0.0":
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-7.0.0.tgz#eb7eecead124c3533aea05d61254f0a17f2b61b3"
|
||||
integrity sha512-iVm/9PfGCbC0dSMBrz7oiEXZaaGH7ceU40OJEfKmyuzR9R5CRimJYPlRiFtMQGQcbNMea/ePcoIebi4ASGYXtg==
|
||||
dependencies:
|
||||
"@ctrl/tinycolor" "^3.4.0"
|
||||
|
||||
"@ant-design/cssinjs@^1.17.2":
|
||||
version "1.17.2"
|
||||
resolved "https://registry.yarnpkg.com/@ant-design/cssinjs/-/cssinjs-1.17.2.tgz#08e939cbe60e9e0e0f3f03cd53a52e4a7623ed1f"
|
||||
integrity sha512-vu7lnfEx4Mf8MPzZxn506Zen3Nt4fRr2uutwvdCuTCN5IiU0lDdQ0tiJ24/rmB8+pefwjluYsbyzbQSbgfJy+A==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.11.1"
|
||||
"@emotion/hash" "^0.8.0"
|
||||
"@emotion/unitless" "^0.7.5"
|
||||
classnames "^2.3.1"
|
||||
csstype "^3.0.10"
|
||||
rc-util "^5.27.0"
|
||||
rc-util "^5.35.0"
|
||||
stylis "^4.0.13"
|
||||
|
||||
"@ant-design/icons-svg@^4.2.1":
|
||||
@ -71,7 +78,12 @@
|
||||
resolved "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz"
|
||||
integrity sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw==
|
||||
|
||||
"@ant-design/icons@4.8.0", "@ant-design/icons@^4.7.0":
|
||||
"@ant-design/icons-svg@^4.3.0":
|
||||
version "4.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@ant-design/icons-svg/-/icons-svg-4.3.1.tgz#4b2f65a17d4d32b526baa6414aca2117382bf8da"
|
||||
integrity sha512-4QBZg8ccyC6LPIRii7A0bZUk3+lEDCLnhB+FVsflGdcWPPmV+j3fire4AwwoqHV/BibgvBmR9ZIo4s867smv+g==
|
||||
|
||||
"@ant-design/icons@4.8.0":
|
||||
version "4.8.0"
|
||||
resolved "https://registry.npmjs.org/@ant-design/icons/-/icons-4.8.0.tgz"
|
||||
integrity sha512-T89P2jG2vM7OJ0IfGx2+9FC5sQjtTzRSz+mCHTXkFn/ELZc2YpfStmYHmqzq2Jx55J0F7+O6i5/ZKFSVNWCKNg==
|
||||
@ -82,16 +94,27 @@
|
||||
classnames "^2.2.6"
|
||||
rc-util "^5.9.4"
|
||||
|
||||
"@ant-design/react-slick@~0.29.1":
|
||||
version "0.29.2"
|
||||
resolved "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-0.29.2.tgz"
|
||||
integrity sha512-kgjtKmkGHa19FW21lHnAfyyH9AAoh35pBdcJ53rHmQ3O+cfFHGHnUbj/HFrRNJ5vIts09FKJVAD8RpaC+RaWfA==
|
||||
"@ant-design/icons@^5.2.6":
|
||||
version "5.2.6"
|
||||
resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-5.2.6.tgz#2d4a9a37f531eb2a20cebec01d6fb69cf593900d"
|
||||
integrity sha512-4wn0WShF43TrggskBJPRqCD0fcHbzTYjnaoskdiJrVHg86yxoZ8ZUqsXvyn4WUqehRiFKnaclOhqk9w4Ui2KVw==
|
||||
dependencies:
|
||||
"@ant-design/colors" "^7.0.0"
|
||||
"@ant-design/icons-svg" "^4.3.0"
|
||||
"@babel/runtime" "^7.11.2"
|
||||
classnames "^2.2.6"
|
||||
rc-util "^5.31.1"
|
||||
|
||||
"@ant-design/react-slick@~1.0.2":
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@ant-design/react-slick/-/react-slick-1.0.2.tgz#241bb412aeacf7ff5d50c61fa5db66773fde6b56"
|
||||
integrity sha512-Wj8onxL/T8KQLFFiCA4t8eIRGpRR+UPgOdac2sYzonv+i0n3kXHmvHLLiOYL655DQx2Umii9Y9nNgL7ssu5haQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.4"
|
||||
classnames "^2.2.5"
|
||||
json2mq "^0.2.0"
|
||||
lodash "^4.17.21"
|
||||
resize-observer-polyfill "^1.5.1"
|
||||
throttle-debounce "^5.0.0"
|
||||
|
||||
"@babel/code-frame@7.12.11":
|
||||
version "7.12.11"
|
||||
@ -2046,6 +2069,13 @@
|
||||
dependencies:
|
||||
regenerator-runtime "^0.14.0"
|
||||
|
||||
"@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2":
|
||||
version "7.23.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885"
|
||||
integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==
|
||||
dependencies:
|
||||
regenerator-runtime "^0.14.0"
|
||||
|
||||
"@babel/runtime@^7.3.1":
|
||||
version "7.23.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.1.tgz#72741dc4d413338a91dcb044a86f3c0bc402646d"
|
||||
@ -2306,6 +2336,11 @@
|
||||
resolved "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.0.tgz"
|
||||
integrity sha512-/Z3l6pXthq0JvMYdUFyX9j0MaCltlIn6mfh9jLyQwg5aPKxkyNa0PTHtU1AlFXLNk55ZuAeJRcpvq+tmLfKmaQ==
|
||||
|
||||
"@ctrl/tinycolor@^3.6.0", "@ctrl/tinycolor@^3.6.1":
|
||||
version "3.6.1"
|
||||
resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz#b6c75a56a1947cc916ea058772d666a2c8932f31"
|
||||
integrity sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==
|
||||
|
||||
"@discoveryjs/json-ext@0.5.7", "@discoveryjs/json-ext@^0.5.0":
|
||||
version "0.5.7"
|
||||
resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz"
|
||||
@ -2901,6 +2936,24 @@
|
||||
resolved "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz"
|
||||
integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==
|
||||
|
||||
"@rc-component/color-picker@~1.4.1":
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@rc-component/color-picker/-/color-picker-1.4.1.tgz#dcab0b660e9c4ed63a7582db68ed4a77c862cb93"
|
||||
integrity sha512-vh5EWqnsayZa/JwUznqDaPJz39jznx/YDbyBuVJntv735tKXKwEUZZb2jYEldOg+NKWZwtALjGMrNeGBmqFoEw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.1"
|
||||
"@ctrl/tinycolor" "^3.6.0"
|
||||
classnames "^2.2.6"
|
||||
rc-util "^5.30.0"
|
||||
|
||||
"@rc-component/context@^1.4.0":
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/@rc-component/context/-/context-1.4.0.tgz#dc6fb021d6773546af8f016ae4ce9aea088395e8"
|
||||
integrity sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.1"
|
||||
rc-util "^5.27.0"
|
||||
|
||||
"@rc-component/mini-decimal@^1.0.1":
|
||||
version "1.0.1"
|
||||
resolved "https://registry.npmjs.org/@rc-component/mini-decimal/-/mini-decimal-1.0.1.tgz"
|
||||
@ -2908,7 +2961,16 @@
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.18.0"
|
||||
|
||||
"@rc-component/portal@^1.0.0-6", "@rc-component/portal@^1.0.0-8", "@rc-component/portal@^1.0.0-9", "@rc-component/portal@^1.0.2":
|
||||
"@rc-component/mutate-observer@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@rc-component/mutate-observer/-/mutate-observer-1.1.0.tgz#ee53cc88b78aade3cd0653609215a44779386fd8"
|
||||
integrity sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.18.0"
|
||||
classnames "^2.3.2"
|
||||
rc-util "^5.24.4"
|
||||
|
||||
"@rc-component/portal@^1.0.0-8", "@rc-component/portal@^1.0.0-9", "@rc-component/portal@^1.0.2":
|
||||
version "1.1.1"
|
||||
resolved "https://registry.npmjs.org/@rc-component/portal/-/portal-1.1.1.tgz"
|
||||
integrity sha512-m8w3dFXX0H6UkJ4wtfrSwhe2/6M08uz24HHrF8pWfAXPwA9hwCuTE5per/C86KwNLouRpwFGcr7LfpHaa1F38g==
|
||||
@ -2917,17 +2979,38 @@
|
||||
classnames "^2.3.2"
|
||||
rc-util "^5.24.4"
|
||||
|
||||
"@rc-component/tour@~1.0.1-2":
|
||||
version "1.0.4"
|
||||
resolved "https://registry.npmjs.org/@rc-component/tour/-/tour-1.0.4.tgz"
|
||||
integrity sha512-FwAh9twryS6Ava2mUqwJtbhIt0ObIZIgQOJK+XTl+pQvsmXtUGtbOif3/4FeVmncy7FEGH7mnlIjS4OLGkQC9A==
|
||||
"@rc-component/portal@^1.1.0", "@rc-component/portal@^1.1.1":
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@rc-component/portal/-/portal-1.1.2.tgz#55db1e51d784e034442e9700536faaa6ab63fc71"
|
||||
integrity sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.18.0"
|
||||
classnames "^2.3.2"
|
||||
rc-util "^5.24.4"
|
||||
|
||||
"@rc-component/tour@~1.10.0":
|
||||
version "1.10.0"
|
||||
resolved "https://registry.yarnpkg.com/@rc-component/tour/-/tour-1.10.0.tgz#b05bc327438f1c583439e2d2dcc10ec0530aea19"
|
||||
integrity sha512-voV0BKaTJbewB9LLgAHQ7tAGG7rgDkKQkZo82xw2gIk542hY+o7zwoqdN16oHhIKk7eG/xi+mdXrONT62Dt57A==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.18.0"
|
||||
"@rc-component/portal" "^1.0.0-9"
|
||||
"@rc-component/trigger" "^1.3.6"
|
||||
classnames "^2.3.2"
|
||||
rc-trigger "^5.3.4"
|
||||
rc-util "^5.24.4"
|
||||
|
||||
"@rc-component/trigger@^1.17.0", "@rc-component/trigger@^1.18.0", "@rc-component/trigger@^1.3.6", "@rc-component/trigger@^1.5.0", "@rc-component/trigger@^1.7.0":
|
||||
version "1.18.1"
|
||||
resolved "https://registry.yarnpkg.com/@rc-component/trigger/-/trigger-1.18.1.tgz#149881ace55943f0b74ae0470dc9f05b8f0b5d51"
|
||||
integrity sha512-bAcxJJ1Y+EJVgn8BRik7d8JjjAPND5zKkHQ3159zeR0gVoG4Z0RgEDAiXFFoie3/WpoJ9dRJyjrIpnH4Ef7PEg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.23.2"
|
||||
"@rc-component/portal" "^1.1.0"
|
||||
classnames "^2.3.2"
|
||||
rc-motion "^2.0.0"
|
||||
rc-resize-observer "^1.3.1"
|
||||
rc-util "^5.38.0"
|
||||
|
||||
"@react-dnd/asap@^5.0.1":
|
||||
version "5.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@react-dnd/asap/-/asap-5.0.2.tgz#1f81f124c1cd6f39511c11a881cfb0f715343488"
|
||||
@ -4295,57 +4378,59 @@ antd-table-saveas-excel@2.2.1:
|
||||
better-xlsx "^0.7.5"
|
||||
file-saver "^2.0.2"
|
||||
|
||||
antd@5.0.5:
|
||||
version "5.0.5"
|
||||
resolved "https://registry.npmjs.org/antd/-/antd-5.0.5.tgz"
|
||||
integrity sha512-8jWUjZ65urNHZPg9/Ywa9V0PlNfqjhewKgSPF4nraN9X5v434lDJkRBQGN7meNixQ6aM2B/JhXPm9UaJ/tAQmA==
|
||||
antd@5.11.0:
|
||||
version "5.11.0"
|
||||
resolved "https://registry.yarnpkg.com/antd/-/antd-5.11.0.tgz#c0404412473f9ac14c5f75bc679fb805e59d4ec6"
|
||||
integrity sha512-34T5Y6z+Ip+j4faXPTcanTFCLLpR4V0rLHtuz0lbN9gF4coGY/YYa8bhgwXrT6muW0Afwyo3NmbMF52hvIarog==
|
||||
dependencies:
|
||||
"@ant-design/colors" "^6.0.0"
|
||||
"@ant-design/cssinjs" "^1.0.0"
|
||||
"@ant-design/icons" "^4.7.0"
|
||||
"@ant-design/react-slick" "~0.29.1"
|
||||
"@ant-design/colors" "^7.0.0"
|
||||
"@ant-design/cssinjs" "^1.17.2"
|
||||
"@ant-design/icons" "^5.2.6"
|
||||
"@ant-design/react-slick" "~1.0.2"
|
||||
"@babel/runtime" "^7.18.3"
|
||||
"@ctrl/tinycolor" "^3.4.0"
|
||||
"@rc-component/tour" "~1.0.1-2"
|
||||
classnames "^2.2.6"
|
||||
copy-to-clipboard "^3.2.0"
|
||||
"@ctrl/tinycolor" "^3.6.1"
|
||||
"@rc-component/color-picker" "~1.4.1"
|
||||
"@rc-component/mutate-observer" "^1.1.0"
|
||||
"@rc-component/tour" "~1.10.0"
|
||||
"@rc-component/trigger" "^1.18.0"
|
||||
classnames "^2.3.2"
|
||||
copy-to-clipboard "^3.3.3"
|
||||
dayjs "^1.11.1"
|
||||
lodash "^4.17.21"
|
||||
rc-cascader "~3.7.0"
|
||||
rc-checkbox "~2.3.0"
|
||||
rc-collapse "~3.4.2"
|
||||
rc-dialog "~9.0.2"
|
||||
rc-drawer "~6.0.0"
|
||||
rc-dropdown "~4.0.0"
|
||||
rc-field-form "~1.27.0"
|
||||
rc-image "~5.12.0"
|
||||
rc-input "~0.1.4"
|
||||
rc-input-number "~7.4.0"
|
||||
rc-mentions "~1.13.1"
|
||||
rc-menu "~9.8.0"
|
||||
rc-motion "^2.6.1"
|
||||
rc-notification "~5.0.0-alpha.9"
|
||||
rc-pagination "~3.2.0"
|
||||
rc-picker "~3.1.1"
|
||||
rc-progress "~3.4.1"
|
||||
rc-rate "~2.9.0"
|
||||
rc-resize-observer "^1.2.0"
|
||||
rc-segmented "~2.1.0"
|
||||
rc-select "~14.1.13"
|
||||
rc-slider "~10.0.0"
|
||||
rc-steps "~6.0.0-alpha.2"
|
||||
rc-switch "~4.0.0"
|
||||
rc-table "~7.26.0"
|
||||
rc-tabs "~12.4.2"
|
||||
rc-textarea "~0.4.5"
|
||||
rc-tooltip "~5.2.0"
|
||||
rc-tree "~5.7.0"
|
||||
rc-tree-select "~5.5.4"
|
||||
rc-trigger "^5.2.10"
|
||||
rc-upload "~4.3.0"
|
||||
rc-util "^5.25.2"
|
||||
scroll-into-view-if-needed "^3.0.3"
|
||||
shallowequal "^1.1.0"
|
||||
qrcode.react "^3.1.0"
|
||||
rc-cascader "~3.20.0"
|
||||
rc-checkbox "~3.1.0"
|
||||
rc-collapse "~3.7.1"
|
||||
rc-dialog "~9.3.4"
|
||||
rc-drawer "~6.5.2"
|
||||
rc-dropdown "~4.1.0"
|
||||
rc-field-form "~1.40.0"
|
||||
rc-image "~7.3.2"
|
||||
rc-input "~1.3.5"
|
||||
rc-input-number "~8.4.0"
|
||||
rc-mentions "~2.9.1"
|
||||
rc-menu "~9.12.2"
|
||||
rc-motion "^2.9.0"
|
||||
rc-notification "~5.3.0"
|
||||
rc-pagination "~3.7.0"
|
||||
rc-picker "~3.14.6"
|
||||
rc-progress "~3.5.1"
|
||||
rc-rate "~2.12.0"
|
||||
rc-resize-observer "^1.4.0"
|
||||
rc-segmented "~2.2.2"
|
||||
rc-select "~14.10.0"
|
||||
rc-slider "~10.4.0"
|
||||
rc-steps "~6.0.1"
|
||||
rc-switch "~4.1.0"
|
||||
rc-table "~7.35.2"
|
||||
rc-tabs "~12.13.1"
|
||||
rc-textarea "~1.5.1"
|
||||
rc-tooltip "~6.1.2"
|
||||
rc-tree "~5.8.2"
|
||||
rc-tree-select "~5.15.0"
|
||||
rc-upload "~4.3.5"
|
||||
rc-util "^5.38.0"
|
||||
scroll-into-view-if-needed "^3.1.0"
|
||||
throttle-debounce "^5.0.0"
|
||||
|
||||
anymatch@^3.0.3, anymatch@~3.1.2:
|
||||
version "3.1.3"
|
||||
@ -5782,7 +5867,7 @@ copy-anything@^2.0.1:
|
||||
dependencies:
|
||||
is-what "^3.14.1"
|
||||
|
||||
copy-to-clipboard@^3.2.0, copy-to-clipboard@^3.3.1:
|
||||
copy-to-clipboard@^3.3.1, copy-to-clipboard@^3.3.3:
|
||||
version "3.3.3"
|
||||
resolved "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz"
|
||||
integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==
|
||||
@ -6517,11 +6602,6 @@ dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9:
|
||||
resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz"
|
||||
integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==
|
||||
|
||||
dom-align@^1.7.0:
|
||||
version "1.12.4"
|
||||
resolved "https://registry.npmjs.org/dom-align/-/dom-align-1.12.4.tgz"
|
||||
integrity sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw==
|
||||
|
||||
dom-converter@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz"
|
||||
@ -12229,6 +12309,11 @@ q@^1.5.1:
|
||||
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
|
||||
integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==
|
||||
|
||||
qrcode.react@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/qrcode.react/-/qrcode.react-3.1.0.tgz#5c91ddc0340f768316fbdb8fff2765134c2aecd8"
|
||||
integrity sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==
|
||||
|
||||
qs@6.11.0:
|
||||
version "6.11.0"
|
||||
resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz"
|
||||
@ -12316,52 +12401,41 @@ rbush@^3.0.1:
|
||||
dependencies:
|
||||
quickselect "^2.0.0"
|
||||
|
||||
rc-align@^4.0.0:
|
||||
version "4.0.15"
|
||||
resolved "https://registry.npmjs.org/rc-align/-/rc-align-4.0.15.tgz"
|
||||
integrity sha512-wqJtVH60pka/nOX7/IspElA8gjPNQKIx/ZqJ6heATCkXpe1Zg4cPVrMD2vC96wjsFFL8WsmhPbx9tdMo1qqlIA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.1"
|
||||
classnames "2.x"
|
||||
dom-align "^1.7.0"
|
||||
rc-util "^5.26.0"
|
||||
resize-observer-polyfill "^1.5.1"
|
||||
|
||||
rc-cascader@~3.7.0:
|
||||
version "3.7.2"
|
||||
resolved "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.7.2.tgz"
|
||||
integrity sha512-5nPEM76eMyikd0NFiy1gjwiB9m+bOzjY6Lnd5bVC6Ar3XLlOpOnlCcV3oBFWLN3f7B18tAGpaAVlT2uyEDCv9w==
|
||||
rc-cascader@~3.20.0:
|
||||
version "3.20.0"
|
||||
resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-3.20.0.tgz#b270f9d84ed83417ee7309ef5e56e415f1586076"
|
||||
integrity sha512-lkT9EEwOcYdjZ/jvhLoXGzprK1sijT3/Tp4BLxQQcHDZkkOzzwYQC9HgmKoJz0K7CukMfgvO9KqHeBdgE+pELw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.12.5"
|
||||
array-tree-filter "^2.1.0"
|
||||
classnames "^2.3.1"
|
||||
rc-select "~14.1.0"
|
||||
rc-tree "~5.7.0"
|
||||
rc-util "^5.6.1"
|
||||
rc-select "~14.10.0"
|
||||
rc-tree "~5.8.1"
|
||||
rc-util "^5.37.0"
|
||||
|
||||
rc-checkbox@~2.3.0:
|
||||
version "2.3.2"
|
||||
resolved "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-2.3.2.tgz"
|
||||
integrity sha512-afVi1FYiGv1U0JlpNH/UaEXdh6WUJjcWokj/nUN2TgG80bfG+MDdbfHKlLcNNba94mbjy2/SXJ1HDgrOkXGAjg==
|
||||
rc-checkbox@~3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/rc-checkbox/-/rc-checkbox-3.1.0.tgz#6be0d9d8de2cc96fb5e37f9036a1c3e360d0a42d"
|
||||
integrity sha512-PAwpJFnBa3Ei+5pyqMMXdcKYKNBMS+TvSDiLdDnARnMJHC8ESxwPfm4Ao1gJiKtWLdmGfigascnCpwrHFgoOBQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.1"
|
||||
classnames "^2.2.1"
|
||||
classnames "^2.3.2"
|
||||
rc-util "^5.25.2"
|
||||
|
||||
rc-collapse@~3.4.2:
|
||||
version "3.4.2"
|
||||
resolved "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.4.2.tgz"
|
||||
integrity sha512-jpTwLgJzkhAgp2Wpi3xmbTbbYExg6fkptL67Uu5LCRVEj6wqmy0DHTjjeynsjOLsppHGHu41t1ELntZ0lEvS/Q==
|
||||
rc-collapse@~3.7.1:
|
||||
version "3.7.1"
|
||||
resolved "https://registry.yarnpkg.com/rc-collapse/-/rc-collapse-3.7.1.tgz#bda1f7f80adccf3433c1c15d4d9f9ca09910c727"
|
||||
integrity sha512-N/7ejyiTf3XElNJBBpxqnZBUuMsQWEOPjB2QkfNvZ/Ca54eAvJXuOD1EGbCWCk2m7v/MSxku7mRpdeaLOCd4Gg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.1"
|
||||
classnames "2.x"
|
||||
rc-motion "^2.3.4"
|
||||
rc-util "^5.2.1"
|
||||
shallowequal "^1.1.0"
|
||||
rc-util "^5.27.0"
|
||||
|
||||
rc-dialog@~9.0.0, rc-dialog@~9.0.2:
|
||||
version "9.0.2"
|
||||
resolved "https://registry.npmjs.org/rc-dialog/-/rc-dialog-9.0.2.tgz"
|
||||
integrity sha512-s3U+24xWUuB6Bn2Lk/Qt6rufy+uT+QvWkiFhNBcO9APLxcFFczWamaq7x9h8SCuhfc1nHcW4y8NbMsnAjNnWyg==
|
||||
rc-dialog@~9.3.4:
|
||||
version "9.3.4"
|
||||
resolved "https://registry.yarnpkg.com/rc-dialog/-/rc-dialog-9.3.4.tgz#e0decb3d4a0dbe36524a67ed2f8fe2daa4b7b73c"
|
||||
integrity sha512-975X3018GhR+EjZFbxA2Z57SX5rnu0G0/OxFgMMvZK4/hQWEm3MHaNvP4wXpxYDoJsp+xUvVW+GB9CMMCm81jA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.1"
|
||||
"@rc-component/portal" "^1.0.0-8"
|
||||
@ -12369,92 +12443,94 @@ rc-dialog@~9.0.0, rc-dialog@~9.0.2:
|
||||
rc-motion "^2.3.0"
|
||||
rc-util "^5.21.0"
|
||||
|
||||
rc-drawer@~6.0.0:
|
||||
version "6.0.3"
|
||||
resolved "https://registry.npmjs.org/rc-drawer/-/rc-drawer-6.0.3.tgz"
|
||||
integrity sha512-u4RajgrnREKQH/21gB2JHZiA6ZECo0X0BbmDxAJEhKD9jUhlAbqMN5I9VWa4PSzi9ceLHUShqQcPAh2EJswffw==
|
||||
rc-drawer@~6.5.2:
|
||||
version "6.5.2"
|
||||
resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-6.5.2.tgz#49c1f279261992f6d4653d32a03b14acd436d610"
|
||||
integrity sha512-QckxAnQNdhh4vtmKN0ZwDf3iakO83W9eZcSKWYYTDv4qcD2fHhRAZJJ/OE6v2ZlQ2kSqCJX5gYssF4HJFvsEPQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.1"
|
||||
"@rc-component/portal" "^1.0.0-6"
|
||||
"@rc-component/portal" "^1.1.1"
|
||||
classnames "^2.2.6"
|
||||
rc-motion "^2.6.1"
|
||||
rc-util "^5.21.2"
|
||||
rc-util "^5.36.0"
|
||||
|
||||
rc-dropdown@~4.0.0:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-4.0.1.tgz"
|
||||
integrity sha512-OdpXuOcme1rm45cR0Jzgfl1otzmU4vuBVb+etXM8vcaULGokAKVpKlw8p6xzspG7jGd/XxShvq+N3VNEfk/l5g==
|
||||
rc-dropdown@~4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/rc-dropdown/-/rc-dropdown-4.1.0.tgz#418a68939631520de80d0865d02b440eeeb4168e"
|
||||
integrity sha512-VZjMunpBdlVzYpEdJSaV7WM7O0jf8uyDjirxXLZRNZ+tAC+NzD3PXPEtliFwGzVwBBdCmGuSqiS9DWcOLxQ9tw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.18.3"
|
||||
"@rc-component/trigger" "^1.7.0"
|
||||
classnames "^2.2.6"
|
||||
rc-trigger "^5.3.1"
|
||||
rc-util "^5.17.0"
|
||||
|
||||
rc-field-form@~1.27.0:
|
||||
version "1.27.4"
|
||||
resolved "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.27.4.tgz"
|
||||
integrity sha512-PQColQnZimGKArnOh8V2907+VzDCXcqtFvHgevDLtqWc/P7YASb/FqntSmdS8q3VND5SHX3Y1vgMIzY22/f/0Q==
|
||||
rc-field-form@~1.40.0:
|
||||
version "1.40.0"
|
||||
resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-1.40.0.tgz#808dce06ebae1c3aea574e672b673533fc98f11f"
|
||||
integrity sha512-OM3N01X2BYFGJDJcwpk9/BBtlwgveE7eh2SQAKIxVCt9KVWlODYJ9ypTHQdxchfDbeJKJKxMBFXlLAmyvlgPHg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.18.0"
|
||||
async-validator "^4.1.0"
|
||||
rc-util "^5.8.0"
|
||||
rc-util "^5.32.2"
|
||||
|
||||
rc-image@~5.12.0:
|
||||
version "5.12.2"
|
||||
resolved "https://registry.npmjs.org/rc-image/-/rc-image-5.12.2.tgz"
|
||||
integrity sha512-12OCOspbN2AW2L1w+7vnYc+k0RexenqfQZIvq3WyYODp9GnTN4GLV8juekm3Apc/pwdfBSp0The1FZ5KXEozhg==
|
||||
rc-image@~7.3.2:
|
||||
version "7.3.2"
|
||||
resolved "https://registry.yarnpkg.com/rc-image/-/rc-image-7.3.2.tgz#fd92ab9994552d4f42638af0810039d34ad32dba"
|
||||
integrity sha512-ICEF6SWv9YKhDXxy1vrXcmf0TVvEcQWIww5Yg+f+mn7e4oGX7FNP4+FExwMjNO5UHBEuWrigbGhlCgI6yZZ1jg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.11.2"
|
||||
"@rc-component/portal" "^1.0.2"
|
||||
classnames "^2.2.6"
|
||||
rc-dialog "~9.0.0"
|
||||
rc-dialog "~9.3.4"
|
||||
rc-motion "^2.6.2"
|
||||
rc-util "^5.0.6"
|
||||
rc-util "^5.34.1"
|
||||
|
||||
rc-input-number@~7.4.0:
|
||||
version "7.4.2"
|
||||
resolved "https://registry.npmjs.org/rc-input-number/-/rc-input-number-7.4.2.tgz"
|
||||
integrity sha512-yGturTw7WGP+M1GbJ+UTAO7L4buxeW6oilhL9Sq3DezsRS8/9qec4UiXUbeoiX9bzvRXH11JvgskBtxSp4YSNg==
|
||||
rc-input-number@~8.4.0:
|
||||
version "8.4.0"
|
||||
resolved "https://registry.yarnpkg.com/rc-input-number/-/rc-input-number-8.4.0.tgz#f0d0caa2ce3a4e37f062556f9cb4c08c8c23322d"
|
||||
integrity sha512-B6rziPOLRmeP7kcS5qbdC5hXvvDHYKV4vUxmahevYx2E6crS2bRi0xLDjhJ0E1HtOWo8rTmaE2EBJAkTCZOLdA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.1"
|
||||
"@rc-component/mini-decimal" "^1.0.1"
|
||||
classnames "^2.2.5"
|
||||
rc-input "~1.3.5"
|
||||
rc-util "^5.28.0"
|
||||
|
||||
rc-input@~0.1.4:
|
||||
version "0.1.4"
|
||||
resolved "https://registry.npmjs.org/rc-input/-/rc-input-0.1.4.tgz"
|
||||
integrity sha512-FqDdNz+fV2dKNgfXzcSLKvC+jEs1709t7nD+WdfjrdSaOcefpgc7BUJYadc3usaING+b7ediMTfKxuJBsEFbXA==
|
||||
rc-input@~1.3.5:
|
||||
version "1.3.5"
|
||||
resolved "https://registry.yarnpkg.com/rc-input/-/rc-input-1.3.5.tgz#c69d3feb5172cc02ee5aaad86ae1ea8a73f864cb"
|
||||
integrity sha512-SPPwbTJa5ACHNoDdGZF/70AOqqm1Rir3WleuFBKq+nFby1zvpnzvWsHJgzWOr6uJ0GNt8dTMzBrmVGQJkTXqqQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.11.1"
|
||||
classnames "^2.2.1"
|
||||
rc-util "^5.18.1"
|
||||
|
||||
rc-mentions@~1.13.1:
|
||||
version "1.13.1"
|
||||
resolved "https://registry.npmjs.org/rc-mentions/-/rc-mentions-1.13.1.tgz"
|
||||
integrity sha512-FCkaWw6JQygtOz0+Vxz/M/NWqrWHB9LwqlY2RtcuFqWJNFK9njijOOzTSsBGANliGufVUzx/xuPHmZPBV0+Hgw==
|
||||
rc-mentions@~2.9.1:
|
||||
version "2.9.1"
|
||||
resolved "https://registry.yarnpkg.com/rc-mentions/-/rc-mentions-2.9.1.tgz#cfe55913fd5bc156ef9814f38c1a2ceefee032ce"
|
||||
integrity sha512-cZuElWr/5Ws0PXx1uxobxfYh4mqUw2FitfabR62YnWgm+WAfDyXZXqZg5DxXW+M1cgVvntrQgDDd9LrihrXzew==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.1"
|
||||
"@babel/runtime" "^7.22.5"
|
||||
"@rc-component/trigger" "^1.5.0"
|
||||
classnames "^2.2.6"
|
||||
rc-menu "~9.8.0"
|
||||
rc-textarea "^0.4.0"
|
||||
rc-trigger "^5.0.4"
|
||||
rc-util "^5.22.5"
|
||||
rc-input "~1.3.5"
|
||||
rc-menu "~9.12.0"
|
||||
rc-textarea "~1.5.0"
|
||||
rc-util "^5.34.1"
|
||||
|
||||
rc-menu@~9.8.0:
|
||||
version "9.8.4"
|
||||
resolved "https://registry.npmjs.org/rc-menu/-/rc-menu-9.8.4.tgz"
|
||||
integrity sha512-lmw2j8I2fhdIzHmC9ajfImfckt0WDb2KVJJBBRIsxPEw2kGkEfjLMUoB1NgiNT/Q5cC8PdjGOGQjHJIJMwyNMw==
|
||||
rc-menu@~9.12.0, rc-menu@~9.12.2:
|
||||
version "9.12.2"
|
||||
resolved "https://registry.yarnpkg.com/rc-menu/-/rc-menu-9.12.2.tgz#1bab34646421224eff5c5b7de993f8ea1238418e"
|
||||
integrity sha512-NzloFH2pRUYmQ3S/YbJAvRkgCZaLvq0sRa5rgJtuIHLfPPprNHNyepeSlT64+dbVqI4qRWL44VN0lUCldCbbfg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.1"
|
||||
"@rc-component/trigger" "^1.17.0"
|
||||
classnames "2.x"
|
||||
rc-motion "^2.4.3"
|
||||
rc-overflow "^1.2.8"
|
||||
rc-trigger "^5.1.2"
|
||||
rc-overflow "^1.3.1"
|
||||
rc-util "^5.27.0"
|
||||
|
||||
rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.3, rc-motion@^2.4.4, rc-motion@^2.6.0, rc-motion@^2.6.1, rc-motion@^2.6.2:
|
||||
rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.3, rc-motion@^2.4.4, rc-motion@^2.6.1, rc-motion@^2.6.2:
|
||||
version "2.7.3"
|
||||
resolved "https://registry.npmjs.org/rc-motion/-/rc-motion-2.7.3.tgz"
|
||||
integrity sha512-2xUvo8yGHdOHeQbdI8BtBsCIrWKchEmFEIskf0nmHtJsou+meLd/JE+vnvSX2JxcBrJtXY2LuBpxAOxrbY/wMQ==
|
||||
@ -12463,63 +12539,73 @@ rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motio
|
||||
classnames "^2.2.1"
|
||||
rc-util "^5.21.0"
|
||||
|
||||
rc-notification@~5.0.0-alpha.9:
|
||||
version "5.0.3"
|
||||
resolved "https://registry.npmjs.org/rc-notification/-/rc-notification-5.0.3.tgz"
|
||||
integrity sha512-+wHbHu6RiTNtsZYx42WxWA+tC5m0qyKvJAauO4/6LIEyJspK8fRlFQz+OCFgFwGuNs3cOdo9tLs+cPfztSZwbQ==
|
||||
rc-motion@^2.9.0:
|
||||
version "2.9.0"
|
||||
resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.9.0.tgz#9e18a1b8d61e528a97369cf9a7601e9b29205710"
|
||||
integrity sha512-XIU2+xLkdIr1/h6ohPZXyPBMvOmuyFZQ/T0xnawz+Rh+gh4FINcnZmMT5UTIj6hgI0VLDjTaPeRd+smJeSPqiQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.11.1"
|
||||
classnames "^2.2.1"
|
||||
rc-util "^5.21.0"
|
||||
|
||||
rc-notification@~5.3.0:
|
||||
version "5.3.0"
|
||||
resolved "https://registry.yarnpkg.com/rc-notification/-/rc-notification-5.3.0.tgz#e31c86fe2350598ade8cff383babd1befa7a94fe"
|
||||
integrity sha512-WCf0uCOkZ3HGfF0p1H4Sgt7aWfipxORWTPp7o6prA3vxwtWhtug3GfpYls1pnBp4WA+j8vGIi5c2/hQRpGzPcQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.1"
|
||||
classnames "2.x"
|
||||
rc-motion "^2.6.0"
|
||||
rc-motion "^2.9.0"
|
||||
rc-util "^5.20.1"
|
||||
|
||||
rc-overflow@^1.0.0, rc-overflow@^1.2.8:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.3.0.tgz"
|
||||
integrity sha512-p2Qt4SWPTHAYl4oAao1THy669Fm5q8pYBDBHRaFOekCvcdcrgIx0ByXQMEkyPm8wUDX4BK6aARWecvCRc/7CTA==
|
||||
rc-overflow@^1.3.1:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/rc-overflow/-/rc-overflow-1.3.2.tgz#72ee49e85a1308d8d4e3bd53285dc1f3e0bcce2c"
|
||||
integrity sha512-nsUm78jkYAoPygDAcGZeC2VwIg/IBGSodtOY3pMof4W3M9qRJgqaDYm03ZayHlde3I6ipliAxbN0RUcGf5KOzw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.11.1"
|
||||
classnames "^2.2.1"
|
||||
rc-resize-observer "^1.0.0"
|
||||
rc-util "^5.19.2"
|
||||
rc-util "^5.37.0"
|
||||
|
||||
rc-pagination@~3.2.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.npmjs.org/rc-pagination/-/rc-pagination-3.2.0.tgz"
|
||||
integrity sha512-5tIXjB670WwwcAJzAqp2J+cOBS9W3cH/WU1EiYwXljuZ4vtZXKlY2Idq8FZrnYBz8KhN3vwPo9CoV/SJS6SL1w==
|
||||
rc-pagination@~3.7.0:
|
||||
version "3.7.0"
|
||||
resolved "https://registry.yarnpkg.com/rc-pagination/-/rc-pagination-3.7.0.tgz#4c4332800688ec0fd3b2435c4772f7f8d4d7b50e"
|
||||
integrity sha512-IxSzKapd13L91/195o1TPkKnCNw8gIR25UP1GCW/7c7n/slhld4npu2j2PB9IWjXm4SssaAaSAt2lscYog7wzg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.1"
|
||||
classnames "^2.2.1"
|
||||
rc-util "^5.32.2"
|
||||
|
||||
rc-picker@~3.1.1:
|
||||
version "3.1.5"
|
||||
resolved "https://registry.npmjs.org/rc-picker/-/rc-picker-3.1.5.tgz"
|
||||
integrity sha512-Hh3ml+u+5mxLfl4ahVWlRGiX5+0EJrALR6tSW9yP0eea+6j+YjvjfetbvuVidViMDMweZa38dr8HTfAFLG6GFw==
|
||||
rc-picker@~3.14.6:
|
||||
version "3.14.6"
|
||||
resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-3.14.6.tgz#60fc34f9883272e10f6c593fa6d82e7e7a70781b"
|
||||
integrity sha512-AdKKW0AqMwZsKvIpwUWDUnpuGKZVrbxVTZTNjcO+pViGkjC1EBcjMgxVe8tomOEaIHJL5Gd13vS8Rr3zzxWmag==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.1"
|
||||
"@rc-component/trigger" "^1.5.0"
|
||||
classnames "^2.2.1"
|
||||
rc-trigger "^5.0.4"
|
||||
rc-util "^5.27.0"
|
||||
rc-util "^5.30.0"
|
||||
|
||||
rc-progress@~3.4.1:
|
||||
version "3.4.1"
|
||||
resolved "https://registry.npmjs.org/rc-progress/-/rc-progress-3.4.1.tgz"
|
||||
integrity sha512-eAFDHXlk8aWpoXl0llrenPMt9qKHQXphxcVsnKs0FHC6eCSk1ebJtyaVjJUzKe0233ogiLDeEFK1Uihz3s67hw==
|
||||
rc-progress@~3.5.1:
|
||||
version "3.5.1"
|
||||
resolved "https://registry.yarnpkg.com/rc-progress/-/rc-progress-3.5.1.tgz#a3cdfd2fe04eb5c3d43fa1c69e7dd70c73b102ae"
|
||||
integrity sha512-V6Amx6SbLRwPin/oD+k1vbPrO8+9Qf8zW1T8A7o83HdNafEVvAxPV5YsgtKFP+Ud5HghLj33zKOcEHrcrUGkfw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.1"
|
||||
classnames "^2.2.6"
|
||||
rc-util "^5.16.1"
|
||||
|
||||
rc-rate@~2.9.0:
|
||||
version "2.9.2"
|
||||
resolved "https://registry.npmjs.org/rc-rate/-/rc-rate-2.9.2.tgz"
|
||||
integrity sha512-SaiZFyN8pe0Fgphv8t3+kidlej+cq/EALkAJAc3A0w0XcPaH2L1aggM8bhe1u6GAGuQNAoFvTLjw4qLPGRKV5g==
|
||||
rc-rate@~2.12.0:
|
||||
version "2.12.0"
|
||||
resolved "https://registry.yarnpkg.com/rc-rate/-/rc-rate-2.12.0.tgz#0182deffed3b009cdcc61660da8746c39ed91ed5"
|
||||
integrity sha512-g092v5iZCdVzbjdn28FzvWebK2IutoVoiTeqoLTj9WM7SjA/gOJIw5/JFZMRyJYYVe1jLAU2UhAfstIpCNRozg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.1"
|
||||
classnames "^2.2.5"
|
||||
rc-util "^5.0.1"
|
||||
|
||||
rc-resize-observer@^1.0.0, rc-resize-observer@^1.1.0, rc-resize-observer@^1.2.0:
|
||||
rc-resize-observer@^1.0.0, rc-resize-observer@^1.1.0:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.3.1.tgz"
|
||||
integrity sha512-iFUdt3NNhflbY3mwySv5CA1TC06zdJ+pfo0oc27xpf4PIOvfZwZGtD9Kz41wGYqC4SLio93RVAirSSpYlV/uYg==
|
||||
@ -12529,144 +12615,143 @@ rc-resize-observer@^1.0.0, rc-resize-observer@^1.1.0, rc-resize-observer@^1.2.0:
|
||||
rc-util "^5.27.0"
|
||||
resize-observer-polyfill "^1.5.1"
|
||||
|
||||
rc-segmented@~2.1.0:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.npmjs.org/rc-segmented/-/rc-segmented-2.1.2.tgz"
|
||||
integrity sha512-qGo1bCr83ESXpXVOCXjFe1QJlCAQXyi9KCiy8eX3rIMYlTeJr/ftySIaTnYsitL18SvWf5ZEHsfqIWoX0EMfFQ==
|
||||
rc-resize-observer@^1.3.1, rc-resize-observer@^1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-1.4.0.tgz#7bba61e6b3c604834980647cce6451914750d0cc"
|
||||
integrity sha512-PnMVyRid9JLxFavTjeDXEXo65HCRqbmLBw9xX9gfC4BZiSzbLXKzW3jPz+J0P71pLbD5tBMTT+mkstV5gD0c9Q==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.20.7"
|
||||
classnames "^2.2.1"
|
||||
rc-util "^5.38.0"
|
||||
resize-observer-polyfill "^1.5.1"
|
||||
|
||||
rc-segmented@~2.2.2:
|
||||
version "2.2.2"
|
||||
resolved "https://registry.yarnpkg.com/rc-segmented/-/rc-segmented-2.2.2.tgz#a34f12ce6c0975fc3042ae7656bcd18e1744798e"
|
||||
integrity sha512-Mq52M96QdHMsNdE/042ibT5vkcGcD5jxKp7HgPC2SRofpia99P5fkfHy1pEaajLMF/kj0+2Lkq1UZRvqzo9mSA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.11.1"
|
||||
classnames "^2.2.1"
|
||||
rc-motion "^2.4.4"
|
||||
rc-util "^5.17.0"
|
||||
|
||||
rc-select@~14.1.0, rc-select@~14.1.13:
|
||||
version "14.1.17"
|
||||
resolved "https://registry.npmjs.org/rc-select/-/rc-select-14.1.17.tgz"
|
||||
integrity sha512-6qQhMqtoUkkboRqXKKFRR5Nu1mrnw2mC1uxIBIczg7aiJ94qCZBg4Ww8OLT9f4xdyCgbFSGh6r3yB9EBsjoHGA==
|
||||
rc-select@~14.10.0:
|
||||
version "14.10.0"
|
||||
resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-14.10.0.tgz#5f60e61ed7c9a83c8591616b1174a1c4ab2de0cd"
|
||||
integrity sha512-TsIJTYafTTapCA32LLNpx/AD6ntepR1TG8jEVx35NiAAWCPymhUfuca8kRcUNd3WIGVMDcMKn9kkphoxEz+6Ag==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.1"
|
||||
"@rc-component/trigger" "^1.5.0"
|
||||
classnames "2.x"
|
||||
rc-motion "^2.0.1"
|
||||
rc-overflow "^1.0.0"
|
||||
rc-trigger "^5.0.4"
|
||||
rc-overflow "^1.3.1"
|
||||
rc-util "^5.16.1"
|
||||
rc-virtual-list "^3.2.0"
|
||||
rc-virtual-list "^3.5.2"
|
||||
|
||||
rc-slider@~10.0.0:
|
||||
version "10.0.1"
|
||||
resolved "https://registry.npmjs.org/rc-slider/-/rc-slider-10.0.1.tgz"
|
||||
integrity sha512-igTKF3zBet7oS/3yNiIlmU8KnZ45npmrmHlUUio8PNbIhzMcsh+oE/r2UD42Y6YD2D/s+kzCQkzQrPD6RY435Q==
|
||||
rc-slider@~10.4.0:
|
||||
version "10.4.0"
|
||||
resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-10.4.0.tgz#efc016583fdea5f5dfb4f3dc61b6755a19e5f453"
|
||||
integrity sha512-ZlpWjFhOlEf0w4Ng31avFBkXNNBj60NAcTPaIoiCxBkJ29wOtHSPMqv9PZeEoqmx64bpJkgK7kPa47HG4LPzww==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.1"
|
||||
classnames "^2.2.5"
|
||||
rc-util "^5.18.1"
|
||||
shallowequal "^1.1.0"
|
||||
rc-util "^5.27.0"
|
||||
|
||||
rc-steps@~6.0.0-alpha.2:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.npmjs.org/rc-steps/-/rc-steps-6.0.0.tgz"
|
||||
integrity sha512-+KfMZIty40mYCQSDvYbZ1jwnuObLauTiIskT1hL4FFOBHP6ZOr8LK0m143yD3kEN5XKHSEX1DIwCj3AYZpoeNQ==
|
||||
rc-steps@~6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/rc-steps/-/rc-steps-6.0.1.tgz#c2136cd0087733f6d509209a84a5c80dc29a274d"
|
||||
integrity sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.16.7"
|
||||
classnames "^2.2.3"
|
||||
rc-util "^5.16.1"
|
||||
|
||||
rc-switch@~4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.npmjs.org/rc-switch/-/rc-switch-4.0.0.tgz"
|
||||
integrity sha512-IfrYC99vN0gKaTyjQdqYuADU0eH00SAFHg3jOp8HrmUpJruhV1SohJzrCbPqPraZeX/6X/QKkdLfkdnUub05WA==
|
||||
rc-switch@~4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/rc-switch/-/rc-switch-4.1.0.tgz#f37d81b4e0c5afd1274fd85367b17306bf25e7d7"
|
||||
integrity sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.1"
|
||||
"@babel/runtime" "^7.21.0"
|
||||
classnames "^2.2.1"
|
||||
rc-util "^5.0.1"
|
||||
rc-util "^5.30.0"
|
||||
|
||||
rc-table@~7.26.0:
|
||||
version "7.26.0"
|
||||
resolved "https://registry.npmjs.org/rc-table/-/rc-table-7.26.0.tgz"
|
||||
integrity sha512-0cD8e6S+DTGAt5nBZQIPFYEaIukn17sfa5uFL98faHlH/whZzD8ii3dbFL4wmUDEL4BLybhYop+QUfZJ4CPvNQ==
|
||||
rc-table@~7.35.2:
|
||||
version "7.35.2"
|
||||
resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.35.2.tgz#8fcd59e9342bf13fe131ca54c6105e71ab95588b"
|
||||
integrity sha512-ZLIZdAEdfen21FI21xt2LDg9chQ7gc5Lpy4nkjWKPDgmQMnH0KJ8JQQzrd3zrEN16xzjiVdHHvRmi1RU8BtgYg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.1"
|
||||
"@rc-component/context" "^1.4.0"
|
||||
classnames "^2.2.5"
|
||||
rc-resize-observer "^1.1.0"
|
||||
rc-util "^5.22.5"
|
||||
shallowequal "^1.1.0"
|
||||
rc-util "^5.37.0"
|
||||
rc-virtual-list "^3.11.1"
|
||||
|
||||
rc-tabs@~12.4.2:
|
||||
version "12.4.2"
|
||||
resolved "https://registry.npmjs.org/rc-tabs/-/rc-tabs-12.4.2.tgz"
|
||||
integrity sha512-FFlGwuTjQUznWzJtyhmHc6KAp5lRQFxKUv9Aj1UtsOYe2e7WGmuzcrd+/LQchuPe0VjhaZPdGkmFGcqGqNO6ow==
|
||||
rc-tabs@~12.13.1:
|
||||
version "12.13.1"
|
||||
resolved "https://registry.yarnpkg.com/rc-tabs/-/rc-tabs-12.13.1.tgz#e28c5652dfed4e72eb27a75a2691754afd3e5f68"
|
||||
integrity sha512-83u3l2QkO0UznCzdBLEk9WnNcT+imtmDmMT993sUUEOGnNQAmqOdev0XjeqrcvsAMe9CDpAWDFd7L/RZw+LVJQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.11.2"
|
||||
classnames "2.x"
|
||||
rc-dropdown "~4.0.0"
|
||||
rc-menu "~9.8.0"
|
||||
rc-dropdown "~4.1.0"
|
||||
rc-menu "~9.12.0"
|
||||
rc-motion "^2.6.2"
|
||||
rc-resize-observer "^1.0.0"
|
||||
rc-util "^5.16.0"
|
||||
rc-util "^5.34.1"
|
||||
|
||||
rc-textarea@^0.4.0, rc-textarea@~0.4.5:
|
||||
version "0.4.7"
|
||||
resolved "https://registry.npmjs.org/rc-textarea/-/rc-textarea-0.4.7.tgz"
|
||||
integrity sha512-IQPd1CDI3mnMlkFyzt2O4gQ2lxUsnBAeJEoZGJnkkXgORNqyM9qovdrCj9NzcRfpHgLdzaEbU3AmobNFGUznwQ==
|
||||
rc-textarea@~1.5.0, rc-textarea@~1.5.1:
|
||||
version "1.5.2"
|
||||
resolved "https://registry.yarnpkg.com/rc-textarea/-/rc-textarea-1.5.2.tgz#8702464555ffcc16219289d4c1c4f721a79f54a9"
|
||||
integrity sha512-VVwKYtkp5whZVhP+llX8zM8TtI3dv+BDA0FUbmBMGLaW/tuBJ7Yh35yPabO63V+Bi68xv17eI4hy+/4p2G0gFg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.1"
|
||||
classnames "^2.2.1"
|
||||
rc-input "~1.3.5"
|
||||
rc-resize-observer "^1.0.0"
|
||||
rc-util "^5.24.4"
|
||||
shallowequal "^1.1.0"
|
||||
rc-util "^5.27.0"
|
||||
|
||||
rc-tooltip@~5.2.0:
|
||||
version "5.2.2"
|
||||
resolved "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-5.2.2.tgz"
|
||||
integrity sha512-jtQzU/18S6EI3lhSGoDYhPqNpWajMtS5VV/ld1LwyfrDByQpYmw/LW6U7oFXXLukjfDHQ7Ju705A82PRNFWYhg==
|
||||
rc-tooltip@~6.1.2:
|
||||
version "6.1.2"
|
||||
resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-6.1.2.tgz#33923ecfb2cf24347975093cbd0b048ab33c9567"
|
||||
integrity sha512-89zwvybvCxGJu3+gGF8w5AXd4HHk6hIN7K0vZbkzjilVaEAIWPqc1fcyeUeP71n3VCcw7pTL9LyFupFbrx8gHw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.11.2"
|
||||
"@rc-component/trigger" "^1.18.0"
|
||||
classnames "^2.3.1"
|
||||
rc-trigger "^5.0.0"
|
||||
|
||||
rc-tree-select@~5.5.4:
|
||||
version "5.5.5"
|
||||
resolved "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-5.5.5.tgz"
|
||||
integrity sha512-k2av7jF6tW9bIO4mQhaVdV4kJ1c54oxV3/hHVU+oD251Gb5JN+m1RbJFTMf1o0rAFqkvto33rxMdpafaGKQRJw==
|
||||
rc-tree-select@~5.15.0:
|
||||
version "5.15.0"
|
||||
resolved "https://registry.yarnpkg.com/rc-tree-select/-/rc-tree-select-5.15.0.tgz#8591f1dd28b043dde6fa1ca30c7acb198b160a42"
|
||||
integrity sha512-YJHfdO6azFnR0/JuNBZLDptGE4/RGfVeHAafUIYcm2T3RBkL1O8aVqiHvwIyLzdK59ry0NLrByd+3TkfpRM+9Q==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.1"
|
||||
classnames "2.x"
|
||||
rc-select "~14.1.0"
|
||||
rc-tree "~5.7.0"
|
||||
rc-select "~14.10.0"
|
||||
rc-tree "~5.8.1"
|
||||
rc-util "^5.16.1"
|
||||
|
||||
rc-tree@~5.7.0:
|
||||
version "5.7.3"
|
||||
resolved "https://registry.npmjs.org/rc-tree/-/rc-tree-5.7.3.tgz"
|
||||
integrity sha512-Oql2S9+ZmT+mfTp5SNo1XM0QvkENjc0mPRFsHWRFSPuKird0OYMZZKmLznUJ+0aGDeFFWN42wiUZJtMFhrLgLw==
|
||||
rc-tree@~5.8.1, rc-tree@~5.8.2:
|
||||
version "5.8.2"
|
||||
resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-5.8.2.tgz#ed3a3f7c56597bbeab3303407a9e1739bbf15621"
|
||||
integrity sha512-xH/fcgLHWTLmrSuNphU8XAqV7CdaOQgm4KywlLGNoTMhDAcNR3GVNP6cZzb0GrKmIZ9yae+QLot/cAgUdPRMzg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.1"
|
||||
classnames "2.x"
|
||||
rc-motion "^2.0.1"
|
||||
rc-util "^5.16.1"
|
||||
rc-virtual-list "^3.4.8"
|
||||
rc-virtual-list "^3.5.1"
|
||||
|
||||
rc-trigger@^5.0.0, rc-trigger@^5.0.4, rc-trigger@^5.1.2, rc-trigger@^5.2.10, rc-trigger@^5.3.1, rc-trigger@^5.3.4:
|
||||
version "5.3.4"
|
||||
resolved "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.3.4.tgz"
|
||||
integrity sha512-mQv+vas0TwKcjAO2izNPkqR4j86OemLRmvL2nOzdP9OWNWA1ivoTt5hzFqYNW9zACwmTezRiN8bttrC7cZzYSw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.18.3"
|
||||
classnames "^2.2.6"
|
||||
rc-align "^4.0.0"
|
||||
rc-motion "^2.0.0"
|
||||
rc-util "^5.19.2"
|
||||
|
||||
rc-upload@~4.3.0:
|
||||
version "4.3.4"
|
||||
resolved "https://registry.npmjs.org/rc-upload/-/rc-upload-4.3.4.tgz"
|
||||
integrity sha512-uVbtHFGNjHG/RyAfm9fluXB6pvArAGyAx8z7XzXXyorEgVIWj6mOlriuDm0XowDHYz4ycNK0nE0oP3cbFnzxiQ==
|
||||
rc-upload@~4.3.5:
|
||||
version "4.3.5"
|
||||
resolved "https://registry.yarnpkg.com/rc-upload/-/rc-upload-4.3.5.tgz#12fc69b2af74d08646a104828831bcaf44076eda"
|
||||
integrity sha512-EHlKJbhkgFSQHliTj9v/2K5aEuFwfUQgZARzD7AmAPOneZEPiCNF3n6PEWIuqz9h7oq6FuXgdR67sC5BWFxJbA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.18.3"
|
||||
classnames "^2.2.5"
|
||||
rc-util "^5.2.0"
|
||||
|
||||
rc-util@^5.0.1, rc-util@^5.0.6, rc-util@^5.15.0, rc-util@^5.16.0, rc-util@^5.16.1, rc-util@^5.17.0, rc-util@^5.18.1, rc-util@^5.19.2, rc-util@^5.2.0, rc-util@^5.2.1, rc-util@^5.20.1, rc-util@^5.21.0, rc-util@^5.21.2, rc-util@^5.22.5, rc-util@^5.24.4, rc-util@^5.25.2, rc-util@^5.26.0, rc-util@^5.27.0, rc-util@^5.28.0, rc-util@^5.6.1, rc-util@^5.8.0, rc-util@^5.9.4:
|
||||
rc-util@^5.0.1, rc-util@^5.16.1, rc-util@^5.17.0, rc-util@^5.18.1, rc-util@^5.2.0, rc-util@^5.20.1, rc-util@^5.21.0, rc-util@^5.24.4, rc-util@^5.25.2, rc-util@^5.27.0, rc-util@^5.28.0, rc-util@^5.9.4:
|
||||
version "5.30.0"
|
||||
resolved "https://registry.npmjs.org/rc-util/-/rc-util-5.30.0.tgz"
|
||||
integrity sha512-uaWpF/CZGyXuhQG71MWxkU+0bWkPEgqZUxEv251Cu7p3kpHDNm5+Ygu/U8ux0a/zbfGW8PsKcJL0XVBOMrlIZg==
|
||||
@ -12674,15 +12759,23 @@ rc-util@^5.0.1, rc-util@^5.0.6, rc-util@^5.15.0, rc-util@^5.16.0, rc-util@^5.16.
|
||||
"@babel/runtime" "^7.18.3"
|
||||
react-is "^16.12.0"
|
||||
|
||||
rc-virtual-list@^3.2.0, rc-virtual-list@^3.4.8:
|
||||
version "3.4.13"
|
||||
resolved "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.4.13.tgz"
|
||||
integrity sha512-cPOVDmcNM7rH6ANotanMDilW/55XnFPw0Jh/GQYtrzZSy3AmWvCnqVNyNC/pgg3lfVmX2994dlzAhuUrd4jG7w==
|
||||
rc-util@^5.30.0, rc-util@^5.31.1, rc-util@^5.32.2, rc-util@^5.34.1, rc-util@^5.35.0, rc-util@^5.36.0, rc-util@^5.37.0, rc-util@^5.38.0:
|
||||
version "5.38.1"
|
||||
resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.38.1.tgz#4915503b89855f5c5cd9afd4c72a7a17568777bb"
|
||||
integrity sha512-e4ZMs7q9XqwTuhIK7zBIVFltUtMSjphuPPQXHoHlzRzNdOwUxDejo0Zls5HYaJfRKNURcsS/ceKVULlhjBrxng==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.18.3"
|
||||
react-is "^18.2.0"
|
||||
|
||||
rc-virtual-list@^3.11.1, rc-virtual-list@^3.5.1, rc-virtual-list@^3.5.2:
|
||||
version "3.11.3"
|
||||
resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.11.3.tgz#77d4e12e20c1ba314b43c0e37e118296674c5401"
|
||||
integrity sha512-tu5UtrMk/AXonHwHxUogdXAWynaXsrx1i6dsgg+lOo/KJSF8oBAcprh1z5J3xgnPJD5hXxTL58F8s8onokdt0Q==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.20.0"
|
||||
classnames "^2.2.6"
|
||||
rc-resize-observer "^1.0.0"
|
||||
rc-util "^5.15.0"
|
||||
rc-util "^5.36.0"
|
||||
|
||||
react-addons-update@15.6.3:
|
||||
version "15.6.3"
|
||||
@ -12818,7 +12911,7 @@ react-is@^17.0.1, react-is@^17.0.2:
|
||||
resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz"
|
||||
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
|
||||
|
||||
react-is@^18.0.0:
|
||||
react-is@^18.0.0, react-is@^18.2.0:
|
||||
version "18.2.0"
|
||||
resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz"
|
||||
integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
|
||||
@ -13624,10 +13717,10 @@ screenfull@^5.1.0:
|
||||
resolved "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz"
|
||||
integrity sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==
|
||||
|
||||
scroll-into-view-if-needed@^3.0.3:
|
||||
version "3.0.10"
|
||||
resolved "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.0.10.tgz"
|
||||
integrity sha512-t44QCeDKAPf1mtQH3fYpWz8IM/DyvHLjs8wUvvwMYxk5moOqCzrMSxK6HQVD0QVmVjXFavoFIPRVrMuJPKAvtg==
|
||||
scroll-into-view-if-needed@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz#fa9524518c799b45a2ef6bbffb92bcad0296d01f"
|
||||
integrity sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==
|
||||
dependencies:
|
||||
compute-scroll-into-view "^3.0.2"
|
||||
|
||||
@ -14484,6 +14577,11 @@ throttle-debounce@^3.0.1:
|
||||
resolved "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz"
|
||||
integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==
|
||||
|
||||
throttle-debounce@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-5.0.0.tgz#a17a4039e82a2ed38a5e7268e4132d6960d41933"
|
||||
integrity sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg==
|
||||
|
||||
through2@^4.0.0:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz"
|
||||
|
Loading…
x
Reference in New Issue
Block a user