@antscorp/antsomi-ui 1.6.0 → 1.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/components/atoms/Input/Input.d.ts +3 -0
- package/es/components/atoms/Input/Input.js +4 -1
- package/es/components/atoms/InputNumber/InputNumber.d.ts +1 -0
- package/es/components/atoms/InputNumber/InputNumber.js +21 -0
- package/es/components/atoms/InputNumber/index.d.ts +1 -1
- package/es/components/atoms/InputNumber/index.js +1 -1
- package/es/components/atoms/Scrollbars/Scrollbars.js +3 -3
- package/es/components/atoms/index.d.ts +1 -1
- package/es/components/atoms/index.js +1 -1
- package/es/components/molecules/AccountSelection/index.d.ts +2 -1
- package/es/components/molecules/EditableName/index.d.ts +2 -1
- package/es/components/molecules/EmptyData/EmptyData.d.ts +3 -1
- package/es/components/molecules/EmptyData/EmptyData.js +17 -5
- package/es/components/molecules/EmptyData/styled.js +1 -0
- package/es/components/molecules/SelectAccount/AccountList.js +11 -4
- package/es/components/molecules/ThumbnailCard/ThumbnailCard.js +1 -1
- package/es/components/molecules/Tree/Tree.d.ts +2 -0
- package/es/components/molecules/Tree/Tree.js +1 -0
- package/es/components/molecules/Tree/index.d.ts +1 -0
- package/es/components/molecules/Tree/index.js +1 -0
- package/es/components/molecules/VirtualizedMenu/index.d.ts +1 -1
- package/es/components/molecules/index.d.ts +1 -0
- package/es/components/molecules/index.js +1 -0
- package/es/components/organism/DataTable/DataTable.d.ts +4 -1
- package/es/components/organism/DataTable/DataTable.js +23 -11
- package/es/components/organism/DataTable/components/Filter/AddFilterButton.js +25 -22
- package/es/components/organism/DataTable/components/Filter/FilterActionButton.d.ts +5 -0
- package/es/components/organism/DataTable/components/Filter/FilterActionButton.js +126 -0
- package/es/components/organism/DataTable/components/Filter/FilterCondition/index.d.ts +14 -0
- package/es/components/organism/DataTable/components/Filter/FilterCondition/index.js +99 -0
- package/es/components/organism/DataTable/components/Filter/FilterCondition/styled.d.ts +3 -0
- package/es/components/organism/DataTable/components/Filter/FilterCondition/styled.js +42 -0
- package/es/components/organism/DataTable/components/Filter/FilterCondition/utils.d.ts +0 -0
- package/es/components/organism/DataTable/components/Filter/FilterCondition/utils.js +1 -0
- package/es/components/organism/DataTable/components/Filter/FilterConditionList.d.ts +5 -0
- package/es/components/organism/DataTable/components/Filter/FilterConditionList.js +117 -0
- package/es/components/organism/DataTable/components/Filter/FilterItem.d.ts +10 -0
- package/es/components/organism/DataTable/components/Filter/FilterItem.js +36 -0
- package/es/components/organism/DataTable/components/Filter/SaveFilterPopover.d.ts +9 -0
- package/es/components/organism/DataTable/components/Filter/SaveFilterPopover.js +54 -0
- package/es/components/organism/DataTable/components/Filter/SavedFilterAndMetrics.d.ts +3 -2
- package/es/components/organism/DataTable/components/Filter/SavedFilterAndMetrics.js +53 -91
- package/es/components/organism/DataTable/components/Filter/index.js +12 -17
- package/es/components/organism/DataTable/components/Filter/styled.d.ts +2 -1
- package/es/components/organism/DataTable/components/Filter/styled.js +56 -11
- package/es/components/organism/DataTable/components/ModifyColumn/index.d.ts +3 -2
- package/es/components/organism/DataTable/components/ModifyColumn/index.js +82 -16
- package/es/components/organism/DataTable/components/ModifyColumn/styled.d.ts +2 -0
- package/es/components/organism/DataTable/components/ModifyColumn/styled.js +5 -0
- package/es/components/organism/DataTable/components/Pagination/index.d.ts +2 -3
- package/es/components/organism/DataTable/components/Table/index.js +9 -4
- package/es/components/organism/DataTable/components/Toolbar/RowSelectedControl.d.ts +5 -0
- package/es/components/organism/DataTable/components/Toolbar/RowSelectedControl.js +30 -0
- package/es/components/organism/DataTable/components/Toolbar/SearchPopover.d.ts +8 -0
- package/es/components/organism/DataTable/components/Toolbar/SearchPopover.js +122 -0
- package/es/components/organism/DataTable/components/Toolbar/ToolbarActionButtons.js +74 -0
- package/es/components/organism/DataTable/components/Toolbar/index.js +19 -8
- package/es/components/organism/DataTable/components/Toolbar/styled.d.ts +6 -1
- package/es/components/organism/DataTable/components/Toolbar/styled.js +38 -2
- package/es/components/organism/DataTable/components/common/ApplyPopupContent/index.d.ts +11 -0
- package/es/components/organism/DataTable/components/common/ApplyPopupContent/index.js +36 -0
- package/es/components/organism/DataTable/components/common/ApplyPopupContent/styled.d.ts +3 -0
- package/es/components/organism/DataTable/components/common/ApplyPopupContent/styled.js +42 -0
- package/es/components/organism/DataTable/components/common/index.d.ts +0 -0
- package/es/components/organism/DataTable/components/common/index.js +1 -0
- package/es/components/organism/DataTable/components/index.d.ts +0 -1
- package/es/components/organism/DataTable/components/index.js +0 -1
- package/es/components/organism/DataTable/constants/filter.d.ts +9 -0
- package/es/components/organism/DataTable/constants/filter.js +27 -0
- package/es/components/organism/DataTable/constants/index.js +7 -1
- package/es/components/organism/DataTable/constants/sample.d.ts +149 -3
- package/es/components/organism/DataTable/constants/sample.js +1497 -2
- package/es/components/organism/DataTable/constants/theme.js +2 -1
- package/es/components/organism/DataTable/constants/toolbar.d.ts +2 -2
- package/es/components/organism/DataTable/constants/toolbar.js +1 -0
- package/es/components/organism/DataTable/contexts/DataTableContext.js +1 -1
- package/es/components/organism/DataTable/hooks/index.d.ts +1 -0
- package/es/components/organism/DataTable/hooks/index.js +1 -0
- package/es/components/organism/DataTable/hooks/useAddFilterButton.d.ts +22 -0
- package/es/components/organism/DataTable/hooks/useAddFilterButton.js +58 -0
- package/es/components/organism/DataTable/hooks/useDataTable.d.ts +2 -2
- package/es/components/organism/DataTable/hooks/useDataTable.js +16 -4
- package/es/components/organism/DataTable/hooks/useDataTableStore.d.ts +28 -0
- package/es/components/organism/DataTable/hooks/useDataTableStore.js +36 -0
- package/es/components/organism/DataTable/hooks/useTablePerformance.d.ts +0 -0
- package/es/components/organism/DataTable/hooks/useTablePerformance.js +1 -0
- package/es/components/organism/DataTable/index.d.ts +2 -2
- package/es/components/organism/DataTable/index.js +1 -1
- package/es/components/organism/DataTable/stores/index.js +3 -3
- package/es/components/organism/DataTable/styled/index.d.ts +8 -0
- package/es/components/organism/DataTable/styled/index.js +41 -0
- package/es/components/organism/DataTable/types/filter.d.ts +21 -1
- package/es/components/organism/DataTable/types/index.d.ts +4 -5
- package/es/components/organism/DataTable/types/theme.d.ts +1 -0
- package/es/components/organism/DataTable/types/toolbar.d.ts +51 -15
- package/es/components/organism/DataTable/utils/filter.d.ts +85 -1
- package/es/components/organism/DataTable/utils/filter.js +157 -10
- package/es/components/organism/ModifyColumnModal/ModifyColumnModal.d.ts +3 -0
- package/es/components/organism/ModifyColumnModal/ModifyColumnModal.js +239 -0
- package/es/components/organism/ModifyColumnModal/SelectedMetricsList.d.ts +9 -0
- package/es/components/organism/ModifyColumnModal/SelectedMetricsList.js +106 -0
- package/es/components/organism/ModifyColumnModal/index.d.ts +2 -0
- package/es/components/organism/ModifyColumnModal/index.js +1 -0
- package/es/components/organism/ModifyColumnModal/styled.d.ts +8 -0
- package/es/components/organism/ModifyColumnModal/styled.js +151 -0
- package/es/components/organism/ModifyColumnModal/types.d.ts +25 -0
- package/es/components/organism/ModifyColumnModal/types.js +1 -0
- package/es/components/organism/index.d.ts +1 -0
- package/es/components/organism/index.js +1 -0
- package/es/constants/condition.d.ts +920 -0
- package/es/constants/condition.js +520 -0
- package/es/constants/index.d.ts +1 -0
- package/es/constants/index.js +1 -0
- package/es/constants/theme.js +26 -11
- package/es/constants/variables.d.ts +17 -0
- package/es/constants/variables.js +18 -0
- package/es/hooks/useOutsideClick.d.ts +1 -1
- package/es/hooks/useOutsideClick.js +7 -2
- package/es/locales/en/translation.json +30 -2
- package/es/locales/i18n.d.ts +56 -0
- package/es/locales/translations.d.ts +28 -0
- package/es/locales/vi/translation.json +30 -2
- package/es/providers/ConfigProvider/GlobalStyle.js +72 -16
- package/es/services/DataTable/index.d.ts +1 -0
- package/es/services/DataTable/index.js +1 -0
- package/es/styled/common.d.ts +1 -0
- package/es/styled/common.js +24 -0
- package/es/styled/index.d.ts +1 -0
- package/es/styled/index.js +1 -0
- package/es/test.d.ts +11 -0
- package/es/test.js +402 -388
- package/es/tests/DataTableTest.js +147 -40
- package/es/types/actionsButton.d.ts +16 -0
- package/es/types/actionsButton.js +1 -0
- package/es/types/condition.d.ts +6 -0
- package/es/types/condition.js +1 -0
- package/es/types/index.d.ts +2 -0
- package/es/types/index.js +2 -0
- package/es/types/variables.d.ts +0 -17
- package/es/utils/actionButtons.d.ts +40 -0
- package/es/utils/actionButtons.js +61 -0
- package/es/utils/common.d.ts +31 -1
- package/es/utils/common.js +81 -0
- package/es/utils/index.d.ts +1 -0
- package/es/utils/index.js +1 -0
- package/package.json +2 -1
- package/es/components/organism/DataTable/components/ToolbarActionButton/index.js +0 -52
- package/es/components/organism/DataTable/components/ToolbarActionButton/styled.d.ts +0 -5
- package/es/components/organism/DataTable/components/ToolbarActionButton/styled.js +0 -26
- /package/es/components/organism/DataTable/components/{ToolbarActionButton/index.d.ts → Toolbar/ToolbarActionButtons.d.ts} +0 -0
|
@@ -28,5 +28,8 @@ export declare const Input: string & import("styled-components").StyledComponent
|
|
|
28
28
|
Password: React.ForwardRefExoticComponent<import("antd/es/input").PasswordProps & React.RefAttributes<import("antd").InputRef>>;
|
|
29
29
|
}, {}> & {
|
|
30
30
|
DefaultInput: typeof AntdInput;
|
|
31
|
+
CustomSearch: typeof SearchInput;
|
|
31
32
|
};
|
|
33
|
+
declare const SearchInput: React.FC<InputProps>;
|
|
32
34
|
export declare const TextArea: React.ForwardRefExoticComponent<import("antd/es/input").TextAreaProps & React.RefAttributes<import("antd/es/input/TextArea").TextAreaRef>>;
|
|
35
|
+
export {};
|
|
@@ -16,11 +16,12 @@ import React, { useEffect, useMemo, useRef, useState } from 'react';
|
|
|
16
16
|
// Types
|
|
17
17
|
import { Input as AntdInput } from 'antd';
|
|
18
18
|
// Components
|
|
19
|
-
import { RequiredLabel, Text } from '@antscorp/antsomi-ui/es/components/atoms';
|
|
19
|
+
import { Icon, RequiredLabel, Text } from '@antscorp/antsomi-ui/es/components/atoms';
|
|
20
20
|
// Utils
|
|
21
21
|
import { handleError } from '@antscorp/antsomi-ui/es/utils';
|
|
22
22
|
import { getPreventKeyboardAction } from '@antscorp/antsomi-ui/es/utils/web';
|
|
23
23
|
import { StyledInput } from './styled';
|
|
24
|
+
import { globalToken } from '@antscorp/antsomi-ui/es/constants';
|
|
24
25
|
const PATH = '@antscorp/antsomi-ui/es/components/atoms/Input/Input.tsx';
|
|
25
26
|
const OriginInput = props => {
|
|
26
27
|
// Props
|
|
@@ -95,6 +96,8 @@ OriginInput.defaultProps = {
|
|
|
95
96
|
withWrapper: true,
|
|
96
97
|
};
|
|
97
98
|
export const Input = OriginInput;
|
|
99
|
+
const SearchInput = props => (React.createElement(Input, Object.assign({ bordered: false, autoFocus: true, suffix: React.createElement(Icon, { type: "icon-ants-search-2", size: 24, color: globalToken === null || globalToken === void 0 ? void 0 : globalToken.bw8 }) }, props, { className: `${props.className} antsomi-search-input` })));
|
|
100
|
+
Input.CustomSearch = SearchInput;
|
|
98
101
|
Input.TextArea = StyledInput.TextArea;
|
|
99
102
|
Input.DefaultInput = AntdInput;
|
|
100
103
|
Input.Password = AntdInput.Password;
|
|
@@ -13,8 +13,12 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
13
13
|
import React from 'react';
|
|
14
14
|
import clsx from 'clsx';
|
|
15
15
|
import { InputNumber as AntdInputNumber } from 'antd';
|
|
16
|
+
import i18nInstance from '@antscorp/antsomi-ui/es/locales/i18n';
|
|
16
17
|
// Icons
|
|
17
18
|
import Icon from '@antscorp/icons';
|
|
19
|
+
// Translations
|
|
20
|
+
import { translations } from '@antscorp/antsomi-ui/es/locales/translations';
|
|
21
|
+
const { t } = i18nInstance;
|
|
18
22
|
export const InputNumber = props => {
|
|
19
23
|
// Props
|
|
20
24
|
const { showHandler, className } = props, restOfProps = __rest(props, ["showHandler", "className"]);
|
|
@@ -25,3 +29,20 @@ export const InputNumber = props => {
|
|
|
25
29
|
InputNumber.defaultProps = {
|
|
26
30
|
showHandler: true,
|
|
27
31
|
};
|
|
32
|
+
export const FormatInputNumber = InputNumber;
|
|
33
|
+
FormatInputNumber.defaultProps = {
|
|
34
|
+
formatter: (value, info) => {
|
|
35
|
+
if (info.userTyping)
|
|
36
|
+
return (value === null || value === void 0 ? void 0 : value.toString()) || '';
|
|
37
|
+
if (!value)
|
|
38
|
+
return '';
|
|
39
|
+
// Split the value into integer and decimal parts
|
|
40
|
+
const parts = value.toString().split('.');
|
|
41
|
+
// Format the integer part with commas
|
|
42
|
+
const integerPart = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
|
|
43
|
+
// Combine the formatted integer part with the decimal part (if any)
|
|
44
|
+
return parts[1] ? `${integerPart}.${parts[1].slice(0, 3)}` : `${integerPart}`;
|
|
45
|
+
},
|
|
46
|
+
placeholder: `${t(translations.format)}: 1,234.560`,
|
|
47
|
+
parser: value => value === null || value === void 0 ? void 0 : value.replace(/,/g, ''),
|
|
48
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { InputNumber } from './InputNumber';
|
|
1
|
+
export { InputNumber, FormatInputNumber } from './InputNumber';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { InputNumber } from './InputNumber';
|
|
1
|
+
export { InputNumber, FormatInputNumber } from './InputNumber';
|
|
@@ -72,9 +72,9 @@ export const Scrollbars = props => {
|
|
|
72
72
|
// Set a minimum height for the view to ensure space for the scrollbar
|
|
73
73
|
newStyle.minHeight = THUMB_SIZE;
|
|
74
74
|
// If autoHeightMax is defined, adjust the maxHeight to include space for the scrollbar
|
|
75
|
-
if (autoHeightMax) {
|
|
76
|
-
|
|
77
|
-
}
|
|
75
|
+
// if (autoHeightMax) {
|
|
76
|
+
// newStyle.maxHeight = parseInt(`${autoHeightMax}`) + THUMB_SIZE;
|
|
77
|
+
// }
|
|
78
78
|
// Return a div element with the adjusted styles and original props, applying a custom class for styling
|
|
79
79
|
return React.createElement("div", Object.assign({ className: "scrollbar-view" }, props, { style: newStyle }));
|
|
80
80
|
}, onUpdate: onUpdate, hideTracksWhenNotNeeded: true }, restProps)));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { Divider } from './Divider';
|
|
2
2
|
export { DividerPure } from './DividerPure';
|
|
3
3
|
export { Input, TextArea } from './Input';
|
|
4
|
-
export { InputNumber } from './InputNumber';
|
|
4
|
+
export { InputNumber, FormatInputNumber } from './InputNumber';
|
|
5
5
|
export { Radio, RadioGroupSub, RadioButton } from './Radio';
|
|
6
6
|
export { Space } from './Space';
|
|
7
7
|
export { Tag } from './Tag';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { Divider } from './Divider';
|
|
2
2
|
export { DividerPure } from './DividerPure';
|
|
3
3
|
export { Input, TextArea } from './Input';
|
|
4
|
-
export { InputNumber } from './InputNumber';
|
|
4
|
+
export { InputNumber, FormatInputNumber } from './InputNumber';
|
|
5
5
|
export { Radio, RadioGroupSub, RadioButton } from './Radio';
|
|
6
6
|
export { Space } from './Space';
|
|
7
7
|
export { Tag } from './Tag';
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { AccountSelection, type AccountSelectionProps } from './AccountSelection';
|
|
2
|
-
export { AccountListing
|
|
2
|
+
export { AccountListing } from './AccountListing';
|
|
3
|
+
export type { AccountListingHandle } from './AccountListing';
|
|
3
4
|
export { useAccountSelection } from './hooks';
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export { EditableName
|
|
1
|
+
export { EditableName } from './EditableName';
|
|
2
|
+
export type { EditableNameHandle } from './EditableName';
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
|
|
2
|
+
import { FlexProps } from '@antscorp/antsomi-ui/es/components/atoms';
|
|
3
|
+
export interface EmptyDataProps extends Omit<FlexProps, 'children' | 'title'> {
|
|
4
|
+
showIcon?: boolean;
|
|
3
5
|
size?: TUISize;
|
|
4
6
|
icon?: React.ReactNode;
|
|
5
7
|
title?: React.ReactNode;
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
1
12
|
// Libraries
|
|
2
13
|
import React from 'react';
|
|
3
14
|
import { LoadingOutlined } from '@ant-design/icons';
|
|
@@ -10,12 +21,13 @@ import { Icon } from '@antscorp/antsomi-ui/es/components';
|
|
|
10
21
|
import { EmptyIcon, EmptyWrapper, ImageWrapper } from './styled';
|
|
11
22
|
const { Text } = Typography;
|
|
12
23
|
export const EmptyData = props => {
|
|
13
|
-
const { size = 'medium', icon = 'icon-ants-media', title, subTitle, description, loading, className, image, imageClassName, imageStyle, children
|
|
14
|
-
return (React.createElement(EmptyWrapper, { className: className },
|
|
24
|
+
const { size = 'medium', icon = 'icon-ants-media', showIcon = true, title, subTitle, description, loading, className, image, imageClassName, imageStyle, children } = props, restOfProps = __rest(props, ["size", "icon", "showIcon", "title", "subTitle", "description", "loading", "className", "image", "imageClassName", "imageStyle", "children"]);
|
|
25
|
+
return (React.createElement(EmptyWrapper, Object.assign({ className: className }, restOfProps),
|
|
15
26
|
React.createElement(Flex, { vertical: true, align: "center", justify: "center", gap: 15 },
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
React.createElement(
|
|
27
|
+
!!showIcon && (React.createElement(React.Fragment, null,
|
|
28
|
+
!image && (React.createElement(EmptyIcon, { className: "animate__animated animate__tada", "$size": size }, isString(icon) ? React.createElement(Icon, { type: icon }) : icon)),
|
|
29
|
+
image && (React.createElement(ImageWrapper, { className: imageClassName, style: imageStyle },
|
|
30
|
+
React.createElement("img", { src: image, alt: "" }))))),
|
|
19
31
|
loading ? (React.createElement(Spin, { indicator: React.createElement(LoadingOutlined, { style: { fontSize: 24 }, spin: true }) })) : (React.createElement(Flex, { gap: 5, align: "center", justify: "center", vertical: true },
|
|
20
32
|
title && React.createElement(Text, { className: "title animate__animated animate__fadeInUp" }, title),
|
|
21
33
|
subTitle && (React.createElement(Text, { className: "subTitle animate__animated animate__fadeInUp" }, subTitle)),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { useContext, useState } from 'react';
|
|
2
2
|
import { AccountListBody, AccountListContent, AccountListFooter, AccountListTitleGroup, AccountListWrapper, CheckboxStyled, } from './styled';
|
|
3
|
-
import { Button, Icon, Input, Typography } from '../../atoms';
|
|
3
|
+
import { Button, Icon, Input, Scrollbars, Typography } from '../../atoms';
|
|
4
4
|
import { Dropdown } from '../Dropdown';
|
|
5
5
|
import { SelectAccountContext } from './context/SelectAccountContext';
|
|
6
6
|
const AccountList = () => {
|
|
@@ -20,13 +20,20 @@ const AccountList = () => {
|
|
|
20
20
|
const handleSearch = text => {
|
|
21
21
|
dispatch({ type: 'UPDATE_SEARCH_TEXT', payload: text });
|
|
22
22
|
};
|
|
23
|
-
const TextLabel = ({ children }) => (React.createElement(Typography.Text, { ellipsis: { tooltip: { title: children } }, style: { maxWidth: '
|
|
23
|
+
const TextLabel = ({ children }) => (React.createElement(Typography.Text, { ellipsis: { tooltip: { title: children } }, style: { maxWidth: '220px' } }, children));
|
|
24
24
|
return (React.createElement(AccountListWrapper, null,
|
|
25
25
|
React.createElement(AccountListBody, null,
|
|
26
26
|
React.createElement(Input, { value: searchText, placeholder: "Search", suffix: React.createElement(Icon, { type: "icon-ants-search-2" }), onAfterChange: value => handleSearch(value), debounce: 500 }),
|
|
27
27
|
(state === null || state === void 0 ? void 0 : state.type) === 'group' ? (React.createElement(React.Fragment, null,
|
|
28
|
-
React.createElement(Dropdown, { open: openGroup, getPopupContainer: () => document.getElementById('account-group-list') || document.body, overlayStyle: { position: 'initial' }, trigger: ['click'], dropdownRender: () => (
|
|
29
|
-
|
|
28
|
+
React.createElement(Dropdown, { open: openGroup, getPopupContainer: () => document.getElementById('account-group-list') || document.body, overlayStyle: { position: 'initial' }, trigger: ['click'], dropdownRender: () => (
|
|
29
|
+
// <AccountListContent>
|
|
30
|
+
React.createElement(Scrollbars, { style: {
|
|
31
|
+
width: '100%',
|
|
32
|
+
height: 160,
|
|
33
|
+
} }, listAccountGroupDisplay === null || listAccountGroupDisplay === void 0 ? void 0 : listAccountGroupDisplay.map((item, idx) => (React.createElement(CheckboxStyled, { key: item === null || item === void 0 ? void 0 : item[state === null || state === void 0 ? void 0 : state.groupIdKey], disabled: disabledAccount === null || disabledAccount === void 0 ? void 0 : disabledAccount.includes(item === null || item === void 0 ? void 0 : item[state === null || state === void 0 ? void 0 : state.groupIdKey]), defaultChecked: draftUsersSelected.includes(item === null || item === void 0 ? void 0 : item[state === null || state === void 0 ? void 0 : state.groupIdKey]), onChange: () => handleCheckbox(item === null || item === void 0 ? void 0 : item[state === null || state === void 0 ? void 0 : state.groupIdKey]) },
|
|
34
|
+
React.createElement(TextLabel, null, item === null || item === void 0 ? void 0 : item[state === null || state === void 0 ? void 0 : state.groupNameKey])))))
|
|
35
|
+
// </AccountListContent>
|
|
36
|
+
) },
|
|
30
37
|
React.createElement(AccountListTitleGroup, { onClick: () => setOpenGroup(!openGroup) },
|
|
31
38
|
React.createElement("div", null, "Account Group"),
|
|
32
39
|
React.createElement(Icon, { type: "icon-ants-expand-more", size: 20, style: {
|
|
@@ -234,7 +234,7 @@ export const ThumbnailCard = (props) => {
|
|
|
234
234
|
// Handlers
|
|
235
235
|
const handleRemoveThumbnail = e => {
|
|
236
236
|
e.stopPropagation();
|
|
237
|
-
modal.confirm(Object.assign(Object.assign({ title: 'Remove template', centered: true, icon: React.createElement(Icon, { type: "icon-ants-info", style: { fontSize: 16, lineHeight: '25px' } }), content: (React.createElement("div", null,
|
|
237
|
+
modal.confirm(Object.assign(Object.assign({ title: 'Remove template', centered: true, icon: (React.createElement(Icon, { type: "icon-ants-info", style: { fontSize: 16, lineHeight: '25px', marginRight: 13 } })), content: (React.createElement("div", null,
|
|
238
238
|
React.createElement("p", null, "Are you sure you want to remove the template?"),
|
|
239
239
|
React.createElement("p", null, "This action can not be undone."))), okText: 'Remove', cancelText: 'Cancel', closable: true }, restOfRemoveTemplateModalProps), { onOk: () => __awaiter(void 0, void 0, void 0, function* () {
|
|
240
240
|
if (onOk)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Tree } from 'antd';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Tree';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Tree';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { VirtualizedMenu } from './VirtualizedMenu';
|
|
2
|
-
export { VirtualizedMenuProps } from './types';
|
|
2
|
+
export type { VirtualizedMenuProps } from './types';
|
|
@@ -55,6 +55,7 @@ export * from './PreviewModal';
|
|
|
55
55
|
export * from './DrawerDetail';
|
|
56
56
|
export * from './ThumbnailCard';
|
|
57
57
|
export * from './ProcessLoading';
|
|
58
|
+
export * from './Tree';
|
|
58
59
|
export { EditorScript } from './EditorScript';
|
|
59
60
|
export { EditorTab } from './EditorTab';
|
|
60
61
|
export { SelectAccount } from './SelectAccount';
|
|
@@ -55,6 +55,7 @@ export * from './PreviewModal';
|
|
|
55
55
|
export * from './DrawerDetail';
|
|
56
56
|
export * from './ThumbnailCard';
|
|
57
57
|
export * from './ProcessLoading';
|
|
58
|
+
export * from './Tree';
|
|
58
59
|
export { EditorScript } from './EditorScript';
|
|
59
60
|
export { EditorTab } from './EditorTab';
|
|
60
61
|
export { SelectAccount } from './SelectAccount';
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { DataTableProps } from './types';
|
|
3
|
-
export declare function DataTable<TTableDataType>(props: DataTableProps<TTableDataType>): React.JSX.Element
|
|
3
|
+
export declare function DataTable<TTableDataType>(props: DataTableProps<TTableDataType>): React.JSX.Element;
|
|
4
|
+
export declare namespace DataTable {
|
|
5
|
+
var useDataTableStore: typeof import("./hooks/useDataTableStore").useDataTableStore;
|
|
6
|
+
}
|
|
@@ -1,6 +1,17 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
1
12
|
/* eslint-disable react/function-component-definition */
|
|
2
13
|
// Libraries
|
|
3
|
-
import React
|
|
14
|
+
import React from 'react';
|
|
4
15
|
// Hooks
|
|
5
16
|
import { useDataTable } from './hooks';
|
|
6
17
|
// Styled
|
|
@@ -11,23 +22,24 @@ import { Table, Pagination, Toolbar } from './components';
|
|
|
11
22
|
import { DataTableProvider } from './providers/DataTableProvider';
|
|
12
23
|
import { AntdTableConfigProvider } from './providers';
|
|
13
24
|
// Store
|
|
14
|
-
import {
|
|
25
|
+
import { useDataTableStore } from './hooks/useDataTableStore';
|
|
15
26
|
function DataTableComponent(props) {
|
|
16
27
|
// Hooks
|
|
17
28
|
const { pagination, setPagination } = useDataTable(props);
|
|
18
29
|
return (React.createElement(DataTableWrapper, null,
|
|
19
30
|
React.createElement(Toolbar, null),
|
|
20
31
|
React.createElement(Table, null),
|
|
21
|
-
React.createElement(Pagination, { id: "data-table-pagination",
|
|
32
|
+
React.createElement(Pagination, Object.assign({ id: "data-table-pagination" }, pagination, { onChange: payload => {
|
|
33
|
+
var _a;
|
|
34
|
+
setPagination(payload);
|
|
35
|
+
(_a = pagination.onChange) === null || _a === void 0 ? void 0 : _a.call(pagination, payload);
|
|
36
|
+
} }))));
|
|
22
37
|
}
|
|
23
38
|
export function DataTable(props) {
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
storeRef.current = createDataTableStore(props);
|
|
27
|
-
}
|
|
28
|
-
if (!storeRef.current)
|
|
29
|
-
return null;
|
|
39
|
+
const { store } = props, restOfProps = __rest(props, ["store"]);
|
|
40
|
+
const defaultStore = useDataTableStore(restOfProps);
|
|
30
41
|
return (React.createElement(AntdTableConfigProvider, null,
|
|
31
|
-
React.createElement(DataTableProvider, { store:
|
|
32
|
-
React.createElement(DataTableComponent, Object.assign({},
|
|
42
|
+
React.createElement(DataTableProvider, { store: store || defaultStore },
|
|
43
|
+
React.createElement(DataTableComponent, Object.assign({}, restOfProps)))));
|
|
33
44
|
}
|
|
45
|
+
DataTable.useDataTableStore = useDataTableStore;
|
|
@@ -1,30 +1,33 @@
|
|
|
1
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
-
var t = {};
|
|
3
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
-
t[p] = s[p];
|
|
5
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
-
t[p[i]] = s[p[i]];
|
|
9
|
-
}
|
|
10
|
-
return t;
|
|
11
|
-
};
|
|
12
1
|
// Libraries
|
|
13
2
|
import React, { memo } from 'react';
|
|
14
3
|
// Components
|
|
15
|
-
import {
|
|
4
|
+
import { Button, Popover } from '@antscorp/antsomi-ui/es/components/atoms';
|
|
5
|
+
import { FilterCondition } from './FilterCondition';
|
|
6
|
+
import { SavedFilterAndMetrics } from './SavedFilterAndMetrics';
|
|
7
|
+
// Hooks
|
|
8
|
+
import { useAddFilterCondition } from '../../hooks';
|
|
16
9
|
// Locales
|
|
17
10
|
import i18nInstance from '@antscorp/antsomi-ui/es/locales/i18n';
|
|
18
11
|
import { translations } from '@antscorp/antsomi-ui/es/locales/translations';
|
|
19
|
-
//
|
|
20
|
-
import {
|
|
21
|
-
|
|
22
|
-
export const AddFilterButton = memo(props => {
|
|
23
|
-
const restProps = __rest(props, []);
|
|
12
|
+
// Constants
|
|
13
|
+
import { EXCEPTION_OFF_FILTER_CLASS } from '../../constants/filter';
|
|
14
|
+
export const AddFilterButton = memo(() => {
|
|
24
15
|
const { t } = i18nInstance;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
16
|
+
const { openPopover, selectedFilterMetric, onSelectFilterMetric, onApplyFilterMetricCondition, onClickAddFilter, setState: setAddFilterConditionState, } = useAddFilterCondition();
|
|
17
|
+
return (React.createElement(Popover, { open: openPopover, content: React.createElement("div", { className: EXCEPTION_OFF_FILTER_CLASS }, selectedFilterMetric ? (React.createElement(FilterCondition, { filterMetric: selectedFilterMetric, onCancel: () => onSelectFilterMetric(undefined), onApply: ({ operator, value }) => {
|
|
18
|
+
onApplyFilterMetricCondition({
|
|
19
|
+
filterMetric: selectedFilterMetric,
|
|
20
|
+
operator,
|
|
21
|
+
value,
|
|
22
|
+
});
|
|
23
|
+
onSelectFilterMetric(undefined);
|
|
24
|
+
setAddFilterConditionState(prev => (Object.assign(Object.assign({}, prev), { openPopover: false })));
|
|
25
|
+
} })) : (React.createElement(SavedFilterAndMetrics, { onSelectFilterMetric: onSelectFilterMetric }))), trigger: ['click'], overlayInnerStyle: { width: 300, padding: 0 }, arrow: false, placement: "bottomLeft", destroyTooltipOnHide: true, onOpenChange: open => {
|
|
26
|
+
setAddFilterConditionState(prev => (Object.assign(Object.assign({}, prev), { openPopover: open })));
|
|
27
|
+
if (!open) {
|
|
28
|
+
/* Reset filter metric */
|
|
29
|
+
onSelectFilterMetric(undefined);
|
|
30
|
+
}
|
|
31
|
+
} },
|
|
32
|
+
React.createElement(Button, { type: "text", onClick: () => onClickAddFilter() }, t(translations.filter.addFilter).toString())));
|
|
30
33
|
});
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
// Libraries
|
|
11
|
+
import React, { memo, useState } from 'react';
|
|
12
|
+
// Components
|
|
13
|
+
import { Flex, Icon } from '@antscorp/antsomi-ui/es/components/atoms';
|
|
14
|
+
import { Modal } from '@antscorp/antsomi-ui/es/components/molecules';
|
|
15
|
+
// Utils
|
|
16
|
+
import { renderActionButtons } from '@antscorp/antsomi-ui/es/utils';
|
|
17
|
+
// Styled
|
|
18
|
+
import { ActionButton } from '../../styled';
|
|
19
|
+
import { EXCEPTION_OFF_FILTER_CLASS, FILTER_ACTION_OPTIONS } from '../../constants/filter';
|
|
20
|
+
// Context
|
|
21
|
+
import { useDataTableContext } from '../../contexts/DataTableContext';
|
|
22
|
+
import { SaveFilterPopover } from './SaveFilterPopover';
|
|
23
|
+
// Constants
|
|
24
|
+
import i18nInstance from '@antscorp/antsomi-ui/es/locales/i18n';
|
|
25
|
+
import { translations } from '@antscorp/antsomi-ui/es/locales/translations';
|
|
26
|
+
const { t } = i18nInstance;
|
|
27
|
+
export const FilterActionButton = memo(() => {
|
|
28
|
+
// Store
|
|
29
|
+
const actionButtons = useDataTableContext(store => store.filter.actionButtons);
|
|
30
|
+
const { filters, savedFilter, onSaveFilter = () => Promise.resolve(), } = useDataTableContext(store => store.filter);
|
|
31
|
+
const setFilter = useDataTableContext(store => store.setFilter);
|
|
32
|
+
// State
|
|
33
|
+
const [state, setState] = useState({
|
|
34
|
+
openSaveFilterPopover: false,
|
|
35
|
+
saveFilterLoading: false,
|
|
36
|
+
});
|
|
37
|
+
// Variables
|
|
38
|
+
const { saveFilterLoading, openSaveFilterPopover } = state;
|
|
39
|
+
// Hooks
|
|
40
|
+
const [modal, context] = Modal.useModal();
|
|
41
|
+
// Handlers
|
|
42
|
+
const handleClickActionButton = (key) => {
|
|
43
|
+
switch (key) {
|
|
44
|
+
case 'CLOSE':
|
|
45
|
+
setFilter({
|
|
46
|
+
isFilterActive: false,
|
|
47
|
+
});
|
|
48
|
+
break;
|
|
49
|
+
case 'RESET': {
|
|
50
|
+
setFilter({
|
|
51
|
+
filters: [],
|
|
52
|
+
});
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
default:
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
/* Handle render action buttons */
|
|
60
|
+
const renderComponent = ({ key, label, buttonProps, icon, customRender }, option) => {
|
|
61
|
+
const actionButton = (React.createElement(ActionButton, Object.assign({ key: key, type: "text" }, buttonProps, {
|
|
62
|
+
// Handle hide action button except close button when filter is active
|
|
63
|
+
onClick: e => {
|
|
64
|
+
if (buttonProps && buttonProps.onClick) {
|
|
65
|
+
buttonProps.onClick(e);
|
|
66
|
+
}
|
|
67
|
+
handleClickActionButton(key);
|
|
68
|
+
}, "$hide": key !== 'CLOSE' && !(filters === null || filters === void 0 ? void 0 : filters.length) }),
|
|
69
|
+
React.createElement(Flex, { align: "center", justify: "center", style: { height: 24, width: 24, flexShrink: 0 } },
|
|
70
|
+
React.createElement(Icon, { type: icon, size: (option === null || option === void 0 ? void 0 : option.iconSize) || 18 })),
|
|
71
|
+
`${label}`.toUpperCase()));
|
|
72
|
+
// If action has customer render props then return it not handle more
|
|
73
|
+
if (customRender) {
|
|
74
|
+
return actionButton;
|
|
75
|
+
}
|
|
76
|
+
switch (key) {
|
|
77
|
+
case 'SAVE': {
|
|
78
|
+
return (React.createElement(SaveFilterPopover, { open: openSaveFilterPopover, onApply: (name) => __awaiter(void 0, void 0, void 0, function* () {
|
|
79
|
+
var _a;
|
|
80
|
+
const existSavedFilter = (_a = savedFilter === null || savedFilter === void 0 ? void 0 : savedFilter.list) === null || _a === void 0 ? void 0 : _a.find(savedFilter => savedFilter.name.trim() === name);
|
|
81
|
+
if (existSavedFilter) {
|
|
82
|
+
modal.confirm({
|
|
83
|
+
title: t(translations.dataTableFilter.replaceFilterSet.title).toString(),
|
|
84
|
+
centered: true,
|
|
85
|
+
content: t(translations.dataTableFilter.replaceFilterSet.description, {
|
|
86
|
+
filterName: name,
|
|
87
|
+
}).toString(),
|
|
88
|
+
icon: React.createElement("div", null),
|
|
89
|
+
wrapClassName: EXCEPTION_OFF_FILTER_CLASS,
|
|
90
|
+
okText: t(translations.global.replace).toString(),
|
|
91
|
+
onOk: () => __awaiter(void 0, void 0, void 0, function* () {
|
|
92
|
+
return new Promise((resolve, reject) => {
|
|
93
|
+
onSaveFilter({
|
|
94
|
+
filters: filters || [],
|
|
95
|
+
name,
|
|
96
|
+
existSavedFilter,
|
|
97
|
+
})
|
|
98
|
+
.then(() => resolve(true))
|
|
99
|
+
.catch(() => reject());
|
|
100
|
+
});
|
|
101
|
+
}),
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
setState(prev => (Object.assign(Object.assign({}, prev), { saveFilterLoading: true })));
|
|
106
|
+
yield onSaveFilter({
|
|
107
|
+
filters: filters || [],
|
|
108
|
+
name,
|
|
109
|
+
});
|
|
110
|
+
setState(prev => (Object.assign(Object.assign({}, prev), { saveFilterLoading: false, openSaveFilterPopover: false })));
|
|
111
|
+
}
|
|
112
|
+
}), onCancel: () => setState(prev => (Object.assign(Object.assign({}, prev), { openSaveFilterPopover: false }))), loading: saveFilterLoading, onOpenChange: open => setState(prev => (Object.assign(Object.assign({}, prev), { openSaveFilterPopover: open }))) }, actionButton));
|
|
113
|
+
}
|
|
114
|
+
default:
|
|
115
|
+
return actionButton;
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
return (React.createElement(React.Fragment, null,
|
|
119
|
+
React.createElement(Flex, { align: "center", gap: 2 }, renderActionButtons({
|
|
120
|
+
renderComponent,
|
|
121
|
+
// CLOSE ACTION ALWAYS VISIBLE
|
|
122
|
+
actionButtons: Object.assign(Object.assign({}, actionButtons), { CLOSE: Object.assign({}, actionButtons === null || actionButtons === void 0 ? void 0 : actionButtons.CLOSE) }),
|
|
123
|
+
defaultActionOptions: FILTER_ACTION_OPTIONS,
|
|
124
|
+
})),
|
|
125
|
+
context));
|
|
126
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { FilterItem, FilterMetic } from '../../../types';
|
|
3
|
+
type TFormType = {
|
|
4
|
+
operator: string;
|
|
5
|
+
value: any;
|
|
6
|
+
};
|
|
7
|
+
interface FilterConditionProps {
|
|
8
|
+
filterMetric: FilterMetic;
|
|
9
|
+
filterCondition?: FilterItem;
|
|
10
|
+
onCancel?: () => void;
|
|
11
|
+
onApply?: (values: TFormType) => void;
|
|
12
|
+
}
|
|
13
|
+
export declare const FilterCondition: React.FC<FilterConditionProps>;
|
|
14
|
+
export {};
|