@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.
Files changed (148) hide show
  1. package/build/cjs/index.js +18 -4
  2. package/build/cjs/locales/en/translations.json +7 -5
  3. package/build/cjs/simple-single-select/__stories__/DefaultPosition.js +38 -0
  4. package/build/cjs/simple-single-select/__stories__/Dense.js +22 -0
  5. package/build/cjs/simple-single-select/__stories__/Empty.js +20 -0
  6. package/build/cjs/simple-single-select/__stories__/EmptyWithEmptyNode.js +28 -0
  7. package/build/cjs/simple-single-select/__stories__/EmptyWithEmptyText.js +21 -0
  8. package/build/cjs/simple-single-select/__stories__/FlippedPosition.js +37 -0
  9. package/build/cjs/simple-single-select/__stories__/InfiniteLoading.js +61 -0
  10. package/build/cjs/simple-single-select/__stories__/Loading.js +20 -0
  11. package/build/cjs/simple-single-select/__stories__/ShiftedIntoView.js +28 -0
  12. package/build/cjs/simple-single-select/__stories__/WithClearButton.js +25 -0
  13. package/build/cjs/simple-single-select/__stories__/WithCustomLowMaxHeight.js +22 -0
  14. package/build/cjs/simple-single-select/__stories__/WithCustomOptions.js +48 -0
  15. package/build/cjs/simple-single-select/__stories__/WithDisabledOption.js +28 -0
  16. package/build/cjs/simple-single-select/__stories__/WithFilterField.js +36 -0
  17. package/build/cjs/simple-single-select/__stories__/WithInitialFocus.js +38 -0
  18. package/build/cjs/simple-single-select/__stories__/WithManyOptions.js +24 -0
  19. package/build/cjs/simple-single-select/__stories__/WithNoMatchText.js +30 -0
  20. package/build/cjs/simple-single-select/__stories__/WithOnBlur.js +23 -0
  21. package/build/cjs/simple-single-select/__stories__/WithOnFocus.js +23 -0
  22. package/build/cjs/simple-single-select/__stories__/WithOptionsAndDisabled.js +22 -0
  23. package/build/cjs/simple-single-select/__stories__/WithOptionsAndLoading.js +34 -0
  24. package/build/cjs/simple-single-select/__stories__/WithOptionsAndLoadingText.js +35 -0
  25. package/build/cjs/simple-single-select/__stories__/WithPlaceholder.js +23 -0
  26. package/build/cjs/simple-single-select/__stories__/WithPlaceholderAndSelection.js +25 -0
  27. package/build/cjs/simple-single-select/__stories__/WithPrefix.js +22 -0
  28. package/build/cjs/simple-single-select/__stories__/WithPrefixAndSelection.js +25 -0
  29. package/build/cjs/simple-single-select/__stories__/WithRTL.js +34 -0
  30. package/build/cjs/simple-single-select/__stories__/WithSelection.js +24 -0
  31. package/build/cjs/simple-single-select/__stories__/WithSelectionAndDisabled.js +25 -0
  32. package/build/cjs/simple-single-select/__stories__/WithoutOptionsAndLoading.js +21 -0
  33. package/build/cjs/simple-single-select/__stories__/WithoutSelection.js +22 -0
  34. package/build/cjs/simple-single-select/__stories__/options.js +77 -0
  35. package/build/cjs/simple-single-select/features/keyboard-interactions.test.e2e.js +441 -0
  36. package/build/cjs/simple-single-select/features/menu-positioning.test.e2e.js +152 -0
  37. package/build/cjs/simple-single-select/index.js +19 -0
  38. package/build/cjs/simple-single-select/is-option-hidden.js +22 -0
  39. package/build/cjs/simple-single-select/menu/empty.js +26 -0
  40. package/build/cjs/simple-single-select/menu/filter.js +60 -0
  41. package/build/cjs/simple-single-select/menu/index.js +12 -0
  42. package/build/cjs/simple-single-select/menu/loading.js +30 -0
  43. package/build/cjs/simple-single-select/menu/menu.js +158 -0
  44. package/build/cjs/simple-single-select/menu/no-match.js +28 -0
  45. package/build/cjs/simple-single-select/menu/option.js +120 -0
  46. package/build/cjs/simple-single-select/menu/options-list.js +97 -0
  47. package/build/cjs/simple-single-select/selected-value/clear-button.js +74 -0
  48. package/build/cjs/simple-single-select/selected-value/container.js +100 -0
  49. package/build/cjs/simple-single-select/selected-value/index.js +12 -0
  50. package/build/cjs/simple-single-select/selected-value/placeholder.js +30 -0
  51. package/build/cjs/simple-single-select/selected-value/prefix.js +30 -0
  52. package/build/cjs/simple-single-select/selected-value/selected-value.js +119 -0
  53. package/build/cjs/simple-single-select/shared-prop-types.js +14 -0
  54. package/build/cjs/simple-single-select/simple-single-select.e2e.stories.js +156 -0
  55. package/build/cjs/simple-single-select/simple-single-select.js +319 -0
  56. package/build/cjs/simple-single-select/simple-single-select.prod.stories.js +228 -0
  57. package/build/cjs/simple-single-select/simple-single-select.test.js +1106 -0
  58. package/build/cjs/simple-single-select/use-handle-key-press/index.js +19 -0
  59. package/build/cjs/simple-single-select/use-handle-key-press/use-focus-option.js +24 -0
  60. package/build/cjs/simple-single-select/use-handle-key-press/use-handle-key-press-on-combobox.js +177 -0
  61. package/build/cjs/simple-single-select/use-handle-key-press/use-handle-key-press-on-filter-input.js +106 -0
  62. package/build/cjs/simple-single-select/use-handle-key-press/use-handle-typing.js +81 -0
  63. package/build/cjs/simple-single-select/use-handle-key-press/use-highlight-first-option-on-previous-page.js +50 -0
  64. package/build/cjs/simple-single-select/use-handle-key-press/use-highlight-first-visible-option.js +30 -0
  65. package/build/cjs/simple-single-select/use-handle-key-press/use-highlight-last-option-on-next-page.js +50 -0
  66. package/build/cjs/simple-single-select/use-handle-key-press/use-highlight-last-visible-option.js +42 -0
  67. package/build/cjs/simple-single-select/use-handle-key-press/use-page-down.js +45 -0
  68. package/build/cjs/simple-single-select/use-handle-key-press/use-page-up.js +44 -0
  69. package/build/cjs/simple-single-select/use-handle-key-press/utils.js +46 -0
  70. package/build/cjs/simple-single-select-field/index.js +12 -0
  71. package/build/cjs/simple-single-select-field/simple-single-select-field.js +138 -0
  72. package/build/cjs/simple-single-select-field/simple-single-select-field.prod.stories.js +188 -0
  73. package/build/cjs/simple-single-select-field/simple-single-select-field.test.js +133 -0
  74. package/build/es/index.js +2 -0
  75. package/build/es/locales/en/translations.json +7 -5
  76. package/build/es/simple-single-select/__stories__/DefaultPosition.js +29 -0
  77. package/build/es/simple-single-select/__stories__/Dense.js +13 -0
  78. package/build/es/simple-single-select/__stories__/Empty.js +11 -0
  79. package/build/es/simple-single-select/__stories__/EmptyWithEmptyNode.js +19 -0
  80. package/build/es/simple-single-select/__stories__/EmptyWithEmptyText.js +12 -0
  81. package/build/es/simple-single-select/__stories__/FlippedPosition.js +28 -0
  82. package/build/es/simple-single-select/__stories__/InfiniteLoading.js +53 -0
  83. package/build/es/simple-single-select/__stories__/Loading.js +12 -0
  84. package/build/es/simple-single-select/__stories__/ShiftedIntoView.js +18 -0
  85. package/build/es/simple-single-select/__stories__/WithClearButton.js +16 -0
  86. package/build/es/simple-single-select/__stories__/WithCustomLowMaxHeight.js +13 -0
  87. package/build/es/simple-single-select/__stories__/WithCustomOptions.js +38 -0
  88. package/build/es/simple-single-select/__stories__/WithDisabledOption.js +19 -0
  89. package/build/es/simple-single-select/__stories__/WithFilterField.js +27 -0
  90. package/build/es/simple-single-select/__stories__/WithInitialFocus.js +29 -0
  91. package/build/es/simple-single-select/__stories__/WithManyOptions.js +15 -0
  92. package/build/es/simple-single-select/__stories__/WithNoMatchText.js +21 -0
  93. package/build/es/simple-single-select/__stories__/WithOnBlur.js +14 -0
  94. package/build/es/simple-single-select/__stories__/WithOnFocus.js +14 -0
  95. package/build/es/simple-single-select/__stories__/WithOptionsAndDisabled.js +13 -0
  96. package/build/es/simple-single-select/__stories__/WithOptionsAndLoading.js +25 -0
  97. package/build/es/simple-single-select/__stories__/WithOptionsAndLoadingText.js +26 -0
  98. package/build/es/simple-single-select/__stories__/WithPlaceholder.js +14 -0
  99. package/build/es/simple-single-select/__stories__/WithPlaceholderAndSelection.js +16 -0
  100. package/build/es/simple-single-select/__stories__/WithPrefix.js +13 -0
  101. package/build/es/simple-single-select/__stories__/WithPrefixAndSelection.js +16 -0
  102. package/build/es/simple-single-select/__stories__/WithRTL.js +25 -0
  103. package/build/es/simple-single-select/__stories__/WithSelection.js +15 -0
  104. package/build/es/simple-single-select/__stories__/WithSelectionAndDisabled.js +16 -0
  105. package/build/es/simple-single-select/__stories__/WithoutOptionsAndLoading.js +12 -0
  106. package/build/es/simple-single-select/__stories__/WithoutSelection.js +13 -0
  107. package/build/es/simple-single-select/__stories__/options.js +71 -0
  108. package/build/es/simple-single-select/features/keyboard-interactions.test.e2e.js +439 -0
  109. package/build/es/simple-single-select/features/menu-positioning.test.e2e.js +150 -0
  110. package/build/es/simple-single-select/index.js +2 -0
  111. package/build/es/simple-single-select/is-option-hidden.js +16 -0
  112. package/build/es/simple-single-select/menu/empty.js +19 -0
  113. package/build/es/simple-single-select/menu/filter.js +53 -0
  114. package/build/es/simple-single-select/menu/index.js +1 -0
  115. package/build/es/simple-single-select/menu/loading.js +23 -0
  116. package/build/es/simple-single-select/menu/menu.js +149 -0
  117. package/build/es/simple-single-select/menu/no-match.js +21 -0
  118. package/build/es/simple-single-select/menu/option.js +111 -0
  119. package/build/es/simple-single-select/menu/options-list.js +88 -0
  120. package/build/es/simple-single-select/selected-value/clear-button.js +68 -0
  121. package/build/es/simple-single-select/selected-value/container.js +91 -0
  122. package/build/es/simple-single-select/selected-value/index.js +1 -0
  123. package/build/es/simple-single-select/selected-value/placeholder.js +23 -0
  124. package/build/es/simple-single-select/selected-value/prefix.js +23 -0
  125. package/build/es/simple-single-select/selected-value/selected-value.js +112 -0
  126. package/build/es/simple-single-select/shared-prop-types.js +7 -0
  127. package/build/es/simple-single-select/simple-single-select.e2e.stories.js +142 -0
  128. package/build/es/simple-single-select/simple-single-select.js +310 -0
  129. package/build/es/simple-single-select/simple-single-select.prod.stories.js +36 -0
  130. package/build/es/simple-single-select/simple-single-select.test.js +1103 -0
  131. package/build/es/simple-single-select/use-handle-key-press/index.js +2 -0
  132. package/build/es/simple-single-select/use-handle-key-press/use-focus-option.js +18 -0
  133. package/build/es/simple-single-select/use-handle-key-press/use-handle-key-press-on-combobox.js +171 -0
  134. package/build/es/simple-single-select/use-handle-key-press/use-handle-key-press-on-filter-input.js +100 -0
  135. package/build/es/simple-single-select/use-handle-key-press/use-handle-typing.js +75 -0
  136. package/build/es/simple-single-select/use-handle-key-press/use-highlight-first-option-on-previous-page.js +44 -0
  137. package/build/es/simple-single-select/use-handle-key-press/use-highlight-first-visible-option.js +24 -0
  138. package/build/es/simple-single-select/use-handle-key-press/use-highlight-last-option-on-next-page.js +44 -0
  139. package/build/es/simple-single-select/use-handle-key-press/use-highlight-last-visible-option.js +36 -0
  140. package/build/es/simple-single-select/use-handle-key-press/use-page-down.js +39 -0
  141. package/build/es/simple-single-select/use-handle-key-press/use-page-up.js +38 -0
  142. package/build/es/simple-single-select/use-handle-key-press/utils.js +36 -0
  143. package/build/es/simple-single-select-field/index.js +1 -0
  144. package/build/es/simple-single-select-field/simple-single-select-field.js +131 -0
  145. package/build/es/simple-single-select-field/simple-single-select-field.prod.stories.js +172 -0
  146. package/build/es/simple-single-select-field/simple-single-select-field.test.js +130 -0
  147. package/package.json +15 -15
  148. 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);