@dhis2-ui/selector-bar 7.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/README.md +6 -0
  2. package/build/cjs/index.js +21 -0
  3. package/build/cjs/locales/en/translations.json +3 -0
  4. package/build/cjs/locales/index.js +27 -0
  5. package/build/cjs/selector-bar/__stories__/common.js +252 -0
  6. package/build/cjs/selector-bar/__stories__/keep-org-unit-expanded.js +71 -0
  7. package/build/cjs/selector-bar/__stories__/with-multiple-rows.js +108 -0
  8. package/build/cjs/selector-bar/__stories__/with-right-hand-side-content.js +79 -0
  9. package/build/cjs/selector-bar/__stories__/with-some-inputs.js +68 -0
  10. package/build/cjs/selector-bar/index.js +13 -0
  11. package/build/cjs/selector-bar/selector-bar.js +78 -0
  12. package/build/cjs/selector-bar/selector-bar.stories.js +43 -0
  13. package/build/cjs/selector-bar/selector-bar.test.js +78 -0
  14. package/build/cjs/selector-bar-item/features/toggle-children/index.js +24 -0
  15. package/build/cjs/selector-bar-item/features/toggle-children.feature +11 -0
  16. package/build/cjs/selector-bar-item/index.js +13 -0
  17. package/build/cjs/selector-bar-item/selector-bar-item.js +100 -0
  18. package/build/cjs/selector-bar-item/selector-bar-item.stories.e2e.js +98 -0
  19. package/build/es/index.js +2 -0
  20. package/build/es/locales/en/translations.json +3 -0
  21. package/build/es/locales/index.js +13 -0
  22. package/build/es/selector-bar/__stories__/common.js +213 -0
  23. package/build/es/selector-bar/__stories__/keep-org-unit-expanded.js +54 -0
  24. package/build/es/selector-bar/__stories__/with-multiple-rows.js +92 -0
  25. package/build/es/selector-bar/__stories__/with-right-hand-side-content.js +64 -0
  26. package/build/es/selector-bar/__stories__/with-some-inputs.js +54 -0
  27. package/build/es/selector-bar/index.js +1 -0
  28. package/build/es/selector-bar/selector-bar.js +60 -0
  29. package/build/es/selector-bar/selector-bar.stories.js +7 -0
  30. package/build/es/selector-bar/selector-bar.test.js +64 -0
  31. package/build/es/selector-bar-item/features/toggle-children/index.js +21 -0
  32. package/build/es/selector-bar-item/features/toggle-children.feature +11 -0
  33. package/build/es/selector-bar-item/index.js +1 -0
  34. package/build/es/selector-bar-item/selector-bar-item.js +77 -0
  35. package/build/es/selector-bar-item/selector-bar-item.stories.e2e.js +79 -0
  36. package/package.json +59 -0
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SelectorBar = void 0;
7
+
8
+ var _style = _interopRequireDefault(require("styled-jsx/style"));
9
+
10
+ var _button = require("@dhis2-ui/button");
11
+
12
+ var _d2I18n = _interopRequireDefault(require("@dhis2/d2-i18n"));
13
+
14
+ var _uiConstants = require("@dhis2/ui-constants");
15
+
16
+ var _classnames = _interopRequireDefault(require("classnames"));
17
+
18
+ var _propTypes = _interopRequireDefault(require("prop-types"));
19
+
20
+ var _react = _interopRequireDefault(require("react"));
21
+
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+
24
+ const ClearSelection = ({
25
+ disabled,
26
+ onClick
27
+ }) => {
28
+ return /*#__PURE__*/_react.default.createElement("div", {
29
+ className: _style.default.dynamic([["3676026375", [_uiConstants.spacers.dp8]]]) + " " + "clear-selections"
30
+ }, /*#__PURE__*/_react.default.createElement(_button.Button, {
31
+ small: true,
32
+ secondary: true,
33
+ disabled: disabled,
34
+ onClick: onClick
35
+ }, _d2I18n.default.t('Clear selections')), /*#__PURE__*/_react.default.createElement(_style.default, {
36
+ id: "3676026375",
37
+ dynamic: [_uiConstants.spacers.dp8]
38
+ }, [`.clear-selections.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:40px;padding:0 ${_uiConstants.spacers.dp8};}`]));
39
+ };
40
+
41
+ ClearSelection.propTypes = {
42
+ disabled: _propTypes.default.bool,
43
+ onClick: _propTypes.default.func
44
+ };
45
+
46
+ const SelectorBar = ({
47
+ children,
48
+ onClearSelectionClick,
49
+ disableClearSelections,
50
+ additionalContent
51
+ }) => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
52
+ className: _style.default.dynamic([["720742913", [_uiConstants.colors.white, _uiConstants.colors.grey400,
53
+ /*
54
+ * Specs define the space to be 12px.
55
+ * 8px already come from the clear selection component
56
+ */
57
+ '']]]) + " " + ((0, _classnames.default)('container', {
58
+ withRHSContents: additionalContent
59
+ }) || "")
60
+ }, /*#__PURE__*/_react.default.createElement("div", {
61
+ className: _style.default.dynamic([["720742913", [_uiConstants.colors.white, _uiConstants.colors.grey400, '']]]) + " " + "controls"
62
+ }, children, onClearSelectionClick && /*#__PURE__*/_react.default.createElement(ClearSelection, {
63
+ disabled: disableClearSelections,
64
+ onClick: onClearSelectionClick
65
+ })), additionalContent && /*#__PURE__*/_react.default.createElement("div", {
66
+ className: _style.default.dynamic([["720742913", [_uiConstants.colors.white, _uiConstants.colors.grey400, '']]]) + " " + "additional-contents"
67
+ }, additionalContent), /*#__PURE__*/_react.default.createElement(_style.default, {
68
+ id: "720742913",
69
+ dynamic: [_uiConstants.colors.white, _uiConstants.colors.grey400, '']
70
+ }, [`.container.__jsx-style-dynamic-selector{background:${_uiConstants.colors.white};box-shadow:inset 0 -1px 0 0 ${_uiConstants.colors.grey400};padding-bottom:1px;}`, ".withRHSContents.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}", ".controls.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;gap:1px;}", `.additional-contents.__jsx-style-dynamic-selector{${''} padding-left:4px;}`])));
71
+
72
+ exports.SelectorBar = SelectorBar;
73
+ SelectorBar.propTypes = {
74
+ children: _propTypes.default.any.isRequired,
75
+ additionalContent: _propTypes.default.any,
76
+ disableClearSelections: _propTypes.default.bool,
77
+ onClearSelectionClick: _propTypes.default.func
78
+ };
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "WithSomeInputs", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _withSomeInputs.WithSomeInputs;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "WithAdditionalContent", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _withRightHandSideContent.WithAdditionalContent;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "KeepOrgUnitExpanded", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _keepOrgUnitExpanded.KeepOrgUnitExpanded;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "WithMultipleRows", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _withMultipleRows.WithMultipleRows;
28
+ }
29
+ });
30
+ exports.default = void 0;
31
+
32
+ var _withSomeInputs = require("./__stories__/with-some-inputs.js");
33
+
34
+ var _withRightHandSideContent = require("./__stories__/with-right-hand-side-content.js");
35
+
36
+ var _keepOrgUnitExpanded = require("./__stories__/keep-org-unit-expanded.js");
37
+
38
+ var _withMultipleRows = require("./__stories__/with-multiple-rows.js");
39
+
40
+ var _default = {
41
+ title: 'Actions/SelectionBar'
42
+ };
43
+ exports.default = _default;
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ require("@testing-library/jest-dom");
4
+
5
+ var _react = require("@testing-library/react");
6
+
7
+ var _react2 = _interopRequireDefault(require("react"));
8
+
9
+ var _index = require("../selector-bar-item/index.js");
10
+
11
+ var _selectorBar = require("./selector-bar.js");
12
+
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+
15
+ const noop = () => null;
16
+
17
+ describe('SelectorBar', () => {
18
+ it('should render the selection bar items', () => {
19
+ (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_selectorBar.SelectorBar, null, /*#__PURE__*/_react2.default.createElement(_index.SelectorBarItem, {
20
+ label: "Selection bar item 1",
21
+ noValueMessage: "No value message 1",
22
+ open: false,
23
+ setOpen: noop
24
+ }, "Content"), /*#__PURE__*/_react2.default.createElement(_index.SelectorBarItem, {
25
+ label: "Selection bar item 2",
26
+ noValueMessage: "No value message 2",
27
+ open: false,
28
+ setOpen: noop
29
+ }, "Content")));
30
+ expect(_react.screen.getByText('Selection bar item 1')).not.toBeNull();
31
+ expect(_react.screen.getByText('Selection bar item 2')).not.toBeNull();
32
+ });
33
+ it('should not disable the clear selection button by default', () => {
34
+ (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_selectorBar.SelectorBar, {
35
+ onClearSelectionClick: noop
36
+ }, /*#__PURE__*/_react2.default.createElement(_index.SelectorBarItem, {
37
+ label: "label",
38
+ noValueMessage: "msg",
39
+ open: false,
40
+ setOpen: noop
41
+ }, "Content")));
42
+
43
+ const clearBtn = _react.screen.getByText('Clear selections');
44
+
45
+ expect(clearBtn).not.toBeNull();
46
+ expect(clearBtn).not.toBeDisabled();
47
+ });
48
+ it('should disable the clear selection button', () => {
49
+ (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_selectorBar.SelectorBar, {
50
+ disableClearSelections: true,
51
+ onClearSelectionClick: noop
52
+ }, /*#__PURE__*/_react2.default.createElement(_index.SelectorBarItem, {
53
+ label: "label",
54
+ noValueMessage: "msg",
55
+ open: false,
56
+ setOpen: noop
57
+ }, "Content")));
58
+
59
+ const clearBtn = _react.screen.getByText('Clear selections');
60
+
61
+ expect(clearBtn).not.toBeNull();
62
+ expect(clearBtn).toBeDisabled();
63
+ });
64
+ it('should render the optional content', () => {
65
+ (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_selectorBar.SelectorBar, {
66
+ additionalContent: /*#__PURE__*/_react2.default.createElement("div", null, "Foobar")
67
+ }, /*#__PURE__*/_react2.default.createElement(_index.SelectorBarItem, {
68
+ label: "label",
69
+ noValueMessage: "msg",
70
+ open: false,
71
+ setOpen: noop
72
+ }, "Content")));
73
+
74
+ const extraContent = _react.screen.getByText('Foobar');
75
+
76
+ expect(extraContent).not.toBeNull();
77
+ });
78
+ });
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ var _steps = require("cypress-cucumber-preprocessor/steps");
4
+
5
+ (0, _steps.Given)('the selector bar item is closed', () => {
6
+ cy.visitStory('SelectorBarItem', 'closed no value');
7
+ });
8
+ (0, _steps.Given)('the selector bar item is open', () => {
9
+ cy.visitStory('SelectorBarItem', 'open no value');
10
+ });
11
+ (0, _steps.When)('the user opens the selector bar item', () => {
12
+ cy.contains('Selection bar item', {
13
+ selector: 'button'
14
+ }).click();
15
+ });
16
+ (0, _steps.When)('the user closes the selector bar item', () => {
17
+ cy.get('body').click('topLeft');
18
+ });
19
+ (0, _steps.Then)('the children should be displayed', () => {
20
+ cy.get('[data-test="dhis2-uiwidgets-singleselectfield"]').should('exist');
21
+ });
22
+ (0, _steps.Then)('the children should not be displayed', () => {
23
+ cy.get('[data-test="dhis2-uiwidgets-singleselectfield"]').should('not.exist');
24
+ });
@@ -0,0 +1,11 @@
1
+ Feature: The display of the children can be toggled
2
+
3
+ Scenario: The children are being opened
4
+ Given the selector bar item is closed
5
+ When the user opens the selector bar item
6
+ Then the children should be displayed
7
+
8
+ Scenario: The children are being closed
9
+ Given the selector bar item is open
10
+ When the user closes the selector bar item
11
+ Then the children should not be displayed
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "SelectorBarItem", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _selectorBarItem.SelectorBarItem;
10
+ }
11
+ });
12
+
13
+ var _selectorBarItem = require("./selector-bar-item.js");
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SelectorBarItem = void 0;
7
+
8
+ var _style = _interopRequireDefault(require("styled-jsx/style"));
9
+
10
+ var _card = require("@dhis2-ui/card");
11
+
12
+ var _layer = require("@dhis2-ui/layer");
13
+
14
+ var _popper = require("@dhis2-ui/popper");
15
+
16
+ var _uiConstants = require("@dhis2/ui-constants");
17
+
18
+ var _uiIcons = require("@dhis2/ui-icons");
19
+
20
+ var _propTypes = _interopRequireDefault(require("prop-types"));
21
+
22
+ var _react = _interopRequireWildcard(require("react"));
23
+
24
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
+
26
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
+
28
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
+
30
+ const offsetModifier = {
31
+ name: 'offset',
32
+ options: {
33
+ offset: [0, 2]
34
+ }
35
+ };
36
+ /**
37
+ * The reason this component expects the "open" state and "setOpen" function is
38
+ * because certain actions inside the props.children might have to set "open"
39
+ * to false as well.
40
+ * A good example is selecting a value (which is not a click outside) and this
41
+ * component neither has any control over that component nor does it have a way
42
+ * to "observe" that behavior. Especially for selection bar items that allow
43
+ * "multiple" selections, this would be more or less impossible to predict
44
+ * inside this component
45
+ */
46
+
47
+ const SelectorBarItem = ({
48
+ open,
49
+ setOpen,
50
+ children,
51
+ disabled,
52
+ label,
53
+ value,
54
+ noValueMessage
55
+ }) => {
56
+ const buttonRef = (0, _react.useRef)();
57
+ const Icon = open ? _uiIcons.IconChevronUp24 : _uiIcons.IconChevronDown24;
58
+ return /*#__PURE__*/_react.default.createElement("button", {
59
+ ref: buttonRef,
60
+ disabled: disabled,
61
+ onClick: () => setOpen(true),
62
+ className: _style.default.dynamic([["3065814091", [
63
+ /*
64
+ * The arrow icon has ~4px empty space on the sides,
65
+ * that's why the padding on the right is only 8px.
66
+ */
67
+ '', _uiConstants.spacers.dp8, _uiConstants.spacers.dp12, _uiConstants.colors.grey400, _uiConstants.colors.grey600, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4]]]) + " " + "selector-bar-item"
68
+ }, /*#__PURE__*/_react.default.createElement("span", {
69
+ className: _style.default.dynamic([["3065814091", ['', _uiConstants.spacers.dp8, _uiConstants.spacers.dp12, _uiConstants.colors.grey400, _uiConstants.colors.grey600, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4]]]) + " " + "label"
70
+ }, label), !disabled && /*#__PURE__*/_react.default.createElement("span", {
71
+ className: _style.default.dynamic([["3065814091", ['', _uiConstants.spacers.dp8, _uiConstants.spacers.dp12, _uiConstants.colors.grey400, _uiConstants.colors.grey600, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4]]]) + " " + "value"
72
+ }, value || noValueMessage), /*#__PURE__*/_react.default.createElement("span", {
73
+ className: _style.default.dynamic([["3065814091", ['', _uiConstants.spacers.dp8, _uiConstants.spacers.dp12, _uiConstants.colors.grey400, _uiConstants.colors.grey600, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4]]]) + " " + "toggle-icon"
74
+ }, /*#__PURE__*/_react.default.createElement(Icon, {
75
+ className: _style.default.dynamic([["3065814091", ['', _uiConstants.spacers.dp8, _uiConstants.spacers.dp12, _uiConstants.colors.grey400, _uiConstants.colors.grey600, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4]]])
76
+ })), open && /*#__PURE__*/_react.default.createElement(_layer.Layer, {
77
+ onClick: (_, evt) => {
78
+ evt.stopPropagation();
79
+ setOpen(false);
80
+ }
81
+ }, /*#__PURE__*/_react.default.createElement(_popper.Popper, {
82
+ reference: buttonRef,
83
+ placement: "bottom-end",
84
+ modifiers: [offsetModifier]
85
+ }, /*#__PURE__*/_react.default.createElement(_card.Card, null, children))), /*#__PURE__*/_react.default.createElement(_style.default, {
86
+ id: "3065814091",
87
+ dynamic: ['', _uiConstants.spacers.dp8, _uiConstants.spacers.dp12, _uiConstants.colors.grey400, _uiConstants.colors.grey600, _uiConstants.spacers.dp8, _uiConstants.spacers.dp4]
88
+ }, [`.selector-bar-item.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;cursor:pointer;background:none;height:40px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;${''} padding:0 ${_uiConstants.spacers.dp8} 0 ${_uiConstants.spacers.dp12};font-size:14px;line-height:16px;border:none;box-shadow:0px 0px 0px 1px ${_uiConstants.colors.grey400};}`, ".selector-bar-item.__jsx-style-dynamic-selector:disabled{cursor:not-allowed;}", `.label.__jsx-style-dynamic-selector{color:${_uiConstants.colors.grey600};}`, `.value.__jsx-style-dynamic-selector{padding-left:${_uiConstants.spacers.dp8};}`, `.toggle-icon.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-left:${_uiConstants.spacers.dp4};height:100%;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}`]));
89
+ };
90
+
91
+ exports.SelectorBarItem = SelectorBarItem;
92
+ SelectorBarItem.propTypes = {
93
+ children: _propTypes.default.any.isRequired,
94
+ label: _propTypes.default.string.isRequired,
95
+ noValueMessage: _propTypes.default.string.isRequired,
96
+ open: _propTypes.default.bool.isRequired,
97
+ setOpen: _propTypes.default.func.isRequired,
98
+ disabled: _propTypes.default.bool,
99
+ value: _propTypes.default.string
100
+ };
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.OpenWithValue = exports.ClosedWithValue = exports.OpenNoValue = exports.ClosedNoValue = exports.default = void 0;
7
+
8
+ var _select = require("@dhis2-ui/select");
9
+
10
+ var _react = _interopRequireWildcard(require("react"));
11
+
12
+ var _selectorBarItem = require("./selector-bar-item.js");
13
+
14
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
+
16
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
+
18
+ const options = [{
19
+ value: 'value 1',
20
+ label: 'label 1'
21
+ }, {
22
+ value: 'value 2',
23
+ label: 'label 2'
24
+ }, {
25
+ value: 'value 3',
26
+ label: 'label 3'
27
+ }];
28
+
29
+ const createStateDecorator = args => {
30
+ return fn => {
31
+ const [selected, setSelected] = (0, _react.useState)((args === null || args === void 0 ? void 0 : args.selected) || '');
32
+ const [open, setOpen] = (0, _react.useState)((args === null || args === void 0 ? void 0 : args.open) || false);
33
+ return fn({
34
+ selected,
35
+ open,
36
+ setSelected,
37
+ setOpen
38
+ });
39
+ };
40
+ };
41
+
42
+ const createStory = () => (_, {
43
+ open,
44
+ setOpen,
45
+ selected,
46
+ setSelected
47
+ }) => {
48
+ var _options$find;
49
+
50
+ return /*#__PURE__*/_react.default.createElement(_selectorBarItem.SelectorBarItem, {
51
+ label: "Selection bar item",
52
+ noValueMessage: "No value message",
53
+ open: open,
54
+ setOpen: setOpen,
55
+ value: ((_options$find = options.find(({
56
+ value
57
+ }) => value === selected)) === null || _options$find === void 0 ? void 0 : _options$find.label) || ''
58
+ }, /*#__PURE__*/_react.default.createElement(_select.SingleSelectField, {
59
+ selected: selected,
60
+ onChange: ({
61
+ selected: nextSelected
62
+ }) => {
63
+ setSelected(nextSelected);
64
+ setOpen(false);
65
+ }
66
+ }, options.map(({
67
+ value,
68
+ label
69
+ }) => /*#__PURE__*/_react.default.createElement(_select.SingleSelectOption, {
70
+ key: value,
71
+ value: value,
72
+ label: label
73
+ }))));
74
+ };
75
+
76
+ var _default = {
77
+ title: 'SelectorBarItem'
78
+ };
79
+ exports.default = _default;
80
+ const ClosedNoValue = createStory();
81
+ exports.ClosedNoValue = ClosedNoValue;
82
+ ClosedNoValue.decorators = [createStateDecorator()];
83
+ const OpenNoValue = createStory();
84
+ exports.OpenNoValue = OpenNoValue;
85
+ OpenNoValue.decorators = [createStateDecorator({
86
+ open: true
87
+ })];
88
+ const ClosedWithValue = createStory();
89
+ exports.ClosedWithValue = ClosedWithValue;
90
+ ClosedWithValue.decorators = [createStateDecorator({
91
+ selected: 'value 1'
92
+ })];
93
+ const OpenWithValue = createStory();
94
+ exports.OpenWithValue = OpenWithValue;
95
+ OpenWithValue.decorators = [createStateDecorator({
96
+ open: true,
97
+ selected: 'value 1'
98
+ })];
@@ -0,0 +1,2 @@
1
+ export { SelectorBar } from './selector-bar/index.js';
2
+ export { SelectorBarItem } from './selector-bar-item/index.js';
@@ -0,0 +1,3 @@
1
+ {
2
+ "Clear selections": "Clear selections"
3
+ }
@@ -0,0 +1,13 @@
1
+ //------------------------------------------------------------------------------
2
+ // <auto-generated>
3
+ // This code was generated by d2-i18n-generate.
4
+ //
5
+ // Changes to this file may cause incorrect behavior and will be lost if
6
+ // the code is regenerated.
7
+ // </auto-generated>
8
+ //------------------------------------------------------------------------------
9
+ import i18n from '@dhis2/d2-i18n';
10
+ import enTranslations from './en/translations.json';
11
+ const namespace = 'default';
12
+ i18n.addResources('en', namespace, enTranslations);
13
+ export default i18n;