@laerdal/life-react-components 1.0.1-dev.30.full → 1.0.1-dev.35.full

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 (72) hide show
  1. package/dist/esm/Button/Button.js +12 -6
  2. package/dist/esm/Button/Button.js.map +1 -1
  3. package/dist/esm/Button/DualFunctionButton.js +7 -6
  4. package/dist/esm/Button/DualFunctionButton.js.map +1 -1
  5. package/dist/esm/Dropdown/BasicDropdown.js +27 -25
  6. package/dist/esm/Dropdown/BasicDropdown.js.map +1 -1
  7. package/dist/esm/Dropdown/ChipDropdownInput.js +6 -2
  8. package/dist/esm/Dropdown/ChipDropdownInput.js.map +1 -1
  9. package/dist/esm/Dropdown/CommonStyling.js +44 -4
  10. package/dist/esm/Dropdown/CommonStyling.js.map +1 -1
  11. package/dist/esm/Dropdown/DropdownButton.js +50 -97
  12. package/dist/esm/Dropdown/DropdownButton.js.map +1 -1
  13. package/dist/esm/Dropdown/DropdownContent.js +53 -20
  14. package/dist/esm/Dropdown/DropdownContent.js.map +1 -1
  15. package/dist/esm/Dropdown/DropdownFilter.js +7 -33
  16. package/dist/esm/Dropdown/DropdownFilter.js.map +1 -1
  17. package/dist/esm/Footer/Components/FooterTop.js +0 -1
  18. package/dist/esm/Footer/Components/FooterTop.js.map +1 -1
  19. package/dist/esm/GlobalNavigationBar/Logo.js +7 -4
  20. package/dist/esm/GlobalNavigationBar/Logo.js.map +1 -1
  21. package/dist/esm/HyperLink/styling.js +9 -1
  22. package/dist/esm/HyperLink/styling.js.map +1 -1
  23. package/dist/js/Button/Button.js +6 -4
  24. package/dist/js/Button/Button.js.map +1 -1
  25. package/dist/js/Button/DualFunctionButton.js +16 -6
  26. package/dist/js/Button/DualFunctionButton.js.map +1 -1
  27. package/dist/js/Dropdown/BasicDropdown.d.ts +2 -2
  28. package/dist/js/Dropdown/BasicDropdown.js +28 -34
  29. package/dist/js/Dropdown/BasicDropdown.js.map +1 -1
  30. package/dist/js/Dropdown/ChipDropdownInput.js +10 -2
  31. package/dist/js/Dropdown/ChipDropdownInput.js.map +1 -1
  32. package/dist/js/Dropdown/CommonStyling.d.ts +1 -0
  33. package/dist/js/Dropdown/CommonStyling.js +11 -7
  34. package/dist/js/Dropdown/CommonStyling.js.map +1 -1
  35. package/dist/js/Dropdown/DropdownButton.d.ts +1 -1
  36. package/dist/js/Dropdown/DropdownButton.js +63 -92
  37. package/dist/js/Dropdown/DropdownButton.js.map +1 -1
  38. package/dist/js/Dropdown/DropdownButtonTypes.d.ts +14 -13
  39. package/dist/js/Dropdown/DropdownContent.d.ts +5 -1
  40. package/dist/js/Dropdown/DropdownContent.js +65 -33
  41. package/dist/js/Dropdown/DropdownContent.js.map +1 -1
  42. package/dist/js/Dropdown/DropdownFilter.js +11 -12
  43. package/dist/js/Dropdown/DropdownFilter.js.map +1 -1
  44. package/dist/js/Footer/Components/FooterTop.js +0 -1
  45. package/dist/js/Footer/Components/FooterTop.js.map +1 -1
  46. package/dist/js/GlobalNavigationBar/Logo.js +2 -2
  47. package/dist/js/GlobalNavigationBar/Logo.js.map +1 -1
  48. package/dist/js/HyperLink/styling.js +2 -2
  49. package/dist/js/HyperLink/styling.js.map +1 -1
  50. package/dist/umd/Button/Button.js +12 -6
  51. package/dist/umd/Button/Button.js.map +1 -1
  52. package/dist/umd/Button/DualFunctionButton.js +7 -6
  53. package/dist/umd/Button/DualFunctionButton.js.map +1 -1
  54. package/dist/umd/Dropdown/BasicDropdown.js +26 -24
  55. package/dist/umd/Dropdown/BasicDropdown.js.map +1 -1
  56. package/dist/umd/Dropdown/ChipDropdownInput.js +6 -2
  57. package/dist/umd/Dropdown/ChipDropdownInput.js.map +1 -1
  58. package/dist/umd/Dropdown/CommonStyling.js +45 -5
  59. package/dist/umd/Dropdown/CommonStyling.js.map +1 -1
  60. package/dist/umd/Dropdown/DropdownButton.js +62 -98
  61. package/dist/umd/Dropdown/DropdownButton.js.map +1 -1
  62. package/dist/umd/Dropdown/DropdownContent.js +55 -22
  63. package/dist/umd/Dropdown/DropdownContent.js.map +1 -1
  64. package/dist/umd/Dropdown/DropdownFilter.js +9 -37
  65. package/dist/umd/Dropdown/DropdownFilter.js.map +1 -1
  66. package/dist/umd/Footer/Components/FooterTop.js +0 -1
  67. package/dist/umd/Footer/Components/FooterTop.js.map +1 -1
  68. package/dist/umd/GlobalNavigationBar/Logo.js +7 -4
  69. package/dist/umd/GlobalNavigationBar/Logo.js.map +1 -1
  70. package/dist/umd/HyperLink/styling.js +9 -1
  71. package/dist/umd/HyperLink/styling.js.map +1 -1
  72. package/package.json +1 -1
