@decisiv/ui-components 2.0.1-alpha.8 → 2.0.1-alpha.97
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/lib/atoms/BaseButton/index.d.ts.map +1 -1
- package/lib/atoms/BaseButton/index.js +1 -1
- package/lib/atoms/BooleanInput/index.d.ts.map +1 -1
- package/lib/atoms/BooleanInput/index.js +19 -2
- package/lib/atoms/BooleanInput/index.test.js +17 -6
- package/lib/atoms/BooleanInput/types.d.ts +2 -0
- package/lib/atoms/BooleanInput/types.d.ts.map +1 -1
- package/lib/atoms/BooleanInput/types.js +5 -1
- package/lib/atoms/Calendar/hooks/useCalendar/index.d.ts.map +1 -1
- package/lib/atoms/Calendar/hooks/useCalendar/index.js +2 -1
- package/lib/atoms/Calendar/hooks/useCalendar/index.test.js +5 -6
- package/lib/atoms/Calendar/index.d.ts.map +1 -1
- package/lib/atoms/Calendar/index.js +8 -1
- package/lib/atoms/Calendar/index.test.js +70 -40
- package/lib/atoms/Calendar/types.js +5 -1
- package/lib/atoms/InputField/Containers.d.ts +11 -6
- package/lib/atoms/InputField/Containers.d.ts.map +1 -1
- package/lib/atoms/InputField/Containers.js +6 -6
- package/lib/atoms/InputField/InputLabel.d.ts +1 -0
- package/lib/atoms/InputField/InputLabel.d.ts.map +1 -1
- package/lib/atoms/InputField/InputLabel.js +2 -1
- package/lib/atoms/InputField/index.d.ts +5 -0
- package/lib/atoms/InputField/index.d.ts.map +1 -1
- package/lib/atoms/InputField/index.js +21 -7
- package/lib/atoms/InputField/index.test.js +91 -0
- package/lib/atoms/InputField/schema.d.ts.map +1 -1
- package/lib/atoms/InputField/schema.js +1 -0
- package/lib/atoms/OptionsList/Category.d.ts +1 -1
- package/lib/atoms/OptionsList/Category.d.ts.map +1 -1
- package/lib/atoms/OptionsList/Category.js +4 -2
- package/lib/atoms/OptionsList/Footer.d.ts +8 -0
- package/lib/atoms/OptionsList/Footer.d.ts.map +1 -0
- package/lib/atoms/OptionsList/Footer.js +72 -0
- package/lib/atoms/OptionsList/Option.d.ts.map +1 -1
- package/lib/atoms/OptionsList/Option.js +8 -5
- package/lib/atoms/OptionsList/index.d.ts.map +1 -1
- package/lib/atoms/OptionsList/index.js +43 -16
- package/lib/atoms/OptionsList/index.test.js +107 -11
- package/lib/atoms/OptionsList/schema.d.ts.map +1 -1
- package/lib/atoms/OptionsList/schema.js +4 -0
- package/lib/atoms/OptionsList/types.d.ts +14 -0
- package/lib/atoms/OptionsList/types.d.ts.map +1 -1
- package/lib/atoms/OptionsList/types.js +5 -1
- package/lib/atoms/RequiredIcon.d.ts +9 -0
- package/lib/atoms/RequiredIcon.d.ts.map +1 -0
- package/lib/atoms/{InputField/RequiredIcon.js → RequiredIcon.js} +7 -3
- package/lib/components/Accordion/types.js +5 -1
- package/lib/components/Accordion/useAccordion/types.js +5 -1
- package/lib/components/Avatar/types.js +5 -1
- package/lib/components/Badge/constants.d.ts +2 -0
- package/lib/components/Badge/constants.d.ts.map +1 -0
- package/lib/components/Badge/constants.js +29 -0
- package/lib/components/Badge/index.d.ts.map +1 -1
- package/lib/components/Badge/index.js +12 -23
- package/lib/components/Badge/index.test.js +51 -8
- package/lib/components/Badge/schema.js +1 -1
- package/lib/components/Badge/types.d.ts +1 -1
- package/lib/components/Badge/types.d.ts.map +1 -1
- package/lib/components/Badge/types.js +7 -3
- package/lib/components/Breadcrumbs/types.js +5 -1
- package/lib/components/Button/schema.d.ts +6 -1
- package/lib/components/Button/schema.d.ts.map +1 -1
- package/lib/components/Button/schema.js +9 -4
- package/lib/components/Button/types.js +5 -1
- package/lib/components/Checkbox/index.d.ts.map +1 -1
- package/lib/components/Checkbox/index.js +3 -1
- package/lib/components/Checkbox/schema.d.ts.map +1 -1
- package/lib/components/Checkbox/schema.js +2 -0
- package/lib/components/Combobox/Target.d.ts.map +1 -1
- package/lib/components/Combobox/Target.js +45 -14
- package/lib/components/Combobox/index.d.ts.map +1 -1
- package/lib/components/Combobox/index.js +193 -65
- package/lib/components/Combobox/index.test.js +358 -135
- package/lib/components/Combobox/schema.d.ts.map +1 -1
- package/lib/components/Combobox/schema.js +9 -2
- package/lib/components/Combobox/types.d.ts +12 -3
- package/lib/components/Combobox/types.d.ts.map +1 -1
- package/lib/components/Combobox/types.js +5 -1
- package/lib/components/DropdownList/index.d.ts +4 -0
- package/lib/components/DropdownList/index.d.ts.map +1 -1
- package/lib/components/DropdownList/index.js +76 -11
- package/lib/components/DropdownList/propTypes.d.ts +4 -0
- package/lib/components/DropdownList/propTypes.d.ts.map +1 -0
- package/lib/components/DropdownList/propTypes.js +42 -0
- package/lib/components/DropdownList/schema.d.ts.map +1 -1
- package/lib/components/DropdownList/schema.js +5 -0
- package/lib/components/DropdownList/types.d.ts +4 -1
- package/lib/components/DropdownList/types.d.ts.map +1 -1
- package/lib/components/Filter/IconWrapper/index.d.ts +197 -0
- package/lib/components/Filter/IconWrapper/index.d.ts.map +1 -0
- package/lib/components/Filter/IconWrapper/index.js +35 -0
- package/lib/components/Filter/SimplePrimary/index.d.ts +31 -0
- package/lib/components/Filter/SimplePrimary/index.d.ts.map +1 -0
- package/lib/components/Filter/SimplePrimary/index.js +58 -0
- package/lib/components/Filter/SimplePrimary/index.test.js +34 -0
- package/lib/components/Filter/StyledFilter.d.ts +4 -0
- package/lib/components/Filter/StyledFilter.d.ts.map +1 -0
- package/lib/components/Filter/StyledFilter.js +39 -0
- package/lib/components/Filter/StyledLabel/index.d.ts +8 -0
- package/lib/components/Filter/StyledLabel/index.d.ts.map +1 -0
- package/lib/components/Filter/StyledLabel/index.js +30 -0
- package/lib/components/Filter/index.d.ts +27 -0
- package/lib/components/Filter/index.d.ts.map +1 -0
- package/lib/components/Filter/index.js +95 -0
- package/lib/components/Filter/index.test.js +41 -0
- package/lib/components/Filter/kind.d.ts +6 -0
- package/lib/components/Filter/kind.d.ts.map +1 -0
- package/lib/components/Filter/kind.js +45 -0
- package/lib/components/Filter/schema.d.ts +9 -0
- package/lib/components/Filter/schema.d.ts.map +1 -0
- package/lib/components/Filter/schema.js +32 -0
- package/lib/components/Filter/types.d.ts +17 -0
- package/lib/components/Filter/types.d.ts.map +1 -0
- package/lib/components/Filter/types.js +5 -0
- package/lib/components/JumpTo/JumpToMenu.d.ts +2 -2
- package/lib/components/JumpTo/JumpToMenu.d.ts.map +1 -1
- package/lib/components/JumpTo/JumpToMenu.js +3 -3
- package/lib/components/JumpTo/types.js +5 -1
- package/lib/components/LeftNav/Item/ClickArea.d.ts.map +1 -1
- package/lib/components/LeftNav/Item/ClickArea.js +2 -2
- package/lib/components/LeftNav/Item/ItemWrapper.d.ts.map +1 -1
- package/lib/components/LeftNav/Item/ItemWrapper.js +3 -3
- package/lib/components/LeftNav/Item/MenuItemWrapper.d.ts +7 -0
- package/lib/components/LeftNav/Item/MenuItemWrapper.d.ts.map +1 -0
- package/lib/components/LeftNav/Item/MenuItemWrapper.js +20 -0
- package/lib/components/LeftNav/Item/NavCollapsedXItem/index.d.ts.map +1 -1
- package/lib/components/LeftNav/Item/NavCollapsedXItem/index.js +7 -5
- package/lib/components/LeftNav/Item/NavExpandedItem/index.d.ts.map +1 -1
- package/lib/components/LeftNav/Item/NavExpandedItem/index.js +24 -13
- package/lib/components/LeftNav/Item/types.d.ts +1 -1
- package/lib/components/LeftNav/Item/types.d.ts.map +1 -1
- package/lib/components/LeftNav/Item/types.js +5 -1
- package/lib/components/LeftNav/index.test.js +13 -3
- package/lib/components/LeftNav/schema.d.ts.map +1 -1
- package/lib/components/LeftNav/schema.js +2 -0
- package/lib/components/LeftNav/types.d.ts +1 -0
- package/lib/components/LeftNav/types.d.ts.map +1 -1
- package/lib/components/LeftNav/types.js +5 -1
- package/lib/components/Link/index.d.ts +2 -2
- package/lib/components/Link/index.d.ts.map +1 -1
- package/lib/components/Link/index.js +1 -1
- package/lib/components/Link/index.test.js +8 -0
- package/lib/components/Link/schema.d.ts.map +1 -1
- package/lib/components/Link/schema.js +1 -1
- package/lib/components/Menu/index.d.ts.map +1 -1
- package/lib/components/Menu/index.js +3 -1
- package/lib/components/Menu/types.d.ts +2 -0
- package/lib/components/Menu/types.d.ts.map +1 -1
- package/lib/components/Menu/types.js +5 -1
- package/lib/components/Modal/components.d.ts +2 -2
- package/lib/components/Modal/index.d.ts.map +1 -1
- package/lib/components/Modal/index.js +5 -5
- package/lib/components/Modal/index.test.js +32 -0
- package/lib/components/Modal/schema.d.ts.map +1 -1
- package/lib/components/Modal/schema.js +2 -2
- package/lib/components/Modal/types.d.ts +2 -2
- package/lib/components/Modal/types.d.ts.map +1 -1
- package/lib/components/Modal/types.js +5 -1
- package/lib/components/Notifications/Notification/components.d.ts +3 -3
- package/lib/components/Notifications/Notification/components.d.ts.map +1 -1
- package/lib/components/Notifications/Notification/components.js +12 -6
- package/lib/components/Notifications/Notification/index.d.ts +3 -6
- package/lib/components/Notifications/Notification/index.d.ts.map +1 -1
- package/lib/components/Notifications/Notification/index.js +19 -12
- package/lib/components/Notifications/Notification/index.test.js +38 -19
- package/lib/components/Notifications/NotificationsPanel/index.d.ts +2 -1
- package/lib/components/Notifications/NotificationsPanel/index.d.ts.map +1 -1
- package/lib/components/Notifications/NotificationsPanel/index.js +44 -21
- package/lib/components/Notifications/NotificationsPanel/schema.js +1 -1
- package/lib/components/Notifications/Notifier.test.js +79 -10
- package/lib/components/Notifications/constants.d.ts +2 -0
- package/lib/components/Notifications/constants.d.ts.map +1 -0
- package/lib/components/Notifications/constants.js +16 -0
- package/lib/components/Notifications/schema.d.ts.map +1 -1
- package/lib/components/Notifications/schema.js +2 -1
- package/lib/components/Notifications/useNotifications.d.ts +1 -0
- package/lib/components/Notifications/useNotifications.d.ts.map +1 -1
- package/lib/components/Notifications/useNotifications.js +3 -3
- package/lib/components/Notifications/useNotifications.test.js +7 -4
- package/lib/components/Pagination/Pagination.d.ts +1 -1
- package/lib/components/Pagination/Pagination.d.ts.map +1 -1
- package/lib/components/Pagination/Pagination.js +1 -0
- package/lib/components/Pagination/Pagination.test.js +9 -0
- package/lib/components/Pagination/types.js +5 -1
- package/lib/components/Popover/utils.d.ts +1 -1
- package/lib/components/Select/Target.js +1 -1
- package/lib/components/Select/index.d.ts.map +1 -1
- package/lib/components/Select/index.js +37 -1
- package/lib/components/Select/index.test.js +82 -23
- package/lib/components/Select/schema.d.ts.map +1 -1
- package/lib/components/Select/schema.js +7 -0
- package/lib/components/Select/types.d.ts +4 -1
- package/lib/components/Select/types.d.ts.map +1 -1
- package/lib/components/Select/types.js +5 -1
- package/lib/components/SelectDate/Target.js +1 -1
- package/lib/components/SelectDate/index.d.ts.map +1 -1
- package/lib/components/SelectDate/index.js +28 -1
- package/lib/components/SelectDate/index.test.js +108 -51
- package/lib/components/SelectDate/schema.d.ts.map +1 -1
- package/lib/components/SelectDate/schema.js +2 -0
- package/lib/components/SelectDate/types.d.ts +2 -0
- package/lib/components/SelectDate/types.d.ts.map +1 -1
- package/lib/components/SelectDate/types.js +5 -1
- package/lib/components/SelectDateRange/index.d.ts.map +1 -1
- package/lib/components/SelectDateRange/index.js +28 -1
- package/lib/components/SelectDateRange/index.test.js +115 -58
- package/lib/components/SelectDateRange/schema.d.ts.map +1 -1
- package/lib/components/SelectDateRange/schema.js +2 -0
- package/lib/components/SelectDateRange/types.js +5 -1
- package/lib/components/SelectMenu/index.d.ts +5 -0
- package/lib/components/SelectMenu/index.d.ts.map +1 -1
- package/lib/components/SelectMenu/index.js +27 -3
- package/lib/components/SelectMenu/schema.d.ts.map +1 -1
- package/lib/components/SelectMenu/schema.js +4 -0
- package/lib/components/Table/Body.d.ts.map +1 -1
- package/lib/components/Table/Body.js +182 -38
- package/lib/components/Table/Container.d.ts.map +1 -1
- package/lib/components/Table/Container.js +2 -2
- package/lib/components/Table/DataRow.d.ts.map +1 -1
- package/lib/components/Table/DataRow.js +43 -16
- package/lib/components/Table/DraggableWrapper.d.ts +5 -0
- package/lib/components/Table/DraggableWrapper.d.ts.map +1 -0
- package/lib/components/Table/DraggableWrapper.js +38 -0
- package/lib/components/Table/Grip.d.ts +4 -0
- package/lib/components/Table/Grip.d.ts.map +1 -0
- package/lib/components/Table/Grip.js +30 -0
- package/lib/components/Table/Head.d.ts +1 -1
- package/lib/components/Table/Head.d.ts.map +1 -1
- package/lib/components/Table/Head.js +11 -5
- package/lib/components/Table/HeaderCell/index.d.ts.map +1 -1
- package/lib/components/Table/HeaderCell/index.js +22 -8
- package/lib/components/Table/HeaderCell/types.d.ts +6 -1
- package/lib/components/Table/HeaderCell/types.d.ts.map +1 -1
- package/lib/components/Table/HeaderCell/types.js +5 -1
- package/lib/components/Table/Provider.d.ts +13 -4
- package/lib/components/Table/Provider.d.ts.map +1 -1
- package/lib/components/Table/Provider.js +45 -5
- package/lib/components/Table/index.d.ts.map +1 -1
- package/lib/components/Table/index.js +112 -18
- package/lib/components/Table/index.test.js +330 -84
- package/lib/components/Table/schema.columns.d.ts.map +1 -1
- package/lib/components/Table/schema.columns.js +6 -4
- package/lib/components/Table/schema.d.ts.map +1 -1
- package/lib/components/Table/schema.js +8 -6
- package/lib/components/Table/types.d.ts +34 -4
- package/lib/components/Table/types.d.ts.map +1 -1
- package/lib/components/Table/utils.d.ts +2 -8
- package/lib/components/Table/utils.d.ts.map +1 -1
- package/lib/components/Table/utils.js +21 -20
- package/lib/components/Tabs/types.js +5 -1
- package/lib/components/Tag/types.d.ts +1 -1
- package/lib/components/Tag/types.d.ts.map +1 -1
- package/lib/components/Tag/types.js +5 -1
- package/lib/components/TextArea/TextArea.d.ts.map +1 -1
- package/lib/components/TextArea/TextArea.js +1 -1
- package/lib/components/TextArea/index.js +1 -0
- package/lib/components/TextArea/index.test.js +5 -0
- package/lib/components/TextField/Input.js +1 -1
- package/lib/components/TextField/index.test.js +5 -0
- package/lib/components/Toggle/index.d.ts.map +1 -1
- package/lib/components/Toggle/index.js +4 -0
- package/lib/components/Toggle/index.test.js +39 -10
- package/lib/components/Toggle/types.js +5 -1
- package/lib/components/TopNav/BrandInfo/index.d.ts +2 -1
- package/lib/components/TopNav/BrandInfo/index.d.ts.map +1 -1
- package/lib/components/TopNav/BrandInfo/index.js +9 -1
- package/lib/components/TopNav/BrandInfo/schema.d.ts.map +1 -1
- package/lib/components/TopNav/BrandInfo/schema.js +4 -1
- package/lib/components/TopNav/index.test.js +28 -0
- package/lib/components/index.d.ts +1 -0
- package/lib/components/index.d.ts.map +1 -1
- package/lib/components/index.js +9 -0
- package/lib/providers/ConfigProvider/index.d.ts.map +1 -1
- package/lib/providers/ConfigProvider/index.js +5 -1
- package/lib/providers/ConfigProvider/utils/context.d.ts +1 -1
- package/lib/providers/ConfigProvider/utils/context.d.ts.map +1 -1
- package/lib/providers/ConfigProvider/utils/normalizer.d.ts.map +1 -1
- package/lib/providers/ConfigProvider/utils/normalizer.js +1 -1
- package/lib/providers/ConfigProvider/utils/translations.d.ts +1 -1
- package/lib/providers/ConfigProvider/utils/translations.js +1 -1
- package/lib/providers/NotificationsProvider/index.d.ts +6 -5
- package/lib/providers/NotificationsProvider/index.d.ts.map +1 -1
- package/lib/providers/NotificationsProvider/index.js +47 -28
- package/lib/providers/NotificationsProvider/types.d.ts +4 -1
- package/lib/providers/NotificationsProvider/types.d.ts.map +1 -1
- package/lib/utils/joinClassnames.d.ts +3 -0
- package/lib/utils/joinClassnames.d.ts.map +1 -0
- package/lib/utils/joinClassnames.js +26 -0
- package/lib/utils/useFirstMount.d.ts +2 -0
- package/lib/utils/useFirstMount.d.ts.map +1 -0
- package/lib/utils/useFirstMount.js +19 -0
- package/lib/utils/useUpdateEffect.d.ts +4 -0
- package/lib/utils/useUpdateEffect.d.ts.map +1 -0
- package/lib/utils/useUpdateEffect.js +28 -0
- package/package.json +4 -2
- package/lib/atoms/InputField/RequiredIcon.d.ts +0 -4
- package/lib/atoms/InputField/RequiredIcon.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Checkbox/index.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAO,sBAAsB,EAAc,MAAM,OAAO,CAAC;AAGvE,OAAqB,EACnB,KAAK,IAAI,UAAU,EACnB,YAAY,EACb,MAAM,0BAA0B,CAAC;AAElC,oBAAY,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAQ7C,QAAA,MAAM,eAAe,EAAE,sBAAsB,CAAC,YAAY,EAAE,KAAK,CAEhE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Checkbox/index.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAO,sBAAsB,EAAc,MAAM,OAAO,CAAC;AAGvE,OAAqB,EACnB,KAAK,IAAI,UAAU,EACnB,YAAY,EACb,MAAM,0BAA0B,CAAC;AAElC,oBAAY,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAQ7C,QAAA,MAAM,eAAe,EAAE,sBAAsB,CAAC,YAAY,EAAE,KAAK,CAEhE,CAAC;AAmBF,eAAe,eAAe,CAAC"}
|
|
@@ -33,13 +33,15 @@ CheckboxWithRef.propTypes = {
|
|
|
33
33
|
label: _propTypes.default.string,
|
|
34
34
|
disabled: _propTypes.default.bool,
|
|
35
35
|
readOnly: _propTypes.default.bool,
|
|
36
|
+
required: _propTypes.default.bool,
|
|
36
37
|
size: _propTypes.default.oneOf(['normal', 'small']),
|
|
37
38
|
status: _propTypes.default.oneOf(['normal', 'warning']),
|
|
38
39
|
warningMessage: _propTypes.default.string
|
|
39
40
|
};
|
|
40
41
|
CheckboxWithRef.defaultProps = {
|
|
41
42
|
size: 'normal',
|
|
42
|
-
status: 'normal'
|
|
43
|
+
status: 'normal',
|
|
44
|
+
required: false
|
|
43
45
|
};
|
|
44
46
|
var _default = CheckboxWithRef;
|
|
45
47
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/components/Checkbox/schema.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,KAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/components/Checkbox/schema.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,KAAwC,CAAC;AA4DrD,eAAe,MAAM,CAAC"}
|
|
@@ -18,6 +18,8 @@ schema.propTypes = {
|
|
|
18
18
|
defaultChecked: _reactDesc.PropTypes.bool.description('Whether or not the checkbox is initially checked. Use if you do not want to manually control the state.').defaultValue('false'),
|
|
19
19
|
disabled: _reactDesc.PropTypes.bool.description('If the checkbox should be disabled and ignore user interactions.').defaultValue('false'),
|
|
20
20
|
readOnly: _reactDesc.PropTypes.bool.description('Ignore user interactions, but still display the label in a readable manner.').defaultValue('false'),
|
|
21
|
+
required: _reactDesc.PropTypes.bool.description('Whether or not the checkbox should be required. Renders an indicator if true.').defaultValue('false'),
|
|
22
|
+
requiredMessage: _reactDesc.PropTypes.string.description('The text to display in the tooltip when hovering over the required icon. It displays "Required" by default').defaultValue('Required'),
|
|
21
23
|
size: _reactDesc.PropTypes.oneOf(['normal', 'small']).description('Controls the size of the checkbox and label.').defaultValue('normal'),
|
|
22
24
|
status: _reactDesc.PropTypes.oneOf(['normal', 'warning']).description('Whether or not to render the warning state.').defaultValue('normal'),
|
|
23
25
|
warningMessage: _reactDesc.PropTypes.string.description('The warning message to display below the checkbox. If provided, the `status` prop is automatically set to `warning`.')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Target.d.ts","sourceRoot":"","sources":["../../../src/components/Combobox/Target.tsx"],"names":[],"mappings":"AAEA,OAAc,EAAO,sBAAsB,EAAc,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Target.d.ts","sourceRoot":"","sources":["../../../src/components/Combobox/Target.tsx"],"names":[],"mappings":"AAEA,OAAc,EAAO,sBAAsB,EAAc,MAAM,OAAO,CAAC;AAkBvE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAiLtC,QAAA,MAAM,aAAa,EAAE,sBAAsB,CACzC,gBAAgB,EAChB,WAAW,CACS,CAAC;AAGvB,eAAe,aAAa,CAAC"}
|
|
@@ -31,6 +31,8 @@ var _Button = _interopRequireDefault(require("../Button"));
|
|
|
31
31
|
|
|
32
32
|
var _Flex = _interopRequireDefault(require("../Flex"));
|
|
33
33
|
|
|
34
|
+
var _Tag = _interopRequireDefault(require("../Tag"));
|
|
35
|
+
|
|
34
36
|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
|
|
35
37
|
|
|
36
38
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -44,21 +46,23 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
|
|
|
44
46
|
var TargetContainer = _styledComponents.default.div.withConfig({
|
|
45
47
|
displayName: "Target__TargetContainer",
|
|
46
48
|
componentId: "sc-1obpsql-0"
|
|
47
|
-
})(["align-items:center;display:flex;justify-content:
|
|
49
|
+
})(["align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start;width:100%;padding-right:15px;", ""], (0, _styleModifiers.when)('hasExpandIndicator', (0, _styledComponents.css)(["padding-right:45px;"])));
|
|
48
50
|
|
|
49
51
|
var Input = _styledComponents.default.input.withConfig({
|
|
50
52
|
displayName: "Target__Input",
|
|
51
53
|
componentId: "sc-1obpsql-1"
|
|
52
|
-
})(["font-family:", ";font-size:", ";font-weight:", ";overflow:visible;&::-moz-focus-inner{border:0;padding:0;margin:0;}background-color:inherit;border:transparent;display:block;line-height:140%;padding:
|
|
54
|
+
})(["font-family:", ";font-size:", ";font-weight:", ";overflow:visible;&::-moz-focus-inner{border:0;padding:0;margin:0;}background-color:inherit;border:transparent;display:block;line-height:140%;padding:0 10px 5px 1px;flex-grow:100;&:active,&:focus{outline:none;}"], _designTokens.typography.typeface.default, (0, _rem.default)(_designTokens.typography.size.alias.default), _designTokens.typography.weight.alias.default);
|
|
53
55
|
|
|
56
|
+
var ClearButtonContainer = (0, _styledComponents.default)(_Flex.default).withConfig({
|
|
57
|
+
displayName: "Target__ClearButtonContainer",
|
|
58
|
+
componentId: "sc-1obpsql-2"
|
|
59
|
+
})(["position:absolute;bottom:0;right:0;padding-bottom:2px;padding-left:10px;padding-right:10px;", ""], (0, _styleModifiers.when)('hasExpandIndicator', (0, _styledComponents.css)(["right:20px;"])));
|
|
54
60
|
var ExpandedIndicatorContainer = (0, _styledComponents.default)(_Flex.default).attrs({
|
|
55
|
-
alignItems: 'center'
|
|
56
|
-
paddingBottom: 0.2,
|
|
57
|
-
paddingRight: 1
|
|
61
|
+
alignItems: 'center'
|
|
58
62
|
}).withConfig({
|
|
59
63
|
displayName: "Target__ExpandedIndicatorContainer",
|
|
60
|
-
componentId: "sc-1obpsql-
|
|
61
|
-
})(["color:", ";&:hover{color:", ";}", ";"], (0, _toColorString.default)(_color.default.interaction.pacificOcean), (0, _toColorString.default)(_color.default.interaction.indianOcean), (0, _styleModifiers.when)('disabled', (0, _styledComponents.css)(["color:", ";&:hover{color:", ";}"], (0, _toColorString.default)(_color.default.opacity.charcoal40), (0, _toColorString.default)(_color.default.opacity.charcoal40))));
|
|
64
|
+
componentId: "sc-1obpsql-3"
|
|
65
|
+
})(["position:absolute;bottom:2px;right:10px;color:", ";&:hover{color:", ";}", ";"], (0, _toColorString.default)(_color.default.interaction.pacificOcean), (0, _toColorString.default)(_color.default.interaction.indianOcean), (0, _styleModifiers.when)('disabled', (0, _styledComponents.css)(["color:", ";&:hover{color:", ";}"], (0, _toColorString.default)(_color.default.opacity.charcoal40), (0, _toColorString.default)(_color.default.opacity.charcoal40))));
|
|
62
66
|
|
|
63
67
|
function Target(_ref, ref) {
|
|
64
68
|
var clearButtonLabel = _ref.clearButtonLabel,
|
|
@@ -67,19 +71,46 @@ function Target(_ref, ref) {
|
|
|
67
71
|
inputFieldLabel = _ref.inputFieldLabel,
|
|
68
72
|
isPopoverVisible = _ref.isPopoverVisible,
|
|
69
73
|
onClear = _ref.onClear,
|
|
74
|
+
multiple = _ref.multiple,
|
|
75
|
+
selectedValues = _ref.selectedValues,
|
|
76
|
+
removeSelected = _ref.removeSelected,
|
|
70
77
|
readOnly = _ref.readOnly,
|
|
71
78
|
variant = _ref.variant,
|
|
72
79
|
toggleIsPopoverVisible = _ref.toggleIsPopoverVisible,
|
|
73
|
-
|
|
80
|
+
autoComplete = _ref.autoComplete,
|
|
81
|
+
rest = _objectWithoutProperties(_ref, ["clearButtonLabel", "disabled", "hasClearButton", "inputFieldLabel", "isPopoverVisible", "onClear", "multiple", "selectedValues", "removeSelected", "readOnly", "variant", "toggleIsPopoverVisible", "autoComplete"]);
|
|
74
82
|
|
|
75
83
|
var translate = (0, _useTranslations.default)();
|
|
76
|
-
|
|
77
|
-
|
|
84
|
+
var hasExpandIndicator = !readOnly && variant === 'sync';
|
|
85
|
+
return _react.default.createElement(TargetContainer, {
|
|
86
|
+
hasExpandIndicator: hasExpandIndicator
|
|
87
|
+
}, multiple && selectedValues && selectedValues.map(function (_ref2) {
|
|
88
|
+
var id = _ref2.id,
|
|
89
|
+
label = _ref2.label;
|
|
90
|
+
return _react.default.createElement(_Tag.default, {
|
|
91
|
+
key: id,
|
|
92
|
+
text: label,
|
|
93
|
+
style: {
|
|
94
|
+
margin: '2px'
|
|
95
|
+
},
|
|
96
|
+
action: function action(e) {
|
|
97
|
+
e.preventDefault();
|
|
98
|
+
e.stopPropagation();
|
|
99
|
+
removeSelected(id);
|
|
100
|
+
},
|
|
101
|
+
color: 'licoriceMousse',
|
|
102
|
+
actionIntent: "danger",
|
|
103
|
+
actionIcon: _Times.default,
|
|
104
|
+
actionAttributes: {
|
|
105
|
+
'aria-label': 'Delete'
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}), _react.default.createElement(Input, _extends({
|
|
109
|
+
autoComplete: autoComplete || 'off',
|
|
78
110
|
disabled: disabled,
|
|
79
111
|
ref: ref
|
|
80
|
-
})), hasClearButton && !readOnly && _react.default.createElement(
|
|
81
|
-
|
|
82
|
-
paddingX: 1
|
|
112
|
+
}, rest)), hasClearButton && !readOnly && _react.default.createElement(ClearButtonContainer, {
|
|
113
|
+
hasExpandIndicator: hasExpandIndicator
|
|
83
114
|
}, _react.default.createElement(_Button.default, {
|
|
84
115
|
"aria-label": translate(clearButtonLabel, 'combobox.clearButtonLabel', {
|
|
85
116
|
label: inputFieldLabel
|
|
@@ -97,7 +128,7 @@ function Target(_ref, ref) {
|
|
|
97
128
|
},
|
|
98
129
|
size: "small",
|
|
99
130
|
variant: "ghost"
|
|
100
|
-
})),
|
|
131
|
+
})), hasExpandIndicator && _react.default.createElement(ExpandedIndicatorContainer, {
|
|
101
132
|
disabled: disabled
|
|
102
133
|
}, _react.default.createElement(_Button.default, {
|
|
103
134
|
variant: "ghost",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Combobox/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Combobox/index.tsx"],"names":[],"mappings":"AASA,OAAc,EAGZ,sBAAsB,EAQvB,MAAM,OAAO,CAAC;AA2Bf,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAQ,MAAM,SAAS,CAAC;AAqiBhE,QAAA,MAAM,eAAe,EAAE,sBAAsB,CAC3C,gBAAgB,EAChB,aAAa,CACS,CAAC;AAOzB,eAAe,eAAe,CAAC"}
|
|
@@ -11,10 +11,18 @@ var _findIndex = _interopRequireDefault(require("lodash/findIndex"));
|
|
|
11
11
|
|
|
12
12
|
var _get = _interopRequireDefault(require("lodash/get"));
|
|
13
13
|
|
|
14
|
+
var _union = _interopRequireDefault(require("lodash/union"));
|
|
15
|
+
|
|
16
|
+
var _isArray = _interopRequireDefault(require("lodash/isArray"));
|
|
17
|
+
|
|
14
18
|
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
15
19
|
|
|
20
|
+
var _last = _interopRequireDefault(require("lodash/last"));
|
|
21
|
+
|
|
16
22
|
var _rem = _interopRequireDefault(require("polished/lib/helpers/rem"));
|
|
17
23
|
|
|
24
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
25
|
+
|
|
18
26
|
var _react = _interopRequireWildcard(require("react"));
|
|
19
27
|
|
|
20
28
|
var _breakpointObserver = require("@decisiv/breakpoint-observer");
|
|
@@ -25,6 +33,8 @@ var _Question = _interopRequireDefault(require("@decisiv/iconix/lib/components/Q
|
|
|
25
33
|
|
|
26
34
|
var _composeReactRefs = _interopRequireDefault(require("@seznam/compose-react-refs"));
|
|
27
35
|
|
|
36
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
37
|
+
|
|
28
38
|
var _InputField = _interopRequireDefault(require("../../atoms/InputField"));
|
|
29
39
|
|
|
30
40
|
var _useClickOutside = _interopRequireDefault(require("../../utils/useClickOutside"));
|
|
@@ -49,12 +59,22 @@ var _schema = _interopRequireDefault(require("./schema"));
|
|
|
49
59
|
|
|
50
60
|
var _utils = require("./utils");
|
|
51
61
|
|
|
62
|
+
var _usePrevious = _interopRequireDefault(require("../../utils/usePrevious"));
|
|
63
|
+
|
|
52
64
|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
|
|
53
65
|
|
|
54
66
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
55
67
|
|
|
68
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { keys.push.apply(keys, Object.getOwnPropertySymbols(object)); } if (enumerableOnly) keys = keys.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; }
|
|
69
|
+
|
|
70
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
71
|
+
|
|
72
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
73
|
+
|
|
56
74
|
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
57
75
|
|
|
76
|
+
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
77
|
+
|
|
58
78
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
|
|
59
79
|
|
|
60
80
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
|
|
@@ -71,6 +91,14 @@ function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d =
|
|
|
71
91
|
|
|
72
92
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
73
93
|
|
|
94
|
+
var StyledInputDiv = _styledComponents.default.div.withConfig({
|
|
95
|
+
displayName: "Combobox__StyledInputDiv",
|
|
96
|
+
componentId: "zvfxxj-0"
|
|
97
|
+
})(["position:relative;width:100%;max-width:", ";"], function (_ref) {
|
|
98
|
+
var maxWidth = _ref.maxWidth;
|
|
99
|
+
return maxWidth;
|
|
100
|
+
});
|
|
101
|
+
|
|
74
102
|
function Combobox(props, ref) {
|
|
75
103
|
var clearButtonLabel = props.clearButtonLabel,
|
|
76
104
|
defaultValue = props.defaultValue,
|
|
@@ -78,17 +106,22 @@ function Combobox(props, ref) {
|
|
|
78
106
|
inputContainerRef = props.inputContainerRef,
|
|
79
107
|
label = props.label,
|
|
80
108
|
loading = props.loading,
|
|
109
|
+
_props$maxWidth = props.maxWidth,
|
|
110
|
+
maxWidth = _props$maxWidth === void 0 ? '100%' : _props$maxWidth,
|
|
111
|
+
multiple = props.multiple,
|
|
81
112
|
name = props.name,
|
|
82
113
|
onChangeValue = props.onChangeValue,
|
|
83
114
|
onClick = props.onClick,
|
|
84
115
|
onFocus = props.onFocus,
|
|
116
|
+
onHide = props.onHide,
|
|
85
117
|
onKeyDown = props.onKeyDown,
|
|
118
|
+
onShow = props.onShow,
|
|
86
119
|
_props$options = props.options,
|
|
87
120
|
options = _props$options === void 0 ? [] : _props$options,
|
|
121
|
+
renderOptionLabel = props.renderOptionLabel,
|
|
88
122
|
propValue = props.value,
|
|
89
123
|
_props$variant = props.variant,
|
|
90
124
|
variant = _props$variant === void 0 ? 'sync' : _props$variant,
|
|
91
|
-
renderOptionLabel = props.renderOptionLabel,
|
|
92
125
|
zIndex = props.zIndex;
|
|
93
126
|
|
|
94
127
|
var _useCombobox = (0, _useCombobox2.default)(props),
|
|
@@ -123,24 +156,77 @@ function Combobox(props, ref) {
|
|
|
123
156
|
var _useState5 = (0, _react.useState)(false),
|
|
124
157
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
125
158
|
isPopoverVisible = _useState6[0],
|
|
126
|
-
|
|
159
|
+
setIsPopoverVisibleState = _useState6[1];
|
|
160
|
+
|
|
161
|
+
var previousIsPopoverVisible = (0, _usePrevious.default)(isPopoverVisible);
|
|
162
|
+
/**
|
|
163
|
+
* Combobox controls the Popover instead of relying on the Popover's internal state.
|
|
164
|
+
* The Popover's onShow/ onHide handlers only function when the Popover is _not_
|
|
165
|
+
* controlled. This effect watches for a toggled visibility state, and calls the appropriate
|
|
166
|
+
* event handler.
|
|
167
|
+
*/
|
|
127
168
|
|
|
128
169
|
(0, _react.useEffect)(function () {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
170
|
+
if (previousIsPopoverVisible && !isPopoverVisible && onHide) {
|
|
171
|
+
onHide();
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
if (!previousIsPopoverVisible && isPopoverVisible && onShow) {
|
|
175
|
+
onShow();
|
|
176
|
+
}
|
|
177
|
+
}, [isPopoverVisible, previousIsPopoverVisible, onShow, onHide]);
|
|
178
|
+
/**
|
|
179
|
+
* Update the dropdown list visibility.
|
|
180
|
+
*/
|
|
181
|
+
|
|
182
|
+
var updateIsPopoverVisible = (0, _react.useCallback)(function (arg) {
|
|
183
|
+
if (arg === true || arg === false) setIsPopoverVisibleState(arg);
|
|
184
|
+
if (arg === 'toggle') setIsPopoverVisibleState(function (old) {
|
|
185
|
+
return !old;
|
|
186
|
+
});
|
|
187
|
+
}, [setIsPopoverVisibleState]);
|
|
188
|
+
/**
|
|
189
|
+
* This generates a flat list of the options (including those in categories)
|
|
190
|
+
* in the order they are presented in the dropdown list. Filtering disabled elements.
|
|
191
|
+
*/
|
|
192
|
+
|
|
193
|
+
var flatOptions = (0, _react.useMemo)(function () {
|
|
194
|
+
return options.reduce(function (acc, curr) {
|
|
195
|
+
if ((0, _utils.isCategory)(curr)) {
|
|
196
|
+
var items = (0, _isArray.default)(curr.items) ? curr.items.filter(function (option) {
|
|
197
|
+
return !option.disabled;
|
|
198
|
+
}) : [];
|
|
199
|
+
return acc.concat(items);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
if (!curr.disabled) {
|
|
203
|
+
return acc.concat(curr);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
return acc;
|
|
207
|
+
}, []);
|
|
208
|
+
}, [options]);
|
|
209
|
+
(0, _react.useEffect)(function () {
|
|
210
|
+
// Set the "default" active ID to the first in flatOptions, if it exists.
|
|
211
|
+
if (!(0, _isEmpty.default)(flatOptions) && !activeId) {
|
|
212
|
+
setActiveId((0, _get.default)(flatOptions, '0.id'));
|
|
132
213
|
} // For async comboboxes, if the input is focused, the dropdown should be open.
|
|
133
214
|
|
|
134
215
|
|
|
135
|
-
if (isFocused && variant === 'async') {
|
|
136
|
-
|
|
216
|
+
if (isFocused && variant === 'async' || multiple && internalInputValue !== '') {
|
|
217
|
+
updateIsPopoverVisible(true);
|
|
137
218
|
}
|
|
138
|
-
}, [activeId, isFocused,
|
|
219
|
+
}, [activeId, isFocused, flatOptions, variant, multiple, internalInputValue, updateIsPopoverVisible]); // The selectedValue is the id of the selectedOption, or an empty string if none selected.
|
|
139
220
|
|
|
140
|
-
var _useState7 = (0, _react.useState)(propValue || defaultValue || undefined),
|
|
221
|
+
var _useState7 = (0, _react.useState)(!Array.isArray(propValue) && propValue || !Array.isArray(defaultValue) && defaultValue || undefined),
|
|
141
222
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
142
223
|
selectedValue = _useState8[0],
|
|
143
224
|
setSelectedValue = _useState8[1];
|
|
225
|
+
|
|
226
|
+
var _useState9 = (0, _react.useState)(Array.isArray(propValue) && propValue || undefined),
|
|
227
|
+
_useState10 = _slicedToArray(_useState9, 2),
|
|
228
|
+
selectedValues = _useState10[0],
|
|
229
|
+
setSelectedValues = _useState10[1];
|
|
144
230
|
/**
|
|
145
231
|
* The current selected value and current input value are saved independently,
|
|
146
232
|
* but must be kept in sync. Using a single callback for this keeps it simple(r).
|
|
@@ -149,13 +235,51 @@ function Combobox(props, ref) {
|
|
|
149
235
|
|
|
150
236
|
var updateSelected = (0, _react.useCallback)(function (selectedId) {
|
|
151
237
|
setSelectedValue(selectedId);
|
|
152
|
-
var newSelected = (0, _utils.getOptionFromOptions)(options, selectedId) ||
|
|
153
|
-
|
|
238
|
+
var newSelected = (0, _utils.getOptionFromOptions)(options, selectedId) || null;
|
|
239
|
+
|
|
240
|
+
if (multiple) {
|
|
241
|
+
var index = selectedValues && selectedValues.findIndex(function (_ref2) {
|
|
242
|
+
var itemId = _ref2.id;
|
|
243
|
+
return itemId === selectedId;
|
|
244
|
+
});
|
|
245
|
+
|
|
246
|
+
if (newSelected && (index === undefined || index === -1)) {
|
|
247
|
+
setSelectedValues((0, _union.default)(selectedValues, [newSelected]));
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
setInternalInputValue('');
|
|
251
|
+
setActiveId(undefined);
|
|
252
|
+
} else {
|
|
253
|
+
setInternalInputValue((0, _get.default)(newSelected, 'label', ''));
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
if (onChangeValue) {
|
|
257
|
+
if (selectedId) {
|
|
258
|
+
onChangeValue(selectedId, {
|
|
259
|
+
removed: false
|
|
260
|
+
});
|
|
261
|
+
} else {
|
|
262
|
+
onChangeValue(null, {
|
|
263
|
+
removed: true
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}, [multiple, onChangeValue, options, selectedValues, setInternalInputValue, setSelectedValue, setSelectedValues, setActiveId]);
|
|
268
|
+
var removeSelected = (0, _react.useCallback)(function (selectedId) {
|
|
269
|
+
var newSelectedValues = selectedValues && selectedValues.filter(function (_ref3) {
|
|
270
|
+
var optionId = _ref3.id;
|
|
271
|
+
return selectedId !== optionId;
|
|
272
|
+
});
|
|
273
|
+
setSelectedValues(newSelectedValues);
|
|
154
274
|
|
|
155
275
|
if (onChangeValue) {
|
|
156
|
-
onChangeValue(selectedId
|
|
276
|
+
onChangeValue(selectedId, {
|
|
277
|
+
removed: true
|
|
278
|
+
});
|
|
157
279
|
}
|
|
158
|
-
|
|
280
|
+
|
|
281
|
+
return undefined;
|
|
282
|
+
}, [onChangeValue, selectedValues, setSelectedValues]);
|
|
159
283
|
/**
|
|
160
284
|
* If the value prop changes, it should always override any locally maintained current values.
|
|
161
285
|
* This allows the component to be controlled.
|
|
@@ -166,15 +290,10 @@ function Combobox(props, ref) {
|
|
|
166
290
|
setSelectedValue(propValue);
|
|
167
291
|
var newSelected = (0, _utils.getOptionFromOptions)(options, propValue) || {};
|
|
168
292
|
setInternalInputValue((0, _get.default)(newSelected, 'label', ''));
|
|
293
|
+
} else if (_typeof(propValue) === 'object' && propValue !== selectedValues) {
|
|
294
|
+
setSelectedValues(propValue);
|
|
169
295
|
}
|
|
170
|
-
}, [options, propValue, selectedValue, setInternalInputValue, updateSelected]);
|
|
171
|
-
/**
|
|
172
|
-
* Toggle the dropdown list.
|
|
173
|
-
*/
|
|
174
|
-
|
|
175
|
-
var toggleIsPopoverVisible = (0, _react.useCallback)(function () {
|
|
176
|
-
setIsPopoverVisible(!isPopoverVisible);
|
|
177
|
-
}, [isPopoverVisible]);
|
|
296
|
+
}, [options, propValue, selectedValue, selectedValues, setInternalInputValue, updateSelected]);
|
|
178
297
|
/**
|
|
179
298
|
* This handler is called when the "active" item is changed in the DropdownList. That could be
|
|
180
299
|
* when the user hovers over a new item with the mouse, or when the user navigates through
|
|
@@ -190,8 +309,13 @@ function Combobox(props, ref) {
|
|
|
190
309
|
*/
|
|
191
310
|
|
|
192
311
|
var handleChangeDropdownListValue = (0, _react.useCallback)(function (selectedIds) {
|
|
312
|
+
if (multiple) {
|
|
313
|
+
updateSelected((0, _last.default)(selectedIds));
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
|
|
193
317
|
updateSelected(selectedIds[0]);
|
|
194
|
-
}, [updateSelected]);
|
|
318
|
+
}, [updateSelected, multiple]);
|
|
195
319
|
/**
|
|
196
320
|
* Clicking anywhere within the Combobox component (except the clear button) should open
|
|
197
321
|
* the dropdown list. There is some complex logic here because of the <input> rendered inside
|
|
@@ -211,7 +335,7 @@ function Combobox(props, ref) {
|
|
|
211
335
|
* tree. Clicking an item in the list will call this click handler on the container.
|
|
212
336
|
* Usually that's fine. In this case, we don't want that behavior.
|
|
213
337
|
*/
|
|
214
|
-
|
|
338
|
+
updateIsPopoverVisible(false);
|
|
215
339
|
} else if (isFocused) {
|
|
216
340
|
if (variant === 'sync' && finalComboboxRef && // @ts-ignore
|
|
217
341
|
finalComboboxRef.current === event.target) {
|
|
@@ -227,16 +351,16 @@ function Combobox(props, ref) {
|
|
|
227
351
|
* This re-opens the popover if you first open it,
|
|
228
352
|
* then make a selection, then click the <input> again.
|
|
229
353
|
*/
|
|
230
|
-
|
|
354
|
+
updateIsPopoverVisible(true);
|
|
231
355
|
}
|
|
232
356
|
} else {
|
|
233
|
-
|
|
357
|
+
updateIsPopoverVisible('toggle');
|
|
234
358
|
}
|
|
235
359
|
}
|
|
236
360
|
|
|
237
361
|
onClick && onClick(event);
|
|
238
362
|
}, // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
239
|
-
[isFocused, isPopoverVisible, variant, onClick,
|
|
363
|
+
[isFocused, isPopoverVisible, variant, onClick, updateIsPopoverVisible]);
|
|
240
364
|
/**
|
|
241
365
|
* This focus handler is responsible for opening the dropdown list and tracking focus state.
|
|
242
366
|
* It's important to do this in the focus handler because the dropdown should open when the
|
|
@@ -245,26 +369,12 @@ function Combobox(props, ref) {
|
|
|
245
369
|
|
|
246
370
|
var handleContainerFocus = (0, _react.useCallback)(function (event) {
|
|
247
371
|
if (variant === 'sync') {
|
|
248
|
-
|
|
372
|
+
updateIsPopoverVisible(true);
|
|
249
373
|
}
|
|
250
374
|
|
|
251
375
|
setIsFocused(true);
|
|
252
376
|
onFocus && onFocus(event);
|
|
253
|
-
}, [onFocus,
|
|
254
|
-
/**
|
|
255
|
-
* This generates a flat list of the options (including those in categories)
|
|
256
|
-
* in the order they are presented in the dropdown list.
|
|
257
|
-
*/
|
|
258
|
-
|
|
259
|
-
var flatOptions = (0, _react.useMemo)(function () {
|
|
260
|
-
return options.reduce(function (acc, curr) {
|
|
261
|
-
if ((0, _utils.isCategory)(curr)) {
|
|
262
|
-
return acc.concat(curr.items);
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
return acc.concat(curr);
|
|
266
|
-
}, []);
|
|
267
|
-
}, [options]);
|
|
377
|
+
}, [onFocus, updateIsPopoverVisible, variant]);
|
|
268
378
|
/**
|
|
269
379
|
* Pressing certain keys when focused on the Combobox component should trigger some actions.
|
|
270
380
|
*/
|
|
@@ -276,10 +386,10 @@ function Combobox(props, ref) {
|
|
|
276
386
|
event.preventDefault();
|
|
277
387
|
|
|
278
388
|
if (!isPopoverVisible) {
|
|
279
|
-
|
|
389
|
+
updateIsPopoverVisible(true);
|
|
280
390
|
} else {
|
|
281
|
-
var currentIndex = (0, _findIndex.default)(flatOptions, function (
|
|
282
|
-
var optionId =
|
|
391
|
+
var currentIndex = (0, _findIndex.default)(flatOptions, function (_ref4) {
|
|
392
|
+
var optionId = _ref4.id;
|
|
283
393
|
return optionId === activeId;
|
|
284
394
|
});
|
|
285
395
|
|
|
@@ -300,28 +410,28 @@ function Combobox(props, ref) {
|
|
|
300
410
|
}
|
|
301
411
|
|
|
302
412
|
if (event.key === 'Enter' && isPopoverVisible) {
|
|
303
|
-
setIsPopoverVisible(false);
|
|
304
413
|
updateSelected(activeId || '');
|
|
414
|
+
updateIsPopoverVisible(false);
|
|
305
415
|
}
|
|
306
416
|
|
|
307
417
|
if (event.key === 'Escape') {
|
|
308
|
-
|
|
418
|
+
updateIsPopoverVisible(false);
|
|
309
419
|
}
|
|
310
420
|
|
|
311
421
|
if (event.key === 'Tab' && isPopoverVisible) {
|
|
312
|
-
|
|
422
|
+
updateIsPopoverVisible(false);
|
|
313
423
|
}
|
|
314
424
|
|
|
315
425
|
if (onKeyDown) {
|
|
316
426
|
onKeyDown(event);
|
|
317
427
|
}
|
|
318
|
-
}, [activeId, flatOptions, isPopoverVisible, onKeyDown,
|
|
428
|
+
}, [activeId, flatOptions, isPopoverVisible, onKeyDown, updateIsPopoverVisible, updateSelected]); // When the dropdown is visible, clicking anywhere outside of the dropdown should close it.
|
|
319
429
|
|
|
320
430
|
var handleClickOutsideList = (0, _react.useCallback)(function (event) {
|
|
321
431
|
if (isPopoverVisible) {
|
|
322
|
-
|
|
432
|
+
updateIsPopoverVisible(false);
|
|
323
433
|
}
|
|
324
|
-
}, [isPopoverVisible]);
|
|
434
|
+
}, [isPopoverVisible, updateIsPopoverVisible]);
|
|
325
435
|
(0, _useClickOutside.default)([finalComboboxRef, listRef], handleClickOutsideList);
|
|
326
436
|
/**
|
|
327
437
|
* The DropdownList accepts a prop called `PanelComponent` that can be used
|
|
@@ -368,7 +478,12 @@ function Combobox(props, ref) {
|
|
|
368
478
|
|
|
369
479
|
return undefined;
|
|
370
480
|
}, [internalInputValue, loading, options, translate]);
|
|
371
|
-
|
|
481
|
+
var selectedValuesIds = selectedValues ? selectedValues.map(function (elem) {
|
|
482
|
+
return elem.id || '';
|
|
483
|
+
}) : undefined;
|
|
484
|
+
return _react.default.createElement(StyledInputDiv, {
|
|
485
|
+
maxWidth: maxWidth
|
|
486
|
+
}, _react.default.createElement(_InputField.default, _extends({}, getInputFieldProps(), {
|
|
372
487
|
id: inputId,
|
|
373
488
|
inputContainerRef: finalInputContainerRef,
|
|
374
489
|
onBlur: function onBlur() {
|
|
@@ -378,16 +493,18 @@ function Combobox(props, ref) {
|
|
|
378
493
|
onClick: handleContainerClick,
|
|
379
494
|
onKeyDown: handleContainerKeyDown,
|
|
380
495
|
ref: finalComboboxRef
|
|
381
|
-
}), function (
|
|
382
|
-
var ariaLabelledBy =
|
|
383
|
-
disabled =
|
|
384
|
-
targetId =
|
|
385
|
-
onBlurTarget =
|
|
386
|
-
onChangeTargetValue =
|
|
387
|
-
onFocusTarget =
|
|
388
|
-
readOnly =
|
|
389
|
-
targetRef =
|
|
390
|
-
value =
|
|
496
|
+
}), function (_ref5) {
|
|
497
|
+
var ariaLabelledBy = _ref5['aria-labelledby'],
|
|
498
|
+
disabled = _ref5.disabled,
|
|
499
|
+
targetId = _ref5.id,
|
|
500
|
+
onBlurTarget = _ref5.onBlur,
|
|
501
|
+
onChangeTargetValue = _ref5.onChange,
|
|
502
|
+
onFocusTarget = _ref5.onFocus,
|
|
503
|
+
readOnly = _ref5.readOnly,
|
|
504
|
+
targetRef = _ref5.ref,
|
|
505
|
+
value = _ref5.value,
|
|
506
|
+
autoComplete = _ref5.autoComplete,
|
|
507
|
+
type = _ref5.type;
|
|
391
508
|
var dropdownListId = "".concat(targetId, "-dropdown-list");
|
|
392
509
|
return _react.default.createElement(_react.default.Fragment, null, _react.default.createElement(_Target.default, {
|
|
393
510
|
"aria-haspopup": "listbox",
|
|
@@ -400,6 +517,9 @@ function Combobox(props, ref) {
|
|
|
400
517
|
inputFieldLabel: label,
|
|
401
518
|
isPopoverVisible: isPopoverVisible,
|
|
402
519
|
name: name,
|
|
520
|
+
multiple: multiple,
|
|
521
|
+
selectedValues: selectedValues,
|
|
522
|
+
removeSelected: removeSelected,
|
|
403
523
|
onBlur: onBlurTarget,
|
|
404
524
|
onClear: function onClear() {
|
|
405
525
|
onChangeTargetValue();
|
|
@@ -411,7 +531,11 @@ function Combobox(props, ref) {
|
|
|
411
531
|
ref: targetRef,
|
|
412
532
|
value: value,
|
|
413
533
|
variant: variant,
|
|
414
|
-
toggleIsPopoverVisible: toggleIsPopoverVisible
|
|
534
|
+
toggleIsPopoverVisible: function toggleIsPopoverVisible() {
|
|
535
|
+
return updateIsPopoverVisible('toggle');
|
|
536
|
+
},
|
|
537
|
+
autoComplete: autoComplete,
|
|
538
|
+
type: type
|
|
415
539
|
}), _react.default.createElement(_DropdownList.default, {
|
|
416
540
|
PanelComponent: getPanelComponent(),
|
|
417
541
|
activeId: activeId,
|
|
@@ -424,10 +548,12 @@ function Combobox(props, ref) {
|
|
|
424
548
|
listRef: listRef,
|
|
425
549
|
minWidth: "".concat((dimensions.width || 0) + 1, "px"),
|
|
426
550
|
name: "".concat(name, "_dropdown-list"),
|
|
551
|
+
multiple: multiple,
|
|
427
552
|
onChange: handleChangeDropdownListValue,
|
|
428
553
|
onChangeActiveItem: handleChangeDropdownListActiveItem,
|
|
429
|
-
selectedIds: selectedValue || '',
|
|
554
|
+
selectedIds: !multiple ? selectedValue || '' : selectedValuesIds,
|
|
430
555
|
showArrow: false,
|
|
556
|
+
showCheckbox: !multiple,
|
|
431
557
|
target: popoverTargetRef,
|
|
432
558
|
visible: Boolean(isPopoverVisible || loading),
|
|
433
559
|
renderOptionLabel: renderOptionLabel,
|
|
@@ -437,6 +563,8 @@ function Combobox(props, ref) {
|
|
|
437
563
|
}
|
|
438
564
|
|
|
439
565
|
var ComboboxWithRef = (0, _react.forwardRef)(Combobox);
|
|
440
|
-
ComboboxWithRef.propTypes = _schema.default.propTypes
|
|
566
|
+
ComboboxWithRef.propTypes = _objectSpread({}, _schema.default.propTypes, {
|
|
567
|
+
icon: _propTypes.default.elementType
|
|
568
|
+
});
|
|
441
569
|
var _default = ComboboxWithRef;
|
|
442
570
|
exports.default = _default;
|