@pautena/react-design-system 0.7.5 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +4 -4
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/components/data-display/label/label.d.ts +6 -2
- package/dist/cjs/types/components/dialogs/bootstrap-dialog/bootstrap-dialog.d.ts +1 -1
- package/dist/cjs/types/components/dialogs/confirm-dialog/confirm-dialog.d.ts +2 -1
- package/dist/cjs/types/components/dialogs/dialog.types.d.ts +2 -0
- package/dist/cjs/types/components/navigation/index.d.ts +2 -1
- package/dist/cjs/types/components/navigation/tab-card/index.d.ts +2 -0
- package/dist/cjs/types/components/navigation/tab-card/tab-card-panel.d.ts +7 -0
- package/dist/cjs/types/components/navigation/tab-card/tab-card.context.d.ts +3 -0
- package/dist/cjs/types/components/navigation/tab-card/tab-card.d.ts +11 -0
- package/dist/cjs/types/components/navigation/tab-card/tab-card.dummy.d.ts +14 -0
- package/dist/esm/index.js +4 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/components/data-display/label/label.d.ts +6 -2
- package/dist/esm/types/components/dialogs/bootstrap-dialog/bootstrap-dialog.d.ts +1 -1
- package/dist/esm/types/components/dialogs/confirm-dialog/confirm-dialog.d.ts +2 -1
- package/dist/esm/types/components/dialogs/dialog.types.d.ts +2 -0
- package/dist/esm/types/components/navigation/index.d.ts +2 -1
- package/dist/esm/types/components/navigation/tab-card/index.d.ts +2 -0
- package/dist/esm/types/components/navigation/tab-card/tab-card-panel.d.ts +7 -0
- package/dist/esm/types/components/navigation/tab-card/tab-card.context.d.ts +3 -0
- package/dist/esm/types/components/navigation/tab-card/tab-card.d.ts +11 -0
- package/dist/esm/types/components/navigation/tab-card/tab-card.dummy.d.ts +14 -0
- package/dist/index.d.ts +29 -10
- package/package.json +1 -1
- package/src/components/data-display/header/header.stories.tsx +1 -1
- package/src/components/data-display/label/label.test.tsx +3 -3
- package/src/components/data-display/label/label.tsx +45 -17
- package/src/components/dialogs/bootstrap-dialog/bootstrap-dialog.test.tsx +34 -0
- package/src/components/dialogs/bootstrap-dialog/bootstrap-dialog.tsx +4 -2
- package/src/components/dialogs/confirm-dialog/confirm-dialog.stories.tsx +13 -1
- package/src/components/dialogs/confirm-dialog/confirm-dialog.test.tsx +35 -0
- package/src/components/dialogs/confirm-dialog/confirm-dialog.tsx +17 -1
- package/src/components/dialogs/dialog.types.ts +2 -0
- package/src/components/drawers/drawer-item/drawer-item.test.tsx +1 -2
- package/src/components/navigation/index.ts +2 -1
- package/src/components/navigation/tab-card/index.ts +2 -0
- package/src/components/navigation/tab-card/tab-card-panel.tsx +19 -0
- package/src/components/navigation/tab-card/tab-card.context.tsx +7 -0
- package/src/components/navigation/tab-card/tab-card.dummy.tsx +34 -0
- package/src/components/navigation/{tab/tab-card → tab-card}/tab-card.stories.tsx +2 -2
- package/src/components/navigation/tab-card/tab-card.test.tsx +74 -0
- package/src/components/navigation/tab-card/tab-card.tsx +81 -0
- package/src/components/navigation/{tab/tab-panel → tab-panel}/tab-panel.test.tsx +1 -1
- package/src/components/value-displays/value-rating/value-rating.tsx +1 -2
- package/src/generators/object-details/object-details.tsx +0 -2
- package/dist/cjs/types/components/navigation/tab/index.d.ts +0 -2
- package/dist/cjs/types/components/navigation/tab/tab-card/index.d.ts +0 -1
- package/dist/cjs/types/components/navigation/tab/tab-card/tab-card.d.ts +0 -5
- package/dist/cjs/types/components/navigation/tab/tab-card/tab-card.dummy.d.ts +0 -6
- package/dist/esm/types/components/navigation/tab/index.d.ts +0 -2
- package/dist/esm/types/components/navigation/tab/tab-card/index.d.ts +0 -1
- package/dist/esm/types/components/navigation/tab/tab-card/tab-card.d.ts +0 -5
- package/dist/esm/types/components/navigation/tab/tab-card/tab-card.dummy.d.ts +0 -6
- package/src/components/navigation/tab/index.ts +0 -2
- package/src/components/navigation/tab/tab-card/index.ts +0 -1
- package/src/components/navigation/tab/tab-card/tab-card.dummy.tsx +0 -30
- package/src/components/navigation/tab/tab-card/tab-card.test.tsx +0 -53
- package/src/components/navigation/tab/tab-card/tab-card.tsx +0 -27
- /package/dist/cjs/types/components/navigation/{tab/tab-panel → tab-panel}/index.d.ts +0 -0
- /package/dist/cjs/types/components/navigation/{tab/tab-panel → tab-panel}/tab-panel.d.ts +0 -0
- /package/dist/esm/types/components/navigation/{tab/tab-panel → tab-panel}/index.d.ts +0 -0
- /package/dist/esm/types/components/navigation/{tab/tab-panel → tab-panel}/tab-panel.d.ts +0 -0
- /package/src/components/navigation/{tab/tab-panel → tab-panel}/index.ts +0 -0
- /package/src/components/navigation/{tab/tab-panel → tab-panel}/tab-panel.tsx +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SxProps, Theme } from "@mui/material";
|
|
2
|
-
export type LabelVariant = "primary" | "secondary" | "default" | "info" | "warning" | "error";
|
|
2
|
+
export type LabelVariant = "primary" | "secondary" | "default" | "info" | "warning" | "error" | "success";
|
|
3
3
|
export declare const labelClasses: {
|
|
4
4
|
root: string;
|
|
5
5
|
};
|
|
@@ -16,8 +16,12 @@ export interface LabelProps {
|
|
|
16
16
|
* Custom styles
|
|
17
17
|
*/
|
|
18
18
|
sx?: SxProps<Theme>;
|
|
19
|
+
/**
|
|
20
|
+
* Show the text as uppercase
|
|
21
|
+
*/
|
|
22
|
+
textTransform?: "none" | "capitalize" | "uppercase";
|
|
19
23
|
}
|
|
20
24
|
/**
|
|
21
25
|
* Compact element to represent a text
|
|
22
26
|
*/
|
|
23
|
-
export declare const Label: ({ text, variant, sx }: LabelProps) => JSX.Element;
|
|
27
|
+
export declare const Label: ({ text, variant, textTransform, sx, }: LabelProps) => JSX.Element;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { BootstrapDialogDialogProps } from "../dialog.types";
|
|
2
|
-
export declare const BootstrapDialog: ({ open, title, component, componentProps, disabled, actions, children, loading, cancelable, callCloseWhenCancel, acceptable, acceptText, cancelText, onAccept, onCancel, onClose, acceptType, }: BootstrapDialogDialogProps) => JSX.Element;
|
|
2
|
+
export declare const BootstrapDialog: ({ open, title, component, componentProps, disabled, disableAccept, disableCancel, actions, children, loading, cancelable, callCloseWhenCancel, acceptable, acceptText, cancelText, onAccept, onCancel, onClose, acceptType, }: BootstrapDialogDialogProps) => JSX.Element;
|
|
@@ -3,8 +3,9 @@ type OmitBaseDialogProps = "cancelable" | "acceptable" | "onAccept" | "onCancel"
|
|
|
3
3
|
export interface ConfirmDialogProps extends Omit<BootstrapDialogDialogProps, OmitBaseDialogProps> {
|
|
4
4
|
confirmText?: string;
|
|
5
5
|
canceText?: string;
|
|
6
|
+
passphrase?: string;
|
|
6
7
|
onCancel: () => void;
|
|
7
8
|
onConfirm: () => void;
|
|
8
9
|
}
|
|
9
|
-
export declare const ConfirmDialog: ({ open, title, loading, disabled, confirmText, cancelText, children, onConfirm, onCancel, }: ConfirmDialogProps) => JSX.Element;
|
|
10
|
+
export declare const ConfirmDialog: ({ open, title, loading, disabled, confirmText, cancelText, passphrase, children, onConfirm, onCancel, }: ConfirmDialogProps) => JSX.Element;
|
|
10
11
|
export {};
|
|
@@ -11,6 +11,8 @@ export type BootstrapDialogDialogProps = PropsWithChildren<{
|
|
|
11
11
|
title: string;
|
|
12
12
|
loading?: boolean;
|
|
13
13
|
disabled?: boolean;
|
|
14
|
+
disableAccept?: boolean;
|
|
15
|
+
disableCancel?: boolean;
|
|
14
16
|
cancelable?: boolean;
|
|
15
17
|
acceptable?: boolean;
|
|
16
18
|
callCloseWhenCancel?: boolean;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export * from "./tab";
|
|
1
|
+
export * from "./tab-card";
|
|
2
|
+
export * from "./tab-panel";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { PropsWithChildren } from "react";
|
|
2
|
+
import { SxProps, Theme } from "@mui/material";
|
|
3
|
+
export type TabCardPanelProps = PropsWithChildren<{
|
|
4
|
+
index: number | number[];
|
|
5
|
+
sx?: SxProps<Theme>;
|
|
6
|
+
}>;
|
|
7
|
+
export declare const TabCardPanel: ({ index, children, sx }: TabCardPanelProps) => JSX.Element | null;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { PropsWithChildren, ReactElement } from "react";
|
|
2
|
+
export interface TabData {
|
|
3
|
+
text: string;
|
|
4
|
+
icon?: ReactElement;
|
|
5
|
+
}
|
|
6
|
+
export type TabCardProps = PropsWithChildren<{
|
|
7
|
+
tabs: TabData[];
|
|
8
|
+
initialTab?: number;
|
|
9
|
+
onChangeTab?: (tab: TabData, index: number) => void;
|
|
10
|
+
}>;
|
|
11
|
+
export declare const TabCard: ({ children, tabs, initialTab, onChangeTab, }: TabCardProps) => JSX.Element;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { TabData } from "./tab-card";
|
|
2
|
+
export declare const DummyTabs: ({
|
|
3
|
+
text: string;
|
|
4
|
+
icon?: undefined;
|
|
5
|
+
} | {
|
|
6
|
+
text: string;
|
|
7
|
+
icon: JSX.Element;
|
|
8
|
+
})[];
|
|
9
|
+
export interface TabCardDummyProps {
|
|
10
|
+
tabs: TabData[];
|
|
11
|
+
initialTab: number;
|
|
12
|
+
onChangeTab: (tab: TabData, index: number) => void;
|
|
13
|
+
}
|
|
14
|
+
export declare function TabCardDummy({ tabs, initialTab, onChangeTab }: TabCardDummyProps): JSX.Element;
|
package/dist/index.d.ts
CHANGED
|
@@ -196,7 +196,7 @@ interface BulletProps {
|
|
|
196
196
|
*/
|
|
197
197
|
declare const Bullet: ({ variant, sx }: BulletProps) => JSX.Element;
|
|
198
198
|
|
|
199
|
-
type LabelVariant = "primary" | "secondary" | "default" | "info" | "warning" | "error";
|
|
199
|
+
type LabelVariant = "primary" | "secondary" | "default" | "info" | "warning" | "error" | "success";
|
|
200
200
|
declare const labelClasses: {
|
|
201
201
|
root: string;
|
|
202
202
|
};
|
|
@@ -213,11 +213,15 @@ interface LabelProps {
|
|
|
213
213
|
* Custom styles
|
|
214
214
|
*/
|
|
215
215
|
sx?: SxProps<Theme>;
|
|
216
|
+
/**
|
|
217
|
+
* Show the text as uppercase
|
|
218
|
+
*/
|
|
219
|
+
textTransform?: "none" | "capitalize" | "uppercase";
|
|
216
220
|
}
|
|
217
221
|
/**
|
|
218
222
|
* Compact element to represent a text
|
|
219
223
|
*/
|
|
220
|
-
declare const Label: ({ text, variant, sx }: LabelProps) => JSX.Element;
|
|
224
|
+
declare const Label: ({ text, variant, textTransform, sx, }: LabelProps) => JSX.Element;
|
|
221
225
|
|
|
222
226
|
type HeaderPreset = PropTypes.Color | "transparent";
|
|
223
227
|
type HeaderActionVariant = "text" | "outlined" | "contained";
|
|
@@ -511,17 +515,29 @@ type TextFieldProps = TextFieldProps$1 & {
|
|
|
511
515
|
};
|
|
512
516
|
declare const TextField: ({ id: overrideId, label, InputLabelProps, InputProps, fetching, loading, helperText, hexColor, size, fullWidth, sx, ...rest }: TextFieldProps) => JSX.Element;
|
|
513
517
|
|
|
518
|
+
interface TabData {
|
|
519
|
+
text: string;
|
|
520
|
+
icon?: ReactElement;
|
|
521
|
+
}
|
|
522
|
+
type TabCardProps = PropsWithChildren<{
|
|
523
|
+
tabs: TabData[];
|
|
524
|
+
initialTab?: number;
|
|
525
|
+
onChangeTab?: (tab: TabData, index: number) => void;
|
|
526
|
+
}>;
|
|
527
|
+
declare const TabCard: ({ children, tabs, initialTab, onChangeTab, }: TabCardProps) => JSX.Element;
|
|
528
|
+
|
|
529
|
+
type TabCardPanelProps = PropsWithChildren<{
|
|
530
|
+
index: number | number[];
|
|
531
|
+
sx?: SxProps<Theme>;
|
|
532
|
+
}>;
|
|
533
|
+
declare const TabCardPanel: ({ index, children, sx }: TabCardPanelProps) => JSX.Element | null;
|
|
534
|
+
|
|
514
535
|
interface TabPanelProps {
|
|
515
536
|
children?: React__default.ReactNode;
|
|
516
537
|
index: number | number[];
|
|
517
538
|
}
|
|
518
539
|
declare function TabPanel({ children, index }: TabPanelProps): JSX.Element;
|
|
519
540
|
|
|
520
|
-
type TabCardProps = PropsWithChildren<{
|
|
521
|
-
tabs: string[];
|
|
522
|
-
}>;
|
|
523
|
-
declare const TabCard: ({ children, tabs }: TabCardProps) => JSX.Element;
|
|
524
|
-
|
|
525
541
|
type Order = "asc" | "desc";
|
|
526
542
|
interface HeadCell<T> {
|
|
527
543
|
disablePadding: boolean;
|
|
@@ -634,6 +650,8 @@ type BootstrapDialogDialogProps = PropsWithChildren<{
|
|
|
634
650
|
title: string;
|
|
635
651
|
loading?: boolean;
|
|
636
652
|
disabled?: boolean;
|
|
653
|
+
disableAccept?: boolean;
|
|
654
|
+
disableCancel?: boolean;
|
|
637
655
|
cancelable?: boolean;
|
|
638
656
|
acceptable?: boolean;
|
|
639
657
|
callCloseWhenCancel?: boolean;
|
|
@@ -652,10 +670,11 @@ type OmitBaseDialogProps$1 = "cancelable" | "acceptable" | "onAccept" | "onCance
|
|
|
652
670
|
interface ConfirmDialogProps extends Omit<BootstrapDialogDialogProps, OmitBaseDialogProps$1> {
|
|
653
671
|
confirmText?: string;
|
|
654
672
|
canceText?: string;
|
|
673
|
+
passphrase?: string;
|
|
655
674
|
onCancel: () => void;
|
|
656
675
|
onConfirm: () => void;
|
|
657
676
|
}
|
|
658
|
-
declare const ConfirmDialog: ({ open, title, loading, disabled, confirmText, cancelText, children, onConfirm, onCancel, }: ConfirmDialogProps) => JSX.Element;
|
|
677
|
+
declare const ConfirmDialog: ({ open, title, loading, disabled, confirmText, cancelText, passphrase, children, onConfirm, onCancel, }: ConfirmDialogProps) => JSX.Element;
|
|
659
678
|
|
|
660
679
|
type OmitBaseDialogProps = "cancelable" | "acceptable" | "onAccept" | "onCancel" | "onClose" | "actions" | "callCloseWhenCancel" | "component" | "acceptType";
|
|
661
680
|
interface FormDialogProps<T> extends Omit<BootstrapDialogDialogProps, OmitBaseDialogProps> {
|
|
@@ -666,7 +685,7 @@ interface FormDialogProps<T> extends Omit<BootstrapDialogDialogProps, OmitBaseDi
|
|
|
666
685
|
}
|
|
667
686
|
declare const FormDialog: <T>({ open, title, loading, disabled, submitText, cancelText, children, onSubmit, onCancel, }: FormDialogProps<T>) => JSX.Element;
|
|
668
687
|
|
|
669
|
-
declare const BootstrapDialog: ({ open, title, component, componentProps, disabled, actions, children, loading, cancelable, callCloseWhenCancel, acceptable, acceptText, cancelText, onAccept, onCancel, onClose, acceptType, }: BootstrapDialogDialogProps) => JSX.Element;
|
|
688
|
+
declare const BootstrapDialog: ({ open, title, component, componentProps, disabled, disableAccept, disableCancel, actions, children, loading, cancelable, callCloseWhenCancel, acceptable, acceptText, cancelText, onAccept, onCancel, onClose, acceptType, }: BootstrapDialogDialogProps) => JSX.Element;
|
|
670
689
|
|
|
671
690
|
declare const useDialog: (intialOpen?: boolean) => {
|
|
672
691
|
isOpen: boolean;
|
|
@@ -1001,4 +1020,4 @@ type TabProviderProps = PropsWithChildren<{
|
|
|
1001
1020
|
}>;
|
|
1002
1021
|
declare const TabProvider: ({ children, initialValue }: TabProviderProps) => JSX.Element;
|
|
1003
1022
|
|
|
1004
|
-
export { ArrayFieldType, ArrayGroupField, ArrayInstanceType, Autocomplete, AutocompleteProps, BaseFieldType, BaseValueProps, BasicModelInstance, Board, BoardProps, BootstrapDialog, BootstrapDialogDialogProps, Bullet, BulletProps, BulletVariant, CenterContainer, CenterContainerProps, ConfirmDialog, ConfirmDialogProps, Content, ContentComponent, ContentElement, ContentPlaceholder, ContentPlaceholderProps, ContentProps, DefaultPlaceholder, DialogAction, Drawer, DrawerAppBar, DrawerAppBarComponent, DrawerAppBarElement, DrawerAppBarProps, DrawerComponent, DrawerContent, DrawerContentComponent, DrawerContentElement, DrawerContentProps, DrawerContext, DrawerContextProps, DrawerElement, DrawerHeader, DrawerItemAvatar, DrawerItemBullet, DrawerItemLabel, DrawerLayout, DrawerLayoutProps, DrawerMain, DrawerMainProps, DrawerNavigation, DrawerNavigationItem, DrawerNavigationItemCollapsable, DrawerNavigationItemLink, DrawerNavigationSection, DrawerProps, DrawerProvider, DrawerProviderProps, DrawerSection, DrawerSectionProps, DrawerSize, DrawerState, DrawerSubheader, DrawerSubheaderProps, DrawerVariant, EditInputType, EditableValueProps, EnhancedRemoteTable, EnhancedRemoteTableProps, EnhancedTable, EnhancedTableHead, ExpandableAlert, ExpandableAlertProps, FieldType, FormDialog, FormDialogProps, GroupField, GroupInstanceType, GroupValueCard, GroupValueCardProps, HeadCell, Header, HeaderAction, HeaderActionVariant, HeaderBreadcrumb, HeaderComponent, HeaderElement, HeaderLayout, HeaderLayoutError, HeaderLayoutProps, HeaderNavigationButton, HeaderPreset, HeaderProps, HeaderTab, IdleRequest, Label, LabelProps, LabelVariant, LoadingArea, LoadingRequest, LoremIpsumPlaceholder, LoremIpsumPlaceholderProps, Markdown, MarkdownProps, Model, ModelField, ModelFieldTypes, ModelForm, ModelFormProps, ModelRouter, ModelRouterProps, Notification, NotificationCenterContext, NotificationCenterProps, NotificationCenterProvider, NotificationCenterProviderProps, NotificationCenterProviderUndefinedError, NotifyWhenValueChangesOptions, ObjectDetails, ObjectDetailsProps, Order, Placeholder, PlaceholderAction, PlaceholderIcon, PlaceholderIconArgs, PlaceholderProps, QueryContainer, QueryContainerError, QueryContainerProps, QueryContainerSuccess, RequestState, Select, SelectProps, SelectSize, SignIn, SignInProps, SingleFieldType, SkeletonCard, SkeletonCardProps, SkeletonGrid, SkeletonGridProps, SuccessRequest, TabCard, TabCardProps, TabContext, TabContextProvider, TabPanel, TabProvider, TableList, TableListProps, TableRowOption, TextField, TextFieldProps, UndefinedProvider, ValueBoolean, ValueBooleanProps, ValueCard, ValueCardProps, ValueDatetime, ValueDatetimeProps, ValueEditButton, ValueEditButtonProps, ValueEditButtons, ValueEditButtonsProps, ValueItem, ValueItemComponent, ValueItemElement, ValueItemProps, ValueRating, ValueRatingProps, ValueText, ValueTextProps, bulletClasses, getDrawerItemColors, getFormData, getRandomItem, labelClasses, markdownDefaultOptions, newArrayWithSize, newBreakpointsCounter, newInstanceFromValuesOrZeroValue, useDialog, useDrawer, useEditableValueDisplay, useGetDefaultThemeColor, useNotificationCenter, useNotifyWhenValueChanges, useTab, valueItemClasses };
|
|
1023
|
+
export { ArrayFieldType, ArrayGroupField, ArrayInstanceType, Autocomplete, AutocompleteProps, BaseFieldType, BaseValueProps, BasicModelInstance, Board, BoardProps, BootstrapDialog, BootstrapDialogDialogProps, Bullet, BulletProps, BulletVariant, CenterContainer, CenterContainerProps, ConfirmDialog, ConfirmDialogProps, Content, ContentComponent, ContentElement, ContentPlaceholder, ContentPlaceholderProps, ContentProps, DefaultPlaceholder, DialogAction, Drawer, DrawerAppBar, DrawerAppBarComponent, DrawerAppBarElement, DrawerAppBarProps, DrawerComponent, DrawerContent, DrawerContentComponent, DrawerContentElement, DrawerContentProps, DrawerContext, DrawerContextProps, DrawerElement, DrawerHeader, DrawerItemAvatar, DrawerItemBullet, DrawerItemLabel, DrawerLayout, DrawerLayoutProps, DrawerMain, DrawerMainProps, DrawerNavigation, DrawerNavigationItem, DrawerNavigationItemCollapsable, DrawerNavigationItemLink, DrawerNavigationSection, DrawerProps, DrawerProvider, DrawerProviderProps, DrawerSection, DrawerSectionProps, DrawerSize, DrawerState, DrawerSubheader, DrawerSubheaderProps, DrawerVariant, EditInputType, EditableValueProps, EnhancedRemoteTable, EnhancedRemoteTableProps, EnhancedTable, EnhancedTableHead, ExpandableAlert, ExpandableAlertProps, FieldType, FormDialog, FormDialogProps, GroupField, GroupInstanceType, GroupValueCard, GroupValueCardProps, HeadCell, Header, HeaderAction, HeaderActionVariant, HeaderBreadcrumb, HeaderComponent, HeaderElement, HeaderLayout, HeaderLayoutError, HeaderLayoutProps, HeaderNavigationButton, HeaderPreset, HeaderProps, HeaderTab, IdleRequest, Label, LabelProps, LabelVariant, LoadingArea, LoadingRequest, LoremIpsumPlaceholder, LoremIpsumPlaceholderProps, Markdown, MarkdownProps, Model, ModelField, ModelFieldTypes, ModelForm, ModelFormProps, ModelRouter, ModelRouterProps, Notification, NotificationCenterContext, NotificationCenterProps, NotificationCenterProvider, NotificationCenterProviderProps, NotificationCenterProviderUndefinedError, NotifyWhenValueChangesOptions, ObjectDetails, ObjectDetailsProps, Order, Placeholder, PlaceholderAction, PlaceholderIcon, PlaceholderIconArgs, PlaceholderProps, QueryContainer, QueryContainerError, QueryContainerProps, QueryContainerSuccess, RequestState, Select, SelectProps, SelectSize, SignIn, SignInProps, SingleFieldType, SkeletonCard, SkeletonCardProps, SkeletonGrid, SkeletonGridProps, SuccessRequest, TabCard, TabCardPanel, TabCardPanelProps, TabCardProps, TabContext, TabContextProvider, TabData, TabPanel, TabProvider, TableList, TableListProps, TableRowOption, TextField, TextFieldProps, UndefinedProvider, ValueBoolean, ValueBooleanProps, ValueCard, ValueCardProps, ValueDatetime, ValueDatetimeProps, ValueEditButton, ValueEditButtonProps, ValueEditButtons, ValueEditButtonsProps, ValueItem, ValueItemComponent, ValueItemElement, ValueItemProps, ValueRating, ValueRatingProps, ValueText, ValueTextProps, bulletClasses, getDrawerItemColors, getFormData, getRandomItem, labelClasses, markdownDefaultOptions, newArrayWithSize, newBreakpointsCounter, newInstanceFromValuesOrZeroValue, useDialog, useDrawer, useEditableValueDisplay, useGetDefaultThemeColor, useNotificationCenter, useNotifyWhenValueChanges, useTab, valueItemClasses };
|
package/package.json
CHANGED
|
@@ -7,7 +7,7 @@ import React from "react";
|
|
|
7
7
|
import { TabProvider } from "~/providers";
|
|
8
8
|
import { Content } from "~/components/containers";
|
|
9
9
|
import { Box, Typography } from "@mui/material";
|
|
10
|
-
import { TabPanel } from "~/components/navigation/tab
|
|
10
|
+
import { TabPanel } from "~/components/navigation/tab-panel";
|
|
11
11
|
import { Route, Routes, useLocation } from "react-router-dom";
|
|
12
12
|
|
|
13
13
|
export default {
|
|
@@ -10,13 +10,13 @@ describe("Label", () => {
|
|
|
10
10
|
it("renders the label text", () => {
|
|
11
11
|
renderComponent();
|
|
12
12
|
|
|
13
|
-
expect(screen.getByText("
|
|
13
|
+
expect(screen.getByText("lorem ipsum")).toBeInTheDocument();
|
|
14
14
|
});
|
|
15
15
|
|
|
16
16
|
it("renders as default without a variant", () => {
|
|
17
17
|
renderComponent(undefined);
|
|
18
18
|
|
|
19
|
-
expect(screen.getByRole("label")).
|
|
19
|
+
expect(screen.getByRole("label", { name: /default/i })).toBeVisible();
|
|
20
20
|
});
|
|
21
21
|
|
|
22
22
|
it.each([["primary"], ["secondary"], ["default"], ["info"], ["warning"], ["error"]])(
|
|
@@ -24,7 +24,7 @@ describe("Label", () => {
|
|
|
24
24
|
(variant: string) => {
|
|
25
25
|
renderComponent(variant as LabelVariant);
|
|
26
26
|
|
|
27
|
-
expect(screen.getByRole("label")).
|
|
27
|
+
expect(screen.getByRole("label", { name: `lorem ipsum ${variant} label` })).toBeVisible();
|
|
28
28
|
},
|
|
29
29
|
);
|
|
30
30
|
});
|
|
@@ -1,7 +1,14 @@
|
|
|
1
|
-
import { Box, SxProps, Theme,
|
|
1
|
+
import { Box, SxProps, Theme, useTheme } from "@mui/material";
|
|
2
2
|
import React from "react";
|
|
3
3
|
|
|
4
|
-
export type LabelVariant =
|
|
4
|
+
export type LabelVariant =
|
|
5
|
+
| "primary"
|
|
6
|
+
| "secondary"
|
|
7
|
+
| "default"
|
|
8
|
+
| "info"
|
|
9
|
+
| "warning"
|
|
10
|
+
| "error"
|
|
11
|
+
| "success";
|
|
5
12
|
|
|
6
13
|
export const labelClasses = {
|
|
7
14
|
root: "RdsLabel-root",
|
|
@@ -21,21 +28,32 @@ export interface LabelProps {
|
|
|
21
28
|
* Custom styles
|
|
22
29
|
*/
|
|
23
30
|
sx?: SxProps<Theme>;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Show the text as uppercase
|
|
34
|
+
*/
|
|
35
|
+
textTransform?: "none" | "capitalize" | "uppercase";
|
|
24
36
|
}
|
|
25
37
|
|
|
26
38
|
/**
|
|
27
39
|
* Compact element to represent a text
|
|
28
40
|
*/
|
|
29
|
-
export const Label = ({
|
|
30
|
-
|
|
41
|
+
export const Label = ({
|
|
42
|
+
text,
|
|
43
|
+
variant = "default",
|
|
44
|
+
textTransform = "capitalize",
|
|
45
|
+
sx,
|
|
46
|
+
}: LabelProps) => {
|
|
47
|
+
const { palette, typography } = useTheme();
|
|
31
48
|
|
|
32
49
|
const backgroundColor: Record<LabelVariant, string> = {
|
|
33
50
|
default: palette.mode === "light" ? palette.grey[100] : palette.grey[900],
|
|
34
|
-
primary: palette.primary.
|
|
35
|
-
secondary: palette.secondary.
|
|
36
|
-
info: palette.info.
|
|
37
|
-
warning: palette.warning.
|
|
38
|
-
error: palette.error.
|
|
51
|
+
primary: palette.primary.light,
|
|
52
|
+
secondary: palette.secondary.light,
|
|
53
|
+
info: palette.info.light,
|
|
54
|
+
warning: palette.warning.light,
|
|
55
|
+
error: palette.error.light,
|
|
56
|
+
success: palette.success.light,
|
|
39
57
|
};
|
|
40
58
|
|
|
41
59
|
const textColor: Record<LabelVariant, string> = {
|
|
@@ -45,21 +63,31 @@ export const Label = ({ text, variant = "default", sx }: LabelProps) => {
|
|
|
45
63
|
info: palette.info.contrastText,
|
|
46
64
|
warning: palette.warning.contrastText,
|
|
47
65
|
error: palette.error.contrastText,
|
|
66
|
+
success: palette.success.contrastText,
|
|
48
67
|
};
|
|
49
68
|
|
|
50
69
|
return (
|
|
51
70
|
<Box
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
71
|
+
height={24}
|
|
72
|
+
minWidth={22}
|
|
73
|
+
display="inline-flex"
|
|
74
|
+
justifyContent="center"
|
|
75
|
+
alignItems="center"
|
|
76
|
+
bgcolor={backgroundColor[variant]}
|
|
55
77
|
color={textColor[variant]}
|
|
56
|
-
|
|
78
|
+
fontSize={typography.caption.fontSize}
|
|
79
|
+
fontWeight={typography.fontWeightBold}
|
|
80
|
+
lineHeight={0}
|
|
81
|
+
textTransform={textTransform}
|
|
82
|
+
whiteSpace="nowrap"
|
|
83
|
+
borderRadius={2}
|
|
57
84
|
role="label"
|
|
58
|
-
aria-
|
|
85
|
+
aria-label={`${text} ${variant} label`}
|
|
86
|
+
py={0}
|
|
87
|
+
px={1}
|
|
88
|
+
sx={{ cursor: "default", ...sx }}
|
|
59
89
|
>
|
|
60
|
-
|
|
61
|
-
{text.toUpperCase()}
|
|
62
|
-
</Typography>
|
|
90
|
+
{text}
|
|
63
91
|
</Box>
|
|
64
92
|
);
|
|
65
93
|
};
|
|
@@ -9,6 +9,8 @@ import { vi } from "vitest";
|
|
|
9
9
|
interface DialogRenderArgs {
|
|
10
10
|
open: boolean;
|
|
11
11
|
disabled?: boolean;
|
|
12
|
+
disableCancel?: boolean;
|
|
13
|
+
disableAccept?: boolean;
|
|
12
14
|
cancelable?: boolean;
|
|
13
15
|
acceptable?: boolean;
|
|
14
16
|
callCloseWhenCancel?: boolean;
|
|
@@ -41,6 +43,8 @@ describe("BootstrapDialog", () => {
|
|
|
41
43
|
const renderComponent = ({
|
|
42
44
|
open,
|
|
43
45
|
disabled,
|
|
46
|
+
disableCancel,
|
|
47
|
+
disableAccept,
|
|
44
48
|
cancelable,
|
|
45
49
|
acceptable,
|
|
46
50
|
callCloseWhenCancel,
|
|
@@ -57,6 +61,8 @@ describe("BootstrapDialog", () => {
|
|
|
57
61
|
<BootstrapDialog
|
|
58
62
|
open={open}
|
|
59
63
|
disabled={disabled}
|
|
64
|
+
disableAccept={disableAccept}
|
|
65
|
+
disableCancel={disableCancel}
|
|
60
66
|
cancelable={cancelable}
|
|
61
67
|
acceptable={acceptable}
|
|
62
68
|
callCloseWhenCancel={callCloseWhenCancel}
|
|
@@ -136,6 +142,34 @@ describe("BootstrapDialog", () => {
|
|
|
136
142
|
});
|
|
137
143
|
});
|
|
138
144
|
|
|
145
|
+
describe("disableCancel", () => {
|
|
146
|
+
it("should have the Cancel button as disabled if is true", () => {
|
|
147
|
+
renderComponent({ open: true, disableCancel: true, cancelable: true });
|
|
148
|
+
|
|
149
|
+
expect(screen.getByRole("button", { name: /cancel/i })).toBeDisabled();
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
it("should not have the Cancel button as disabled if is false", () => {
|
|
153
|
+
renderComponent({ open: true, disableCancel: false, cancelable: true });
|
|
154
|
+
|
|
155
|
+
expect(screen.getByRole("button", { name: /cancel/i })).not.toBeDisabled();
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
describe("disableAccept", () => {
|
|
160
|
+
it("should have the Cancel button as disabled if is true", () => {
|
|
161
|
+
renderComponent({ open: true, disableAccept: true, acceptable: true });
|
|
162
|
+
|
|
163
|
+
expect(screen.getByRole("button", { name: /accept/i })).toBeDisabled();
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
it("should not have the Cancel button as disabled if is false", () => {
|
|
167
|
+
renderComponent({ open: true, disableAccept: false, acceptable: true });
|
|
168
|
+
|
|
169
|
+
expect(screen.getByRole("button", { name: /accept/i })).not.toBeDisabled();
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
|
|
139
173
|
it("should be able to change the cancel button text", () => {
|
|
140
174
|
renderComponent({ open: true, cancelable: true, cancelText: "updated cancel" });
|
|
141
175
|
|
|
@@ -19,6 +19,8 @@ export const BootstrapDialog = ({
|
|
|
19
19
|
component,
|
|
20
20
|
componentProps = {},
|
|
21
21
|
disabled,
|
|
22
|
+
disableAccept,
|
|
23
|
+
disableCancel,
|
|
22
24
|
actions = [],
|
|
23
25
|
children,
|
|
24
26
|
loading,
|
|
@@ -67,7 +69,7 @@ export const BootstrapDialog = ({
|
|
|
67
69
|
{cancelable && (
|
|
68
70
|
<Button
|
|
69
71
|
color="error"
|
|
70
|
-
disabled={disabled}
|
|
72
|
+
disabled={disabled || disableCancel}
|
|
71
73
|
onClick={() => {
|
|
72
74
|
onCancel();
|
|
73
75
|
callCloseWhenCancel && onClose();
|
|
@@ -81,7 +83,7 @@ export const BootstrapDialog = ({
|
|
|
81
83
|
<LoadingButton
|
|
82
84
|
type={acceptType}
|
|
83
85
|
loading={loading}
|
|
84
|
-
disabled={disabled}
|
|
86
|
+
disabled={disabled || disableAccept}
|
|
85
87
|
onClick={onAccept}
|
|
86
88
|
>
|
|
87
89
|
{acceptText}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DialogContentText } from "@mui/material";
|
|
2
|
-
import { Meta,
|
|
2
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
3
3
|
import { loremIpsum } from "lorem-ipsum";
|
|
4
4
|
import React from "react";
|
|
5
5
|
import { StoryDialogManager } from "~/storybook";
|
|
@@ -44,3 +44,15 @@ export const CustomButtonText: Story = {
|
|
|
44
44
|
cancelText: "Don't create a token",
|
|
45
45
|
},
|
|
46
46
|
};
|
|
47
|
+
|
|
48
|
+
export const Passphrase: Story = {
|
|
49
|
+
args: {
|
|
50
|
+
title: "Lorem ipsum",
|
|
51
|
+
children: (
|
|
52
|
+
<DialogContentText sx={{ mb: 1 }}>
|
|
53
|
+
Write the passphrase to confirm your action
|
|
54
|
+
</DialogContentText>
|
|
55
|
+
),
|
|
56
|
+
passphrase: "delete permanently",
|
|
57
|
+
},
|
|
58
|
+
};
|
|
@@ -12,6 +12,7 @@ interface DialogRenderArgs {
|
|
|
12
12
|
cancelText?: string;
|
|
13
13
|
loading?: boolean;
|
|
14
14
|
content?: string | string[];
|
|
15
|
+
passphrase?: string;
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
describe("ConfirmDialog", () => {
|
|
@@ -21,6 +22,7 @@ describe("ConfirmDialog", () => {
|
|
|
21
22
|
confirmText,
|
|
22
23
|
cancelText,
|
|
23
24
|
loading,
|
|
25
|
+
passphrase,
|
|
24
26
|
}: DialogRenderArgs) => {
|
|
25
27
|
const onCancel = vi.fn();
|
|
26
28
|
const onConfirm = vi.fn();
|
|
@@ -30,6 +32,7 @@ describe("ConfirmDialog", () => {
|
|
|
30
32
|
open={open}
|
|
31
33
|
disabled={disabled}
|
|
32
34
|
loading={loading}
|
|
35
|
+
passphrase={passphrase}
|
|
33
36
|
title="lorem ipsum"
|
|
34
37
|
onCancel={onCancel}
|
|
35
38
|
onConfirm={onConfirm}
|
|
@@ -148,4 +151,36 @@ describe("ConfirmDialog", () => {
|
|
|
148
151
|
expect(screen.getByRole("button", { name: /confirm/i })).toBeDisabled();
|
|
149
152
|
});
|
|
150
153
|
});
|
|
154
|
+
|
|
155
|
+
describe("passphrase", () => {
|
|
156
|
+
it("should render an input to enter a passphrase", () => {
|
|
157
|
+
renderComponent({ open: true, passphrase: "delete permanently" });
|
|
158
|
+
|
|
159
|
+
const input = screen.getByRole("textbox");
|
|
160
|
+
expect(input).toBeVisible();
|
|
161
|
+
expect(input).toHaveAttribute("placeholder", "delete permanently");
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
it("should have the confirm button disabled by default", () => {
|
|
165
|
+
renderComponent({ open: true, passphrase: "delete permanently" });
|
|
166
|
+
|
|
167
|
+
expect(screen.getByRole("button", { name: /confirm/i })).toBeDisabled();
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
it("should have the confirm button disabled if the user writes a non valid passphrase", async () => {
|
|
171
|
+
renderComponent({ open: true, passphrase: "delete permanently" });
|
|
172
|
+
|
|
173
|
+
await userEvent.type(screen.getByRole("textbox"), "invalid passphrase");
|
|
174
|
+
|
|
175
|
+
expect(screen.getByRole("button", { name: /confirm/i })).toBeDisabled();
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
it("should have the confirm button enabled if the user writes a valid passphrase", async () => {
|
|
179
|
+
renderComponent({ open: true, passphrase: "delete permanently" });
|
|
180
|
+
|
|
181
|
+
await userEvent.type(screen.getByRole("textbox"), "delete permanently");
|
|
182
|
+
|
|
183
|
+
expect(screen.getByRole("button", { name: /confirm/i })).not.toBeDisabled();
|
|
184
|
+
});
|
|
185
|
+
});
|
|
151
186
|
});
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import React from "react";
|
|
1
|
+
import React, { useState } from "react";
|
|
2
2
|
import { BootstrapDialog } from "../bootstrap-dialog";
|
|
3
3
|
import { BootstrapDialogDialogProps } from "../dialog.types";
|
|
4
|
+
import { TextField } from "@mui/material";
|
|
4
5
|
|
|
5
6
|
type OmitBaseDialogProps =
|
|
6
7
|
| "cancelable"
|
|
@@ -15,6 +16,7 @@ type OmitBaseDialogProps =
|
|
|
15
16
|
export interface ConfirmDialogProps extends Omit<BootstrapDialogDialogProps, OmitBaseDialogProps> {
|
|
16
17
|
confirmText?: string;
|
|
17
18
|
canceText?: string;
|
|
19
|
+
passphrase?: string;
|
|
18
20
|
onCancel: () => void;
|
|
19
21
|
onConfirm: () => void;
|
|
20
22
|
}
|
|
@@ -26,15 +28,20 @@ export const ConfirmDialog = ({
|
|
|
26
28
|
disabled,
|
|
27
29
|
confirmText = "Confirm",
|
|
28
30
|
cancelText = "Cancel",
|
|
31
|
+
passphrase,
|
|
29
32
|
children,
|
|
30
33
|
onConfirm,
|
|
31
34
|
onCancel,
|
|
32
35
|
}: ConfirmDialogProps) => {
|
|
36
|
+
const [inputPassphrase, setInputPassphrase] = useState("");
|
|
37
|
+
const validPassphrase = !passphrase || inputPassphrase === passphrase;
|
|
38
|
+
|
|
33
39
|
return (
|
|
34
40
|
<BootstrapDialog
|
|
35
41
|
title={title}
|
|
36
42
|
loading={loading}
|
|
37
43
|
disabled={loading || disabled}
|
|
44
|
+
disableAccept={!validPassphrase}
|
|
38
45
|
open={open}
|
|
39
46
|
onClose={onCancel}
|
|
40
47
|
acceptable
|
|
@@ -46,6 +53,15 @@ export const ConfirmDialog = ({
|
|
|
46
53
|
onAccept={onConfirm}
|
|
47
54
|
>
|
|
48
55
|
{children}
|
|
56
|
+
{passphrase && (
|
|
57
|
+
<TextField
|
|
58
|
+
size="small"
|
|
59
|
+
fullWidth
|
|
60
|
+
value={inputPassphrase}
|
|
61
|
+
onChange={(e) => setInputPassphrase(e.target.value)}
|
|
62
|
+
placeholder={passphrase}
|
|
63
|
+
/>
|
|
64
|
+
)}
|
|
49
65
|
</BootstrapDialog>
|
|
50
66
|
);
|
|
51
67
|
};
|
|
@@ -12,6 +12,8 @@ export type BootstrapDialogDialogProps = PropsWithChildren<{
|
|
|
12
12
|
title: string;
|
|
13
13
|
loading?: boolean;
|
|
14
14
|
disabled?: boolean;
|
|
15
|
+
disableAccept?: boolean;
|
|
16
|
+
disableCancel?: boolean;
|
|
15
17
|
cancelable?: boolean;
|
|
16
18
|
acceptable?: boolean;
|
|
17
19
|
callCloseWhenCancel?: boolean;
|
|
@@ -228,9 +228,8 @@ describe("DrawerItem", () => {
|
|
|
228
228
|
it("should render a label when is set", () => {
|
|
229
229
|
renderComponent({ item: mockLinkLabelDrawerNavigationItem });
|
|
230
230
|
|
|
231
|
-
const label = screen.getByRole("label", { name:
|
|
231
|
+
const label = screen.getByRole("label", { name: "10 error label" });
|
|
232
232
|
expect(label).toBeVisible();
|
|
233
|
-
expect(label).toHaveAttribute("aria-describedby", "error");
|
|
234
233
|
});
|
|
235
234
|
|
|
236
235
|
it("shouldn't render a label if is not set", () => {
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export * from "./tab";
|
|
1
|
+
export * from "./tab-card";
|
|
2
|
+
export * from "./tab-panel";
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { PropsWithChildren, useContext } from "react";
|
|
2
|
+
import { TabCardContext } from "./tab-card.context";
|
|
3
|
+
import React from "react";
|
|
4
|
+
import { Box, SxProps, Theme } from "@mui/material";
|
|
5
|
+
|
|
6
|
+
export type TabCardPanelProps = PropsWithChildren<{
|
|
7
|
+
index: number | number[];
|
|
8
|
+
sx?: SxProps<Theme>;
|
|
9
|
+
}>;
|
|
10
|
+
|
|
11
|
+
export const TabCardPanel = ({ index, children, sx }: TabCardPanelProps) => {
|
|
12
|
+
const [value] = useContext(TabCardContext);
|
|
13
|
+
let isTab = value === index;
|
|
14
|
+
if (Array.isArray(index)) {
|
|
15
|
+
isTab = index.includes(value);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return isTab ? <Box sx={sx}>{children}</Box> : null;
|
|
19
|
+
};
|