@@ -11,11 +11,13 @@ var React = _interopRequireWildcard(require("react"));
11
11
 
12
12
  var _Button = require("../Button");
13
13
 
14
- var _index = require("../icons/index");
14
+ var _DropdownContent = _interopRequireDefault(require("./DropdownContent"));
15
15
 
16
- var _styles = require("../styles");
16
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
17
17
 
18
- var _CommonStyling = require("./CommonStyling");
18
+ var _templateObject;
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
21
 
20
22
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
23
 
@@ -33,14 +35,30 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
33
35
 
34
36
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
35
37
 
38
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
39
+
40
+ var Wrapper = _styledComponents.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: relative;\n display: inline-block;\n"])));
41
+
36
42
  var DropdownButton = function DropdownButton(_ref) {
37
- var list = _ref.list,
43
+ var items = _ref.items,
38
44
  icon = _ref.icon,
39
- iconSize = _ref.iconSize,
40
45
  disabled = _ref.disabled,
46
+ onClick = _ref.onClick,
47
+ _ref$itemsType = _ref.itemsType,
48
+ itemsType = _ref$itemsType === void 0 ? 'normal' : _ref$itemsType,
49
+ action = _ref.action,
50
+ _ref$actionLabel = _ref.actionLabel,
51
+ actionLabel = _ref$actionLabel === void 0 ? '' : _ref$actionLabel,
41
52
  width = _ref.width,
42
- iconColor = _ref.iconColor,
43
- onClick = _ref.onClick;
53
+ size = _ref.size,
54
+ alignLeft = _ref.alignLeft,
55
+ _ref$multiSelect = _ref.multiSelect,
56
+ multiSelect = _ref$multiSelect === void 0 ? false : _ref$multiSelect,
57
+ _ref$scrollable = _ref.scrollable,
58
+ scrollable = _ref$scrollable === void 0 ? false : _ref$scrollable,
59
+ _ref$pinTopItem = _ref.pinTopItem,
60
+ pinTopItem = _ref$pinTopItem === void 0 ? false : _ref$pinTopItem,
61
+ maxHeight = _ref.maxHeight;
44
62
 
45
63
  // Globally used variables within the view.
46
64
  var _React$useState = React.useState(false),
@@ -48,73 +66,19 @@ var DropdownButton = function DropdownButton(_ref) {
48
66
  dropdownOpen = _React$useState2[0],
49
67
  setDropdownOpen = _React$useState2[1];
50
68
 
51
- var dropdownContentRef = React.useRef(null);
52
- /**
53
- * Adds custom event handler.
54
- */
55
-
56
- React.useEffect(function () {
57
- document.addEventListener('click', handleClickOutside);
58
- return function () {
59
- document.removeEventListener('click', handleClickOutside);
60
- };
61
- });
62
- /**
63
- * Checks if we have clicked outside the dropdown - then close the dropdown.
64
- * @param event - Event handler from the mouse click.
65
- */
66
-
67
- var handleClickOutside = function handleClickOutside(event) {
68
- if (dropdownContentRef !== null && dropdownContentRef !== void 0 && dropdownContentRef.current && !dropdownContentRef.current.contains(event.target)) {
69
- if (dropdownOpen) {
70
- setDropdownOpen(false);
71
- }
72
- }
73
- };
74
- /**
75
- * Does all required actions when list item was selected.
76
- * @param {Object} event - Event handler from the mouse click.
77
- * @param {string} id - ID of the clicked list item.
78
- */
79
-
80
-
81
- var clickListItem = function clickListItem(event, id) {
82
- // Prevent default actions
83
- event.preventDefault(); // Do all required actions
84
-
85
- onClick(id);
86
- setDropdownOpen(false);
87
- };
88
- /**
89
- * Retrieves elements for the dropdown list.
90
- * @returns Dropdown list elements HTML code.
91
- */
69
+ var _React$useState3 = React.useState([]),
70
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
71
+ selectedValues = _React$useState4[0],
72
+ setSelectedValues = _React$useState4[1];
92
73
 
74
+ var _React$useState5 = React.useState(null),
75
+ _React$useState6 = _slicedToArray(_React$useState5, 2),
76
+ focused = _React$useState6[0],
77
+ setFocused = _React$useState6[1];
93
78
 
94
- var getElements = function getElements() {
95
- var options = list;
96
-
97
- if (options.length === 0) {
98
- return /*#__PURE__*/React.createElement(_CommonStyling.DropdownButton, {
99
- disabled: true
100
- }, /*#__PURE__*/React.createElement("span", null, "There are no options available"));
101
- }
102
-
103
- return options.map(function (item) {
104
- return /*#__PURE__*/React.createElement(_CommonStyling.DropdownButton, {
105
- type: "button",
106
- onClick: function onClick(event) {
107
- if (!item.disabled) clickListItem(event, item.id);
108
- },
109
- key: item.id,
110
- disabled: item.disabled,
111
- className: item.showDividerAbove ? 'show-divider-above' : ''
112
- }, item.icon && /*#__PURE__*/React.createElement("div", {
113
- className: "item-content"
114
- }, /*#__PURE__*/React.createElement("div", {
115
- className: "item-label"
116
- }, item.label), renderItemIcon(item.icon)), !item.icon && /*#__PURE__*/React.createElement("span", null, item.label));
117
- });
79
+ var handleValueSelect = function handleValueSelect(values) {
80
+ // Do all required actions
81
+ onClick(values);
118
82
  };
119
83
  /**
120
84
  * Renders Icon Button dropdown menu.
@@ -130,29 +94,36 @@ var DropdownButton = function DropdownButton(_ref) {
130
94
  return setDropdownOpen(!dropdownOpen);
131
95
  },
132
96
  disabled: disabled
133
- }, icon && _index.SystemIcons[icon]({
134
- size: iconSize,
135
- color: iconColor
136
- }));
137
- };
138
-
139
- var renderItemIcon = function renderItemIcon(i) {
140
- return i && /*#__PURE__*/React.createElement("div", {
141
- className: "item-icon"
142
- }, _index.SystemIcons[i]({
143
- size: '20px',
144
- color: _styles.COLORS.neutral_600
145
- }));
97
+ }, icon);
146
98
  };
