@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.
- package/dist/esm/Button/Button.js +12 -6
- package/dist/esm/Button/Button.js.map +1 -1
- package/dist/esm/Button/DualFunctionButton.js +7 -6
- package/dist/esm/Button/DualFunctionButton.js.map +1 -1
- package/dist/esm/Dropdown/BasicDropdown.js +27 -25
- package/dist/esm/Dropdown/BasicDropdown.js.map +1 -1
- package/dist/esm/Dropdown/ChipDropdownInput.js +6 -2
- package/dist/esm/Dropdown/ChipDropdownInput.js.map +1 -1
- package/dist/esm/Dropdown/CommonStyling.js +44 -4
- package/dist/esm/Dropdown/CommonStyling.js.map +1 -1
- package/dist/esm/Dropdown/DropdownButton.js +50 -97
- package/dist/esm/Dropdown/DropdownButton.js.map +1 -1
- package/dist/esm/Dropdown/DropdownContent.js +53 -20
- package/dist/esm/Dropdown/DropdownContent.js.map +1 -1
- package/dist/esm/Dropdown/DropdownFilter.js +7 -33
- package/dist/esm/Dropdown/DropdownFilter.js.map +1 -1
- package/dist/esm/Footer/Components/FooterTop.js +0 -1
- package/dist/esm/Footer/Components/FooterTop.js.map +1 -1
- package/dist/esm/GlobalNavigationBar/Logo.js +7 -4
- package/dist/esm/GlobalNavigationBar/Logo.js.map +1 -1
- package/dist/esm/HyperLink/styling.js +9 -1
- package/dist/esm/HyperLink/styling.js.map +1 -1
- package/dist/js/Button/Button.js +6 -4
- package/dist/js/Button/Button.js.map +1 -1
- package/dist/js/Button/DualFunctionButton.js +16 -6
- package/dist/js/Button/DualFunctionButton.js.map +1 -1
- package/dist/js/Dropdown/BasicDropdown.d.ts +2 -2
- package/dist/js/Dropdown/BasicDropdown.js +28 -34
- package/dist/js/Dropdown/BasicDropdown.js.map +1 -1
- package/dist/js/Dropdown/ChipDropdownInput.js +10 -2
- package/dist/js/Dropdown/ChipDropdownInput.js.map +1 -1
- package/dist/js/Dropdown/CommonStyling.d.ts +1 -0
- package/dist/js/Dropdown/CommonStyling.js +11 -7
- package/dist/js/Dropdown/CommonStyling.js.map +1 -1
- package/dist/js/Dropdown/DropdownButton.d.ts +1 -1
- package/dist/js/Dropdown/DropdownButton.js +63 -92
- package/dist/js/Dropdown/DropdownButton.js.map +1 -1
- package/dist/js/Dropdown/DropdownButtonTypes.d.ts +14 -13
- package/dist/js/Dropdown/DropdownContent.d.ts +5 -1
- package/dist/js/Dropdown/DropdownContent.js +65 -33
- package/dist/js/Dropdown/DropdownContent.js.map +1 -1
- package/dist/js/Dropdown/DropdownFilter.js +11 -12
- package/dist/js/Dropdown/DropdownFilter.js.map +1 -1
- package/dist/js/Footer/Components/FooterTop.js +0 -1
- package/dist/js/Footer/Components/FooterTop.js.map +1 -1
- package/dist/js/GlobalNavigationBar/Logo.js +2 -2
- package/dist/js/GlobalNavigationBar/Logo.js.map +1 -1
- package/dist/js/HyperLink/styling.js +2 -2
- package/dist/js/HyperLink/styling.js.map +1 -1
- package/dist/umd/Button/Button.js +12 -6
- package/dist/umd/Button/Button.js.map +1 -1
- package/dist/umd/Button/DualFunctionButton.js +7 -6
- package/dist/umd/Button/DualFunctionButton.js.map +1 -1
- package/dist/umd/Dropdown/BasicDropdown.js +26 -24
- package/dist/umd/Dropdown/BasicDropdown.js.map +1 -1
- package/dist/umd/Dropdown/ChipDropdownInput.js +6 -2
- package/dist/umd/Dropdown/ChipDropdownInput.js.map +1 -1
- package/dist/umd/Dropdown/CommonStyling.js +45 -5
- package/dist/umd/Dropdown/CommonStyling.js.map +1 -1
- package/dist/umd/Dropdown/DropdownButton.js +62 -98
- package/dist/umd/Dropdown/DropdownButton.js.map +1 -1
- package/dist/umd/Dropdown/DropdownContent.js +55 -22
- package/dist/umd/Dropdown/DropdownContent.js.map +1 -1
- package/dist/umd/Dropdown/DropdownFilter.js +9 -37
- package/dist/umd/Dropdown/DropdownFilter.js.map +1 -1
- package/dist/umd/Footer/Components/FooterTop.js +0 -1
- package/dist/umd/Footer/Components/FooterTop.js.map +1 -1
- package/dist/umd/GlobalNavigationBar/Logo.js +7 -4
- package/dist/umd/GlobalNavigationBar/Logo.js.map +1 -1
- package/dist/umd/HyperLink/styling.js +9 -1
- package/dist/umd/HyperLink/styling.js.map +1 -1
- 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
|
|
14
|
+
var _DropdownContent = _interopRequireDefault(require("./DropdownContent"));
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
17
17
|
|
|
18
|
-
var
|
|
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
|
|
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
|
-
|
|
43
|
-
|
|
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
|
|
52
|
-
|
|
53
|
-
|
|
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
|
|
95
|
-
|
|
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
|
|
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(
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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
|
-
|
|
154
|
-
|
|
155
|
-
|
|
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":["
|
|
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
|
-
|
|
1
|
+
import { Size } from '../types';
|
|
2
|
+
import { DropdownItem } from './DropdownContent';
|
|
2
3
|
export interface DropdownButtonProps {
|
|
3
|
-
|
|
4
|
-
onClick: (value: string) => void;
|
|
5
|
-
icon?:
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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:
|
|
57
|
-
return props.
|
|
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:
|
|
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.
|
|
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
|
|
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
|
|
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(
|
|
110
|
+
var _React$useState = _react.default.useState(false),
|
|
106
111
|
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
107
|
-
|
|
108
|
-
|
|
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
|
-
|
|
117
|
+
if (!customizationProps.itemsType) customizationProps.itemsType = 'normal';
|
|
118
|
+
if (!size) size = _types.Size.Small;
|
|
118
119
|
|
|
119
|
-
_react.default.
|
|
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$
|
|
253
|
-
_React$
|
|
254
|
-
elRefs = _React$
|
|
255
|
-
setElRefs = _React$
|
|
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 =
|
|
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(
|
|
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;
|