venice-ui 2.2.8 → 2.2.10

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.
@@ -62,10 +62,12 @@ const Dropdown = ({ size = 'medium', label, labelPosition = 'top', disabled = fa
62
62
  toogleOpen(!open);
63
63
  }
64
64
  };
65
- const selectOption = (e, selectedValue) => {
65
+ const selectOption = (e, selectedValue, isDisabled) => {
66
66
  e.stopPropagation();
67
- handleSelect(name, selectedValue);
68
- toogleOpen(false);
67
+ if (!isDisabled) {
68
+ handleSelect(name, selectedValue);
69
+ toogleOpen(false);
70
+ }
69
71
  };
70
72
  (0, react_1.useEffect)(() => {
71
73
  const handleClickOutside = (event) => {
@@ -95,7 +97,7 @@ const Dropdown = ({ size = 'medium', label, labelPosition = 'top', disabled = fa
95
97
  react_1.default.createElement(Icons_1.Icon, { name: open ? 'arrow_drop_up' : 'arrow_drop_down', size: 24, iconColor: theme.inputDefaultTextColor, iconHoverColor: theme.inputDefaultTextColor, iconBgHoverColor: "transparent" })),
96
98
  open &&
97
99
  (0, react_dom_1.createPortal)(react_1.default.createElement(common_1.Panel, { style: dropdownStyles, ref: ref, size: size, fullWidth: true, zIndex: zIndex }, options &&
98
- options.map((option) => (react_1.default.createElement(common_1.PanelOption, { key: option.value, active: option.value === value, onClick: (e) => selectOption(e, option.value) }, option.label)))), document.body),
100
+ options.map((option) => (react_1.default.createElement(common_1.PanelOption, { key: option.value, active: option.value === value, onClick: (e) => selectOption(e, option.value, option.disabled), isDisabled: option.disabled || false }, option.label)))), document.body),
99
101
  error && errorMsg && react_1.default.createElement(Input_1.InputErrorMsg, null, errorMsg)))));
100
102
  };
101
103
  exports.Dropdown = Dropdown;
@@ -13,7 +13,7 @@ const Icons_1 = require("../Icons");
13
13
  const Theme_1 = require("../../Theme");
14
14
  const Table_styles_1 = require("../Table/Table.styles");
15
15
  const DropdownMenu_1 = require("../DropdownMenu");