147
99
 
148
- return /*#__PURE__*/React.createElement(React.Fragment, null, renderIconButton(), !disabled && /*#__PURE__*/React.createElement(_CommonStyling.DropdownContentStyling, {
149
- isButton: false,
150
- style: {
151
- width: width
100
+ return /*#__PURE__*/React.createElement(Wrapper, null, renderIconButton(), /*#__PURE__*/React.createElement(_DropdownContent.default, {
101
+ customizationProps: {
102
+ itemsType: itemsType,
103
+ action: action !== null && action !== void 0 ? action : function () {},
104
+ actionLabel: actionLabel,
105
+ onValueUpdate: handleValueSelect,
106
+ multiSelect: multiSelect,
107
+ scrollable: scrollable,
108
+ pinTopItem: pinTopItem,
109
+ maxHeight: maxHeight,
110
+ items: items
152
111
  },
153
- ref: dropdownContentRef,
154
- className: dropdownOpen ? 'show' : ''
155
- }, getElements()));
112
+ focused: focused,
113
+ setFocused: setFocused,
114
+ size: size,
115
+ width: width,
116
+ alignLeft: alignLeft,
117
+ isOpen: dropdownOpen,
118
+ setIsOpen: setDropdownOpen,
119
+ hideOnClickOutside: true,
120
+ filter: "",
121
+ selectedValues: itemsType == 'normal' ? [] : selectedValues,
122
+ setSelectedValues: setSelectedValues,
123
+ messageOnNoResults: "No results",
124
+ isButton: true,
125
+ id: "dropdown-content"
126
+ }));
156
127
  };
157
128
 
