@laerdal/life-react-components 1.8.0-dev.2.full → 1.8.0-dev.5

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 (46) hide show
  1. package/dist/Breadcrumb/Breadcrumb.cjs +1 -0
  2. package/dist/Breadcrumb/Breadcrumb.cjs.map +1 -1
  3. package/dist/Breadcrumb/Breadcrumb.js +1 -0
  4. package/dist/Breadcrumb/Breadcrumb.js.map +1 -1
  5. package/dist/ChipsInput/ChipDropdownInput.cjs +4 -3
  6. package/dist/ChipsInput/ChipDropdownInput.cjs.map +1 -1
  7. package/dist/ChipsInput/ChipDropdownInput.d.ts +0 -1
  8. package/dist/ChipsInput/ChipDropdownInput.js +4 -3
  9. package/dist/ChipsInput/ChipDropdownInput.js.map +1 -1
  10. package/dist/ChipsInput/ChipInputField.cjs +5 -2
  11. package/dist/ChipsInput/ChipInputField.cjs.map +1 -1
  12. package/dist/ChipsInput/ChipInputField.d.ts +1 -0
  13. package/dist/ChipsInput/ChipInputField.js +5 -2
  14. package/dist/ChipsInput/ChipInputField.js.map +1 -1
  15. package/dist/ChipsInput/ChipInputTypes.d.ts +1 -0
  16. package/dist/Dropdown/CommonStyling.cjs +21 -9
  17. package/dist/Dropdown/CommonStyling.cjs.map +1 -1
  18. package/dist/Dropdown/CommonStyling.d.ts +5 -1
  19. package/dist/Dropdown/CommonStyling.js +7 -7
  20. package/dist/Dropdown/CommonStyling.js.map +1 -1
  21. package/dist/Dropdown/DropdownButton.cjs +76 -18
  22. package/dist/Dropdown/DropdownButton.cjs.map +1 -1
  23. package/dist/Dropdown/DropdownButton.d.ts +1 -1
  24. package/dist/Dropdown/DropdownButton.js +73 -19
  25. package/dist/Dropdown/DropdownButton.js.map +1 -1
  26. package/dist/Dropdown/DropdownButtonTypes.d.ts +16 -5
  27. package/dist/Dropdown/DropdownFilter.cjs +79 -139
  28. package/dist/Dropdown/DropdownFilter.cjs.map +1 -1
  29. package/dist/Dropdown/DropdownFilter.d.ts +8 -14
  30. package/dist/Dropdown/DropdownFilter.js +79 -139
  31. package/dist/Dropdown/DropdownFilter.js.map +1 -1
  32. package/dist/GlobalNavigationBar/MainMenu.cjs.map +1 -1
  33. package/dist/GlobalNavigationBar/MainMenu.js.map +1 -1
  34. package/dist/List/ListRow.cjs +1 -0
  35. package/dist/List/ListRow.cjs.map +1 -1
  36. package/dist/List/ListRow.js +1 -0
  37. package/dist/List/ListRow.js.map +1 -1
  38. package/dist/Table/TableFooter.cjs +12 -14
  39. package/dist/Table/TableFooter.cjs.map +1 -1
  40. package/dist/Table/TableFooter.js +13 -15
  41. package/dist/Table/TableFooter.js.map +1 -1
  42. package/dist/Table/TableHeaders.cjs +1 -0
  43. package/dist/Table/TableHeaders.cjs.map +1 -1
  44. package/dist/Table/TableHeaders.js +1 -0
  45. package/dist/Table/TableHeaders.js.map +1 -1
  46. package/package.json +1 -1
@@ -1,5 +1,7 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
2
3
  import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
4
+ var _excluded = ["items", "icon", "disabled", "onClick", "itemsType", "action", "actionLabel", "actionVariant", "actionIcon", "actionLoading", "size", "width", "alignLeft", "multiSelect", "scrollable", "pinTopItem", "maxHeight", "className", "value"];
3
5
 
4
6
  var _templateObject;
5
7
 
@@ -18,7 +20,9 @@ import styled from 'styled-components';
18
20
  * Import custom types.
19
21
  */
20
22
 
21
- import { useClickOutsideRef, useFocusOutsideRef } from '../common';
23
+ import { defaultOnMouseDownHandler, useClickOutsideRef, useFocusOutsideRef } from '../common';
24
+ import { TextButtonDropdownArrow, TextButtonDropdownContent, TextButtonDropdownIcon, TextButtonDropdownText, TextButtonDropdownWrapper } from './CommonStyling';
25
+ import { ArrowDropDown, ArrowDropUp } from '../icons/systemicons/SystemIcons';
22
26
  import { jsx as _jsx } from "react/jsx-runtime";
