@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.
- package/README.md +6 -0
- package/build/cjs/index.js +21 -0
- package/build/cjs/locales/en/translations.json +3 -0
- package/build/cjs/locales/index.js +27 -0
- package/build/cjs/selector-bar/__stories__/common.js +252 -0
- package/build/cjs/selector-bar/__stories__/keep-org-unit-expanded.js +71 -0
- package/build/cjs/selector-bar/__stories__/with-multiple-rows.js +108 -0
- package/build/cjs/selector-bar/__stories__/with-right-hand-side-content.js +79 -0
- package/build/cjs/selector-bar/__stories__/with-some-inputs.js +68 -0
- package/build/cjs/selector-bar/index.js +13 -0
- package/build/cjs/selector-bar/selector-bar.js +78 -0
- package/build/cjs/selector-bar/selector-bar.stories.js +43 -0
- package/build/cjs/selector-bar/selector-bar.test.js +78 -0
- package/build/cjs/selector-bar-item/features/toggle-children/index.js +24 -0
- package/build/cjs/selector-bar-item/features/toggle-children.feature +11 -0
- package/build/cjs/selector-bar-item/index.js +13 -0
- package/build/cjs/selector-bar-item/selector-bar-item.js +100 -0
- package/build/cjs/selector-bar-item/selector-bar-item.stories.e2e.js +98 -0
- package/build/es/index.js +2 -0
- package/build/es/locales/en/translations.json +3 -0
- package/build/es/locales/index.js +13 -0
- package/build/es/selector-bar/__stories__/common.js +213 -0
- package/build/es/selector-bar/__stories__/keep-org-unit-expanded.js +54 -0
- package/build/es/selector-bar/__stories__/with-multiple-rows.js +92 -0
- package/build/es/selector-bar/__stories__/with-right-hand-side-content.js +64 -0
- package/build/es/selector-bar/__stories__/with-some-inputs.js +54 -0
- package/build/es/selector-bar/index.js +1 -0
- package/build/es/selector-bar/selector-bar.js +60 -0
- package/build/es/selector-bar/selector-bar.stories.js +7 -0
- package/build/es/selector-bar/selector-bar.test.js +64 -0
- package/build/es/selector-bar-item/features/toggle-children/index.js +21 -0
- package/build/es/selector-bar-item/features/toggle-children.feature +11 -0
- package/build/es/selector-bar-item/index.js +1 -0
- package/build/es/selector-bar-item/selector-bar-item.js +77 -0
- package/build/es/selector-bar-item/selector-bar-item.stories.e2e.js +79 -0
- 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,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;
|