158
129
  var _default = DropdownButton;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Dropdown/DropdownButton.tsx"],"names":["DropdownButton","list","icon","iconSize","disabled","width","iconColor","onClick","React","useState","dropdownOpen","setDropdownOpen","dropdownContentRef","useRef","useEffect","document","addEventListener","handleClickOutside","removeEventListener","event","current","contains","target","clickListItem","id","preventDefault","getElements","options","length","map","item","showDividerAbove","label","renderItemIcon","renderIconButton","icons","size","color","i","COLORS","neutral_600"],"mappings":"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","sourcesContent":["/**\n * Import React libraries.\n */\nimport * as React from 'react';\n\n/**\n * Import custom components.\n */\nimport { IconButton } from '../Button';\nimport { SystemIcons as icons } from '../icons/index';\nimport { COLORS } from '../styles';\n\n/**\n * Import custom styles.\n */\nimport { DropdownContentStyling, DropdownButton as DB } from './CommonStyling';\n\n/**\n * Import custom types.\n */\nimport { DropdownButtonProps, Icons } from './DropdownButtonTypes';\n\nconst DropdownButton = ({ list, icon, iconSize, disabled, width, iconColor, onClick }: DropdownButtonProps) => {\n // Globally used variables within the view.\n const [dropdownOpen, setDropdownOpen] = React.useState<boolean>(false);\n const dropdownContentRef = React.useRef<HTMLDivElement>(null);\n\n /**\n * Adds custom event handler.\n */\n React.useEffect(() => {\n document.addEventListener('click', handleClickOutside);\n return () => {\n document.removeEventListener('click', handleClickOutside);\n };\n });\n\n /**\n * Checks if we have clicked outside the dropdown - then close the dropdown.\n * @param event - Event handler from the mouse click.\n */\n const handleClickOutside = (event: any) => {\n if (dropdownContentRef?.current && !dropdownContentRef.current.contains(event.target)) {\n if (dropdownOpen) {\n setDropdownOpen(false);\n }\n }\n };\n\n /**\n * Does all required actions when list item was selected.\n * @param {Object} event - Event handler from the mouse click.\n * @param {string} id - ID of the clicked list item.\n */\n const clickListItem = (event: React.MouseEvent, id: string): void => {\n // Prevent default actions\n event.preventDefault();\n\n // Do all required actions\n onClick(id);\n setDropdownOpen(false);\n };\n\n /**\n * Retrieves elements for the dropdown list.\n * @returns Dropdown list elements HTML code.\n */\n const getElements = () => {\n var options = list;\n\n if (options.length === 0) {\n return (\n <DB disabled>\n <span>There are no options available</span>\n </DB>\n );\n }\n return options.map((item) => {\n return (\n <DB\n type=\"button\"\n onClick={(event: React.MouseEvent) => {\n if (!item.disabled) clickListItem(event, item.id);\n }}\n key={item.id}\n disabled={item.disabled}\n className={item.showDividerAbove ? 'show-divider-above' : ''}>\n {item.icon && (\n <div className=\"item-content\">\n <div className=\"item-label\">{item.label}</div>\n {renderItemIcon(item.icon)}\n </div>\n )}\n {!item.icon && <span>{item.label}</span>}\n </DB>\n );\n });\n };\n\n /**\n * Renders Icon Button dropdown menu.\n * @returns HTML View for the Icon button dropdown menu.\n */\n const renderIconButton = () => {\n return (\n <IconButton variant=\"secondary\" shape=\"circular\" action={() => setDropdownOpen(!dropdownOpen)} disabled={disabled}>\n {icon && icons[icon]({ size: iconSize, color: iconColor })}\n </IconButton>\n );\n };\n\n const renderItemIcon = (i: Icons | undefined) => {\n return i && <div className=\"item-icon\">{icons[i]({ size: '20px', color: COLORS.neutral_600 })}</div>;\n };\n\n return (\n <>\n {renderIconButton()}\n\n {!disabled && (\n <DropdownContentStyling isButton={false} style={{ width }} ref={dropdownContentRef} className={dropdownOpen ? 'show' : ''}>\n {getElements()}\n </DropdownContentStyling>\n )}\n </>\n );\n};\n\nexport default DropdownButton;\n"],"file":"DropdownButton.js"}
1
+ {"version":3,"sources":["../../../src/Dropdown/DropdownButton.tsx"],"names":["Wrapper","styled","div","DropdownButton","items","icon","disabled","onClick","itemsType","action","actionLabel","width","size","alignLeft","multiSelect","scrollable","pinTopItem","maxHeight","React","useState","dropdownOpen","setDropdownOpen","selectedValues","setSelectedValues","focused","setFocused","handleValueSelect","values","renderIconButton","onValueUpdate"],"mappings":"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","sourcesContent":["/**\n * Import React libraries.\n */\nimport * as React from 'react';\n\n/**\n * Import custom components.\n */\nimport { IconButton } from '../Button';\nimport DropdownContent from './DropdownContent';\nimport styled from 'styled-components';\n\n/**\n * Import custom types.\n */\nimport { DropdownButtonProps } from './DropdownButtonTypes';\n\nconst Wrapper = styled.div`\n position: relative;\n display: inline-block;\n`;\n\nconst DropdownButton = ({ \n items, \n icon, \n disabled,\n onClick,\n itemsType = 'normal',\n action,\n actionLabel = '',\n width,\n size,\n alignLeft,\n multiSelect = false,\n scrollable = false,\n pinTopItem = false,\n maxHeight }: DropdownButtonProps) => {\n // Globally used variables within the view.\n const [dropdownOpen, setDropdownOpen] = React.useState<boolean>(false);\n const [selectedValues, setSelectedValues] = React.useState<string[]>([]);\n const [focused, setFocused] = React.useState<number | null>(null);\n\n const handleValueSelect = (values: string[]) => {\n // Do all required actions\n onClick(values);\n };\n\n /**\n * Renders Icon Button dropdown menu.\n * @returns HTML View for the Icon button dropdown menu.\n */\n const renderIconButton = () => {\n return (\n <IconButton variant=\"secondary\" shape=\"circular\" action={() => setDropdownOpen(!dropdownOpen)} disabled={disabled}>\n {icon}\n </IconButton>\n );\n };\n\n return (\n <Wrapper>\n {renderIconButton()}\n <DropdownContent\n customizationProps={{\n itemsType: itemsType,\n action: action ?? (() => {}),\n actionLabel: actionLabel,\n onValueUpdate: handleValueSelect,\n multiSelect: multiSelect,\n scrollable: scrollable,\n pinTopItem: pinTopItem,\n maxHeight: maxHeight,\n items: items\n }}\n focused={focused}\n setFocused={setFocused}\n size={size}\n width={width}\n alignLeft={alignLeft}\n isOpen={dropdownOpen}\n setIsOpen={setDropdownOpen}\n hideOnClickOutside={true}\n filter=''\n selectedValues={itemsType == 'normal' ? [] : selectedValues}\n setSelectedValues={setSelectedValues}\n messageOnNoResults='No results'\n isButton={true}\n id='dropdown-content'\n />\n </Wrapper>\n );\n};\n\nexport default DropdownButton;\n"],"file":"DropdownButton.js"}
@@ -1,17 +1,18 @@
1
- export declare type Icons = 'Add' | 'ArrowDropDown' | 'ArrowDropUp' | 'ArrowLineDown' | 'ArrowLineLeft' | 'ArrowLineRight' | 'ArrowLineUp' | 'ArrowStopLeft' | 'ArrowStopRight' | 'Attachment' | 'Attention' | 'BackwardsFiveSec' | 'Book' | 'BookmarkOff' | 'BookmarkOn' | 'Bullet' | 'Calendar' | 'CheckboxOff' | 'CheckboxOn' | 'CheckboxSemi' | 'CheckComplete' | 'ChevronDown' | 'ChevronLeft' | 'ChevronRight' | 'ChevronUp' | 'Clear' | 'Close' | 'ClosedCaptionOff' | 'ClosedCaptionOn' | 'CloudAttention' | 'CloudCheck' | 'CloudDownload' | 'CloudLocked' | 'CloudNoConnection' | 'CloudSyncing' | 'CloudUpload' | 'Cloud' | 'Dashboard' | 'Delete' | 'Download' | 'DragHandle' | 'DragIndicator' | 'Edit' | 'Educator' | 'Equals' | 'EventLog' | 'ExtendTextArea' | 'Filter' | 'Forward' | 'ForwardSlash' | 'ForwardFiveSec' | 'FullscreenExit' | 'Fullscreen' | 'GearSettings' | 'GridView' | 'Group' | 'GuidedTour' | 'Help' | 'Hierarchy' | 'History' | 'Home' | 'Information' | 'Institute' | 'Language' | 'ListView' | 'LoadingMedium' | 'LoadingSmall' | 'LockedOff' | 'LockedOn' | 'Login' | 'Logout' | 'Loop' | 'Mail' | 'Manikin' | 'MapPoint' | 'Menu' | 'Minus' | 'MoreHorizontal' | 'MoreVertical' | 'NotificationNew' | 'Notification' | 'OpenFolder' | 'OpenNewWindow' | 'Pause' | 'PlayOutline' | 'Play' | 'Plus' | 'PointDown' | 'PointLeft' | 'PointRight' | 'PointUp' | 'RadioButtonOff' | 'RadioButtonOn' | 'Record' | 'Refresh' | 'Replay' | 'Rewind' | 'Save' | 'Search' | 'Share' | 'ShoppingCart' | 'StarFilled' | 'StarOutlined' | 'Stop' | 'Support' | 'Team' | 'ThumbsDown' | 'ThumbsUp' | 'TimeLimited' | 'Time' | 'Tip' | 'Upload' | 'Usb' | 'User' | 'Video' | 'VisibleOff' | 'VisibleOn' | 'VolumeDown' | 'VolumeOff' | 'VolumeUp';
1
+ import { Size } from '../types';
2
+ import { DropdownItem } from './DropdownContent';
2
3
  export interface DropdownButtonProps {
3
- list: DropdownItem[];
4
- onClick: (value: string) => void;
5
- icon?: Icons;
6
- iconSize?: string;
7
- iconColor?: string;
4
+ items: DropdownItem[];
5
+ onClick: (value: string[]) => void;
6
+ icon?: React.ReactNode;
8
7
  width?: string;
9
8
  disabled?: boolean;
10
- }
11
- export interface DropdownItem {
12
- id: string;
13
- label: string;
14
- disabled?: boolean;
15
- showDividerAbove?: boolean;
16
- icon?: Icons;
9
+ size?: Size;
10
+ itemsType?: 'normal' | 'radio' | 'checkbox';
11
+ action?: () => void;
12
+ actionLabel?: string;
13
+ multiSelect?: boolean;
14
+ scrollable?: boolean;
15
+ pinTopItem?: boolean;
16
+ alignLeft?: boolean;
17
+ maxHeight?: string;
17
18
  }
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import { Size } from '../types';
3
3
  export declare const DDContainer: import("styled-components").StyledComponent<"div", any, {
4
4
  isButton: boolean;
5
+ width?: string;
5
6
  alignLeft?: boolean;
6
7
  size?: Size;
7
8
  scrollable?: boolean;
@@ -12,6 +13,7 @@ export interface DropdownItem {
12
13
  displayLabel?: string;
13
14
  noteLabel?: string;
14
15
  suggestion?: boolean;
16
+ showDividerAbove?: boolean;
15
17
  disabled?: boolean;
16
18
  icon?: React.ReactNode;
17
19
  }
@@ -23,7 +25,6 @@ export interface DropdownCustomizationProps {
23
25
  actionLabel?: string;
24
26
  action: () => void;
25
27
  pinTopItem?: boolean;
26
- isButton: boolean;
27
28
  onValueUpdate: (values: string[]) => void;
28
29
  items: DropdownItem[];
29
30
  }
@@ -36,10 +37,13 @@ export interface DropdownProps {
36
37
  size?: Size;
37
38
  id: string;
38
39
  filter: string;
40
+ width?: string;
39
41
  hideOnClickOutside: boolean;
40
42
  selectedValues: string[];
41
43
  setSelectedValues: (val: string[]) => void;
42
44
  messageOnNoResults: string;
45
+ focused: number | null;
46
+ setFocused: (focused: number | null) => void;
43
47
  }
44
48
  declare const DropdownContent: React.FunctionComponent<DropdownProps>;
45
49
  export default DropdownContent;
@@ -53,8 +53,10 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
53
53
 
54
54
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
55
55
 
56
- var DDContainer = _styledComponents.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: none;\n position: absolute;\n background-color: ", ";\n width: 100%;\n z-index: 1;\n margin-top: ", ";\n\n &.show {\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n\n &.up {\n top: auto;\n bottom: 100%;\n }\n\n ", "\n\n ", ";\n\n border: 1px solid ", ";\n box-sizing: border-box;\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.15);\n padding: 4px 0;\n\n min-width: ", ";\n border-radius: ", ";\n\n max-height: ", ";\n"])), _styles.COLORS.white, function (props) {
57
- return props.isButton ? '-4px' : '2px';
56
+ var DDContainer = _styledComponents.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: none;\n position: absolute;\n background-color: ", ";\n \n width: ", ";\n z-index: 1;\n margin: ", ";\n\n &.show {\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n\n &.up {\n top: auto;\n bottom: 100%;\n }\n\n ", "\n\n ", ";\n\n border: 1px solid ", ";\n box-sizing: border-box;\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.15);\n padding-top: 4px;\n padding-right: 0px;\n padding-bottom: 4px;\n padding-left: 0px;\n\n min-width: ", ";\n border-radius: ", ";\n\n max-height: ", ";\n"])), _styles.COLORS.white, function (props) {
57
+ return props.width ? props.width : '100%';
58
+ }, function (props) {
59
+ return props.isButton ? '-4px' : '4px 0px';
58
60
  }, function (props) {
59
61
  return props.alignLeft ? 'left: 0px;' : '';
60
62
  }, function (props) {
@@ -69,19 +71,19 @@ var DDContainer = _styledComponents.default.div(_templateObject || (_templateObj
69
71
 
70
72
  exports.DDContainer = DDContainer;
71
73
 
72
- var ListContainer = _styledComponents.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n ", "\n ", "\n\n div {\n padding-top: ", ";\n padding-bottom: ", ";\n }\n\n /* width */\n ::-webkit-scrollbar {\n width: 4px;\n cursor: pointer;\n }\n\n /* Track */\n ::-webkit-scrollbar-track {\n background: ", ";\n }\n\n /* Handle */\n ::-webkit-scrollbar-thumb {\n background: ", ";\n border-radius: 8px;\n }\n\n /* Handle on hover */\n ::-webkit-scrollbar-thumb:hover {\n background: ", ";\n }\n"])), function (props) {
74
+ var ListContainer = _styledComponents.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n ", "\n ", "\n\n div {\n padding-top: ", ";\n padding-bottom: ", ";\n }\n\n /* width */\n ::-webkit-scrollbar {\n width: 4px;\n margin: 0 6px;\n cursor: pointer;\n }\n\n /* Track */\n ::-webkit-scrollbar-track {\n background: ", ";\n border-radius: 8px;\n }\n\n /* Handle */\n ::-webkit-scrollbar-thumb {\n background: ", ";\n border-radius: 8px;\n }\n\n /* Handle on hover */\n ::-webkit-scrollbar-thumb:hover {\n background: ", ";\n }\n"])), function (props) {
73
75
  return props.scrollable ? 'overflow-y: scroll;' : '';
74
76
  }, function (props) {
75
- return props.itemsType != 'normal' ? 'margin: 2px 6px 0 16px;' : '';
77
+ return props.itemsType != 'normal' ? 'margin-left: 4px;' : '';
76
78
  }, function (props) {
77
79
  return props.size == _types.Size.Large ? '8px' : props.size == _types.Size.Medium ? '4px' : '0px';
78
80
  }, function (props) {
79
81
  return props.size == _types.Size.Large ? '8px' : props.size == _types.Size.Medium ? '4px' : '0px';
80
- }, _styles.COLORS.neutral_100, _styles.COLORS.neutral_300, _styles.COLORS.neutral_500);
82
+ }, _styles.COLORS.neutral_100, _styles.COLORS.neutral_600, _styles.COLORS.neutral_500);
81
83
 