23
27
  import { jsxs as _jsxs } from "react/jsx-runtime";
24
28
  var Wrapper = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: relative;\n display: inline-block;\n"])));
@@ -36,8 +40,8 @@ var DropdownButton = function DropdownButton(_ref) {
36
40
  actionVariant = _ref.actionVariant,
37
41
  actionIcon = _ref.actionIcon,
38
42
  actionLoading = _ref.actionLoading,
39
- width = _ref.width,
40
43
  size = _ref.size,
44
+ width = _ref.width,
41
45
  alignLeft = _ref.alignLeft,
42
46
  _ref$multiSelect = _ref.multiSelect,
43
47
  multiSelect = _ref$multiSelect === void 0 ? false : _ref$multiSelect,
@@ -46,7 +50,9 @@ var DropdownButton = function DropdownButton(_ref) {
46
50
  _ref$pinTopItem = _ref.pinTopItem,
47
51
  pinTopItem = _ref$pinTopItem === void 0 ? false : _ref$pinTopItem,
48
52
  maxHeight = _ref.maxHeight,
49
- className = _ref.className;
53
+ className = _ref.className,
54
+ value = _ref.value,
55
+ rest = _objectWithoutProperties(_ref, _excluded);
50
56
 
51
57
  // Globally used variables within the view.
52
58
  var _React$useState = React.useState(false),
@@ -77,6 +83,12 @@ var DropdownButton = function DropdownButton(_ref) {
77
83
  React.useEffect(function () {
78
84
  !dropdownOpen && setKeyboardNavigated(false);
79
85
  }, [dropdownOpen]);
86
+ React.useEffect(function () {
87
+ disabled && setDropdownOpen(false);
88
+ }, [disabled]);
89
+ React.useEffect(function () {
90
+ setSelectedValues(value || []);
91
+ }, [value]);
80
92
 
81
93
  var handleValueSelect = function handleValueSelect(values) {
82
94
  // Do all required actions
@@ -88,26 +100,68 @@ var DropdownButton = function DropdownButton(_ref) {
88
100
  */
89
101
 
90
102
 
91
- var renderIconButton = function renderIconButton() {
92
- return /*#__PURE__*/_jsx(IconButton, {
93
- variant: "secondary",
94
- shape: "circular",
95
- action: function action(event) {
96
- setDropdownOpen(!dropdownOpen);
97
-
98
- if ((event === null || event === void 0 ? void 0 : event.detail) !== 1) {
99
- setKeyboardNavigated(true);
100
- }
101
- },
102
- disabled: disabled,
103
- children: icon
104
- });
103
+ var renderButton = function renderButton() {
104
+ switch (rest.type) {
105
+ case 'icon':
106
+ return /*#__PURE__*/_jsx(IconButton, {
107
+ variant: "secondary",
108
+ shape: "circular",
109
+ action: function action(event) {
110
+ setDropdownOpen(!dropdownOpen);
111
+
112
+ if ((event === null || event === void 0 ? void 0 : event.detail) !== 1) {
113
+ setKeyboardNavigated(true);
114
+ }
115
+ },
116
+ disabled: disabled,
117
+ children: icon
118
+ });
119
+
120
+ case 'text':
121
+ var label = rest.keepLabel || !(selectedValues !== null && selectedValues !== void 0 && selectedValues.length) ? rest.label : items.filter(function (a) {
122
+ return selectedValues.includes(a.value);
123
+ }).map(function (a) {
124
+ var _a$displayLabel;
125
+
126
+ return (_a$displayLabel = a.displayLabel) !== null && _a$displayLabel !== void 0 ? _a$displayLabel : a.value;
127
+ }).join(', ');
128
+ var cls = "".concat(disabled && 'disabled', " ").concat(dropdownOpen && 'expanded', " ").concat(className);
129
+ return /*#__PURE__*/_jsx(TextButtonDropdownWrapper, {
130
+ tabIndex: !disabled ? 0 : -1,
131
+ className: cls,
132
+ onMouseDown: defaultOnMouseDownHandler,
133
+ onKeyDown: function onKeyDown(e) {
134
+ if (e.key === 'Enter' || e.key === ' ') {
135
+ e.preventDefault();
136
+ e.stopPropagation();
137
+ setDropdownOpen(!dropdownOpen);
138
+ setKeyboardNavigated(true);
139
+ }
140
+ },
141
+ onClick: function onClick() {
142
+ return !disabled && setDropdownOpen(!dropdownOpen);
143
+ },
144
+ children: /*#__PURE__*/_jsxs(TextButtonDropdownContent, {
145
+ children: [icon && /*#__PURE__*/_jsx(TextButtonDropdownIcon, {
146
+ children: icon
147
+ }), /*#__PURE__*/_jsx(TextButtonDropdownText, {
148
+ children: label
149
+ }), /*#__PURE__*/_jsx(TextButtonDropdownArrow, {
150
+ children: dropdownOpen ? /*#__PURE__*/_jsx(ArrowDropUp, {
151
+ size: "24px"
152
+ }) : /*#__PURE__*/_jsx(ArrowDropDown, {
153
+ size: "24px"
154
+ })
155
+ })]
156
+ })
157
+ });
158
+ }
105
159
  };
106
160
 
107
161
  return /*#__PURE__*/_jsxs(Wrapper, {
108
162
  className: className,
109
163
  ref: containerRef,
110
- children: [renderIconButton(), /*#__PURE__*/_jsx(DropdownContent, {
164
+ children: [renderButton(), /*#__PURE__*/_jsx(DropdownContent, {
111
165
  customizationProps: {
112
166
  itemsType: itemsType,
113
167
  action: action !== null && action !== void 0 ? action : function () {},
@@ -131,7 +185,7 @@ var DropdownButton = function DropdownButton(_ref) {
131
185
  setIsOpen: setDropdownOpen,
132
186
  outline: keyboardNavigated,
133
187
  filter: "",
134
- selectedValues: itemsType == 'normal' ? [] : selectedValues,
188
+ selectedValues: rest.type === 'icon' && itemsType === 'normal' ? [] : selectedValues,
135
189
  setSelectedValues: setSelectedValues,
136
190
  messageOnNoResults: "No results",
137
191
  isButton: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Dropdown/DropdownButton.tsx"],"names":["React","IconButton","DropdownContent","styled","useClickOutsideRef","useFocusOutsideRef","Wrapper","div","DropdownButton","items","icon","disabled","onClick","itemsType","action","actionLabel","actionVariant","actionIcon","actionLoading","width","size","alignLeft","multiSelect","scrollable","pinTopItem","maxHeight","className","useState","dropdownOpen","setDropdownOpen","selectedValues","setSelectedValues","focused","setFocused","keyboardNavigated","setKeyboardNavigated","containerRef","useEffect","handleValueSelect","values","renderIconButton","event","detail","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';\nimport {useClickOutsideRef, useFocusOutsideRef} from '../common';\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 actionVariant,\n actionIcon,\n actionLoading,\n width,\n size,\n alignLeft,\n multiSelect = false,\n scrollable = false,\n pinTopItem = false,\n maxHeight,\n className\n }: 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 const [keyboardNavigated, setKeyboardNavigated] = React.useState<boolean>(false);\n\n const containerRef = useClickOutsideRef(() => setDropdownOpen(false), [], useFocusOutsideRef(() => setDropdownOpen(false)));\n\n React.useEffect(() => {\n !dropdownOpen && setKeyboardNavigated(false)\n }, [dropdownOpen]);\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\"\n shape=\"circular\"\n action={(event: any) => {\n setDropdownOpen(!dropdownOpen);\n if (event?.detail !== 1) {\n setKeyboardNavigated(true);\n }\n }}\n disabled={disabled}>\n {icon}\n </IconButton>\n );\n };\n\n return (\n <Wrapper className={className} ref={containerRef}>\n {renderIconButton()}\n <DropdownContent\n customizationProps={{\n itemsType: itemsType,\n action: action ?? (() => {\n }),\n actionLabel: actionLabel,\n actionVariant: actionVariant,\n onValueUpdate: handleValueSelect,\n multiSelect: multiSelect,\n actionIcon: actionIcon,\n actionLoading: actionLoading,\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 outline={keyboardNavigated}\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
+ {"version":3,"sources":["../../src/Dropdown/DropdownButton.tsx"],"names":["React","IconButton","DropdownContent","styled","defaultOnMouseDownHandler","useClickOutsideRef","useFocusOutsideRef","TextButtonDropdownArrow","TextButtonDropdownContent","TextButtonDropdownIcon","TextButtonDropdownText","TextButtonDropdownWrapper","ArrowDropDown","ArrowDropUp","Wrapper","div","DropdownButton","items","icon","disabled","onClick","itemsType","action","actionLabel","actionVariant","actionIcon","actionLoading","size","width","alignLeft","multiSelect","scrollable","pinTopItem","maxHeight","className","value","rest","useState","dropdownOpen","setDropdownOpen","selectedValues","setSelectedValues","focused","setFocused","keyboardNavigated","setKeyboardNavigated","containerRef","useEffect","handleValueSelect","values","renderButton","type","event","detail","label","keepLabel","length","filter","a","includes","map","displayLabel","join","cls","e","key","preventDefault","stopPropagation","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';\nimport {defaultOnMouseDownHandler, useClickOutsideRef, useFocusOutsideRef} from '../common';\nimport {\n TextButtonDropdownArrow,\n TextButtonDropdownContent,\n TextButtonDropdownIcon,\n TextButtonDropdownText,\n TextButtonDropdownWrapper\n} from './CommonStyling';\nimport {ArrowDropDown, ArrowDropUp} from '../icons/systemicons/SystemIcons';\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 actionVariant,\n actionIcon,\n actionLoading,\n size,\n width,\n alignLeft,\n multiSelect = false,\n scrollable = false,\n pinTopItem = false,\n maxHeight,\n className,\n value,\n ...rest\n }: 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 const [keyboardNavigated, setKeyboardNavigated] = React.useState<boolean>(false);\n\n const containerRef = useClickOutsideRef(() => setDropdownOpen(false), [], useFocusOutsideRef(() => setDropdownOpen(false)));\n\n React.useEffect(() => {\n !dropdownOpen && setKeyboardNavigated(false)\n }, [dropdownOpen]);\n\n React.useEffect(() => {\n disabled && setDropdownOpen(false)\n }, [disabled]);\n\n React.useEffect(() => {\n setSelectedValues(value || []);\n }, [value]);\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 renderButton = () => {\n switch (rest.type) {\n case 'icon':\n return (\n <IconButton variant=\"secondary\"\n shape=\"circular\"\n action={(event: any) => {\n setDropdownOpen(!dropdownOpen);\n if (event?.detail !== 1) {\n setKeyboardNavigated(true);\n }\n }}\n disabled={disabled}>\n {icon}\n </IconButton>\n );\n case 'text':\n const label = rest.keepLabel || !selectedValues?.length\n ? rest.label\n : items.filter(a => selectedValues.includes(a.value)).map(a => a.displayLabel ?? a.value).join(', ');\n const cls = `${disabled && 'disabled'} ${dropdownOpen && 'expanded'} ${className}`;\n return <TextButtonDropdownWrapper tabIndex={!disabled ? 0 : -1}\n className={cls}\n onMouseDown={defaultOnMouseDownHandler}\n onKeyDown={e => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n setDropdownOpen(!dropdownOpen);\n setKeyboardNavigated(true);\n }\n }}\n onClick={() => !disabled && setDropdownOpen(!dropdownOpen)}>\n <TextButtonDropdownContent>\n {icon && <TextButtonDropdownIcon>{icon}</TextButtonDropdownIcon>}\n <TextButtonDropdownText>{label}</TextButtonDropdownText>\n <TextButtonDropdownArrow>\n {\n dropdownOpen\n ? <ArrowDropUp size=\"24px\"/>\n : <ArrowDropDown size=\"24px\"/>\n }\n </TextButtonDropdownArrow>\n </TextButtonDropdownContent>\n </TextButtonDropdownWrapper>\n }\n };\n\n return (\n <Wrapper className={className} ref={containerRef}>\n {renderButton()}\n <DropdownContent\n customizationProps={{\n itemsType: itemsType,\n action: action ?? (() => {\n }),\n actionLabel: actionLabel,\n actionVariant: actionVariant,\n onValueUpdate: handleValueSelect,\n multiSelect: multiSelect,\n actionIcon: actionIcon,\n actionLoading: actionLoading,\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 outline={keyboardNavigated}\n filter=\"\"\n selectedValues={rest.type === 'icon' && 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,10 +1,9 @@
1
1
  import { Size } from '../types';
2
2
  import { DropdownItem } from './DropdownContent';
3
- export interface DropdownButtonProps {
3
+ export interface DropdownButtonBaseProps {
4
4
  items: DropdownItem[];
5
+ value?: string[];
5
6
  onClick: (value: string[]) => void;
6
- icon?: React.ReactNode;
7
- width?: string;
8
7
  disabled?: boolean;
9
8
  size?: Size;
10
9
  itemsType?: 'normal' | 'radio' | 'checkbox';
@@ -15,8 +14,20 @@ export interface DropdownButtonProps {
15
14
  actionVariant?: 'primary' | 'secondary' | 'tertiary' | undefined;
16
15
  multiSelect?: boolean;
17
16
  scrollable?: boolean;
18
- pinTopItem?: boolean;
19
- alignLeft?: boolean;
20
17
  maxHeight?: string;
18
+ pinTopItem?: boolean;
21
19
  className?: string;
20
+ icon?: React.ReactNode;
21
+ width?: string;
22
+ alignLeft?: boolean;
22
23
  }
24
+ export declare type IconDropdownButtonProps = DropdownButtonBaseProps & {
25
+ type: 'icon';
26
+ icon: React.ReactNode;
27
+ };
28
+ export declare type TextDropdownButtonProps = DropdownButtonBaseProps & {
29
+ type: 'text';
30
+ label?: string;
31
+ keepLabel?: boolean;
32
+ };
33
+ export declare type DropdownButtonProps = IconDropdownButtonProps | TextDropdownButtonProps;
@@ -47,47 +47,45 @@ var DropdownFilter = function DropdownFilter(_ref) {
47
47
  placeholder = _ref.placeholder,
48
48
  onSelect = _ref.onSelect,
49
49
  onInputChange = _ref.onInputChange,
50
- initalValue = _ref.initalValue,
50
+ value = _ref.value,
51
51
  required = _ref.required,
52
- disableSorting = _ref.disableSorting,
53
52
  messageOnNoResults = _ref.messageOnNoResults,
54
53
  disabled = _ref.disabled,
55
54
  locked = _ref.locked,
56
55
  scrollable = _ref.scrollable,
57
- isButton = _ref.isButton,
58
56
  activeValidationMessage = _ref.activeValidationMessage,
59
57
  autofilledMessage = _ref.autofilledMessage,
60
58
  size = _ref.size,
59
+ disableFiltering = _ref.disableFiltering,
61
60
  buttonFontSize = _ref.buttonFontSize,
62
- keepInitialValue = _ref.keepInitialValue,
63
- icon = _ref.icon,
64
61
  _ref$margin = _ref.margin,
65
- margin = _ref$margin === void 0 ? '4px 0' : _ref$margin;
62
+ margin = _ref$margin === void 0 ? '4px 0' : _ref$margin,
63
+ loading = _ref.loading;
66
64
 
67
65
  var _React$useState = React.useState(false),
68
66
  _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
69
67
  isOpen = _React$useState2[0],
70
68
  setIsOpen = _React$useState2[1];
71
69
 
72
- var _React$useState3 = React.useState(false),
70
+ var _React$useState3 = React.useState(),
73
71
  _React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
74
- isLoading = _React$useState4[0],
75
- setIsLoading = _React$useState4[1];
72
+ input = _React$useState4[0],
73
+ setInput = _React$useState4[1];
76
74
 
77
- var _React$useState5 = React.useState(initalValue !== null && initalValue !== void 0 ? initalValue : ''),
75
+ var _React$useState5 = React.useState(placeholder || ''),
78
76
  _React$useState6 = (0, _slicedToArray2.default)(_React$useState5, 2),
79
- input = _React$useState6[0],
80
- setInput = _React$useState6[1];
77
+ placeholderSearch = _React$useState6[0],
78
+ setPlaceholderSearch = _React$useState6[1];
81
79
 
82
- var _React$useState7 = React.useState(placeholder || ''),
80
+ var _React$useState7 = React.useState(false),
83
81
  _React$useState8 = (0, _slicedToArray2.default)(_React$useState7, 2),
84
- placeholderSearch = _React$useState8[0],
85
- setPlaceholderSearch = _React$useState8[1];
82
+ restartFilter = _React$useState8[0],
83
+ setRestartFilter = _React$useState8[1];
86
84
 
87
- var _React$useState9 = React.useState(false),
85
+ var _React$useState9 = React.useState(),
88
86
  _React$useState10 = (0, _slicedToArray2.default)(_React$useState9, 2),
89
- restartFilter = _React$useState10[0],
90
- setRestartFilter = _React$useState10[1];
87
+ selectedItem = _React$useState10[0],
88
+ setSelectedItem = _React$useState10[1];
91
89
 
92
90
  var _React$useState11 = React.useState([]),
93
91
  _React$useState12 = (0, _slicedToArray2.default)(_React$useState11, 2),
@@ -99,10 +97,10 @@ var DropdownFilter = function DropdownFilter(_ref) {
99
97
  focused = _React$useState14[0],
100
98
  setFocused = _React$useState14[1];
101
99
 
102
- var _React$useState15 = React.useState(false),
100
+ var _React$useState15 = React.useState(true),
103
101
  _React$useState16 = (0, _slicedToArray2.default)(_React$useState15, 2),
104
- keyboardNavigate = _React$useState16[0],
105
- setKeyboardNavigate = _React$useState16[1];
102
+ init = _React$useState16[0],
103
+ setInit = _React$useState16[1];
106
104
 
107
105
  var styledFieldRef = (0, _common.useFocusVisibleRef)();
108
106
  var inputRef = (0, _common.useFocusVisibleRef)([styledFieldRef]);
@@ -115,6 +113,10 @@ var DropdownFilter = function DropdownFilter(_ref) {
115
113
  }));
116
114
 
117
115
  var handleInputKeyDown = function handleInputKeyDown(e) {
116
+ if (e.key === 'Esc' || e.key === 'Escape') {
117
+ e.preventDefault();
118
+ }
119
+
118
120
  if (e.key === 'ArrowDown' || e.key === 'Down' || e.key === 'ArrowUp' || e.key === 'Up') {
119
121
  e.preventDefault();
120
122
 
@@ -124,56 +126,36 @@ var DropdownFilter = function DropdownFilter(_ref) {
124
126
  }
125
127
  };
126
128
 
127
- var handleButtonKeyPress = function handleButtonKeyPress(e) {
128
- if (e.key === 'Enter' || e.key === ' ') {
129
- var matches = list === null || list === void 0 ? void 0 : list.filter(function (c) {
130
- return c.label.toLowerCase() === input.toLowerCase();
131
- });
132
-
133
- if (matches.length === 1 && onSelect) {
134
- onSelect(matches[0].label);
135
- setInput(matches[0].label);
136
- }
137
-
138
- setIsOpen(!isOpen);
139
- setKeyboardNavigate(true);
140
-
141
- if (matches.length === 0) {
142
- setInput('');
143
- }
144
- }
145
- };
146
-
147
129
  React.useEffect(function () {
148
- if (initalValue || initalValue === '') {
149
- setInput(initalValue);
150
- setRestartFilter(true);
151
- }
152
- }, [initalValue]);
130
+ setInit(true);
131
+ setSelectedValues(!!value ? [value] : []);
132
+ }, [value]);
153
133
  React.useEffect(function () {
154
- if (!isOpen && !list.some(function (x) {
155
- return x.label == input;
156
- })) {
134
+ if (selectedValues !== null && selectedValues !== void 0 && selectedValues.length) {
135
+ var _ref2, _item$displayLabel;
136
+
137
+ var val = selectedValues[0];
138
+ var item = list.find(function (a) {
139
+ return a.value === val;
140
+ });
141
+ setSelectedItem(item);
142
+ setInput((_ref2 = (_item$displayLabel = item === null || item === void 0 ? void 0 : item.displayLabel) !== null && _item$displayLabel !== void 0 ? _item$displayLabel : item === null || item === void 0 ? void 0 : item.value) !== null && _ref2 !== void 0 ? _ref2 : '');
143
+ onSelect && !init && onSelect(val);
144
+ } else {
145
+ setSelectedItem(undefined);
146
+ onSelect && !init && onSelect('');
157
147
  setInput('');
158
- setPlaceholderSearch(placeholder || '');
159
148
  }
160
- }, [isOpen]);
149
+ }, [selectedValues]);
161
150
  React.useEffect(function () {
162
- setIsLoading(false);
163
- if (selectedValues.length > 0 && !list.some(function (x) {
164
- return x.label == input;
165
- })) setSelectedValues([]);
166
-
167
- if (list.some(function (x) {
168
- return x.label == input;
169
- })) {
170
- setSelectedValues([input]);
171
- onSelect && onSelect(input);
151
+ if (!isOpen && !!selectedItem) {
152
+ var _ref3, _selectedItem$display;
153
+
154
+ setInput((_ref3 = (_selectedItem$display = selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.displayLabel) !== null && _selectedItem$display !== void 0 ? _selectedItem$display : selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.value) !== null && _ref3 !== void 0 ? _ref3 : '');
172
155
  }
173
- }, [input]);
174
- React.useEffect(function () {
175
- !isOpen && setKeyboardNavigate(false);
176
- }, [isOpen]);
156
+
157
+ setRestartFilter(true);
158
+ }, [isOpen, selectedItem]);
177
159
 
178
160
  var handleInputClear = function handleInputClear(e) {
179
161
  var _inputRef$current;
@@ -186,7 +168,7 @@ var DropdownFilter = function DropdownFilter(_ref) {
186
168
  });
187
169
  };
188
170
 
189
- var renderStandardDropdown = function renderStandardDropdown() {
171
+ var renderInput = function renderInput() {
190
172
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_CommonStyling.StyledField, {
191
173
  ref: styledFieldRef,
192
174
  className: size ? size : '',
@@ -214,6 +196,7 @@ var DropdownFilter = function DropdownFilter(_ref) {
214
196
  onMouseDown: _common.defaultOnMouseDownHandler,
215
197
  "data-testid": "otherdiv_".concat(id),
216
198
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_CommonStyling.InputField, {
199
+ id: id,
217
200
  ref: inputRef,
218
201
  autoComplete: 'off-' + Math.floor(Math.random() * 999999999999),
219
202
  type: "search",
@@ -221,9 +204,12 @@ var DropdownFilter = function DropdownFilter(_ref) {
221
204
  onKeyDown: handleInputKeyDown,
222
205
  value: input,
223
206
  onChange: function onChange(e) {
224
- if (!locked && !disabled) {
207
+ if (!e.target.value) {
208
+ setSelectedValues([]);
209
+ }
210
+
211
+ if (!locked && !disabled && e.target.value !== input) {
225
212
  setRestartFilter(false);
226
- setIsLoading(true);
227
213
  setIsOpen(true);
228
214
  setInput(e.target.value);
229
215
 
@@ -241,7 +227,7 @@ var DropdownFilter = function DropdownFilter(_ref) {
241
227
  required: required,
242
228
  tabIndex: disabled || locked ? -1 : 0,
243
229
  disabled: disabled || false
244
- }), input && !locked && !disabled && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.IconButton, {
230
+ }), input && !locked && !disabled && !loading && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.IconButton, {
245
231
  action: handleInputClear,
246
232
  ref: clearButtonRef,
247
233
  useTransparentBackground: true,
@@ -251,10 +237,15 @@ var DropdownFilter = function DropdownFilter(_ref) {
251
237
  },
252
238
  variant: 'secondary',
253
239
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.SystemIcons.Clear, {})
254
- }), isLoading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_LoadingIndicator.LoadingIndicator, {
255
- size: _types.Size.Small,
256
- color: _styles.COLORS.neutral_600
257
- }) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
240
+ }), !disabled && !locked && loading && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
241
+ style: {
242
+ marginLeft: '-4xp'
243
+ },
244
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_LoadingIndicator.LoadingIndicator, {
245
+ size: _types.Size.Small,
246
+ color: _styles.COLORS.neutral_600
247
+ })
248
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
258
249
  className: 'dropdown-arrow',
259
250
  children: isOpen && !locked && !disabled ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_SystemIcons.ArrowDropUp, {
260
251
  size: "24px",
@@ -267,84 +258,38 @@ var DropdownFilter = function DropdownFilter(_ref) {
267
258
  });
268
259
  };
269
260
 
270
- var renderButtonDropdown = function renderButtonDropdown() {
271
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_CommonStyling.ButtonDropdownWrapper, {
272
- onClick: function onClick(e) {
273
- e.stopPropagation();
274
- !locked && !disabled && setIsOpen(!isOpen);
275
- },
276
- disabled: disabled,
277
- locked: locked,
278
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_CommonStyling.StyledField, {
279
- ref: styledFieldRef,
280
- className: (isOpen ? 'expanded ' : '').concat(size ? size + ' ' : '').concat(isButton ? 'button' : ''),
281
- tabIndex: disabled || locked ? -1 : 0,
282
- onKeyPress: handleButtonKeyPress,
283
- onMouseDown: _common.defaultOnMouseDownHandler,
284
- disabled: disabled || false,
285
- locked: locked || false,
286
- showValidationMessage: !!activeValidationMessage,
287
- fontSize: buttonFontSize,
288
- children: [icon, /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
289
- className: 'value',
290
- children: initalValue && keepInitialValue ? initalValue : input || placeholderSearch
291
- }), isLoading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_LoadingIndicator.LoadingIndicator, {
292
- size: _types.Size.Small,
293
- color: _styles.COLORS.neutral_600
294
- }) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
295
- className: 'dropdown-arrow',
296
- children: isOpen && !locked && !disabled ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_SystemIcons.ArrowDropUp, {
297
- size: "24px",
298
- className: size ? size : ''
299
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_SystemIcons.ArrowDropDown, {
300
- size: "24px",
301
- className: size ? size : ''
302
- })
303
- })]
304
- })
305
- });
306
- };
307
-
308
261
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
309
262
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_CommonStyling.Dropdown, {
310
263
  ref: containerRef,
311
- isButton: isButton || false,
312
264
  disabled: disabled,
265
+ isButton: false,
313
266
  locked: locked,
314
267
  className: size ? size : '',
315
268
  margin: margin,
316
- children: [!isButton && renderStandardDropdown(), !!isButton && renderButtonDropdown(), !locked && !disabled && /*#__PURE__*/(0, _jsxRuntime.jsx)(_DropdownContent.default, {
317
- isOpen: isOpen,
269
+ children: [renderInput(), !locked && !disabled && /*#__PURE__*/(0, _jsxRuntime.jsx)(_DropdownContent.default, {
270
+ isOpen: isOpen && !loading,
318
271
  messageOnNoResults: messageOnNoResults !== null && messageOnNoResults !== void 0 ? messageOnNoResults : '',
319
272
  selectedValues: selectedValues,
320
273
  setSelectedValues: setSelectedValues,
321
274
  size: size !== null && size !== void 0 ? size : _types.Size.Small,
322
275
  focused: focused,
323
276
  setFocused: setFocused,
324
- outline: keyboardNavigate && isButton,
277
+ outline: false,
325
278
  customizationProps: {
326
279
  itemsType: 'normal',
327
280
  scrollable: scrollable,
328
281
  multiSelect: false,
329
282
  action: function action() {},
330
283
  onValueUpdate: function onValueUpdate(values) {
331
- var _values$;
332
-
333
- var val = (_values$ = values[0]) !== null && _values$ !== void 0 ? _values$ : '';
334
284
  setRestartFilter(true);
335
- setInput(val);
285
+ setInit(false);
336
286
  },
337
- items: list.map(function (x) {
338
- return {
339
- value: x.label,
340
- customContent: x.customContent
341
- };
342
- })
287
+ items: list
343
288
  },
344
- filter: !restartFilter ? input : '',
289
+ filter: !disableFiltering && !restartFilter ? input || '' : '',
345
290
  setIsOpen: setIsOpen,
346
291
  alignLeft: false,
347
- isButton: isButton || false,
292
+ isButton: false,
348
293
  id: "".concat(id, "_dropdowncontent")
349
294
  })]
350
295
  }), activeValidationMessage && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_styling.WarningMessage, {
@@ -369,27 +314,22 @@ var DropdownFilter = function DropdownFilter(_ref) {
369
314
 
370
315
  DropdownFilter.propTypes = {
371
316
  id: _propTypes.default.string.isRequired,
372
- list: _propTypes.default.arrayOf(_propTypes.default.shape({
373
- label: _propTypes.default.string.isRequired,
374
- customContent: _propTypes.default.node
375
- })).isRequired,
317
+ list: _propTypes.default.array.isRequired,
376
318
  placeholder: _propTypes.default.string,
319
+ value: _propTypes.default.string,
377
320
  onSelect: _propTypes.default.func,
378
321
  onInputChange: _propTypes.default.func,
379
- initalValue: _propTypes.default.string,
380
322
  required: _propTypes.default.bool,
381
- disableSorting: _propTypes.default.bool,
382
- messageOnNoResults: _propTypes.default.string,
383
323
  disabled: _propTypes.default.bool,
384
324
  locked: _propTypes.default.bool,
385
- isButton: _propTypes.default.bool,
325
+ disableFiltering: _propTypes.default.bool,
326
+ messageOnNoResults: _propTypes.default.string,
386
327
  activeValidationMessage: _propTypes.default.string,
387
328
  autofilledMessage: _propTypes.default.string,
388
- scrollable: _propTypes.default.bool,
389
329
  buttonFontSize: _propTypes.default.string,
390
- keepInitialValue: _propTypes.default.bool,
391
- icon: _propTypes.default.node,
392
- margin: _propTypes.default.string
330
+ margin: _propTypes.default.string,
331
+ scrollable: _propTypes.default.bool,
332
+ loading: _propTypes.default.bool
393
333
  };
394
334
  var _default = DropdownFilter;
395
335
  exports.default = _default;