@dhis2-ui/select 10.9.1 → 10.10.0-alpha.1
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/build/cjs/index.js +18 -4
- package/build/cjs/locales/en/translations.json +7 -5
- package/build/cjs/simple-single-select/__stories__/DefaultPosition.js +38 -0
- package/build/cjs/simple-single-select/__stories__/Dense.js +22 -0
- package/build/cjs/simple-single-select/__stories__/Empty.js +20 -0
- package/build/cjs/simple-single-select/__stories__/EmptyWithEmptyNode.js +28 -0
- package/build/cjs/simple-single-select/__stories__/EmptyWithEmptyText.js +21 -0
- package/build/cjs/simple-single-select/__stories__/FlippedPosition.js +37 -0
- package/build/cjs/simple-single-select/__stories__/InfiniteLoading.js +61 -0
- package/build/cjs/simple-single-select/__stories__/Loading.js +20 -0
- package/build/cjs/simple-single-select/__stories__/ShiftedIntoView.js +28 -0
- package/build/cjs/simple-single-select/__stories__/WithClearButton.js +25 -0
- package/build/cjs/simple-single-select/__stories__/WithCustomLowMaxHeight.js +22 -0
- package/build/cjs/simple-single-select/__stories__/WithCustomOptions.js +48 -0
- package/build/cjs/simple-single-select/__stories__/WithDisabledOption.js +28 -0
- package/build/cjs/simple-single-select/__stories__/WithFilterField.js +36 -0
- package/build/cjs/simple-single-select/__stories__/WithInitialFocus.js +38 -0
- package/build/cjs/simple-single-select/__stories__/WithManyOptions.js +24 -0
- package/build/cjs/simple-single-select/__stories__/WithNoMatchText.js +30 -0
- package/build/cjs/simple-single-select/__stories__/WithOnBlur.js +23 -0
- package/build/cjs/simple-single-select/__stories__/WithOnFocus.js +23 -0
- package/build/cjs/simple-single-select/__stories__/WithOptionsAndDisabled.js +22 -0
- package/build/cjs/simple-single-select/__stories__/WithOptionsAndLoading.js +34 -0
- package/build/cjs/simple-single-select/__stories__/WithOptionsAndLoadingText.js +35 -0
- package/build/cjs/simple-single-select/__stories__/WithPlaceholder.js +23 -0
- package/build/cjs/simple-single-select/__stories__/WithPlaceholderAndSelection.js +25 -0
- package/build/cjs/simple-single-select/__stories__/WithPrefix.js +22 -0
- package/build/cjs/simple-single-select/__stories__/WithPrefixAndSelection.js +25 -0
- package/build/cjs/simple-single-select/__stories__/WithRTL.js +34 -0
- package/build/cjs/simple-single-select/__stories__/WithSelection.js +24 -0
- package/build/cjs/simple-single-select/__stories__/WithSelectionAndDisabled.js +25 -0
- package/build/cjs/simple-single-select/__stories__/WithoutOptionsAndLoading.js +21 -0
- package/build/cjs/simple-single-select/__stories__/WithoutSelection.js +22 -0
- package/build/cjs/simple-single-select/__stories__/options.js +77 -0
- package/build/cjs/simple-single-select/features/keyboard-interactions.test.e2e.js +441 -0
- package/build/cjs/simple-single-select/features/menu-positioning.test.e2e.js +152 -0
- package/build/cjs/simple-single-select/index.js +19 -0
- package/build/cjs/simple-single-select/is-option-hidden.js +22 -0
- package/build/cjs/simple-single-select/menu/empty.js +26 -0
- package/build/cjs/simple-single-select/menu/filter.js +60 -0
- package/build/cjs/simple-single-select/menu/index.js +12 -0
- package/build/cjs/simple-single-select/menu/loading.js +30 -0
- package/build/cjs/simple-single-select/menu/menu.js +158 -0
- package/build/cjs/simple-single-select/menu/no-match.js +28 -0
- package/build/cjs/simple-single-select/menu/option.js +120 -0
- package/build/cjs/simple-single-select/menu/options-list.js +97 -0
- package/build/cjs/simple-single-select/selected-value/clear-button.js +74 -0
- package/build/cjs/simple-single-select/selected-value/container.js +100 -0
- package/build/cjs/simple-single-select/selected-value/index.js +12 -0
- package/build/cjs/simple-single-select/selected-value/placeholder.js +30 -0
- package/build/cjs/simple-single-select/selected-value/prefix.js +30 -0
- package/build/cjs/simple-single-select/selected-value/selected-value.js +119 -0
- package/build/cjs/simple-single-select/shared-prop-types.js +14 -0
- package/build/cjs/simple-single-select/simple-single-select.e2e.stories.js +156 -0
- package/build/cjs/simple-single-select/simple-single-select.js +319 -0
- package/build/cjs/simple-single-select/simple-single-select.prod.stories.js +228 -0
- package/build/cjs/simple-single-select/simple-single-select.test.js +1106 -0
- package/build/cjs/simple-single-select/use-handle-key-press/index.js +19 -0
- package/build/cjs/simple-single-select/use-handle-key-press/use-focus-option.js +24 -0
- package/build/cjs/simple-single-select/use-handle-key-press/use-handle-key-press-on-combobox.js +177 -0
- package/build/cjs/simple-single-select/use-handle-key-press/use-handle-key-press-on-filter-input.js +106 -0
- package/build/cjs/simple-single-select/use-handle-key-press/use-handle-typing.js +81 -0
- package/build/cjs/simple-single-select/use-handle-key-press/use-highlight-first-option-on-previous-page.js +50 -0
- package/build/cjs/simple-single-select/use-handle-key-press/use-highlight-first-visible-option.js +30 -0
- package/build/cjs/simple-single-select/use-handle-key-press/use-highlight-last-option-on-next-page.js +50 -0
- package/build/cjs/simple-single-select/use-handle-key-press/use-highlight-last-visible-option.js +42 -0
- package/build/cjs/simple-single-select/use-handle-key-press/use-page-down.js +45 -0
- package/build/cjs/simple-single-select/use-handle-key-press/use-page-up.js +44 -0
- package/build/cjs/simple-single-select/use-handle-key-press/utils.js +46 -0
- package/build/cjs/simple-single-select-field/index.js +12 -0
- package/build/cjs/simple-single-select-field/simple-single-select-field.js +138 -0
- package/build/cjs/simple-single-select-field/simple-single-select-field.prod.stories.js +188 -0
- package/build/cjs/simple-single-select-field/simple-single-select-field.test.js +133 -0
- package/build/es/index.js +2 -0
- package/build/es/locales/en/translations.json +7 -5
- package/build/es/simple-single-select/__stories__/DefaultPosition.js +29 -0
- package/build/es/simple-single-select/__stories__/Dense.js +13 -0
- package/build/es/simple-single-select/__stories__/Empty.js +11 -0
- package/build/es/simple-single-select/__stories__/EmptyWithEmptyNode.js +19 -0
- package/build/es/simple-single-select/__stories__/EmptyWithEmptyText.js +12 -0
- package/build/es/simple-single-select/__stories__/FlippedPosition.js +28 -0
- package/build/es/simple-single-select/__stories__/InfiniteLoading.js +53 -0
- package/build/es/simple-single-select/__stories__/Loading.js +12 -0
- package/build/es/simple-single-select/__stories__/ShiftedIntoView.js +18 -0
- package/build/es/simple-single-select/__stories__/WithClearButton.js +16 -0
- package/build/es/simple-single-select/__stories__/WithCustomLowMaxHeight.js +13 -0
- package/build/es/simple-single-select/__stories__/WithCustomOptions.js +38 -0
- package/build/es/simple-single-select/__stories__/WithDisabledOption.js +19 -0
- package/build/es/simple-single-select/__stories__/WithFilterField.js +27 -0
- package/build/es/simple-single-select/__stories__/WithInitialFocus.js +29 -0
- package/build/es/simple-single-select/__stories__/WithManyOptions.js +15 -0
- package/build/es/simple-single-select/__stories__/WithNoMatchText.js +21 -0
- package/build/es/simple-single-select/__stories__/WithOnBlur.js +14 -0
- package/build/es/simple-single-select/__stories__/WithOnFocus.js +14 -0
- package/build/es/simple-single-select/__stories__/WithOptionsAndDisabled.js +13 -0
- package/build/es/simple-single-select/__stories__/WithOptionsAndLoading.js +25 -0
- package/build/es/simple-single-select/__stories__/WithOptionsAndLoadingText.js +26 -0
- package/build/es/simple-single-select/__stories__/WithPlaceholder.js +14 -0
- package/build/es/simple-single-select/__stories__/WithPlaceholderAndSelection.js +16 -0
- package/build/es/simple-single-select/__stories__/WithPrefix.js +13 -0
- package/build/es/simple-single-select/__stories__/WithPrefixAndSelection.js +16 -0
- package/build/es/simple-single-select/__stories__/WithRTL.js +25 -0
- package/build/es/simple-single-select/__stories__/WithSelection.js +15 -0
- package/build/es/simple-single-select/__stories__/WithSelectionAndDisabled.js +16 -0
- package/build/es/simple-single-select/__stories__/WithoutOptionsAndLoading.js +12 -0
- package/build/es/simple-single-select/__stories__/WithoutSelection.js +13 -0
- package/build/es/simple-single-select/__stories__/options.js +71 -0
- package/build/es/simple-single-select/features/keyboard-interactions.test.e2e.js +439 -0
- package/build/es/simple-single-select/features/menu-positioning.test.e2e.js +150 -0
- package/build/es/simple-single-select/index.js +2 -0
- package/build/es/simple-single-select/is-option-hidden.js +16 -0
- package/build/es/simple-single-select/menu/empty.js +19 -0
- package/build/es/simple-single-select/menu/filter.js +53 -0
- package/build/es/simple-single-select/menu/index.js +1 -0
- package/build/es/simple-single-select/menu/loading.js +23 -0
- package/build/es/simple-single-select/menu/menu.js +149 -0
- package/build/es/simple-single-select/menu/no-match.js +21 -0
- package/build/es/simple-single-select/menu/option.js +111 -0
- package/build/es/simple-single-select/menu/options-list.js +88 -0
- package/build/es/simple-single-select/selected-value/clear-button.js +68 -0
- package/build/es/simple-single-select/selected-value/container.js +91 -0
- package/build/es/simple-single-select/selected-value/index.js +1 -0
- package/build/es/simple-single-select/selected-value/placeholder.js +23 -0
- package/build/es/simple-single-select/selected-value/prefix.js +23 -0
- package/build/es/simple-single-select/selected-value/selected-value.js +112 -0
- package/build/es/simple-single-select/shared-prop-types.js +7 -0
- package/build/es/simple-single-select/simple-single-select.e2e.stories.js +142 -0
- package/build/es/simple-single-select/simple-single-select.js +310 -0
- package/build/es/simple-single-select/simple-single-select.prod.stories.js +36 -0
- package/build/es/simple-single-select/simple-single-select.test.js +1103 -0
- package/build/es/simple-single-select/use-handle-key-press/index.js +2 -0
- package/build/es/simple-single-select/use-handle-key-press/use-focus-option.js +18 -0
- package/build/es/simple-single-select/use-handle-key-press/use-handle-key-press-on-combobox.js +171 -0
- package/build/es/simple-single-select/use-handle-key-press/use-handle-key-press-on-filter-input.js +100 -0
- package/build/es/simple-single-select/use-handle-key-press/use-handle-typing.js +75 -0
- package/build/es/simple-single-select/use-handle-key-press/use-highlight-first-option-on-previous-page.js +44 -0
- package/build/es/simple-single-select/use-handle-key-press/use-highlight-first-visible-option.js +24 -0
- package/build/es/simple-single-select/use-handle-key-press/use-highlight-last-option-on-next-page.js +44 -0
- package/build/es/simple-single-select/use-handle-key-press/use-highlight-last-visible-option.js +36 -0
- package/build/es/simple-single-select/use-handle-key-press/use-page-down.js +39 -0
- package/build/es/simple-single-select/use-handle-key-press/use-page-up.js +38 -0
- package/build/es/simple-single-select/use-handle-key-press/utils.js +36 -0
- package/build/es/simple-single-select-field/index.js +1 -0
- package/build/es/simple-single-select-field/simple-single-select-field.js +131 -0
- package/build/es/simple-single-select-field/simple-single-select-field.prod.stories.js +172 -0
- package/build/es/simple-single-select-field/simple-single-select-field.test.js +130 -0
- package/package.json +15 -15
- package/types/index.d.ts +184 -1
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import React, { useCallback, useState } from 'react';
|
|
2
|
+
import { SimpleSingleSelect } from '../simple-single-select.js';
|
|
3
|
+
import { options } from './options.js';
|
|
4
|
+
|
|
5
|
+
// The select displays exactly 9 options per page,
|
|
6
|
+
// using 10 so the user has to scroll to see the effect
|
|
7
|
+
const CHUNK_SIZE = 10;
|
|
8
|
+
const optionChunks = options.reduce((chunks, option, index) => {
|
|
9
|
+
if (index === 0) {
|
|
10
|
+
return [[option]];
|
|
11
|
+
}
|
|
12
|
+
const prevChunkIndex = chunks.length - 1;
|
|
13
|
+
const prevChunk = chunks[prevChunkIndex];
|
|
14
|
+
const prevChunkLength = prevChunk.length;
|
|
15
|
+
if (prevChunkLength < CHUNK_SIZE) {
|
|
16
|
+
return [...chunks.slice(0, prevChunkIndex), [...prevChunk, option]];
|
|
17
|
+
}
|
|
18
|
+
return [...chunks, [option]];
|
|
19
|
+
}, []);
|
|
20
|
+
export const InfiniteLoading = () => {
|
|
21
|
+
const [loading, setLoading] = useState(false);
|
|
22
|
+
const [curLoadedPage, setCurLoadedPage] = useState(0);
|
|
23
|
+
const [selected, setSelected] = useState(null);
|
|
24
|
+
const [loadedOptions, setLoadedOptions] = useState(optionChunks[0]);
|
|
25
|
+
const loadNextOptions = useCallback(() => {
|
|
26
|
+
const nextPage = curLoadedPage + 1;
|
|
27
|
+
if (
|
|
28
|
+
// We're already loading a page
|
|
29
|
+
loading ||
|
|
30
|
+
// No need to load anything when already loaded everything
|
|
31
|
+
nextPage >= optionChunks.length) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
setLoading(true);
|
|
35
|
+
setCurLoadedPage(nextPage);
|
|
36
|
+
|
|
37
|
+
// Fake network request to show loader a reasonable amount of time
|
|
38
|
+
setTimeout(() => {
|
|
39
|
+
const nextChunk = optionChunks[nextPage];
|
|
40
|
+
setLoadedOptions(prevOptions => [...prevOptions, ...nextChunk]);
|
|
41
|
+
setLoading(false);
|
|
42
|
+
}, 1500);
|
|
43
|
+
}, [curLoadedPage, loading]);
|
|
44
|
+
return /*#__PURE__*/React.createElement(SimpleSingleSelect, {
|
|
45
|
+
name: "simple",
|
|
46
|
+
selected: selected,
|
|
47
|
+
loading: loading,
|
|
48
|
+
menuLoadingText: "Foo bar baz",
|
|
49
|
+
onChange: setSelected,
|
|
50
|
+
options: loadedOptions,
|
|
51
|
+
onEndReached: loadNextOptions
|
|
52
|
+
});
|
|
53
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { SimpleSingleSelect } from '../simple-single-select.js';
|
|
3
|
+
import { options } from './options.js';
|
|
4
|
+
export const Loading = () => {
|
|
5
|
+
return /*#__PURE__*/React.createElement(SimpleSingleSelect, {
|
|
6
|
+
loading: true,
|
|
7
|
+
name: "simple",
|
|
8
|
+
selected: null,
|
|
9
|
+
onChange: () => null,
|
|
10
|
+
options: options
|
|
11
|
+
});
|
|
12
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import _JSXStyle from "styled-jsx/style";
|
|
2
|
+
import React, { useState } from 'react';
|
|
3
|
+
import { SimpleSingleSelect } from '../simple-single-select.js';
|
|
4
|
+
import { fiveOptions } from './options.js';
|
|
5
|
+
export const ShiftedIntoView = () => {
|
|
6
|
+
const [selected, setSelected] = useState({
|
|
7
|
+
label: 'ANC 1st visit',
|
|
8
|
+
value: 'anc_1st_visit'
|
|
9
|
+
});
|
|
10
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SimpleSingleSelect, {
|
|
11
|
+
name: "simple",
|
|
12
|
+
selected: selected,
|
|
13
|
+
onChange: setSelected,
|
|
14
|
+
options: fiveOptions
|
|
15
|
+
}), /*#__PURE__*/React.createElement(_JSXStyle, {
|
|
16
|
+
id: "995960636"
|
|
17
|
+
}, ["html,body,#storybook-root{position:relative;height:300px !important;max-height:300px;}", "#storybook-root{padding-top:130px !important;}"]));
|
|
18
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { SimpleSingleSelect } from '../simple-single-select.js';
|
|
3
|
+
import { fiveOptions } from './options.js';
|
|
4
|
+
export const WithClearButton = () => {
|
|
5
|
+
const [selected, setSelected] = useState({
|
|
6
|
+
label: 'ANC 1st visit',
|
|
7
|
+
value: 'anc_1st_visit'
|
|
8
|
+
});
|
|
9
|
+
return /*#__PURE__*/React.createElement(SimpleSingleSelect, {
|
|
10
|
+
clearable: true,
|
|
11
|
+
name: "simple",
|
|
12
|
+
selected: selected,
|
|
13
|
+
onChange: setSelected,
|
|
14
|
+
options: fiveOptions
|
|
15
|
+
});
|
|
16
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { SimpleSingleSelect } from '../simple-single-select.js';
|
|
3
|
+
import { options } from './options.js';
|
|
4
|
+
export const WithCustomLowMaxHeight = () => {
|
|
5
|
+
const [selected, setSelected] = useState(null);
|
|
6
|
+
return /*#__PURE__*/React.createElement(SimpleSingleSelect, {
|
|
7
|
+
name: "simple",
|
|
8
|
+
selected: selected,
|
|
9
|
+
onChange: setSelected,
|
|
10
|
+
options: options,
|
|
11
|
+
menuMaxHeight: "100px"
|
|
12
|
+
});
|
|
13
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import _JSXStyle from "styled-jsx/style";
|
|
2
|
+
import React, { useState, useMemo } from 'react';
|
|
3
|
+
import { SimpleSingleSelect } from '../simple-single-select.js';
|
|
4
|
+
import { options } from './options.js';
|
|
5
|
+
const CustomOption = _ref => {
|
|
6
|
+
let {
|
|
7
|
+
label
|
|
8
|
+
} = _ref;
|
|
9
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
10
|
+
className: "jsx-3497546720" + " " + "container"
|
|
11
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
12
|
+
className: "jsx-3497546720" + " " + "label"
|
|
13
|
+
}, label), /*#__PURE__*/React.createElement("span", {
|
|
14
|
+
role: "button",
|
|
15
|
+
onClick: e => {
|
|
16
|
+
e.stopPropagation();
|
|
17
|
+
alert('Custom "button" clicked!');
|
|
18
|
+
},
|
|
19
|
+
className: "jsx-3497546720" + " " + "button"
|
|
20
|
+
}, "x"), /*#__PURE__*/React.createElement(_JSXStyle, {
|
|
21
|
+
id: "3497546720"
|
|
22
|
+
}, [".container.jsx-3497546720{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;color:white;cursor:pointer;height:30px;}", ".label.jsx-3497546720{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;background:green;padding:5px 10px;}", ".label.jsx-3497546720:hover{background:blue;}", ".button.jsx-3497546720{height:30px;width:30px;padding:0;border:0;background:none;background:white;cursor:pointer;font-size:20px;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;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;color:black;}", ".button.jsx-3497546720:hover{background:black;color:white;}"]));
|
|
23
|
+
};
|
|
24
|
+
export const WithCustomOptions = () => {
|
|
25
|
+
const [selected, setSelected] = useState(null);
|
|
26
|
+
const optionsWithCustomStyle = useMemo(() => {
|
|
27
|
+
return options.slice(0, 3).map(option => ({
|
|
28
|
+
...option,
|
|
29
|
+
component: CustomOption
|
|
30
|
+
}));
|
|
31
|
+
}, []);
|
|
32
|
+
return /*#__PURE__*/React.createElement(SimpleSingleSelect, {
|
|
33
|
+
name: "simple",
|
|
34
|
+
selected: selected,
|
|
35
|
+
onChange: setSelected,
|
|
36
|
+
options: optionsWithCustomStyle
|
|
37
|
+
});
|
|
38
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { SimpleSingleSelect } from '../simple-single-select.js';
|
|
3
|
+
import { fiveOptions } from './options.js';
|
|
4
|
+
const fiveOptionsWithFourthDisabled = [...fiveOptions.slice(0, 3), {
|
|
5
|
+
...fiveOptions[3],
|
|
6
|
+
disabled: true
|
|
7
|
+
}, ...fiveOptions.slice(4)];
|
|
8
|
+
export const WithDisabledOption = () => {
|
|
9
|
+
const [selected, setSelected] = useState({
|
|
10
|
+
label: 'ANC 1st visit',
|
|
11
|
+
value: 'anc_1st_visit'
|
|
12
|
+
});
|
|
13
|
+
return /*#__PURE__*/React.createElement(SimpleSingleSelect, {
|
|
14
|
+
name: "simple",
|
|
15
|
+
selected: selected,
|
|
16
|
+
onChange: setSelected,
|
|
17
|
+
options: fiveOptionsWithFourthDisabled
|
|
18
|
+
});
|
|
19
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React, { useMemo, useState } from 'react';
|
|
2
|
+
import { SimpleSingleSelect } from '../simple-single-select.js';
|
|
3
|
+
import { options } from './options.js';
|
|
4
|
+
export const WithFilterField = () => {
|
|
5
|
+
const [selected, setSelected] = useState(null);
|
|
6
|
+
const [filterValue, setFilterValue] = useState('');
|
|
7
|
+
const filteredOptions = useMemo(() => {
|
|
8
|
+
return filterValue ? options.filter(_ref => {
|
|
9
|
+
let {
|
|
10
|
+
label,
|
|
11
|
+
value
|
|
12
|
+
} = _ref;
|
|
13
|
+
return label.match(new RegExp(filterValue), 'i') && value !== '';
|
|
14
|
+
}) : options;
|
|
15
|
+
}, [filterValue]);
|
|
16
|
+
return /*#__PURE__*/React.createElement(SimpleSingleSelect, {
|
|
17
|
+
name: "simple",
|
|
18
|
+
selected: selected,
|
|
19
|
+
onChange: setSelected,
|
|
20
|
+
filterable: true,
|
|
21
|
+
filterPlaceholder: "Filter placeholder",
|
|
22
|
+
filterValue: filterValue,
|
|
23
|
+
onFilterChange: setFilterValue,
|
|
24
|
+
noMatchText: "No results for your filter",
|
|
25
|
+
options: filteredOptions
|
|
26
|
+
});
|
|
27
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { SimpleSingleSelect } from '../simple-single-select.js';
|
|
3
|
+
import { fiveOptions } from './options.js';
|
|
4
|
+
export const WithInitialFocus = () => {
|
|
5
|
+
const [selected, setSelected] = useState(null);
|
|
6
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SimpleSingleSelect, {
|
|
7
|
+
autoFocus: true,
|
|
8
|
+
name: "simple",
|
|
9
|
+
selected: selected,
|
|
10
|
+
onChange: setSelected,
|
|
11
|
+
options: fiveOptions
|
|
12
|
+
}), /*#__PURE__*/React.createElement("select", {
|
|
13
|
+
onChange: e => console.log(e)
|
|
14
|
+
}, /*#__PURE__*/React.createElement("option", {
|
|
15
|
+
value: ""
|
|
16
|
+
}, "None"), /*#__PURE__*/React.createElement("option", {
|
|
17
|
+
value: "1"
|
|
18
|
+
}, "One"), /*#__PURE__*/React.createElement("option", {
|
|
19
|
+
value: "2"
|
|
20
|
+
}, "Two"), /*#__PURE__*/React.createElement("option", {
|
|
21
|
+
value: "3"
|
|
22
|
+
}, "Three"), /*#__PURE__*/React.createElement("option", {
|
|
23
|
+
value: "4"
|
|
24
|
+
}, "Four"), /*#__PURE__*/React.createElement("option", {
|
|
25
|
+
value: "5"
|
|
26
|
+
}, "Five"), /*#__PURE__*/React.createElement("option", {
|
|
27
|
+
value: "6"
|
|
28
|
+
}, "Six")));
|
|
29
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { SimpleSingleSelect } from '../simple-single-select.js';
|
|
3
|
+
import { options } from './options.js';
|
|
4
|
+
export const WithManyOptions = () => {
|
|
5
|
+
const [selected, setSelected] = useState({
|
|
6
|
+
label: 'ART entry point: No PMTCT',
|
|
7
|
+
value: 'art_entry_point:_no_pmtct'
|
|
8
|
+
});
|
|
9
|
+
return /*#__PURE__*/React.createElement(SimpleSingleSelect, {
|
|
10
|
+
name: "simple",
|
|
11
|
+
selected: selected,
|
|
12
|
+
onChange: setSelected,
|
|
13
|
+
options: options
|
|
14
|
+
});
|
|
15
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React, { useMemo, useState } from 'react';
|
|
2
|
+
import { SimpleSingleSelect } from '../simple-single-select.js';
|
|
3
|
+
export const WithNoMatchText = () => {
|
|
4
|
+
const [selected, setSelected] = useState({
|
|
5
|
+
label: 'Foo',
|
|
6
|
+
value: 'foo'
|
|
7
|
+
});
|
|
8
|
+
const [filterValue, setFilterValue] = useState('Bar');
|
|
9
|
+
const filteredOptions = useMemo(() => [], []);
|
|
10
|
+
return /*#__PURE__*/React.createElement(SimpleSingleSelect, {
|
|
11
|
+
name: "simple",
|
|
12
|
+
selected: selected,
|
|
13
|
+
onChange: setSelected,
|
|
14
|
+
filterable: true,
|
|
15
|
+
filterPlaceholder: "Filter placeholder",
|
|
16
|
+
filterValue: filterValue,
|
|
17
|
+
onFilterChange: setFilterValue,
|
|
18
|
+
noMatchText: "No results for your filter",
|
|
19
|
+
options: filteredOptions
|
|
20
|
+
});
|
|
21
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { SimpleSingleSelect } from '../simple-single-select.js';
|
|
3
|
+
import { fiveOptions } from './options.js';
|
|
4
|
+
export const WithOnBlur = () => {
|
|
5
|
+
const [selected, setSelected] = useState(null);
|
|
6
|
+
const [blurTime, setBlurTime] = useState('');
|
|
7
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SimpleSingleSelect, {
|
|
8
|
+
onBlur: () => setBlurTime(new Date().toISOString()),
|
|
9
|
+
name: "simple",
|
|
10
|
+
selected: selected,
|
|
11
|
+
onChange: setSelected,
|
|
12
|
+
options: fiveOptions
|
|
13
|
+
}), /*#__PURE__*/React.createElement("p", null, "Last time select received blur: ", blurTime || 'never'));
|
|
14
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { SimpleSingleSelect } from '../simple-single-select.js';
|
|
3
|
+
import { fiveOptions } from './options.js';
|
|
4
|
+
export const WithOnFocus = () => {
|
|
5
|
+
const [selected, setSelected] = useState(null);
|
|
6
|
+
const [focusTime, setFocusTime] = useState('');
|
|
7
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SimpleSingleSelect, {
|
|
8
|
+
onFocus: () => setFocusTime(new Date().toISOString()),
|
|
9
|
+
name: "simple",
|
|
10
|
+
selected: selected,
|
|
11
|
+
onChange: setSelected,
|
|
12
|
+
options: fiveOptions
|
|
13
|
+
}), /*#__PURE__*/React.createElement("p", null, "Last time select received focus: ", focusTime || 'never'));
|
|
14
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { SimpleSingleSelect } from '../simple-single-select.js';
|
|
3
|
+
import { fiveOptions } from './options.js';
|
|
4
|
+
export const WithOptionsAndDisabled = () => {
|
|
5
|
+
const [selected, setSelected] = useState(null);
|
|
6
|
+
return /*#__PURE__*/React.createElement(SimpleSingleSelect, {
|
|
7
|
+
disabled: true,
|
|
8
|
+
name: "simple",
|
|
9
|
+
selected: selected,
|
|
10
|
+
onChange: setSelected,
|
|
11
|
+
options: fiveOptions
|
|
12
|
+
});
|
|
13
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { SimpleSingleSelect } from '../simple-single-select.js';
|
|
3
|
+
const options = [{
|
|
4
|
+
label: 'None',
|
|
5
|
+
value: ''
|
|
6
|
+
}, {
|
|
7
|
+
value: '1',
|
|
8
|
+
label: 'Option 1'
|
|
9
|
+
}, {
|
|
10
|
+
value: '2',
|
|
11
|
+
label: 'Option 2'
|
|
12
|
+
}, {
|
|
13
|
+
value: '3',
|
|
14
|
+
label: 'Option 3'
|
|
15
|
+
}];
|
|
16
|
+
export const WithOptionsAndLoading = () => {
|
|
17
|
+
const [selected, setSelected] = useState(null);
|
|
18
|
+
return /*#__PURE__*/React.createElement(SimpleSingleSelect, {
|
|
19
|
+
loading: true,
|
|
20
|
+
name: "simple",
|
|
21
|
+
selected: selected,
|
|
22
|
+
onChange: setSelected,
|
|
23
|
+
options: options
|
|
24
|
+
});
|
|
25
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { SimpleSingleSelect } from '../simple-single-select.js';
|
|
3
|
+
const options = [{
|
|
4
|
+
label: 'None',
|
|
5
|
+
value: ''
|
|
6
|
+
}, {
|
|
7
|
+
value: '1',
|
|
8
|
+
label: 'Option 1'
|
|
9
|
+
}, {
|
|
10
|
+
value: '2',
|
|
11
|
+
label: 'Option 2'
|
|
12
|
+
}, {
|
|
13
|
+
value: '3',
|
|
14
|
+
label: 'Option 3'
|
|
15
|
+
}];
|
|
16
|
+
export const WithOptionsAndLoadingText = () => {
|
|
17
|
+
const [selected, setSelected] = useState(null);
|
|
18
|
+
return /*#__PURE__*/React.createElement(SimpleSingleSelect, {
|
|
19
|
+
loading: true,
|
|
20
|
+
menuLoadingText: "Loading options",
|
|
21
|
+
name: "simple",
|
|
22
|
+
selected: selected,
|
|
23
|
+
onChange: setSelected,
|
|
24
|
+
options: options
|
|
25
|
+
});
|
|
26
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { SimpleSingleSelect } from '../simple-single-select.js';
|
|
3
|
+
import { options } from './options.js';
|
|
4
|
+
export const WithPlaceholder = () => {
|
|
5
|
+
const [selected, setSelected] = useState(null);
|
|
6
|
+
const withoutEmptyOptions = options.slice(1);
|
|
7
|
+
return /*#__PURE__*/React.createElement(SimpleSingleSelect, {
|
|
8
|
+
placeholder: "Placeholder text",
|
|
9
|
+
name: "simple",
|
|
10
|
+
selected: selected,
|
|
11
|
+
onChange: setSelected,
|
|
12
|
+
options: withoutEmptyOptions
|
|
13
|
+
});
|
|
14
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { SimpleSingleSelect } from '../simple-single-select.js';
|
|
3
|
+
import { fiveOptions } from './options.js';
|
|
4
|
+
export const WithPlaceholderAndSelection = () => {
|
|
5
|
+
const [selected, setSelected] = useState({
|
|
6
|
+
label: 'ANC 1st visit',
|
|
7
|
+
value: 'anc_1st_visit'
|
|
8
|
+
});
|
|
9
|
+
return /*#__PURE__*/React.createElement(SimpleSingleSelect, {
|
|
10
|
+
placeholder: "Placeholder text",
|
|
11
|
+
name: "simple",
|
|
12
|
+
selected: selected,
|
|
13
|
+
onChange: setSelected,
|
|
14
|
+
options: fiveOptions
|
|
15
|
+
});
|
|
16
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { SimpleSingleSelect } from '../simple-single-select.js';
|
|
3
|
+
import { fiveOptions } from './options.js';
|
|
4
|
+
export const WithPrefix = () => {
|
|
5
|
+
const [selected, setSelected] = useState(null);
|
|
6
|
+
return /*#__PURE__*/React.createElement(SimpleSingleSelect, {
|
|
7
|
+
prefix: "Prefix text",
|
|
8
|
+
name: "simple",
|
|
9
|
+
selected: selected,
|
|
10
|
+
onChange: setSelected,
|
|
11
|
+
options: fiveOptions
|
|
12
|
+
});
|
|
13
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { SimpleSingleSelect } from '../simple-single-select.js';
|
|
3
|
+
import { fiveOptions } from './options.js';
|
|
4
|
+
export const WithPrefixAndSelection = () => {
|
|
5
|
+
const [selected, setSelected] = useState({
|
|
6
|
+
label: 'ANC 1st visit',
|
|
7
|
+
value: 'anc_1st_visit'
|
|
8
|
+
});
|
|
9
|
+
return /*#__PURE__*/React.createElement(SimpleSingleSelect, {
|
|
10
|
+
prefix: "Prefix text",
|
|
11
|
+
name: "simple",
|
|
12
|
+
selected: selected,
|
|
13
|
+
onChange: setSelected,
|
|
14
|
+
options: fiveOptions
|
|
15
|
+
});
|
|
16
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
|
+
import { SimpleSingleSelect } from '../simple-single-select.js';
|
|
3
|
+
import { fiveOptions } from './options.js';
|
|
4
|
+
export const WithRTL = () => {
|
|
5
|
+
const [selected, setSelected] = useState({
|
|
6
|
+
label: 'ANC 1st visit',
|
|
7
|
+
value: 'anc_1st_visit'
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
// as options are rendered in Portal, the body dir (of the iframe) needs to be set to 'rtl'
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
document.body.dir = 'rtl';
|
|
13
|
+
return () => {
|
|
14
|
+
document.body.dir = 'ltr';
|
|
15
|
+
};
|
|
16
|
+
}, []);
|
|
17
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
18
|
+
dir: "rtl"
|
|
19
|
+
}, /*#__PURE__*/React.createElement(SimpleSingleSelect, {
|
|
20
|
+
name: "simple",
|
|
21
|
+
selected: selected,
|
|
22
|
+
onChange: setSelected,
|
|
23
|
+
options: fiveOptions
|
|
24
|
+
}));
|
|
25
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { SimpleSingleSelect } from '../simple-single-select.js';
|
|
3
|
+
import { fiveOptions } from './options.js';
|
|
4
|
+
export const WithSelection = () => {
|
|
5
|
+
const [selected, setSelected] = useState({
|
|
6
|
+
label: 'ANC 1st visit',
|
|
7
|
+
value: 'anc_1st_visit'
|
|
8
|
+
});
|
|
9
|
+
return /*#__PURE__*/React.createElement(SimpleSingleSelect, {
|
|
10
|
+
name: "simple",
|
|
11
|
+
selected: selected,
|
|
12
|
+
onChange: setSelected,
|
|
13
|
+
options: fiveOptions
|
|
14
|
+
});
|
|
15
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { SimpleSingleSelect } from '../simple-single-select.js';
|
|
3
|
+
import { fiveOptions } from './options.js';
|
|
4
|
+
export const WithSelectionAndDisabled = () => {
|
|
5
|
+
const [selected, setSelected] = useState({
|
|
6
|
+
label: 'ANC 1st visit',
|
|
7
|
+
value: 'anc_1st_visit'
|
|
8
|
+
});
|
|
9
|
+
return /*#__PURE__*/React.createElement(SimpleSingleSelect, {
|
|
10
|
+
disabled: true,
|
|
11
|
+
name: "simple",
|
|
12
|
+
selected: selected,
|
|
13
|
+
onChange: setSelected,
|
|
14
|
+
options: fiveOptions
|
|
15
|
+
});
|
|
16
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { SimpleSingleSelect } from '../simple-single-select.js';
|
|
3
|
+
export const WithoutOptionsAndLoading = () => {
|
|
4
|
+
const [selected, setSelected] = useState(null);
|
|
5
|
+
return /*#__PURE__*/React.createElement(SimpleSingleSelect, {
|
|
6
|
+
loading: true,
|
|
7
|
+
name: "simple",
|
|
8
|
+
selected: selected,
|
|
9
|
+
onChange: setSelected,
|
|
10
|
+
options: []
|
|
11
|
+
});
|
|
12
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { SimpleSingleSelect } from '../simple-single-select.js';
|
|
3
|
+
import { fiveOptions } from './options.js';
|
|
4
|
+
export const WithoutSelection = () => {
|
|
5
|
+
const [selected, setSelected] = useState(null);
|
|
6
|
+
return /*#__PURE__*/React.createElement(SimpleSingleSelect, {
|
|
7
|
+
inputMaxHeight: "50px",
|
|
8
|
+
name: "simple",
|
|
9
|
+
selected: selected,
|
|
10
|
+
onChange: setSelected,
|
|
11
|
+
options: fiveOptions
|
|
12
|
+
});
|
|
13
|
+
};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
export const options = [{
|
|
2
|
+
label: 'None',
|
|
3
|
+
value: ''
|
|
4
|
+
}, {
|
|
5
|
+
label: 'ANC 1st visit',
|
|
6
|
+
value: 'anc_1st_visit'
|
|
7
|
+
}, {
|
|
8
|
+
label: 'ANC 2nd visit',
|
|
9
|
+
value: 'anc_2nd_visit'
|
|
10
|
+
}, {
|
|
11
|
+
label: 'ANC 3rd visit',
|
|
12
|
+
value: 'anc_3rd_visit'
|
|
13
|
+
}, {
|
|
14
|
+
label: 'ANC 4th or more visits',
|
|
15
|
+
value: 'anc_4th_or_more_visits'
|
|
16
|
+
}, {
|
|
17
|
+
label: 'ARI treated with antibiotics (pneumonia) follow-up',
|
|
18
|
+
value: 'ari_treated_with_antibiotics_(pneumonia)_follow-up'
|
|
19
|
+
}, {
|
|
20
|
+
label: 'ARI treated with antibiotics (pneumonia) new',
|
|
21
|
+
value: 'ari_treated_with_antibiotics_(pneumonia)_new'
|
|
22
|
+
}, {
|
|
23
|
+
label: 'ARI treated with antibiotics (pneumonia) referrals',
|
|
24
|
+
value: 'ari_treated_with_antibiotics_(pneumonia)_referrals'
|
|
25
|
+
}, {
|
|
26
|
+
label: 'ARI treated without antibiotics (cough) follow-up',
|
|
27
|
+
value: 'ari_treated_without_antibiotics_(cough)_follow-up'
|
|
28
|
+
}, {
|
|
29
|
+
label: 'ARI treated without antibiotics (cough) new',
|
|
30
|
+
value: 'ari_treated_without_antibiotics_(cough)_new'
|
|
31
|
+
}, {
|
|
32
|
+
label: 'ARI treated without antibiotics (cough) referrals',
|
|
33
|
+
value: 'ari_treated_without_antibiotics_(cough)_referrals'
|
|
34
|
+
}, {
|
|
35
|
+
label: 'ART No clients who stopped TRT due to TRT failure',
|
|
36
|
+
value: 'art_no_clients_who_stopped_trt_due_to_trt_failure'
|
|
37
|
+
}, {
|
|
38
|
+
label: 'ART No clients who stopped TRT due to adverse clinical status/event',
|
|
39
|
+
value: 'art_no_clients_who_stopped_trt_due_to_adverse_clinical_status/event'
|
|
40
|
+
}, {
|
|
41
|
+
label: 'ART No clients with change of regimen due to drug toxicity',
|
|
42
|
+
value: 'art_no_clients_with_change_of_regimen_due_to_drug_toxicity'
|
|
43
|
+
}, {
|
|
44
|
+
label: 'ART No clients with new adverse drug reaction',
|
|
45
|
+
value: 'art_no_clients_with_new_adverse_drug_reaction'
|
|
46
|
+
}, {
|
|
47
|
+
label: 'ART No started Opportunist Infection prophylaxis',
|
|
48
|
+
value: 'art_no_started_opportunist_infection_prophylaxis'
|
|
49
|
+
}, {
|
|
50
|
+
label: 'ART clients with new adverse clinical event',
|
|
51
|
+
value: 'art_clients_with_new_adverse_clinical_event'
|
|
52
|
+
}, {
|
|
53
|
+
label: 'ART defaulters',
|
|
54
|
+
value: 'art_defaulters'
|
|
55
|
+
}, {
|
|
56
|
+
label: 'ART enrollment stage 1',
|
|
57
|
+
value: 'art_enrollment_stage_1'
|
|
58
|
+
}, {
|
|
59
|
+
label: 'ART enrollment stage 2',
|
|
60
|
+
value: 'art_enrollment_stage_2'
|
|
61
|
+
}, {
|
|
62
|
+
label: 'ART enrollment stage 3',
|
|
63
|
+
value: 'art_enrollment_stage_3'
|
|
64
|
+
}, {
|
|
65
|
+
label: 'ART enrollment stage 4',
|
|
66
|
+
value: 'art_enrollment_stage_4'
|
|
67
|
+
}, {
|
|
68
|
+
label: 'ART entry point: No PMTCT',
|
|
69
|
+
value: 'art_entry_point:_no_pmtct'
|
|
70
|
+
}];
|
|
71
|
+
export const fiveOptions = options.slice(0, 5);
|