82
- var ItemsContainer = _styledComponents.default.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n padding: 4px;\n"])));
84
+ var ItemsContainer = _styledComponents.default.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n"])));
83
85
 
84
- var TopItemContainer = _styledComponents.default.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n border-bottom-style: solid;\n border-bottom-color: ", ";\n border-bottom-width: 1px;\n margin-right: 22px;\n padding-left: 4px;\n"])), _styles.COLORS.neutral_200);
86
+ var TopItemContainer = _styledComponents.default.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n border-bottom-style: solid;\n border-bottom-color: ", ";\n border-bottom-width: 1px;\n margin-right: 22px; \n"])), _styles.COLORS.neutral_200);
85
87
 
86
88
  var ActionButtonContainer = _styledComponents.default.div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n border-top-style: solid;\n border-top-color: ", ";\n border-top-width: 1px;\n padding: 0px 16px 4px 16px;\n\n button {\n width: 100%;\n }\n"])), _styles.COLORS.neutral_200);
87
89
 
@@ -96,29 +98,26 @@ var DropdownContent = function DropdownContent(_ref) {
96
98
  size = _ref.size,
97
99
  isOpen = _ref.isOpen,
98
100
  hideOnClickOutside = _ref.hideOnClickOutside,
101
+ width = _ref.width,
99
102
  setIsOpen = _ref.setIsOpen,
100
103
  filter = _ref.filter,
104
+ focused = _ref.focused,
105
+ setFocused = _ref.setFocused,
101
106
  selectedValues = _ref.selectedValues,
102
107
  setSelectedValues = _ref.setSelectedValues,
103
108
  messageOnNoResults = _ref.messageOnNoResults;
104
109
 
105
- var _React$useState = _react.default.useState(null),
110
+ var _React$useState = _react.default.useState(false),
106
111
  _React$useState2 = _slicedToArray(_React$useState, 2),
107
- focused = _React$useState2[0],
108
- setFocused = _React$useState2[1];
109
-
110
- var _React$useState3 = _react.default.useState(false),
111
- _React$useState4 = _slicedToArray(_React$useState3, 2),
112
- isUp = _React$useState4[0],
113
- setIsUp = _React$useState4[1];
112
+ isUp = _React$useState2[0],
113
+ setIsUp = _React$useState2[1];
114
114
 
115
115
  var dropdownContentRef = _react.default.useRef(null);
116
116
 
117
- var itemsListRef = _react.default.useRef(null);
117
+ if (!customizationProps.itemsType) customizationProps.itemsType = 'normal';
118
+ if (!size) size = _types.Size.Small;
118
119
 
119
- _react.default.useEffect(function () {
120
- determineDropUp();
121
- }, [isOpen]);
120
+ var itemsListRef = _react.default.useRef(null);
122
121
 
123
122
  var determineDropUp = function determineDropUp() {
124
123
  var options = customizationProps.items;
@@ -249,10 +248,10 @@ var DropdownContent = function DropdownContent(_ref) {
249
248
 
250
249
  var arrLength = getFilteredItems().length;
251
250
 
252
- var _React$useState5 = _react.default.useState([]),
253
- _React$useState6 = _slicedToArray(_React$useState5, 2),
254
- elRefs = _React$useState6[0],
255
- setElRefs = _React$useState6[1];
251
+ var _React$useState3 = _react.default.useState([]),
252
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
253
+ elRefs = _React$useState4[0],
254
+ setElRefs = _React$useState4[1];
256
255
 
257
256
  _react.default.useEffect(function () {
258
257
  setElRefs(function (elRefs) {
@@ -260,7 +259,36 @@ var DropdownContent = function DropdownContent(_ref) {
260
259
  return getCorrectRef(elRefs[i]);
261
260
  });
262
261
  });
263
- }, [arrLength, selectedValues]);
262
+ }, [isOpen, arrLength, selectedValues]);
263
+
264
+ _react.default.useEffect(function () {
265
+ determineDropUp();
266
+ }, [isOpen]);
267
+
268
+ var haveTopItem = function haveTopItem() {
269
+ var _getSuggestions;
270
+
271
+ if (customizationProps.itemsType == 'radio' && selectedValues && (selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.length) > 0) return true;else if (customizationProps.itemsType == 'checkbox' && (customizationProps.multiSelect || (selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.length) > 0)) return true;else if (customizationProps.itemsType == 'normal' && ((_getSuggestions = getSuggestions()) === null || _getSuggestions === void 0 ? void 0 : _getSuggestions.length) > 0) return true;
272
+ return false;
273
+ };
274
+
275
+ var getSuggestions = function getSuggestions() {
276
+ return getFilteredItems().filter(function (x) {
277
+ return x.suggestion;
278
+ });
279
+ };
280
+
281
+ _react.default.useLayoutEffect(function () {
282
+ if (isOpen && (focused || focused == 0)) {
283
+ var _newFocusedElement$cu2;
284
+
285
+ var focusThis = focused == 0 && !haveTopItem() ? 1 : focused;
286
+ if (focusThis != focused) setFocused(focusThis);
287
+ var newFocusedElement = elRefs[focusThis];
288
+ console.log(newFocusedElement);
289
+ newFocusedElement === null || newFocusedElement === void 0 ? void 0 : (_newFocusedElement$cu2 = newFocusedElement.current) === null || _newFocusedElement$cu2 === void 0 ? void 0 : _newFocusedElement$cu2.focus();
290
+ }
291
+ }, [isOpen]);
264
292
 
