@digital-ai/dot-components 1.5.1 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/CHANGE_LOG.md +145 -72
  2. package/dot-components.esm.js +1272 -1004
  3. package/dot-components.umd.js +1286 -1019
  4. package/lib/components/app-toolbar/AppToolbar.d.ts +4 -2
  5. package/lib/components/app-toolbar/AppToolbar.styles.d.ts +1 -1
  6. package/lib/components/auto-complete/AutoComplete.d.ts +3 -1
  7. package/lib/components/breadcrumbs/Breadcrumbs.data.d.ts +2 -0
  8. package/lib/components/breadcrumbs/utils/helpers.d.ts +8 -2
  9. package/lib/components/breadcrumbs/utils/useBreadcrumbsObserver.d.ts +0 -2
  10. package/lib/components/breadcrumbs/utils/useBreadcrumbsResizer.d.ts +2 -0
  11. package/lib/components/drawer/Drawer.d.ts +11 -1
  12. package/lib/components/drawer/DrawerBody.d.ts +9 -0
  13. package/lib/components/drawer/DrawerBody.styles.d.ts +2 -0
  14. package/lib/components/drawer/DrawerFooter.d.ts +6 -0
  15. package/lib/components/drawer/DrawerFooter.styles.d.ts +2 -0
  16. package/lib/components/drawer/DrawerHeader.d.ts +8 -0
  17. package/lib/components/drawer/DrawerHeader.styles.d.ts +2 -0
  18. package/lib/components/helpers.d.ts +2 -0
  19. package/lib/components/index.d.ts +6 -5
  20. package/lib/components/list/List.d.ts +3 -86
  21. package/lib/components/list/List.stories.data.d.ts +1 -1
  22. package/lib/components/list/List.styles.d.ts +0 -42
  23. package/lib/components/list/ListItem.styles.d.ts +42 -0
  24. package/lib/components/list/NestedList.styles.d.ts +2 -0
  25. package/lib/components/list/index.d.ts +2 -0
  26. package/lib/components/list/utils/helpers.d.ts +2 -0
  27. package/lib/components/list/utils/models.d.ts +86 -0
  28. package/lib/components/menu/Menu.d.ts +2 -0
  29. package/lib/components/menu/Menu.stories.data.d.ts +23 -0
  30. package/lib/components/menu/Menu.stories.styles.d.ts +2 -0
  31. package/lib/components/menu/utils/constants.d.ts +3 -0
  32. package/lib/components/menu/utils/helpers.d.ts +12 -0
  33. package/lib/components/sidebar/Sidebar.d.ts +1 -1
  34. package/lib/components/table/Table.d.ts +10 -3
  35. package/lib/components/table/Table.stories.data.d.ts +34 -2
  36. package/lib/components/table/TableBody.d.ts +4 -2
  37. package/lib/components/table/TableBody.styles.d.ts +2 -0
  38. package/lib/components/table/TableCell.d.ts +6 -4
  39. package/lib/components/table/TableCell.styles.d.ts +3 -0
  40. package/lib/components/table/TableHeader.d.ts +8 -35
  41. package/lib/components/table/TableHeaderCell.d.ts +38 -0
  42. package/lib/components/table/TableHeaderCell.styles.d.ts +3 -0
  43. package/lib/components/table/TablePagination.d.ts +6 -4
  44. package/lib/components/table/TablePagination.styles.d.ts +5 -2
  45. package/lib/components/table/TableRow.d.ts +6 -2
  46. package/lib/components/table/utils/helpers.d.ts +7 -0
  47. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import { ReactNode } from 'react';
2
2
  import { CommonProps } from '../CommonProps';
3
3
  import { IconButtonProps } from '../button/IconButton';
