@decisiv/ui-components 2.0.1-alpha.13 → 2.0.1-alpha.131
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/elements.d.ts.map +1 -1
- package/lib/atoms/BooleanInput/elements.js +8 -3
- package/lib/atoms/BooleanInput/index.d.ts.map +1 -1
- package/lib/atoms/BooleanInput/index.js +26 -5
- package/lib/atoms/BooleanInput/index.test.js +17 -6
- package/lib/atoms/BooleanInput/types.d.ts +4 -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 +46 -6
- package/lib/atoms/Calendar/index.test.js +68 -38
- package/lib/atoms/Calendar/types.d.ts +1 -1
- package/lib/atoms/Calendar/types.d.ts.map +1 -1
- 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/Alert/Container.d.ts +201 -0
- package/lib/components/Alert/Container.d.ts.map +1 -0
- package/lib/components/Alert/Container.js +26 -0
- package/lib/components/Alert/StyledButton.d.ts +5 -0
- package/lib/components/Alert/StyledButton.d.ts.map +1 -0
- package/lib/components/Alert/StyledButton.js +23 -0
- package/lib/components/Alert/index.d.ts +27 -0
- package/lib/components/Alert/index.d.ts.map +1 -0
- package/lib/components/Alert/index.js +112 -0
- package/lib/components/Alert/index.test.js +79 -0
- package/lib/components/Alert/intents.d.ts +13 -0
- package/lib/components/Alert/intents.d.ts.map +1 -0
- package/lib/components/Alert/intents.js +72 -0
- package/lib/components/Alert/schema.d.ts +3 -0
- package/lib/components/Alert/schema.d.ts.map +1 -0
- package/lib/components/Alert/schema.js +25 -0
- package/lib/components/Alert/types.d.ts +36 -0
- package/lib/components/Alert/types.d.ts.map +1 -0
- package/lib/components/Alert/types.js +32 -0
- 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 +41 -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 +29 -0
- package/lib/components/Filter/index.d.ts.map +1 -0
- package/lib/components/Filter/index.js +105 -0
- package/lib/components/Filter/index.test.js +60 -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 +33 -0
- package/lib/components/Filter/types.d.ts +18 -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/DisabledLink.d.ts +7 -0
- package/lib/components/Link/DisabledLink.d.ts.map +1 -0
- package/lib/components/Link/DisabledLink.js +46 -0
- package/lib/components/Link/Link.d.ts +4 -0
- package/lib/components/Link/Link.d.ts.map +1 -0
- package/lib/components/Link/Link.js +67 -0
- package/lib/components/Link/index.d.ts +4 -23
- package/lib/components/Link/index.d.ts.map +1 -1
- package/lib/components/Link/index.js +20 -158
- package/lib/components/Link/index.test.js +63 -42
- package/lib/components/Link/schema.d.ts.map +1 -1
- package/lib/components/Link/schema.js +2 -1
- package/lib/components/Link/styles.d.ts +20 -0
- package/lib/components/Link/styles.d.ts.map +1 -0
- package/lib/components/Link/styles.js +131 -0
- package/lib/components/Link/types.d.ts +28 -0
- package/lib/components/Link/types.d.ts.map +1 -0
- package/lib/components/Link/types.js +5 -0
- 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/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.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 +29 -2
- 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 +29 -2
- 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/index.d.ts +2 -0
- package/lib/components/index.d.ts.map +1 -1
- package/lib/components/index.js +25 -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 +4 -0
- package/lib/providers/ConfigProvider/utils/translations.d.ts.map +1 -1
- package/lib/providers/ConfigProvider/utils/translations.js +4 -0
- 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
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _react = _interopRequireDefault(require("react"));
|
|
4
|
+
|
|
5
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
6
|
+
|
|
7
|
+
var _react2 = require("@testing-library/react");
|
|
8
|
+
|
|
9
|
+
var _ = _interopRequireDefault(require("."));
|
|
10
|
+
|
|
11
|
+
var _providers = require("../../providers");
|
|
12
|
+
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
+
|
|
15
|
+
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; }
|
|
16
|
+
|
|
17
|
+
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; }
|
|
18
|
+
|
|
19
|
+
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; }
|
|
20
|
+
|
|
21
|
+
describe('InputField', function () {
|
|
22
|
+
var wrapper = function wrapper(_ref) {
|
|
23
|
+
var children = _ref.children;
|
|
24
|
+
return _react.default.createElement(_providers.ConfigProvider, null, children);
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
var render = function render(ui, options) {
|
|
28
|
+
return (0, _react2.render)(ui, _objectSpread({}, options, {
|
|
29
|
+
wrapper: wrapper
|
|
30
|
+
}));
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
var Dummy = _styledComponents.default.textarea.attrs({
|
|
34
|
+
'data-testid': 'test-textarea'
|
|
35
|
+
}).withConfig({
|
|
36
|
+
displayName: "indextest__Dummy",
|
|
37
|
+
componentId: "i3buhi-0"
|
|
38
|
+
})([""]);
|
|
39
|
+
|
|
40
|
+
var textFinder = function textFinder(text) {
|
|
41
|
+
return function (content, node) {
|
|
42
|
+
var hasText = function hasText(n) {
|
|
43
|
+
return n.textContent === text;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
var nodeHasText = hasText(node);
|
|
47
|
+
var childrenDontHaveText = Array.from(node.children).every(function (child) {
|
|
48
|
+
return !hasText(child);
|
|
49
|
+
});
|
|
50
|
+
return nodeHasText && childrenDontHaveText;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
describe('character counter', function () {
|
|
55
|
+
it('updates as text is entered', function () {
|
|
56
|
+
var label = 'label';
|
|
57
|
+
var initialValue = 'Initial text';
|
|
58
|
+
|
|
59
|
+
var _render = render(_react.default.createElement(_.default, {
|
|
60
|
+
label: label,
|
|
61
|
+
value: initialValue,
|
|
62
|
+
showCharacterCount: true,
|
|
63
|
+
maxLength: 100
|
|
64
|
+
}, function (p) {
|
|
65
|
+
return _react.default.createElement(Dummy, p);
|
|
66
|
+
})),
|
|
67
|
+
getByText = _render.getByText,
|
|
68
|
+
getByTestId = _render.getByTestId;
|
|
69
|
+
|
|
70
|
+
expect(getByText(textFinder("You have ".concat(100 - initialValue.length, " characters left (100 max).")))).toBeTruthy();
|
|
71
|
+
var textarea = getByTestId('test-textarea');
|
|
72
|
+
var newValue = "".concat(initialValue, " with some additional text");
|
|
73
|
+
|
|
74
|
+
_react2.fireEvent.change(textarea, {
|
|
75
|
+
target: {
|
|
76
|
+
value: newValue
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
expect(getByText(textFinder("You have ".concat(100 - newValue.length, " characters left (100 max).")))).toBeTruthy();
|
|
81
|
+
|
|
82
|
+
_react2.fireEvent.change(textarea, {
|
|
83
|
+
target: {
|
|
84
|
+
value: ''
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
expect(getByText(textFinder("You have 100 characters left (100 max)."))).toBeTruthy();
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/atoms/InputField/schema.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,KAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/atoms/InputField/schema.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,KAAqC,CAAC;AAsElD,eAAe,MAAM,CAAC"}
|
|
@@ -16,6 +16,7 @@ schema.makePropTypes = function () {
|
|
|
16
16
|
return {
|
|
17
17
|
disabled: _reactDesc.PropTypes.bool.description('Sets the input state to disabled if true.'),
|
|
18
18
|
helpMessage: _reactDesc.PropTypes.string.description("A short message to help clarify the input's purpose to the user."),
|
|
19
|
+
hideLabel: _reactDesc.PropTypes.bool.description("Visually hides the label, but leaves it available for screen readers. Use this only if you are sure the input doesn't need a visual label").defaultValue('false'),
|
|
19
20
|
icon: _reactDesc.PropTypes.element.description('An icon to be rendered on the left side of the input.'),
|
|
20
21
|
id: _reactDesc.PropTypes.string.description('A unique ID for the input.'),
|
|
21
22
|
inputContainerRef: _reactDesc.PropTypes.oneOfType([// Either a function
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
declare const Category: ({ borderRadius, label, items, }: import("./types").Category) => JSX.Element;
|
|
2
|
+
declare const Category: ({ borderRadius, label, items, showCheckbox, }: import("./types").Category) => JSX.Element;
|
|
3
3
|
export default Category;
|
|
4
4
|
//# sourceMappingURL=Category.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Category.d.ts","sourceRoot":"","sources":["../../../src/atoms/OptionsList/Category.tsx"],"names":[],"mappings":";AAuBA,QAAA,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"Category.d.ts","sourceRoot":"","sources":["../../../src/atoms/OptionsList/Category.tsx"],"names":[],"mappings":";AAuBA,QAAA,MAAM,QAAQ,4FAyBb,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -36,13 +36,15 @@ var StyledCategory = _styledComponents.default.li.attrs({
|
|
|
36
36
|
var Category = function Category(_ref) {
|
|
37
37
|
var borderRadius = _ref.borderRadius,
|
|
38
38
|
label = _ref.label,
|
|
39
|
-
items = _ref.items
|
|
39
|
+
items = _ref.items,
|
|
40
|
+
showCheckbox = _ref.showCheckbox;
|
|
40
41
|
return _react.default.createElement(_react.Fragment, null, _react.default.createElement(StyledCategory, null, label), items.map(function (subItem) {
|
|
41
42
|
var id = (0, _utils.getId)(subItem);
|
|
42
43
|
return _react.default.createElement(_Option.default, _extends({}, subItem, {
|
|
43
44
|
key: id,
|
|
44
45
|
id: id,
|
|
45
|
-
borderRadius: borderRadius
|
|
46
|
+
borderRadius: borderRadius,
|
|
47
|
+
showCheckbox: showCheckbox
|
|
46
48
|
}));
|
|
47
49
|
}));
|
|
48
50
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../../src/atoms/OptionsList/Footer.tsx"],"names":[],"mappings":";AASA,OAAO,EAAE,aAAa,EAAe,MAAM,SAAS,CAAC;AAErD,UAAU,KAAK;IACb,OAAO,EAAE,aAAa,CAAC;CACxB;AAOD,iBAAS,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CA6BjD;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
11
|
+
|
|
12
|
+
var _designTokens = require("@decisiv/design-tokens");
|
|
13
|
+
|
|
14
|
+
var _toColorString = _interopRequireDefault(require("polished/lib/color/toColorString"));
|
|
15
|
+
|
|
16
|
+
var _Button = _interopRequireDefault(require("../../components/Button"));
|
|
17
|
+
|
|
18
|
+
var _Flex = _interopRequireDefault(require("../../components/Flex"));
|
|
19
|
+
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
+
|
|
22
|
+
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); }
|
|
23
|
+
|
|
24
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
25
|
+
|
|
26
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
27
|
+
|
|
28
|
+
var ButtonsRow = (0, _styledComponents.default)(_Flex.default).withConfig({
|
|
29
|
+
displayName: "Footer__ButtonsRow",
|
|
30
|
+
componentId: "sc-1nxwudp-0"
|
|
31
|
+
})(["border-top:1px solid ", ";background-color:", ";"], (0, _toColorString.default)(_designTokens.color.opacity.charcoal15), (0, _toColorString.default)(_designTokens.color.opacity.fullMoon50));
|
|
32
|
+
|
|
33
|
+
function DropdownFooter(props) {
|
|
34
|
+
var actions = props.actions;
|
|
35
|
+
|
|
36
|
+
var buttonRender = function buttonRender(_ref) {
|
|
37
|
+
var id = _ref.id,
|
|
38
|
+
rest = _objectWithoutProperties(_ref, ["id"]);
|
|
39
|
+
|
|
40
|
+
return _react.default.createElement(_Flex.default, {
|
|
41
|
+
key: id,
|
|
42
|
+
paddingLeft: 0.25,
|
|
43
|
+
paddingRight: 0.25
|
|
44
|
+
}, _react.default.createElement(_Button.default, _extends({
|
|
45
|
+
size: "small"
|
|
46
|
+
}, rest)));
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
return Array.isArray(actions) ? _react.default.createElement(ButtonsRow, {
|
|
50
|
+
flex: 1,
|
|
51
|
+
padding: 1
|
|
52
|
+
}, _react.default.createElement(_Flex.default, {
|
|
53
|
+
flex: 1,
|
|
54
|
+
justifyContent: "flex-start"
|
|
55
|
+
}, actions.map(buttonRender))) : _react.default.createElement(ButtonsRow, {
|
|
56
|
+
flex: 1,
|
|
57
|
+
padding: 1
|
|
58
|
+
}, _react.default.createElement(_Flex.default, {
|
|
59
|
+
flex: 1,
|
|
60
|
+
justifyContent: "space-between"
|
|
61
|
+
}, _react.default.createElement(_Flex.default, {
|
|
62
|
+
flex: 1,
|
|
63
|
+
justifyContent: "flex-start"
|
|
64
|
+
}, actions.left && actions.left.map(buttonRender)), _react.default.createElement(_Flex.default, {
|
|
65
|
+
flex: 1,
|
|
66
|
+
justifyContent: "flex-end",
|
|
67
|
+
paddingLeft: 2
|
|
68
|
+
}, actions.right && actions.right.map(buttonRender))));
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
var _default = DropdownFooter;
|
|
72
|
+
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Option.d.ts","sourceRoot":"","sources":["../../../src/atoms/OptionsList/Option.tsx"],"names":[],"mappings":"AAOA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAK/D,OAAO,EACL,WAAW,EAMZ,MAAM,SAAS,CAAC;AA+MjB,iBAAS,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"Option.d.ts","sourceRoot":"","sources":["../../../src/atoms/OptionsList/Option.tsx"],"names":[],"mappings":"AAOA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAK/D,OAAO,EACL,WAAW,EAMZ,MAAM,SAAS,CAAC;AA+MjB,iBAAS,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,CAAC,OAAO,CA4G/C;;AAED,wBAAkC"}
|
|
@@ -108,7 +108,9 @@ function Option(props) {
|
|
|
108
108
|
label = props.label,
|
|
109
109
|
decoration = props.decoration,
|
|
110
110
|
disabled = props.disabled,
|
|
111
|
-
borderRadius = props.borderRadius
|
|
111
|
+
borderRadius = props.borderRadius,
|
|
112
|
+
_props$showCheckbox = props.showCheckbox,
|
|
113
|
+
showCheckbox = _props$showCheckbox === void 0 ? true : _props$showCheckbox;
|
|
112
114
|
var decorationType = (0, _get.default)(decoration, 'type');
|
|
113
115
|
|
|
114
116
|
var _useOptionsList = (0, _context.useOptionsList)(),
|
|
@@ -136,8 +138,8 @@ function Option(props) {
|
|
|
136
138
|
updateActiveId(disabled ? '' : id);
|
|
137
139
|
}, [setInputMethod, updateActiveId, disabled, id]);
|
|
138
140
|
var handleClick = (0, _react.useCallback)(function () {
|
|
139
|
-
toggleItemSelection(id);
|
|
140
|
-
}, [toggleItemSelection, id]);
|
|
141
|
+
if (!disabled) toggleItemSelection(id);
|
|
142
|
+
}, [toggleItemSelection, id, disabled]);
|
|
141
143
|
var LabelWrapper = (0, _react.useMemo)(function () {
|
|
142
144
|
return function (_ref2) {
|
|
143
145
|
var children = _ref2.children;
|
|
@@ -168,7 +170,7 @@ function Option(props) {
|
|
|
168
170
|
text: label,
|
|
169
171
|
icon: isDecoration(decoration) && decoration.type === 'Icon' ? decoration.icon : undefined,
|
|
170
172
|
disabled: !!disabled
|
|
171
|
-
}) : _react.default.createElement(LabelWrapper, null, selectable && (multiple ? _react.default.createElement(_Checkbox.default, _extends({}, commonProps, {
|
|
173
|
+
}) : _react.default.createElement(LabelWrapper, null, selectable && (multiple && !!showCheckbox ? _react.default.createElement(_Checkbox.default, _extends({}, commonProps, {
|
|
172
174
|
disabled: !!disabled,
|
|
173
175
|
size: "small",
|
|
174
176
|
value: props.value
|
|
@@ -182,7 +184,8 @@ function Option(props) {
|
|
|
182
184
|
id: id,
|
|
183
185
|
label: label,
|
|
184
186
|
value: props.value,
|
|
185
|
-
disabled: disabled
|
|
187
|
+
disabled: disabled,
|
|
188
|
+
meta: props.meta
|
|
186
189
|
}) : _react.default.createElement(_Typography.P, {
|
|
187
190
|
as: "span",
|
|
188
191
|
color: "inherit"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atoms/OptionsList/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KASN,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atoms/OptionsList/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KASN,MAAM,OAAO,CAAC;AAcf,OAAO,EAGL,gBAAgB,EAIjB,MAAM,SAAS,CAAC;AAwBjB,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kDAmCrB,CAAC;AA4SF,QAAA,MAAM,2BAA2B,2FAA0B,CAAC;AAkC5D,eAAe,2BAA2B,CAAC"}
|
|
@@ -7,21 +7,17 @@ exports.default = exports.Container = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
|
|
10
12
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
11
13
|
|
|
12
14
|
var _rem = _interopRequireDefault(require("polished/lib/helpers/rem"));
|
|
13
15
|
|
|
14
16
|
var _isArray = _interopRequireDefault(require("lodash/isArray"));
|
|
15
17
|
|
|
16
|
-
var
|
|
17
|
-
|
|
18
|
-
var _Option = _interopRequireDefault(require("./Option"));
|
|
18
|
+
var _Button = require("../../components/Button");
|
|
19
19
|
|
|
20
|
-
var
|
|
21
|
-
|
|
22
|
-
var _utils = require("./utils");
|
|
23
|
-
|
|
24
|
-
var _schema = _interopRequireDefault(require("./schema"));
|
|
20
|
+
var _Grid = _interopRequireDefault(require("../../components/Grid"));
|
|
25
21
|
|
|
26
22
|
var _canUseDOM = _interopRequireDefault(require("../../utils/canUseDOM"));
|
|
27
23
|
|
|
@@ -31,8 +27,20 @@ var _assignRef = _interopRequireDefault(require("../../utils/assignRef"));
|
|
|
31
27
|
|
|
32
28
|
var _isCtrlCmd = _interopRequireDefault(require("../../utils/isCtrlCmd"));
|
|
33
29
|
|
|
30
|
+
var _Option = _interopRequireDefault(require("./Option"));
|
|
31
|
+
|
|
32
|
+
var _Category = _interopRequireDefault(require("./Category"));
|
|
33
|
+
|
|
34
|
+
var _Footer = _interopRequireDefault(require("./Footer"));
|
|
35
|
+
|
|
36
|
+
var _context = require("./context");
|
|
37
|
+
|
|
38
|
+
var _utils = require("./utils");
|
|
39
|
+
|
|
34
40
|
var _useListSelectionKeyboardActions = _interopRequireDefault(require("./useListSelectionKeyboardActions"));
|
|
35
41
|
|
|
42
|
+
var _schema = _interopRequireDefault(require("./schema"));
|
|
43
|
+
|
|
36
44
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
37
45
|
|
|
38
46
|
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; } }
|
|
@@ -61,6 +69,7 @@ function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d =
|
|
|
61
69
|
|
|
62
70
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
63
71
|
|
|
72
|
+
var Row = _Grid.default.Row;
|
|
64
73
|
var isUsingKeyboard = false;
|
|
65
74
|
|
|
66
75
|
if (_canUseDOM.default) {
|
|
@@ -75,7 +84,7 @@ if (_canUseDOM.default) {
|
|
|
75
84
|
var Container = _styledComponents.default.ul.withConfig({
|
|
76
85
|
displayName: "OptionsList__Container",
|
|
77
86
|
componentId: "sc-107p8d5-0"
|
|
78
|
-
})(["list-style:none;margin:0;width:
|
|
87
|
+
})(["list-style:none;margin:0;width:100%;height:auto;max-height:", ";max-width:", ";padding:0;overflow:auto;position:relative;", " ", " ", " &:focus{outline:none;}"], (0, _rem.default)(310), (0, _rem.default)(340), function (_ref) {
|
|
79
88
|
var minWidth = _ref.minWidth;
|
|
80
89
|
return minWidth ? "\n min-width: ".concat(minWidth, ";\n ") : '';
|
|
81
90
|
}, function (_ref2) {
|
|
@@ -89,7 +98,8 @@ var Container = _styledComponents.default.ul.withConfig({
|
|
|
89
98
|
exports.Container = Container;
|
|
90
99
|
|
|
91
100
|
function OptionsList(props, forwardedRef) {
|
|
92
|
-
var
|
|
101
|
+
var actions = props.actions,
|
|
102
|
+
items = props.items,
|
|
93
103
|
multiple = props.multiple,
|
|
94
104
|
onChange = props.onChange,
|
|
95
105
|
name = props.name,
|
|
@@ -100,6 +110,7 @@ function OptionsList(props, forwardedRef) {
|
|
|
100
110
|
activeIdProp = props.activeId,
|
|
101
111
|
onChangeActiveItem = props.onChangeActiveItem,
|
|
102
112
|
onKeyDownProp = props.onKeyDown,
|
|
113
|
+
showCheckbox = props.showCheckbox,
|
|
103
114
|
tabIndex = props.tabIndex,
|
|
104
115
|
selectable = props.selectable,
|
|
105
116
|
defaultSelected = props.defaultSelected,
|
|
@@ -266,7 +277,7 @@ function OptionsList(props, forwardedRef) {
|
|
|
266
277
|
selectable: !!selectable,
|
|
267
278
|
itemRole: itemRole
|
|
268
279
|
}
|
|
269
|
-
}, _react.default.createElement(Container, {
|
|
280
|
+
}, _react.default.createElement(_Grid.default.Container, null, _react.default.createElement(Row, null, _react.default.createElement(Container, {
|
|
270
281
|
"aria-activedescendant": activeId,
|
|
271
282
|
"aria-multiselectable": !!multiple,
|
|
272
283
|
ref: setContainerRefFunc,
|
|
@@ -287,25 +298,41 @@ function OptionsList(props, forwardedRef) {
|
|
|
287
298
|
if ((0, _utils.isCategory)(item)) {
|
|
288
299
|
return _react.default.createElement(_Category.default, _extends({}, item, {
|
|
289
300
|
key: id,
|
|
290
|
-
borderRadius: borderRadius
|
|
301
|
+
borderRadius: borderRadius,
|
|
302
|
+
showCheckbox: showCheckbox
|
|
291
303
|
}));
|
|
292
304
|
}
|
|
293
305
|
|
|
294
306
|
return _react.default.createElement(_Option.default, _extends({}, item, {
|
|
295
307
|
key: id,
|
|
296
|
-
borderRadius: borderRadius
|
|
308
|
+
borderRadius: borderRadius,
|
|
309
|
+
showCheckbox: showCheckbox
|
|
297
310
|
}));
|
|
298
|
-
})))
|
|
311
|
+
}))), actions && _react.default.createElement(Row, null, _react.default.createElement(_Footer.default, {
|
|
312
|
+
actions: actions
|
|
313
|
+
}))));
|
|
299
314
|
}
|
|
300
315
|
|
|
301
316
|
var OptionsListWithContainerRef = (0, _react.forwardRef)(OptionsList); // @ts-ignore
|
|
302
317
|
|
|
303
|
-
OptionsListWithContainerRef.propTypes = _objectSpread({}, _schema.default.propTypes
|
|
318
|
+
OptionsListWithContainerRef.propTypes = _objectSpread({}, _schema.default.propTypes, {
|
|
319
|
+
actions: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.shape((0, _Button.makeButtonSchemaPropTypes)({
|
|
320
|
+
id: _propTypes.default.string.isRequired
|
|
321
|
+
}))), _propTypes.default.shape({
|
|
322
|
+
left: _propTypes.default.arrayOf(_propTypes.default.shape((0, _Button.makeButtonSchemaPropTypes)({
|
|
323
|
+
id: _propTypes.default.string.isRequired
|
|
324
|
+
}))),
|
|
325
|
+
right: _propTypes.default.arrayOf(_propTypes.default.shape((0, _Button.makeButtonSchemaPropTypes)({
|
|
326
|
+
id: _propTypes.default.string.isRequired
|
|
327
|
+
})))
|
|
328
|
+
})])
|
|
329
|
+
});
|
|
304
330
|
OptionsListWithContainerRef.defaultProps = {
|
|
305
331
|
role: 'listbox',
|
|
306
332
|
itemRole: 'option',
|
|
307
333
|
tabIndex: 0,
|
|
308
|
-
selectable: true
|
|
334
|
+
selectable: true,
|
|
335
|
+
showCheckbox: true
|
|
309
336
|
};
|
|
310
337
|
var _default = OptionsListWithContainerRef;
|
|
311
338
|
exports.default = _default;
|
|
@@ -41,6 +41,8 @@ var item0Id = '0';
|
|
|
41
41
|
var item0Label = 'Option 0';
|
|
42
42
|
var item2Id = '2';
|
|
43
43
|
var item2Label = 'Option 2';
|
|
44
|
+
var disabledItemLabel = 'Option 4';
|
|
45
|
+
var disabledItemId = '4';
|
|
44
46
|
var items = [{
|
|
45
47
|
id: item0Id,
|
|
46
48
|
label: item0Label,
|
|
@@ -75,8 +77,8 @@ var items = [{
|
|
|
75
77
|
}, {
|
|
76
78
|
label: 'Category 2',
|
|
77
79
|
items: [{
|
|
78
|
-
id:
|
|
79
|
-
label:
|
|
80
|
+
id: disabledItemId,
|
|
81
|
+
label: disabledItemLabel,
|
|
80
82
|
value: '4',
|
|
81
83
|
disabled: true
|
|
82
84
|
}, {
|
|
@@ -189,15 +191,58 @@ describe('OptionsList', function () {
|
|
|
189
191
|
expect(onChange).toHaveBeenCalledWith(selectedItem.id);
|
|
190
192
|
expect(getByLabelText(selectedItem.label)).toBeChecked();
|
|
191
193
|
});
|
|
194
|
+
describe('selecting disabled element with keyboard', function () {
|
|
195
|
+
it('selects an item with Enter or Space key', function () {
|
|
196
|
+
var onChange = jest.fn();
|
|
197
|
+
var onlyDisabledItems = [{
|
|
198
|
+
id: '2',
|
|
199
|
+
label: 'Option 2',
|
|
200
|
+
value: '2',
|
|
201
|
+
disabled: true
|
|
202
|
+
}, {
|
|
203
|
+
id: disabledItemId,
|
|
204
|
+
label: disabledItemLabel,
|
|
205
|
+
value: '4',
|
|
206
|
+
disabled: true
|
|
207
|
+
}];
|
|
208
|
+
|
|
209
|
+
var _render5 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
|
|
210
|
+
items: onlyDisabledItems,
|
|
211
|
+
onChange: onChange
|
|
212
|
+
}))),
|
|
213
|
+
getByLabelText = _render5.getByLabelText,
|
|
214
|
+
container = _render5.container;
|
|
215
|
+
|
|
216
|
+
var optionsList = container.querySelector('ul'); // simulate it is focused while tabbing
|
|
217
|
+
|
|
218
|
+
_react2.fireEvent.keyDown(container, {
|
|
219
|
+
key: 'Tab'
|
|
220
|
+
});
|
|
221
|
+
|
|
222
|
+
_react2.fireEvent.focus(optionsList);
|
|
223
|
+
|
|
224
|
+
_react2.fireEvent.keyDown(optionsList, {
|
|
225
|
+
key: 'ArrowDown'
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
_react2.fireEvent.keyDown(optionsList, {
|
|
229
|
+
key: 'Enter'
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
expect(onChange).not.toHaveBeenCalledWith(disabledItemId);
|
|
233
|
+
expect(onChange).not.toHaveBeenCalled();
|
|
234
|
+
expect(getByLabelText(disabledItemLabel)).not.toBeChecked();
|
|
235
|
+
});
|
|
236
|
+
});
|
|
192
237
|
describe('single selection', function () {
|
|
193
238
|
it('calls onChange with id when item is clicked', function () {
|
|
194
239
|
var onChange = jest.fn();
|
|
195
240
|
|
|
196
|
-
var
|
|
241
|
+
var _render6 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
|
|
197
242
|
onChange: onChange
|
|
198
243
|
}))),
|
|
199
|
-
getByText =
|
|
200
|
-
getByLabelText =
|
|
244
|
+
getByText = _render6.getByText,
|
|
245
|
+
getByLabelText = _render6.getByLabelText;
|
|
201
246
|
|
|
202
247
|
var item = items[0];
|
|
203
248
|
|
|
@@ -212,15 +257,33 @@ describe('OptionsList', function () {
|
|
|
212
257
|
|
|
213
258
|
expect(getByLabelText(subItem.label)).toBeChecked();
|
|
214
259
|
});
|
|
260
|
+
describe('disabled element', function () {
|
|
261
|
+
it('does not calls onChange when item is clicked', function () {
|
|
262
|
+
var onChange = jest.fn();
|
|
263
|
+
|
|
264
|
+
var _render7 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
|
|
265
|
+
onChange: onChange
|
|
266
|
+
}))),
|
|
267
|
+
getByText = _render7.getByText,
|
|
268
|
+
getByLabelText = _render7.getByLabelText;
|
|
269
|
+
|
|
270
|
+
_react2.fireEvent.click(getByText(disabledItemLabel));
|
|
271
|
+
|
|
272
|
+
expect(onChange).not.toHaveBeenLastCalledWith(disabledItemId);
|
|
273
|
+
expect(onChange).not.toHaveBeenCalled(); // the item shouldn't be marked as selected
|
|
274
|
+
|
|
275
|
+
expect(getByLabelText(disabledItemLabel)).not.toBeChecked();
|
|
276
|
+
});
|
|
277
|
+
});
|
|
215
278
|
describe('controlled', function () {
|
|
216
279
|
it('prefers value over internal', function () {
|
|
217
280
|
var selected = items[1];
|
|
218
281
|
|
|
219
|
-
var
|
|
282
|
+
var _render8 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
|
|
220
283
|
selected: selected.id
|
|
221
284
|
}))),
|
|
222
|
-
getByText =
|
|
223
|
-
getByLabelText =
|
|
285
|
+
getByText = _render8.getByText,
|
|
286
|
+
getByLabelText = _render8.getByLabelText;
|
|
224
287
|
|
|
225
288
|
var item = items[0];
|
|
226
289
|
|
|
@@ -235,12 +298,12 @@ describe('OptionsList', function () {
|
|
|
235
298
|
it('calls onChange with array of selected ids when item is clicked', function () {
|
|
236
299
|
var onChange = jest.fn();
|
|
237
300
|
|
|
238
|
-
var
|
|
301
|
+
var _render9 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
|
|
239
302
|
onChange: onChange,
|
|
240
303
|
multiple: true
|
|
241
304
|
}))),
|
|
242
|
-
getByText =
|
|
243
|
-
getByLabelText =
|
|
305
|
+
getByText = _render9.getByText,
|
|
306
|
+
getByLabelText = _render9.getByLabelText;
|
|
244
307
|
|
|
245
308
|
var item = items[0];
|
|
246
309
|
|
|
@@ -259,5 +322,38 @@ describe('OptionsList', function () {
|
|
|
259
322
|
|
|
260
323
|
expect(onChange).toHaveBeenLastCalledWith([subItem.id]);
|
|
261
324
|
});
|
|
325
|
+
it('adds a footer with buttons when actions are provided', function () {
|
|
326
|
+
var onClick = jest.fn();
|
|
327
|
+
var actions = [{
|
|
328
|
+
id: '1',
|
|
329
|
+
text: 'apply',
|
|
330
|
+
onClick: onClick
|
|
331
|
+
}, {
|
|
332
|
+
id: '2',
|
|
333
|
+
text: 'cancel',
|
|
334
|
+
kind: 'secondary',
|
|
335
|
+
onClick: onClick
|
|
336
|
+
}, {
|
|
337
|
+
id: '3',
|
|
338
|
+
text: 'clear',
|
|
339
|
+
kind: 'secondary',
|
|
340
|
+
variant: 'ghost',
|
|
341
|
+
paddingLeft: 4,
|
|
342
|
+
onClick: onClick
|
|
343
|
+
}];
|
|
344
|
+
|
|
345
|
+
var _render10 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
|
|
346
|
+
actions: actions,
|
|
347
|
+
multiple: true
|
|
348
|
+
}))),
|
|
349
|
+
baseElement = _render10.baseElement,
|
|
350
|
+
getByText = _render10.getByText;
|
|
351
|
+
|
|
352
|
+
actions.forEach(function (_ref5) {
|
|
353
|
+
var label = _ref5.text;
|
|
354
|
+
return expect(getByText(label)).toBeTruthy();
|
|
355
|
+
});
|
|
356
|
+
expect(baseElement).toMatchSnapshot();
|
|
357
|
+
});
|
|
262
358
|
});
|
|
263
359
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/atoms/OptionsList/schema.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,KAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/atoms/OptionsList/schema.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,KAA2C,CAAC;AAoExD,eAAe,MAAM,CAAC"}
|
|
@@ -15,6 +15,10 @@ var schema = (0, _reactDesc.describe)({
|
|
|
15
15
|
schema.makePropTypes = function () {
|
|
16
16
|
return {
|
|
17
17
|
defaultSelected: _reactDesc.PropTypes.oneOfType([_reactDesc.PropTypes.string, _reactDesc.PropTypes.arrayOf(_reactDesc.PropTypes.string)]).description('These IDs will appear as selected the first time the user opens the dropdown.'),
|
|
18
|
+
actions: _reactDesc.PropTypes.oneOfType([_reactDesc.PropTypes.arrayOf(_reactDesc.PropTypes.object), _reactDesc.PropTypes.shape({
|
|
19
|
+
left: _reactDesc.PropTypes.arrayOf(_reactDesc.PropTypes.object),
|
|
20
|
+
right: _reactDesc.PropTypes.arrayOf(_reactDesc.PropTypes.object)
|
|
21
|
+
})]).description('A collection of objects, each containing a subset of props valid for a Button component. Check the notes below.'),
|
|
18
22
|
items: _reactDesc.PropTypes.arrayOf(_reactDesc.PropTypes.shape({
|
|
19
23
|
decoration: _reactDesc.PropTypes.shape({
|
|
20
24
|
type: _reactDesc.PropTypes.oneOf(['Avatar', 'Badge', 'Icon'])
|
|
@@ -4,6 +4,7 @@ import { IconProps } from '@decisiv/iconix';
|
|
|
4
4
|
import { AvatarProps } from '../../components/Avatar';
|
|
5
5
|
import { BadgeProps } from '../../components/Badge';
|
|
6
6
|
import { DimensionsProps } from '../../modifiers/dimensions';
|
|
7
|
+
import { ButtonProps } from '../../components/Button';
|
|
7
8
|
export declare type OptionAvatarProps = Omit<AvatarProps, 'ref' | 'size'>;
|
|
8
9
|
export declare type OptionBadgeProps = Omit<BadgeProps, 'size' | 'variant'>;
|
|
9
10
|
export declare type InputMethod = 'mouse' | 'keyboard' | undefined;
|
|
@@ -22,12 +23,21 @@ interface IconDecoration {
|
|
|
22
23
|
icon: IconComponent;
|
|
23
24
|
disabled?: boolean;
|
|
24
25
|
}
|
|
26
|
+
export interface ActionProps extends ButtonProps {
|
|
27
|
+
id: string;
|
|
28
|
+
}
|
|
29
|
+
interface SideActionProps {
|
|
30
|
+
left?: ActionProps[];
|
|
31
|
+
right?: ActionProps[];
|
|
32
|
+
}
|
|
33
|
+
export declare type FooterActions = SideActionProps | ActionProps[];
|
|
25
34
|
export declare type Decoration = AvatarDecoration | BadgeDecoration | IconDecoration;
|
|
26
35
|
export interface Category {
|
|
27
36
|
borderRadius?: BorderRadiusProperty<string>;
|
|
28
37
|
id?: string;
|
|
29
38
|
items: Option[];
|
|
30
39
|
label: string;
|
|
40
|
+
showCheckbox?: boolean;
|
|
31
41
|
}
|
|
32
42
|
export declare type CategoryProps = Category;
|
|
33
43
|
export declare type IconComponent = (props: IconProps) => JSX.Element;
|
|
@@ -37,6 +47,8 @@ interface BaseOption {
|
|
|
37
47
|
disabled?: boolean;
|
|
38
48
|
id: string;
|
|
39
49
|
label: string;
|
|
50
|
+
showCheckbox?: boolean;
|
|
51
|
+
meta?: object;
|
|
40
52
|
}
|
|
41
53
|
export interface ItemOption extends BaseOption {
|
|
42
54
|
value?: string;
|
|
@@ -49,6 +61,7 @@ export declare type OptionProps = Option;
|
|
|
49
61
|
export declare type Item = Category | Option;
|
|
50
62
|
export interface OptionsListProps extends OptionsListDimensions {
|
|
51
63
|
items: Item[];
|
|
64
|
+
actions?: FooterActions;
|
|
52
65
|
name?: string;
|
|
53
66
|
multiple?: boolean;
|
|
54
67
|
onChange: (ids: Selection) => void;
|
|
@@ -59,6 +72,7 @@ export interface OptionsListProps extends OptionsListDimensions {
|
|
|
59
72
|
defaultActiveId?: string;
|
|
60
73
|
onChangeActiveItem?: (activeId: string) => void;
|
|
61
74
|
onKeyDown?: (event: KeyboardEvent) => void;
|
|
75
|
+
showCheckbox?: boolean;
|
|
62
76
|
tabIndex?: number;
|
|
63
77
|
selectable?: boolean;
|
|
64
78
|
defaultSelected?: Selection;
|