265
293
  var getTopItem = function getTopItem() {
266
294
  if (!customizationProps.pinTopItem) return;
@@ -271,9 +299,7 @@ var DropdownContent = function DropdownContent(_ref) {
271
299
  });
272
300
  }).length) == visibleItems.length;
273
301
  var showTopItem = false;
274
- var suggestions = getFilteredItems().filter(function (x) {
275
- return x.suggestion;
276
- });
302
+ var suggestions = getSuggestions();
277
303
  if (customizationProps.itemsType == 'radio' && selectedValues && (selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.length) > 0) showTopItem = true;else if (customizationProps.itemsType == 'checkbox' && (customizationProps.multiSelect || (selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.length) > 0)) showTopItem = true;else if (customizationProps.itemsType == 'normal' && suggestions.length > 0) showTopItem = true;
278
304
  if (!showTopItem) return;
279
305
  return /*#__PURE__*/_react.default.createElement(TopItemContainer, null, customizationProps.itemsType == 'radio' && /*#__PURE__*/_react.default.createElement(_InputFields.RadioButton, {
@@ -386,10 +412,12 @@ var DropdownContent = function DropdownContent(_ref) {
386
412
  setIsOpen(false);
387
413
  setFocused(null);
388
414
  },
389
- className: selectedValues !== null && selectedValues !== void 0 && selectedValues.includes(item.value) ? 'active' : '',
415
+ className: (item.showDividerAbove ? 'show-divider-above' : '') + ' ' + (selectedValues !== null && selectedValues !== void 0 && selectedValues.includes(item.value) ? 'active' : ''),
390
416
  key: "key_".concat(id, "_").concat(number++),
391
417
  id: "".concat(id, "_").concat(number + 1)
392
- }, /*#__PURE__*/_react.default.createElement("div", {
418
+ }, item.showDividerAbove && /*#__PURE__*/_react.default.createElement("div", {
419
+ className: "divider"
420
+ }), /*#__PURE__*/_react.default.createElement("div", {
393
421
  className: "item-content"
394
422
  }, item.icon && /*#__PURE__*/_react.default.createElement("div", {
395
423
  className: "item-icon"
@@ -403,9 +431,10 @@ var DropdownContent = function DropdownContent(_ref) {
403
431
  }));
404
432
  };
405
433
 
406
- return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(DDContainer, {
434
+ return /*#__PURE__*/_react.default.createElement(DDContainer, {
407
435
  ref: dropdownContentRef,
408
436
  size: size,
437
+ width: width,
409
438
  isButton: isButton,
410
439
  alignLeft: alignLeft,
411
440
  scrollable: customizationProps.scrollable,
@@ -426,7 +455,7 @@ var DropdownContent = function DropdownContent(_ref) {
426
455
  onClick: function onClick() {
427
456
  return customizationProps.action();
428
457
  }
429
- }, customizationProps.actionLabel))));
458
+ }, customizationProps.actionLabel)));
430
459
  /* ),
431
460
  {
432
461
  handleClickOutside: () => () => {
@@ -450,13 +479,13 @@ DropdownContent.propTypes = {
450
479
  actionLabel: _propTypes.default.string,
451
480
  action: _propTypes.default.func.isRequired,
452
481
  pinTopItem: _propTypes.default.bool,
453
- isButton: _propTypes.default.bool.isRequired,
454
482
  onValueUpdate: _propTypes.default.func.isRequired,
455
483
  items: _propTypes.default.arrayOf(_propTypes.default.shape({
456
484
  value: _propTypes.default.string.isRequired,
457
485
  displayLabel: _propTypes.default.string,
458
486
  noteLabel: _propTypes.default.string,
459
487
  suggestion: _propTypes.default.bool,
488
+ showDividerAbove: _propTypes.default.bool,
460
489
  disabled: _propTypes.default.bool,
461
490
  icon: _propTypes.default.node
462
491
  })).isRequired
@@ -466,10 +495,13 @@ DropdownContent.propTypes = {
466
495
  setIsOpen: _propTypes.default.func.isRequired,
467
496
  id: _propTypes.default.string.isRequired,
468
497
  filter: _propTypes.default.string.isRequired,
498
+ width: _propTypes.default.string,
469
499
  hideOnClickOutside: _propTypes.default.bool.isRequired,
470
500
  selectedValues: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
471
501
  setSelectedValues: _propTypes.default.func.isRequired,
472
- messageOnNoResults: _propTypes.default.string.isRequired
502
+ messageOnNoResults: _propTypes.default.string.isRequired,
503
+ focused: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.oneOf([null])]),
504
+ setFocused: _propTypes.default.func.isRequired
473
505
  };
474
506
  var _default = DropdownContent;
475
507
  exports.default = _default;