4
- import { ListItemProps } from '../list/List';
4
+ import { ListItemProps } from '../list';
5
5
  export interface AppToolbarProps extends CommonProps {
6
6
  /** If provided will display application logo */
7
7
  appLogo?: ReactNode;
@@ -27,5 +27,7 @@ export interface AppToolbarProps extends CommonProps {
27
27
  mainMenuWidth?: number;
28
28
  /** Array of nav items to be displayed on the right side */
29
29
  navItems?: Array<IconButtonProps>;
30
+ /** URL of the page the primary logo link will go to */
31
+ primaryLogoHref?: string;
30
32
  }
31
- export declare const DotAppToolbar: ({ appName, appLogo, appLogoSmall, ariaLabel, avatar, borderColor, children, className, customLogo, "data-testid": dataTestId, dense, navItems, mainMenu, mainMenuItems, mainMenuWidth, }: AppToolbarProps) => JSX.Element;
33
+ export declare const DotAppToolbar: ({ appName, appLogo, appLogoSmall, ariaLabel, avatar, borderColor, children, className, customLogo, "data-testid": dataTestId, dense, navItems, mainMenu, mainMenuItems, mainMenuWidth, primaryLogoHref, }: AppToolbarProps) => JSX.Element;
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
2
  export declare const rootClassName = "dot-app-toolbar";
3
3
  export declare const denseClassName = "dense";
4
- export declare const StyledMainMenu: import("styled-components").StyledComponent<({ anchor, ariaLabel, className, children, "data-testid": dataTestId, height, ModalProps, onClose, open, PaperProps, variant, width, }: import("../drawer/Drawer").DrawerProps) => JSX.Element, any, {}, never>;
4
+ export declare const StyledMainMenu: import("styled-components").StyledComponent<({ anchor, ariaLabel, className, children, "data-testid": dataTestId, drawerBodyProps, drawerFooterProps, drawerHeaderProps, height, ModalProps, onClose, open, PaperProps, variant, width, }: import("../drawer/Drawer").DrawerProps) => JSX.Element, any, {}, never>;
5
5
  export declare const StyledAppToolbar: import("styled-components").StyledComponent<"header", any, {}, never>;
@@ -49,9 +49,11 @@ export interface AutoCompleteProps extends CommonProps {
49
49
  options?: Array<AutoCompleteOption>;
50
50
  /** Placeholder text always displayed inside the input field */
51
51
  placeholder?: string;
52
+ /** If true, the input will be required and label will display accordingly */
53
+ required?: boolean;
52
54
  /** Determines the padding within the input field 'medium' or 'small' */
53
55
  size?: autoCompleteSize;
54
56
  /** value if this is a controlled component */
55
57
  value?: AutoCompleteValue;
56
58
  }
57
- export declare const DotAutoComplete: ({ actionItem, ariaLabel, autoFocus, className, "data-testid": dataTestId, defaultValue, disabled, disablePortal, error, freesolo, group, helperText, inputId, inputRef, label, multiple, onChange, options, placeholder, size, value, }: AutoCompleteProps) => JSX.Element;
59
+ export declare const DotAutoComplete: ({ actionItem, ariaLabel, autoFocus, className, "data-testid": dataTestId, defaultValue, disabled, disablePortal, error, freesolo, group, helperText, inputId, inputRef, label, multiple, onChange, options, placeholder, required, size, value, }: AutoCompleteProps) => JSX.Element;
@@ -1,2 +1,4 @@
1
1
  import { BreadcrumbItem } from '../breadcrumbs/Breadcrumbs';
2
+ export declare const defaultStorybookItems: BreadcrumbItem[];
2
3
  export declare const mockBreadcrumbItems: BreadcrumbItem[];
4
+ export declare const mockLongBreadcrumbItems: BreadcrumbItem[];
@@ -1,9 +1,13 @@
1
- import React, { MutableRefObject } from 'react';
1
+ import React, { MutableRefObject, ReactElement } from 'react';
2
2
  import { BreadcrumbItem } from '../Breadcrumbs';
3
3
  export interface BreadcrumbItemRefs {
4
4
  firstItemRef: MutableRefObject<HTMLDivElement>;
5
5
  lastItemRef: MutableRefObject<HTMLSpanElement>;
6
6
  }
7
+ export interface BreadcrumbItemsConfig {
8
+ isLastItemFullyVisible: boolean;
9
+ itemsAfterCollapse: number;
10
+ }
7
11
  export declare const getItemsAfterCollapse: (adjustMaxItems: boolean, visibleItemsNumber: number, maxItems?: number) => number | undefined;
8
12
  export declare const getMaxItems: (adjustMaxItems: boolean, visibleItemsNumber: number, maxItems?: number) => number | undefined;
9
13
  export declare const getWidthFromRef: <T extends HTMLElement>(ref: React.MutableRefObject<T>) => number | undefined;
@@ -16,4 +20,6 @@ export declare const getMenuItems: (items: BreadcrumbItem[], itemsAfterCollapse:
16
20
  }[];
17
21
  export declare const addListenersToMenu: (expandElement: Element, eventListener: EventListener) => void;
18
22
  export declare const removeListenersFromMenu: (expandElement: Element, eventListener: EventListener) => void;
19
- export declare const mapBreadcrumbItems: (items: BreadcrumbItem[], refs: BreadcrumbItemRefs, itemsAfterCollapse: number) => JSX.Element[];
23
+ export declare const getLastItemElement: ({ ariaLabel, text }: BreadcrumbItem, lastItemRef: MutableRefObject<HTMLSpanElement>, index?: number) => ReactElement;
24
+ export declare const mapBreadcrumbItems: (items: BreadcrumbItem[], refs: BreadcrumbItemRefs, { isLastItemFullyVisible, itemsAfterCollapse }: BreadcrumbItemsConfig) => JSX.Element[];
25
+ export declare const checkIfLastItemFullyVisible: (breadcrumbRef: MutableRefObject<HTMLElement>, lastItemRef: MutableRefObject<HTMLSpanElement>) => boolean;
@@ -1,7 +1,5 @@
1
1
  import { MutableRefObject } from 'react';
2
2
  import { BreadcrumbItem } from '../Breadcrumbs';
3
- export declare const MIN_AVAILABLE_SPACE = 60;
4
- export declare const ITEMS_SEPARATOR_SPACE = 20;
5
3
  interface BreadcrumbsObserverRefs {
6
4
  breadcrumbRef: MutableRefObject<HTMLElement>;
7
5
  firstItemRef: MutableRefObject<HTMLDivElement>;
@@ -12,5 +12,7 @@ interface BreadcrumbItemsProps {
12
12
  items: Array<BreadcrumbItem>;
13
13
  maxItems?: number;
14
14
  }
15
+ export declare const MIN_AVAILABLE_SPACE = 60;
16
+ export declare const ITEMS_SEPARATOR_SPACE = 20;
15
17
  export declare const useBreadcrumbsResizer: (breadcrumbsRightCoord: number, breadcrumbItemsProps: BreadcrumbItemsProps, refs: BreadcrumbsResizerRefs) => [MaxVisibleItems];
16
18
  export {};
@@ -9,6 +9,10 @@ export declare type DrawerModalProps = {
9
9
  export declare type DrawerPaperProps = {
10
10
  style?: CSSProperties;
11
11
  };
12
+ export interface DrawerSection extends CommonProps {
13
+ /** nested child component of drawer section */
14
+ children: ReactNode;
15
+ }
12
16
  export interface DrawerProps extends CommonProps {
13
17
  /** Props applied to the Modal element. */
14
18
  ModalProps?: DrawerModalProps;
@@ -18,6 +22,12 @@ export interface DrawerProps extends CommonProps {
18
22
  anchor?: DrawerAnchor;
19
23
  /** string or JSX element that is displayed inside the drawer */
20
24
  children?: ReactNode;
25
+ /** Props applied to drawer body */
26
+ drawerBodyProps?: DrawerSection;
27
+ /** Props applied to drawer footer */
28
+ drawerFooterProps?: DrawerSection;
29
+ /** Props applied to drawer header */
30
+ drawerHeaderProps?: DrawerSection;
21
31
  /** The height of the drawer when anchor is 'top' or 'bottom' */
22
32
  height?: string;
23
33
  /** Callback fired when the component requests to be closed. */
@@ -29,4 +39,4 @@ export interface DrawerProps extends CommonProps {
29
39
  /** The width of the drawer when anchor is 'left' or 'right' */
30
40
  width?: string;
31
41
  }
32
- export declare const DotDrawer: ({ anchor, ariaLabel, className, children, "data-testid": dataTestId, height, ModalProps, onClose, open, PaperProps, variant, width, }: DrawerProps) => JSX.Element;
42
+ export declare const DotDrawer: ({ anchor, ariaLabel, className, children, "data-testid": dataTestId, drawerBodyProps, drawerFooterProps, drawerHeaderProps, height, ModalProps, onClose, open, PaperProps, variant, width, }: DrawerProps) => JSX.Element;
@@ -0,0 +1,9 @@
1
+ import { MouseEvent, ReactNode } from 'react';
2
+ import { CommonProps } from '../CommonProps';
3
+ export interface DrawerBodyProps extends CommonProps {
4
+ children: ReactNode;
5
+ headerExists: boolean;
6
+ onClose: (event: MouseEvent | KeyboardEvent) => void;
7
+ variant: string;
8
+ }
9
+ export declare const DotDrawerBody: ({ ariaLabel, children, className, "data-testid": dataTestId, headerExists, onClose, variant, }: DrawerBodyProps) => JSX.Element;
@@ -0,0 +1,2 @@
1
+ export declare const rootClassName = "dot-drawer-body";
2
+ export declare const StyleDrawerBody: import("styled-components").StyledComponent<"div", any, {}, never>;
@@ -0,0 +1,6 @@
1
+ import { ReactNode } from 'react';
2
+ import { CommonProps } from '../CommonProps';
3
+ export interface DrawerFooterProps extends CommonProps {
4
+ children: ReactNode;
5
+ }
6
+ export declare const DotDrawerFooter: ({ ariaLabel, children, className, "data-testid": dataTestId, }: DrawerFooterProps) => JSX.Element;
@@ -0,0 +1,2 @@
1
+ export declare const rootClassName = "dot-drawer-footer";
2
+ export declare const StyleDrawerFooter: import("styled-components").StyledComponent<"div", any, {}, never>;
@@ -0,0 +1,8 @@
1
+ import { MouseEvent, ReactNode } from 'react';
2
+ import { CommonProps } from '../CommonProps';
3
+ export interface DrawerHeaderProps extends CommonProps {
4
+ children: ReactNode;
5
+ onClose: (event: MouseEvent | KeyboardEvent) => void;
6
+ variant: string;
7
+ }
8
+ export declare const DotDrawerHeader: ({ ariaLabel, children, className, "data-testid": dataTestId, onClose, variant, }: DrawerHeaderProps) => JSX.Element;
@@ -0,0 +1,2 @@
1
+ export declare const rootClassName = "dot-drawer-header";
2
+ export declare const StyleDrawerHeader: import("styled-components").StyledComponent<"div", any, {}, never>;
@@ -1,3 +1,5 @@
1
1
  import { AvatarColor } from './avatar/Avatar';
2
2
  export declare const calculateNumberFromText: (text: string) => number;
3
3
  export declare const getAvatarColorForInputText: (value: string) => AvatarColor;
4
+ export declare const isString: (str: unknown) => boolean;
5
+ export declare const isNumber: (num: unknown) => boolean;
@@ -7,12 +7,12 @@ export type { CheckboxProps } from './checkbox/Checkbox';
7
7
  export type { CheckboxGroupProps } from './checkbox/CheckboxGroup';
8
8
  export type { SubmitButtonProps } from './dialog/Dialog';
9
9
  export type { DynamicFormProps } from './dynamic-form/DynamicForm';
10
- export type { ControlClickHandler, DynamicFormConfig, DynamicFormControl, DynamicFormOutputData, DynamicFormState, FieldValidation, DynamicFormSectionProps, } from './dynamic-form/models';
10
+ export type { ConditionFunction, ControlClickHandler, DisabledConditionFunction, DisabledControlCondition, DynamicFormConfig, DynamicFormControl, DynamicFormControlProps, DynamicFormControlType, DynamicFormOutputData, DynamicFormSectionProps, DynamicFormState, DynamicFormStateItem, FieldValidation, } from './dynamic-form/models';
11
11
  export type { IconButtonProps } from './button/IconButton';
12
12
  export type { InputTextProps } from './input-form-fields/InputText';
13
13
  export type { InputSelectProps } from './input-form-fields/InputSelect';
14
14
  export type { LinkUnderline } from './link/Link';
15
- export type { ListItemProps } from './list/List';
15
+ export type { ListItemProps } from './list';
16
16
  export type { MenuItemProps } from './menu/Menu';
17
17
  export type { RailItem } from './navigation-rail/NavigationRail';
18
18
  export type { RadioButtonProps } from './radio/RadioButton';
@@ -20,8 +20,9 @@ export type { RadioGroupProps } from './radio/RadioGroup';
20
20
  export type { BackItemProps, SidebarProps } from './sidebar/Sidebar';
21
21
  export type { SwitchProps } from './switch/Switch';
22
22
  export type { TableRowProps } from './table/Table';
23
- export type { DotColumnHeader } from './table/TableHeader';
24
- export type { Order } from './table/TableBody';
23
+ export type { TextAlignment } from './table/TableCell';
24
+ export type { DotColumnHeader, Order } from './table/TableHeader';
25
+ export type { SortDirection } from './table/TableHeaderCell';
25
26
  export type { TableDataWithPagination } from './table/TableDataWithPagination';
26
27
  export type { RowsPerPageOption } from './table/TablePagination';
27
28
  export type { TabProps } from './tabs/Tabs';
@@ -62,7 +63,7 @@ export { DotInlineEdit } from './inline-edit/InlineEdit';
62
63
  export { DotInputText } from './input-form-fields/InputText';
63
64
  export { DotInputSelect } from './input-form-fields/InputSelect';
64
65
  export { DotLink } from './link/Link';
65
- export { DotList } from './list/List';
66
+ export { DotList } from './list';
66
67
  export { DotMenu } from './menu/Menu';
67
68
  export { DotNavigationRail } from './navigation-rail/NavigationRail';
68
69
  export { DotPill } from './pill/Pill';
@@ -1,88 +1,5 @@
1
- import { ElementType, MouseEvent, KeyboardEvent, ReactNode } from 'react';
2
- import { CommonProps } from '../CommonProps';
3
- import { LinkTarget } from '../link/Link';
4
- import { PopperPlacement } from '../menu/Menu';
5
- export declare type NestedListType = 'drawer' | 'expandable' | 'menu';
6
- export interface NestedListProps extends CommonProps {
7
- /** Element that menu is attached to */
8
- anchorEl?: Element;
9
- /** Array of list items displayed */
10
- items: Array<ListItemProps>;
11
- /** If nested list type is 'menu', determines the placement of the menu */
12
- menuPlacement?: PopperPlacement;
13
- /** If nested type is 'drawer', determines the width of the left spacing */
14
- nestedDrawerLeftSpacing?: number;
15
- /** Event callback when leaving menu via tab or clicking away */
16
- onMenuLeave?: (event: KeyboardEvent | MouseEvent) => void;
17
- /** if true the nested list is visible */
18
- open: boolean;
19
- /** Index of the parent list item */
20
- parentItemIndex?: number;
21
- /** If 'menu' the nested list will be displayed as a flyout nav, else it will be an expand/collapse toggle list */
22
- type?: NestedListType;
23
- }
24
- export interface ListProps extends CommonProps {
25
- /** string or JSX element that is displayed inside the list */
26
- children?: ReactNode;
27
- /** The component used for the root node. Either a string to use a HTML element or a component. */
28
- component?: ElementType;
29
- /** If true, compact vertical padding designed for keyboard and mouse input will be used for the list and list items. */
30
- dense?: boolean;
31
- /** If true, vertical padding will be removed from the list. */
32
- disablePadding?: boolean;
33
- /** Array of list items displayed */
34
- items?: Array<ListItemProps>;
35
- /** If nested list type is 'menu', determines the placement of the menu */
36
- menuPlacement?: PopperPlacement;
37
- /** If nested type is 'drawer', determines the width of the left spacing */
38
- nestedDrawerLeftSpacing?: number;
39
- /** If 'menu' the nested list will be displayed as a flyout nav, else it will be an expand/collapse toggle list */
40
- nestedListType?: NestedListType;
41
- /** Width of list, defaults to 240px */
42
- width?: number | string;
43
- }
44
- export interface ListItemProps extends CommonProps {
45
- /** string or JSX element that is displayed inside the list */
46
- child?: ReactNode;
47
- /** The component used for the root node. Either a string to use a HTML element or a component. */
48
- component?: ElementType;
49
- /** If true, a 1px light border is added to the bottom of the list item. */
50
- divider?: boolean;
51
- /** If provided, the icon ID which is displayed at the end of the list item */
52
- endIconId?: string;
53
- /** If provided, the list item will be rendered as a link */
54
- href?: string;
55
- /** DEPRECATED, DO NOT USE */
56
- index?: number;
57
- isOpened?: boolean;
58
- /** If provided, the menu item will display a nested list */
59
- items?: Array<ListItemProps>;
60
- /** If nested list type is 'menu', determines the placement of the menu */
61
- menuPlacement?: PopperPlacement;
62
- /** If nested type is 'drawer', determines the width of the left spacing */
63
- nestedDrawerLeftSpacing?: number;
64
- /** If 'menu' the nested list will be displayed as a flyout nav, else it will be an expand/collapse toggle list */
65
- nestedListType?: NestedListType;
66
- /** Event callback */
67
- onClick?: (event: MouseEvent) => void;
68
- /** Menu leave event callback */
69
- onMenuLeave?: () => void;
70
- /** The main content element */
71
- primaryText?: string;
72
- /** The secondary content element */
73
- secondaryText?: string;
74
- /** Selected list item */
75
- selected?: boolean;
76
- /** If provided, the icon ID which is displayed on the front of the list item */
77
- startIconId?: string;
78
- /** where to open the link */
79
- target?: LinkTarget;
80
- /** Text which is displayed in the list item */
81
- text?: string;
82
- /** DEPRECATED, DO NOT USE */
83
- title?: string;
84
- /** Tooltip text displayed on hover */
85
- tooltip?: string;
86
- }
1
+ /// <reference types="react" />
2
+ import { ListItemProps, ListProps, NestedListProps } from './utils/models';
87
3
  export declare const DotList: ({ ariaLabel, children, className, component, "data-testid": dataTestId, dense, disablePadding, items, menuPlacement, nestedDrawerLeftSpacing, nestedListType, width, }: ListProps) => JSX.Element;
88
4
  export declare const DotListItem: ({ ariaLabel, className, component, "data-testid": dataTestId, divider, endIconId, href, isOpened, onClick, onMenuLeave, index, items, menuPlacement, nestedDrawerLeftSpacing, nestedListType, primaryText, secondaryText, selected, startIconId, target, text, title, tooltip, }: ListItemProps) => JSX.Element;
5
+ export declare const NestedList: ({ ariaLabel, anchorEl, items, menuPlacement, nestedDrawerLeftSpacing, onMenuLeave, open, parentItemIndex, type, }: NestedListProps) => JSX.Element;
@@ -1,3 +1,3 @@
1
- import { ListItemProps } from './List';
1
+ import { ListItemProps } from './ListItem';
2
2
  export declare const mockHref = "/?path=/story/components-list--default";
3
3
  export declare const mockListItems: Array<ListItemProps>;
@@ -1,47 +1,5 @@
1
- /// <reference types="react" />
2
1
  export declare const rootClassName = "dot-list";
3
2
  export declare const listItemRootClass = "dot-list-item";
4
3
  export declare const nestedListClassName = "dot-nested-list";
5
4
  export declare const nestedDrawerClassName = "dot-nested-drawer";
6
- export declare const flyoutListItemClassName = "dot-flyout-list-item";
7
- export declare const flyoutItemLinkClassName = "dot-flyout-item-link";
8
- export declare const listItemLinkClassName = "dot-list-item-link";
9
5
  export declare const StyledList: import("@material-ui/core/OverridableComponent").OverridableComponent<import("@material-ui/core").ListTypeMap<{}, "ul">>;
10
- export declare const StyledListItem: import("@material-ui/core/OverridableComponent").OverridableComponent<import("@material-ui/core").ListItemTypeMap<{
11
- button?: false;
12
- }, "li">> & ((props: {
13
- href: string;
14
- } & {
15
- button: true;
16
- } & {
17
- alignItems?: "center" | "flex-start";
18
- autoFocus?: boolean;
19
- button?: boolean;
20
- ContainerComponent?: import("react").ElementType<import("react").HTMLAttributes<HTMLDivElement>>;
21
- ContainerProps?: import("react").HTMLAttributes<HTMLDivElement>;
22
- dense?: boolean;
23
- disabled?: boolean;
24
- disableGutters?: boolean;
25
- divider?: boolean;
26
- focusVisibleClassName?: string;
27
- selected?: boolean;
28
- } & {
29
- action?: import("react").Ref<import("@material-ui/core").ButtonBaseActions>;
30
- buttonRef?: import("react").Ref<unknown>;
31
- centerRipple?: boolean;
32
- children?: import("react").ReactNode;
33
- disabled?: boolean;
34
- disableRipple?: boolean;
35
- disableTouchRipple?: boolean;
36
- focusRipple?: boolean;
37
- focusVisibleClassName?: string;
38
- onFocusVisible?: import("react").FocusEventHandler<any>;
39
- tabIndex?: string | number;
40
- TouchRippleProps?: Partial<import("@material-ui/core/ButtonBase/TouchRipple").TouchRippleProps>;
41
- } & import("@material-ui/core/OverridableComponent").CommonProps<import("@material-ui/core").ExtendButtonBaseTypeMap<import("@material-ui/core").ListItemTypeMap<{
42
- button: true;
43
- }, "div">>> & Pick<Pick<import("react").DetailedHTMLProps<import("react").AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "key" | keyof import("react").AnchorHTMLAttributes<HTMLAnchorElement>> & {
44
- ref?: import("react").Ref<HTMLAnchorElement>;
45
- }, "slot" | "title" | "type" | "ref" | "children" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "download" | "href" | "hrefLang" | "media" | "ping" | "rel" | "target" | "referrerPolicy">) => JSX.Element) & import("@material-ui/core/OverridableComponent").OverridableComponent<import("@material-ui/core").ExtendButtonBaseTypeMap<import("@material-ui/core").ListItemTypeMap<{
46
- button: true;
47
- }, "div">>>;
@@ -0,0 +1,42 @@
1
+ /// <reference types="react" />
2
+ export declare const flyoutListItemClassName = "dot-flyout-list-item";
3
+ export declare const flyoutItemLinkClassName = "dot-flyout-item-link";
4
+ export declare const listItemLinkClassName = "dot-list-item-link";
5
+ export declare const StyledListItem: import("@material-ui/core/OverridableComponent").OverridableComponent<import("@material-ui/core").ListItemTypeMap<{
6
+ button?: false;
7
+ }, "li">> & ((props: {
8
+ href: string;
9
+ } & {
10
+ button: true;
11
+ } & {
12
+ alignItems?: "center" | "flex-start";
13
+ autoFocus?: boolean;
14
+ button?: boolean;
15
+ ContainerComponent?: import("react").ElementType<import("react").HTMLAttributes<HTMLDivElement>>;
16
+ ContainerProps?: import("react").HTMLAttributes<HTMLDivElement>;
17
+ dense?: boolean;
18
+ disabled?: boolean;
19
+ disableGutters?: boolean;
20
+ divider?: boolean;
21
+ focusVisibleClassName?: string;
22
+ selected?: boolean;
23
+ } & {
24
+ action?: import("react").Ref<import("@material-ui/core").ButtonBaseActions>;
25
+ buttonRef?: import("react").Ref<unknown>;
26
+ centerRipple?: boolean;
27
+ children?: import("react").ReactNode;
28
+ disabled?: boolean;
29
+ disableRipple?: boolean;
30
+ disableTouchRipple?: boolean;
31
+ focusRipple?: boolean;
32
+ focusVisibleClassName?: string;
33
+ onFocusVisible?: import("react").FocusEventHandler<any>;
34
+ tabIndex?: string | number;
35
+ TouchRippleProps?: Partial<import("@material-ui/core/ButtonBase/TouchRipple").TouchRippleProps>;
36
+ } & import("@material-ui/core/OverridableComponent").CommonProps<import("@material-ui/core").ExtendButtonBaseTypeMap<import("@material-ui/core").ListItemTypeMap<{
37
+ button: true;
38
+ }, "div">>> & Pick<Pick<import("react").DetailedHTMLProps<import("react").AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "key" | keyof import("react").AnchorHTMLAttributes<HTMLAnchorElement>> & {
39
+ ref?: import("react").Ref<HTMLAnchorElement>;
40
+ }, "slot" | "title" | "type" | "ref" | "children" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "download" | "href" | "hrefLang" | "media" | "ping" | "rel" | "target" | "referrerPolicy">) => JSX.Element) & import("@material-ui/core/OverridableComponent").OverridableComponent<import("@material-ui/core").ExtendButtonBaseTypeMap<import("@material-ui/core").ListItemTypeMap<{
41
+ button: true;
42
+ }, "div">>>;
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare const StyledDotDrawer: import("styled-components").StyledComponent<({ anchor, ariaLabel, className, children, "data-testid": dataTestId, drawerBodyProps, drawerFooterProps, drawerHeaderProps, height, ModalProps, onClose, open, PaperProps, variant, width, }: import("../drawer/Drawer").DrawerProps) => JSX.Element, any, {}, never>;
@@ -0,0 +1,2 @@
1
+ export * from './utils/models';
2
+ export * from './List';
@@ -0,0 +1,2 @@
1
+ import { NestedListType } from './models';
2
+ export declare const getChevronIcon: (nestedListType: NestedListType, isOpened: boolean) => "chevron-right" | "chevron-up" | "chevron-down";
@@ -0,0 +1,86 @@
1
+ import { ElementType, KeyboardEvent, MouseEvent, ReactNode } from 'react';
2
+ import { CommonProps } from '../../CommonProps';
3
+ import { PopperPlacement } from '../../menu/Menu';
4
+ import { LinkTarget } from '../../link/Link';
5
+ export declare type NestedListType = 'drawer' | 'expandable' | 'menu';
6
+ export interface ListProps extends CommonProps {
7
+ /** string or JSX element that is displayed inside the list */
8
+ children?: ReactNode;
9
+ /** The component used for the root node. Either a string to use a HTML element or a component. */
10
+ component?: ElementType;
11
+ /** If true, compact vertical padding designed for keyboard and mouse input will be used for the list and list items. */
12
+ dense?: boolean;
13
+ /** If true, vertical padding will be removed from the list. */
14
+ disablePadding?: boolean;
15
+ /** Array of list items displayed */
16
+ items?: Array<ListItemProps>;
17
+ /** If nested list type is 'menu', determines the placement of the menu */
18
+ menuPlacement?: PopperPlacement;
19
+ /** If nested type is 'drawer', determines the width of the left spacing */
20
+ nestedDrawerLeftSpacing?: number;
21
+ /** If 'menu' the nested list will be displayed as a flyout nav, else it will be an expand/collapse toggle list */
22
+ nestedListType?: NestedListType;
23
+ /** Width of list, defaults to 240px */
24
+ width?: number | string;
25
+ }
26
+ export interface ListItemProps extends CommonProps {
27
+ /** string or JSX element that is displayed inside the list */
28
+ child?: ReactNode;
29
+ /** The component used for the root node. Either a string to use a HTML element or a component. */
30
+ component?: ElementType;
31
+ /** If true, a 1px light border is added to the bottom of the list item. */
32
+ divider?: boolean;
33
+ /** If provided, the icon ID which is displayed at the end of the list item */
34
+ endIconId?: string;
35
+ /** If provided, the list item will be rendered as a link */
36
+ href?: string;
37
+ /** DEPRECATED, DO NOT USE */
38
+ index?: number;
39
+ isOpened?: boolean;
40
+ /** If provided, the menu item will display a nested list */
41
+ items?: Array<ListItemProps>;
42
+ /** If nested list type is 'menu', determines the placement of the menu */
43
+ menuPlacement?: PopperPlacement;
44
+ /** If nested type is 'drawer', determines the width of the left spacing */
45
+ nestedDrawerLeftSpacing?: number;
46
+ /** If 'menu' the nested list will be displayed as a flyout nav, else it will be an expand/collapse toggle list */
47
+ nestedListType?: NestedListType;
48
+ /** Event callback */
49
+ onClick?: (event: MouseEvent) => void;
50
+ /** Menu leave event callback */
51
+ onMenuLeave?: () => void;
52
+ /** The main content element */
53
+ primaryText?: string;
54
+ /** The secondary content element */
55
+ secondaryText?: string;
56
+ /** Selected list item */
57
+ selected?: boolean;
58
+ /** If provided, the icon ID which is displayed on the front of the list item */
59
+ startIconId?: string;
60
+ /** where to open the link */
61
+ target?: LinkTarget;
62
+ /** Text which is displayed in the list item */
63
+ text?: string;
64
+ /** DEPRECATED, DO NOT USE */
65
+ title?: string;
66
+ /** Tooltip text displayed on hover */
67
+ tooltip?: string;
68
+ }
69
+ export interface NestedListProps extends CommonProps {
70
+ /** Element that menu is attached to */
71
+ anchorEl?: Element;
72
+ /** Array of list items displayed */
73
+ items: Array<ListItemProps>;
74
+ /** If nested list type is 'menu', determines the placement of the menu */
75
+ menuPlacement?: PopperPlacement;
76
+ /** If nested type is 'drawer', determines the width of the left spacing */
77
+ nestedDrawerLeftSpacing?: number;
78
+ /** Event callback when leaving menu via tab or clicking away */
79
+ onMenuLeave?: (event: KeyboardEvent | MouseEvent) => void;
80
+ /** if true the nested list is visible */
81
+ open: boolean;
82
+ /** Index of the parent list item */
83
+ parentItemIndex?: number;
84
+ /** If 'menu' the nested list will be displayed as a flyout nav, else it will be an expand/collapse toggle list */
85
+ type?: NestedListType;
86
+ }
@@ -34,6 +34,8 @@ export interface MenuItemProps {
34
34
  children?: ReactNode;
35
35
  /** Space delimited CSS classes to be attributed to the menu item */
36
36
  classes?: string;
37
+ /** Used to set custom item height (in pixels). This value has priority over "menuItemHeight" prop. */
38
+ height?: number;
37
39
  /** A key that can be used to determine which item was clicked */
38
40
  key?: string;
39
41
  }
@@ -0,0 +1,23 @@
1
+ /// <reference types="react" />
2
+ import { MenuItemProps } from '../menu/Menu';
3
+ export declare const defaultMenuItems: ({
4
+ children: JSX.Element;
5
+ classes: string;
6
+ key: string;
7
+ } | {
8
+ children: string;
9
+ key: string;
10
+ classes?: undefined;
11
+ })[];
12
+ export declare const buttonMenuItems: {
13
+ children: string;
14
+ key: string;
15
+ }[];
16
+ export declare const tableMenuItems: ({
17
+ children: string;
18
+ key: string;
19
+ } | {
20
+ children: JSX.Element;
21
+ key: string;
22
+ })[];
23
+ export declare const customHeightMenuItems: MenuItemProps[];
@@ -0,0 +1,2 @@
1
+ export declare const rootClassName = "dot-menu-wrapper";
2
+ export declare const StyledMenuWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
@@ -0,0 +1,3 @@
1
+ export declare const MENU_ITEM_HEIGHT_NORMAL = 33;
2
+ export declare const MENU_ITEM_HEIGHT_DENSE = 28;
3
+ export declare const DEFAULT_MAX_VISIBLE_ITEMS = 7;
@@ -0,0 +1,12 @@
1
+ import { MenuItemProps } from '../Menu';
2
+ interface MaxHeightCalculationArgs {
3
+ isDense: boolean;
4
+ maxVisibleItems?: number;
5
+ menuItemHeight?: number | string;
6
+ menuItems: MenuItemProps[];
7
+ }
8
+ export declare const getDefaultItemHeight: (isDense: boolean) => 28 | 33;
9
+ export declare const calculateItemHeight: (isDense: boolean, customItemHeight?: number, menuItemHeight?: number | string) => number | string;
10
+ export declare const getNumberOfVisibleItems: (numberOfItems: number, maxVisibleItems?: number) => number;
11
+ export declare const calculateMaxHeight: ({ isDense, maxVisibleItems, menuItems, menuItemHeight, }: MaxHeightCalculationArgs) => number | string;
12
+ export {};
@@ -1,6 +1,6 @@
1
1
  import { MouseEvent, ReactNode } from 'react';
2
2
  import { AvatarProps } from '../avatar/Avatar';
3
- import { ListItemProps, NestedListType } from '../list/List';
3
+ import { ListItemProps, NestedListType } from '../list';
4
4
  import { CommonProps } from '../CommonProps';
5
5
  export interface BackItemProps extends CommonProps {
6
6
  /** If provided, the icon ID which is displayed on the front of the list item */