16
- const List = ({ isCheckbox = false, isCollapsable = false, isSelectable = false, haveMoreOptions = false, items, handleChange, handleSelect, selected, theme = Theme_1.mainTheme, moreActions = [], }) => {
16
+ const List = ({ isCheckbox = false, isCollapsable = false, isSelectable = false, haveMoreOptions = false, items, handleChange, handleSelect, selected, theme = Theme_1.mainTheme, levelActions = [], }) => {
17
17
  const updateItem = (items, rowID, updater) => {
18
18
  items.forEach((_item) => {
19
19
  if (_item.id === rowID) {
@@ -106,9 +106,9 @@ const List = ({ isCheckbox = false, isCollapsable = false, isSelectable = false,
106
106
  isCheckbox && (react_1.default.createElement("div", { onClick: (e) => e.stopPropagation() },
107
107
  react_1.default.createElement(Checkbox_1.Checkbox, { handleClick: () => handleClick(row), value: getValue(row), isIntermedian: getIntermedian(row), size: "small" }))),
108
108
  react_1.default.createElement(list_styles_1.ListText, { selected: isSelectable && selected ? selected === row.id : false }, row.value),
109
- haveMoreOptions && (react_1.default.createElement(list_styles_1.MoreWrapper, null,
109
+ haveMoreOptions && levelActions[level]?.moreActions && (react_1.default.createElement(list_styles_1.MoreWrapper, null,
110
110
  react_1.default.createElement(Table_styles_1.OptionTableCellWrapper, { onClick: (e) => e.stopPropagation() },
111
- react_1.default.createElement(DropdownMenu_1.DropdownMenu, { options: moreActions, targetID: row.id, iconName: "more_vert", iconColor: theme.tableMoreIconColor, iconHoverColor: theme.tableHoverMoreIconColor, iconBgHoverColor: "transparent", position: "right" }))))),
111
+ react_1.default.createElement(DropdownMenu_1.DropdownMenu, { options: levelActions[level]?.moreActions || [], targetID: row.id, iconName: "more_vert", iconColor: theme.tableMoreIconColor, iconHoverColor: theme.tableHoverMoreIconColor, iconBgHoverColor: "transparent", position: "right" }))))),
112
112
  row.extend && row.children.length > 0 && (react_1.default.createElement(list_styles_1.ListRowExtend, null, row.children.map((_chiledRow) => {
113
113
  return gerenrateRow(_chiledRow, level + 1);
114
114
  })))));
@@ -26,7 +26,7 @@ exports.Panel = styled_components_1.default.div `
26
26
  height: ${(p) => (p.height ? p.height : 'auto')};
27
27
  width: ${(p) => (p.fullWidth ? '100%' : 'auto')};
28
28
  position: absolute;
29
- z-index: ${p => p.zIndex ? p.zIndex : Theme_1.Theme.zIndex.dropdown};
29
+ z-index: ${(p) => (p.zIndex ? p.zIndex : Theme_1.Theme.zIndex.dropdown)};
30
30
  top: ${(p) => (0, inputStyles_1.setPanelTop)(p.size)};
31
31
  border: 1px solid ${Theme_1.Theme.colors.gray_2};
32
32
  border-top: none;
@@ -34,12 +34,16 @@ exports.Panel = styled_components_1.default.div `
34
34
  `;
35
35
  exports.PanelOption = styled_components_1.default.div `
36
36
  padding: ${Theme_1.Theme.padding.s} ${Theme_1.Theme.padding.m};
37
- cursor: pointer;
37
+ cursor: ${(p) => (p.isDisabled ? 'not-allowed' : 'pointer')};
38
38
  white-space: nowrap;
39
- font-size:16px;
40
- color: ${(p) => (p.active ? Theme_1.Theme.colors.primary : Theme_1.Theme.colors.text)};
39
+ font-size: 16px;
40
+ color: ${(p) => p.active
41
+ ? Theme_1.Theme.colors.primary
42
+ : p.isDisabled
43
+ ? Theme_1.Theme.colors.gray_1
44
+ : Theme_1.Theme.colors.text};
41
45
  :hover {
42
- background-color: ${(0, polished_1.lighten)(0.4, Theme_1.Theme.colors.primary)};
46
+ background-color: ${(p) => p.isDisabled ? Theme_1.Theme.colors.gray_4 : (0, polished_1.lighten)(0.4, Theme_1.Theme.colors.primary)};
43
47
  }
44
48
  ${(p) => p.width && `width:${p.width};`}
45
49
  `;
@@ -36,10 +36,12 @@ export const Dropdown = ({ size = 'medium', label, labelPosition = 'top', disabl
36
36
  toogleOpen(!open);
37
37
  }
38
38
  };
39
- const selectOption = (e, selectedValue) => {
39
+ const selectOption = (e, selectedValue, isDisabled) => {
40
40
  e.stopPropagation();
41
- handleSelect(name, selectedValue);
42
- toogleOpen(false);
41
+ if (!isDisabled) {
42
+ handleSelect(name, selectedValue);
43
+ toogleOpen(false);
44
+ }
43
45
  };
44
46
  useEffect(() => {
45
47
  const handleClickOutside = (event) => {
@@ -69,6 +71,6 @@ export const Dropdown = ({ size = 'medium', label, labelPosition = 'top', disabl
69
71
  React.createElement(Icon, { name: open ? 'arrow_drop_up' : 'arrow_drop_down', size: 24, iconColor: theme.inputDefaultTextColor, iconHoverColor: theme.inputDefaultTextColor, iconBgHoverColor: "transparent" })),
70
72
  open &&
71
73
  createPortal(React.createElement(Panel, { style: dropdownStyles, ref: ref, size: size, fullWidth: true, zIndex: zIndex }, options &&
72
- options.map((option) => (React.createElement(PanelOption, { key: option.value, active: option.value === value, onClick: (e) => selectOption(e, option.value) }, option.label)))), document.body),
74
+ options.map((option) => (React.createElement(PanelOption, { key: option.value, active: option.value === value, onClick: (e) => selectOption(e, option.value, option.disabled), isDisabled: option.disabled || false }, option.label)))), document.body),
73
75
  error && errorMsg && React.createElement(InputErrorMsg, null, errorMsg)))));
74
76
  };
@@ -7,7 +7,7 @@ import { Icon } from '../Icons';
7
7
  import { mainTheme } from '../../Theme';
8
8
  import { OptionTableCellWrapper } from '../Table/Table.styles';
9
9
  import { DropdownMenu } from '../DropdownMenu';
10
- export const List = ({ isCheckbox = false, isCollapsable = false, isSelectable = false, haveMoreOptions = false, items, handleChange, handleSelect, selected, theme = mainTheme, moreActions = [], }) => {
10
+ export const List = ({ isCheckbox = false, isCollapsable = false, isSelectable = false, haveMoreOptions = false, items, handleChange, handleSelect, selected, theme = mainTheme, levelActions = [], }) => {
11
11
  const updateItem = (items, rowID, updater) => {
12
12
  items.forEach((_item) => {
13
13
  if (_item.id === rowID) {
@@ -100,9 +100,9 @@ export const List = ({ isCheckbox = false, isCollapsable = false, isSelectable =
100
100
  isCheckbox && (React.createElement("div", { onClick: (e) => e.stopPropagation() },
101
101
  React.createElement(Checkbox, { handleClick: () => handleClick(row), value: getValue(row), isIntermedian: getIntermedian(row), size: "small" }))),
102
102
  React.createElement(ListText, { selected: isSelectable && selected ? selected === row.id : false }, row.value),
103
- haveMoreOptions && (React.createElement(MoreWrapper, null,
103
+ haveMoreOptions && levelActions[level]?.moreActions && (React.createElement(MoreWrapper, null,
104
104
  React.createElement(OptionTableCellWrapper, { onClick: (e) => e.stopPropagation() },
105
- React.createElement(DropdownMenu, { options: moreActions, targetID: row.id, iconName: "more_vert", iconColor: theme.tableMoreIconColor, iconHoverColor: theme.tableHoverMoreIconColor, iconBgHoverColor: "transparent", position: "right" }))))),
105
+ React.createElement(DropdownMenu, { options: levelActions[level]?.moreActions || [], targetID: row.id, iconName: "more_vert", iconColor: theme.tableMoreIconColor, iconHoverColor: theme.tableHoverMoreIconColor, iconBgHoverColor: "transparent", position: "right" }))))),
106
106
  row.extend && row.children.length > 0 && (React.createElement(ListRowExtend, null, row.children.map((_chiledRow) => {
107
107
  return gerenrateRow(_chiledRow, level + 1);
108
108
  })))));
@@ -20,7 +20,7 @@ export const Panel = styled.div `
20
20
  height: ${(p) => (p.height ? p.height : 'auto')};
21
21
  width: ${(p) => (p.fullWidth ? '100%' : 'auto')};
22
22
  position: absolute;
23
- z-index: ${p => p.zIndex ? p.zIndex : Theme.zIndex.dropdown};
23
+ z-index: ${(p) => (p.zIndex ? p.zIndex : Theme.zIndex.dropdown)};
24
24
  top: ${(p) => setPanelTop(p.size)};
25
25
  border: 1px solid ${Theme.colors.gray_2};
26
26
  border-top: none;
@@ -28,12 +28,16 @@ export const Panel = styled.div `
28
28
  `;
29
29
  export const PanelOption = styled.div `
30
30
  padding: ${Theme.padding.s} ${Theme.padding.m};
31
- cursor: pointer;
31
+ cursor: ${(p) => (p.isDisabled ? 'not-allowed' : 'pointer')};
32
32
  white-space: nowrap;
33
- font-size:16px;
34
- color: ${(p) => (p.active ? Theme.colors.primary : Theme.colors.text)};
33
+ font-size: 16px;
34
+ color: ${(p) => p.active
35
+ ? Theme.colors.primary
36
+ : p.isDisabled
37
+ ? Theme.colors.gray_1
38
+ : Theme.colors.text};
35
39
  :hover {
36
- background-color: ${lighten(0.4, Theme.colors.primary)};
40
+ background-color: ${(p) => p.isDisabled ? Theme.colors.gray_4 : lighten(0.4, Theme.colors.primary)};
37
41
  }
38
42
  ${(p) => p.width && `width:${p.width};`}
39
43
  `;
@@ -1,5 +1,9 @@
1
1
  import { FC } from 'react';
2
2
  import { IAction } from 'types/';
3
+ export interface ILevelAction {
4
+ level: number;
5
+ moreActions: IAction[];
6
+ }
3
7
  export interface IListProps {
4
8
  items: IListItem[];
5
9
  handleChange: (items: IListItem[]) => void;
@@ -10,7 +14,7 @@ export interface IListProps {
10
14
  isSelectable?: boolean;
11
15
  haveMoreOptions?: boolean;
12
16
  theme?: any;
13
- moreActions?: IAction[];
17
+ levelActions: ILevelAction[];
14
18
  }
15
19
  export interface IListItem {
16
20
  id: string;
@@ -12,6 +12,7 @@ interface IPanelOptionStyle {
12
12
  active: boolean;
13
13
  width?: string;
14
14
  onClick?: any;
15
+ isDisabled?: boolean;
15
16
  }
16
17
  export declare const PanelOption: import("styled-components").StyledComponent<"div", any, IPanelOptionStyle, never>;
17
18
  export {};
@@ -1,6 +1,7 @@
1
1
  export interface IOption {
2
2
  value: string | number;
3
3
  label: string | number;
4
+ disabled?: boolean;
4
5
  }
5
6
  export interface IAction {
6
7
  action: (id?: string) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "venice-ui",
3
- "version": "2.2.8",
3
+ "version": "2.2.10",
4
4
  "description": "Component library",
5
5
  "main": "index.js",
6
6
  "module": "./dist/esm/index.js",