@patternfly/react-templates 1.1.0-prerelease.3 → 1.1.0-prerelease.30

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 (108) hide show
  1. package/CHANGELOG.md +128 -0
  2. package/README.md +2 -17
  3. package/components/package.json +1 -1
  4. package/dist/dynamic/components/Dropdown/package.json +1 -0
  5. package/dist/dynamic/components/Select/package.json +1 -1
  6. package/dist/dynamic-modules.json +14 -3
  7. package/dist/esm/components/Dropdown/SimpleDropdown.d.ts +48 -0
  8. package/dist/esm/components/Dropdown/SimpleDropdown.d.ts.map +1 -0
  9. package/dist/esm/components/Dropdown/SimpleDropdown.js +33 -0
  10. package/dist/esm/components/Dropdown/SimpleDropdown.js.map +1 -0
  11. package/dist/esm/components/Dropdown/index.d.ts +2 -0
  12. package/dist/esm/components/Dropdown/index.d.ts.map +1 -0
  13. package/dist/esm/components/Dropdown/index.js +2 -0
  14. package/dist/esm/components/Dropdown/index.js.map +1 -0
  15. package/dist/esm/components/Select/CheckboxSelect.d.ts +7 -3
  16. package/dist/esm/components/Select/CheckboxSelect.d.ts.map +1 -1
  17. package/dist/esm/components/Select/CheckboxSelect.js +14 -6
  18. package/dist/esm/components/Select/CheckboxSelect.js.map +1 -1
  19. package/dist/esm/components/Select/MultiTypeaheadSelect.d.ts +33 -0
  20. package/dist/esm/components/Select/MultiTypeaheadSelect.d.ts.map +1 -0
  21. package/dist/esm/components/Select/MultiTypeaheadSelect.js +186 -0
  22. package/dist/esm/components/Select/MultiTypeaheadSelect.js.map +1 -0
  23. package/dist/esm/components/Select/{SelectSimple.d.ts → SimpleSelect.d.ts} +12 -7
  24. package/dist/esm/components/Select/SimpleSelect.d.ts.map +1 -0
  25. package/dist/esm/components/Select/SimpleSelect.js +39 -0
  26. package/dist/esm/components/Select/SimpleSelect.js.map +1 -0
  27. package/dist/esm/components/Select/TypeaheadSelect.d.ts +35 -0
  28. package/dist/esm/components/Select/TypeaheadSelect.d.ts.map +1 -0
  29. package/dist/esm/components/Select/TypeaheadSelect.js +194 -0
  30. package/dist/esm/components/Select/TypeaheadSelect.js.map +1 -0
  31. package/dist/esm/components/Select/index.d.ts +3 -1
  32. package/dist/esm/components/Select/index.d.ts.map +1 -1
  33. package/dist/esm/components/Select/index.js +3 -1
  34. package/dist/esm/components/Select/index.js.map +1 -1
  35. package/dist/esm/components/index.d.ts +1 -0
  36. package/dist/esm/components/index.d.ts.map +1 -1
  37. package/dist/esm/components/index.js +1 -0
  38. package/dist/esm/components/index.js.map +1 -1
  39. package/dist/js/components/Dropdown/SimpleDropdown.d.ts +48 -0
  40. package/dist/js/components/Dropdown/SimpleDropdown.d.ts.map +1 -0
  41. package/dist/js/components/Dropdown/SimpleDropdown.js +36 -0
  42. package/dist/js/components/Dropdown/SimpleDropdown.js.map +1 -0
  43. package/dist/js/components/Dropdown/index.d.ts +2 -0
  44. package/dist/js/components/Dropdown/index.d.ts.map +1 -0
  45. package/dist/js/components/Dropdown/index.js +5 -0
  46. package/dist/js/components/Dropdown/index.js.map +1 -0
  47. package/dist/js/components/Select/CheckboxSelect.d.ts +7 -3
  48. package/dist/js/components/Select/CheckboxSelect.d.ts.map +1 -1
  49. package/dist/js/components/Select/CheckboxSelect.js +14 -6
  50. package/dist/js/components/Select/CheckboxSelect.js.map +1 -1
  51. package/dist/js/components/Select/MultiTypeaheadSelect.d.ts +33 -0
  52. package/dist/js/components/Select/MultiTypeaheadSelect.d.ts.map +1 -0
  53. package/dist/js/components/Select/MultiTypeaheadSelect.js +190 -0
  54. package/dist/js/components/Select/MultiTypeaheadSelect.js.map +1 -0
  55. package/dist/js/components/Select/{SelectSimple.d.ts → SimpleSelect.d.ts} +12 -7
  56. package/dist/js/components/Select/SimpleSelect.d.ts.map +1 -0
  57. package/dist/js/components/Select/SimpleSelect.js +42 -0
  58. package/dist/js/components/Select/SimpleSelect.js.map +1 -0
  59. package/dist/js/components/Select/TypeaheadSelect.d.ts +35 -0
  60. package/dist/js/components/Select/TypeaheadSelect.d.ts.map +1 -0
  61. package/dist/js/components/Select/TypeaheadSelect.js +198 -0
  62. package/dist/js/components/Select/TypeaheadSelect.js.map +1 -0
  63. package/dist/js/components/Select/index.d.ts +3 -1
  64. package/dist/js/components/Select/index.d.ts.map +1 -1
  65. package/dist/js/components/Select/index.js +3 -1
  66. package/dist/js/components/Select/index.js.map +1 -1
  67. package/dist/js/components/index.d.ts +1 -0
  68. package/dist/js/components/index.d.ts.map +1 -1
  69. package/dist/js/components/index.js +1 -0
  70. package/dist/js/components/index.js.map +1 -1
  71. package/dist/umd/assets/output-BlMzHGPn.css +26066 -0
  72. package/dist/umd/react-templates.min.js +1 -1
  73. package/package.json +7 -10
  74. package/rollup.config.mjs +8 -0
  75. package/src/components/Dropdown/SimpleDropdown.tsx +139 -0
  76. package/src/components/Dropdown/__tests__/SimpleDropdown.test.tsx +266 -0
  77. package/src/components/Dropdown/__tests__/__snapshots__/SimpleDropdown.test.tsx.snap +153 -0
  78. package/src/components/Dropdown/examples/DropdownTemplates.md +24 -0
  79. package/src/components/Dropdown/examples/SimpleDropdownExample.tsx +53 -0
  80. package/src/components/Dropdown/index.ts +1 -0
  81. package/src/components/Select/CheckboxSelect.tsx +23 -7
  82. package/src/components/Select/MultiTypeaheadSelect.tsx +348 -0
  83. package/src/components/Select/{SelectSimple.tsx → SimpleSelect.tsx} +39 -18
  84. package/src/components/Select/TypeaheadSelect.tsx +342 -0
  85. package/src/components/Select/{CheckboxSelect.test.tsx → __tests__/CheckboxSelect.test.tsx} +29 -1
  86. package/src/components/Select/{CheckboxSelectSnapshots.test.tsx → __tests__/CheckboxSelectSnapshots.test.tsx} +1 -1
  87. package/src/components/Select/__tests__/MultiTypeaheadSelect.test.tsx +414 -0
  88. package/src/components/Select/__tests__/SimpleSelect.test.tsx +241 -0
  89. package/src/components/Select/__tests__/TypeaheadSelect.test.tsx +408 -0
  90. package/src/components/Select/{__snapshots__ → __tests__/__snapshots__}/CheckboxSelectSnapshots.test.tsx.snap +7 -2
  91. package/src/components/Select/__tests__/__snapshots__/MultiTypeaheadSelect.test.tsx.snap +180 -0
  92. package/src/components/Select/__tests__/__snapshots__/SimpleSelect.test.tsx.snap +170 -0
  93. package/src/components/Select/__tests__/__snapshots__/TypeaheadSelect.test.tsx.snap +180 -0
  94. package/src/components/Select/examples/CheckboxSelectDemo.tsx +25 -8
  95. package/src/components/Select/examples/MultiTypeaheadSelectDemo.tsx +35 -0
  96. package/src/components/Select/examples/SelectTemplates.md +17 -4
  97. package/src/components/Select/examples/SimpleSelectDemo.tsx +36 -0
  98. package/src/components/Select/examples/TypeaheadSelectDemo.tsx +35 -0
  99. package/src/components/Select/index.ts +3 -1
  100. package/src/components/index.ts +1 -0
  101. package/dist/esm/components/Select/SelectSimple.d.ts.map +0 -1
  102. package/dist/esm/components/Select/SelectSimple.js +0 -31
  103. package/dist/esm/components/Select/SelectSimple.js.map +0 -1
  104. package/dist/js/components/Select/SelectSimple.d.ts.map +0 -1
  105. package/dist/js/components/Select/SelectSimple.js +0 -34
  106. package/dist/js/components/Select/SelectSimple.js.map +0 -1
  107. package/rollup.config.js +0 -7
  108. package/src/components/Select/examples/SelectSimpleDemo.tsx +0 -26
@@ -0,0 +1,170 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Matches snapshot 1`] = `
4
+ <DocumentFragment>
5
+ <button
6
+ aria-expanded="true"
7
+ class="pf-v5-c-menu-toggle pf-m-expanded"
8
+ data-ouia-component-id="OUIA-Generated-MenuToggle-13"
9
+ data-ouia-component-type="PF5/MenuToggle"
10
+ data-ouia-safe="true"
11
+ style="width: 200px;"
12
+ type="button"
13
+ >
14
+ <span
15
+ class="pf-v5-c-menu-toggle__text"
16
+ >
17
+ Select
18
+ </span>
19
+ <span
20
+ class="pf-v5-c-menu-toggle__controls"
21
+ >
22
+ <span
23
+ class="pf-v5-c-menu-toggle__toggle-icon"
24
+ >
25
+ <svg
26
+ aria-hidden="true"
27
+ class="pf-v5-svg"
28
+ fill="currentColor"
29
+ height="1em"
30
+ role="img"
31
+ viewBox="0 0 320 512"
32
+ width="1em"
33
+ >
34
+ <path
35
+ d="M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"
36
+ />
37
+ </svg>
38
+ </span>
39
+ </span>
40
+ </button>
41
+ <div
42
+ class="pf-v5-c-menu"
43
+ data-ouia-component-id="OUIA-Generated-Select-24"
44
+ data-ouia-component-type="PF5/Select"
45
+ data-ouia-safe="true"
46
+ data-popper-escaped="true"
47
+ data-popper-placement="bottom-start"
48
+ data-popper-reference-hidden="true"
49
+ style="position: absolute; left: 0px; top: 0px; z-index: 9999; opacity: 1; transition: opacity 0ms cubic-bezier(.54, 1.5, .38, 1.11); min-width: 0px; transform: translate(0px, 0px);"
50
+ >
51
+ <div
52
+ class="pf-v5-c-menu__content"
53
+ >
54
+ <ul
55
+ aria-multiselectable="false"
56
+ class="pf-v5-c-menu__list"
57
+ role="listbox"
58
+ >
59
+ <li
60
+ class="pf-v5-c-menu__list-item"
61
+ role="none"
62
+ >
63
+ <button
64
+ aria-selected="false"
65
+ class="pf-v5-c-menu__item"
66
+ role="option"
67
+ tabindex="0"
68
+ type="button"
69
+ >
70
+ <span
71
+ class="pf-v5-c-menu__item-main"
72
+ >
73
+ <span
74
+ class="pf-v5-c-menu__item-text"
75
+ >
76
+ Option 1
77
+ </span>
78
+ </span>
79
+ </button>
80
+ </li>
81
+ <li
82
+ class="pf-v5-c-menu__list-item"
83
+ role="none"
84
+ >
85
+ <button
86
+ aria-selected="false"
87
+ class="pf-v5-c-menu__item"
88
+ role="option"
89
+ tabindex="-1"
90
+ type="button"
91
+ >
92
+ <span
93
+ class="pf-v5-c-menu__item-main"
94
+ >
95
+ <span
96
+ class="pf-v5-c-menu__item-text"
97
+ >
98
+ Option 2
99
+ </span>
100
+ </span>
101
+ </button>
102
+ </li>
103
+ <li
104
+ class="pf-v5-c-menu__list-item"
105
+ role="none"
106
+ >
107
+ <button
108
+ aria-selected="false"
109
+ class="pf-v5-c-menu__item"
110
+ role="option"
111
+ tabindex="-1"
112
+ type="button"
113
+ >
114
+ <span
115
+ class="pf-v5-c-menu__item-main"
116
+ >
117
+ <span
118
+ class="pf-v5-c-menu__item-text"
119
+ >
120
+ Option 3
121
+ </span>
122
+ </span>
123
+ </button>
124
+ </li>
125
+ </ul>
126
+ </div>
127
+ </div>
128
+ </DocumentFragment>
129
+ `;
130
+
131
+ exports[`checkbox select with no props snapshot 1`] = `
132
+ <DocumentFragment>
133
+ <button
134
+ aria-expanded="false"
135
+ class="pf-v5-c-menu-toggle"
136
+ data-ouia-component-id="OUIA-Generated-MenuToggle-12"
137
+ data-ouia-component-type="PF5/MenuToggle"
138
+ data-ouia-safe="true"
139
+ style="width: 200px;"
140
+ type="button"
141
+ >
142
+ <span
143
+ class="pf-v5-c-menu-toggle__text"
144
+ >
145
+ Select a value
146
+ </span>
147
+ <span
148
+ class="pf-v5-c-menu-toggle__controls"
149
+ >
150
+ <span
151
+ class="pf-v5-c-menu-toggle__toggle-icon"
152
+ >
153
+ <svg
154
+ aria-hidden="true"
155
+ class="pf-v5-svg"
156
+ fill="currentColor"
157
+ height="1em"
158
+ role="img"
159
+ viewBox="0 0 320 512"
160
+ width="1em"
161
+ >
162
+ <path
163
+ d="M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"
164
+ />
165
+ </svg>
166
+ </span>
167
+ </span>
168
+ </button>
169
+ </DocumentFragment>
170
+ `;
@@ -0,0 +1,180 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Matches snapshot 1`] = `
4
+ <DocumentFragment>
5
+ <div
6
+ class="pf-v5-c-menu-toggle pf-m-expanded pf-m-full-width pf-m-typeahead"
7
+ >
8
+ <div
9
+ class="pf-v5-c-text-input-group pf-m-plain"
10
+ >
11
+ <div
12
+ autocomplete="off"
13
+ class="pf-v5-c-text-input-group__main"
14
+ >
15
+ <span
16
+ class="pf-v5-c-text-input-group__text"
17
+ >
18
+ <input
19
+ aria-controls="select-typeahead-listbox"
20
+ aria-expanded="true"
21
+ aria-label="Type to filter"
22
+ class="pf-v5-c-text-input-group__text-input"
23
+ placeholder="Select an option"
24
+ role="combobox"
25
+ type="text"
26
+ value=""
27
+ />
28
+ </span>
29
+ </div>
30
+ <div
31
+ class="pf-v5-c-text-input-group__utilities"
32
+ style="display: none;"
33
+ >
34
+ <button
35
+ aria-disabled="false"
36
+ aria-label="Clear input value"
37
+ class="pf-v5-c-button pf-m-plain"
38
+ data-ouia-component-id="OUIA-Generated-Button-plain-17"
39
+ data-ouia-component-type="PF5/Button"
40
+ data-ouia-safe="true"
41
+ type="button"
42
+ >
43
+ <svg
44
+ aria-hidden="true"
45
+ class="pf-v5-svg"
46
+ fill="currentColor"
47
+ height="1em"
48
+ role="img"
49
+ viewBox="0 0 352 512"
50
+ width="1em"
51
+ >
52
+ <path
53
+ d="M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"
54
+ />
55
+ </svg>
56
+ </button>
57
+ </div>
58
+ </div>
59
+ <button
60
+ aria-expanded="true"
61
+ aria-label="Typeahead menu toggle"
62
+ class="pf-v5-c-menu-toggle__button"
63
+ data-ouia-component-id="OUIA-Generated-MenuToggle-typeahead-17"
64
+ data-ouia-component-type="PF5/MenuToggle"
65
+ data-ouia-safe="true"
66
+ tabindex="-1"
67
+ type="button"
68
+ >
69
+ <span
70
+ class="pf-v5-c-menu-toggle__controls"
71
+ >
72
+ <span
73
+ class="pf-v5-c-menu-toggle__toggle-icon"
74
+ >
75
+ <svg
76
+ aria-hidden="true"
77
+ class="pf-v5-svg"
78
+ fill="currentColor"
79
+ height="1em"
80
+ role="img"
81
+ viewBox="0 0 320 512"
82
+ width="1em"
83
+ >
84
+ <path
85
+ d="M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"
86
+ />
87
+ </svg>
88
+ </span>
89
+ </span>
90
+ </button>
91
+ </div>
92
+ <div
93
+ class="pf-v5-c-menu"
94
+ data-ouia-component-id="OUIA-Generated-Select-51"
95
+ data-ouia-component-type="PF5/Select"
96
+ data-ouia-safe="true"
97
+ data-popper-escaped="true"
98
+ data-popper-placement="bottom-start"
99
+ data-popper-reference-hidden="true"
100
+ style="position: absolute; left: 0px; top: 0px; z-index: 9999; opacity: 1; transition: opacity 0ms cubic-bezier(.54, 1.5, .38, 1.11); min-width: 0px; transform: translate(0px, 0px);"
101
+ >
102
+ <div
103
+ class="pf-v5-c-menu__content"
104
+ >
105
+ <ul
106
+ aria-multiselectable="false"
107
+ class="pf-v5-c-menu__list"
108
+ role="listbox"
109
+ >
110
+ <li
111
+ class="pf-v5-c-menu__list-item"
112
+ role="none"
113
+ >
114
+ <button
115
+ aria-selected="false"
116
+ class="pf-v5-c-menu__item"
117
+ role="option"
118
+ tabindex="0"
119
+ type="button"
120
+ >
121
+ <span
122
+ class="pf-v5-c-menu__item-main"
123
+ >
124
+ <span
125
+ class="pf-v5-c-menu__item-text"
126
+ >
127
+ Option 1
128
+ </span>
129
+ </span>
130
+ </button>
131
+ </li>
132
+ <li
133
+ class="pf-v5-c-menu__list-item"
134
+ role="none"
135
+ >
136
+ <button
137
+ aria-selected="false"
138
+ class="pf-v5-c-menu__item"
139
+ role="option"
140
+ tabindex="-1"
141
+ type="button"
142
+ >
143
+ <span
144
+ class="pf-v5-c-menu__item-main"
145
+ >
146
+ <span
147
+ class="pf-v5-c-menu__item-text"
148
+ >
149
+ Option 2
150
+ </span>
151
+ </span>
152
+ </button>
153
+ </li>
154
+ <li
155
+ class="pf-v5-c-menu__list-item"
156
+ role="none"
157
+ >
158
+ <button
159
+ aria-selected="false"
160
+ class="pf-v5-c-menu__item"
161
+ role="option"
162
+ tabindex="-1"
163
+ type="button"
164
+ >
165
+ <span
166
+ class="pf-v5-c-menu__item-main"
167
+ >
168
+ <span
169
+ class="pf-v5-c-menu__item-text"
170
+ >
171
+ Option 3
172
+ </span>
173
+ </span>
174
+ </button>
175
+ </li>
176
+ </ul>
177
+ </div>
178
+ </div>
179
+ </DocumentFragment>
180
+ `;
@@ -1,13 +1,30 @@
1
1
  import React from 'react';
2
2
  import { CheckboxSelect, CheckboxSelectOption } from '@patternfly/react-templates';
3
3
 
4
+ const Options: { content: string; value: string; description?: string; isDisabled?: boolean }[] = [
5
+ { content: 'Option 1', value: 'option-1' },
6
+ { content: 'Option 2', value: 'option-2', description: 'Option with description' },
7
+ { content: 'Option 3', value: 'option-3', isDisabled: true },
8
+ { content: 'Option 4', value: 'option-4' }
9
+ ];
10
+
4
11
  export const SelectBasic: React.FunctionComponent = () => {
5
- const initialOptions: CheckboxSelectOption[] = [
6
- { content: 'Option 1', value: 'option-1' },
7
- { content: 'Option 2', value: 'option-2' },
8
- { content: 'Option 3', value: 'option-3', isDisabled: true },
9
- { content: 'Option 4', value: 'option-4' }
10
- ];
11
-
12
- return <CheckboxSelect initialOptions={initialOptions} />;
12
+ const [selected, setSelected] = React.useState<string[]>(['option-2']);
13
+
14
+ const initialOptions = React.useMemo<CheckboxSelectOption[]>(
15
+ () => Options.map((o) => ({ ...o, selected: selected.includes(o.value) })),
16
+ [selected]
17
+ );
18
+
19
+ return (
20
+ <CheckboxSelect
21
+ initialOptions={initialOptions}
22
+ onSelect={(_ev, value) => {
23
+ const val = String(value);
24
+ setSelected((prevSelected) =>
25
+ prevSelected.includes(val) ? prevSelected.filter((item) => item !== val) : [...prevSelected, String(val)]
26
+ );
27
+ }}
28
+ />
29
+ );
13
30
  };
@@ -0,0 +1,35 @@
1
+ import React from 'react';
2
+ import { MultiTypeaheadSelect, MultiTypeaheadSelectOption } from '@patternfly/react-templates';
3
+
4
+ const Options = [
5
+ { content: 'Alabama', value: 'option1' },
6
+ { content: 'Arizona', value: 'option2' },
7
+ { content: 'California', value: 'option3' },
8
+ { content: 'Florida', value: 'option4' },
9
+ { content: 'Massachusetts', value: 'option5' },
10
+ { content: 'Maine', value: 'option6' },
11
+ { content: 'New Jersey', value: 'option7' },
12
+ { content: 'New Mexico', value: 'option8' },
13
+ { content: 'New York', value: 'option9' },
14
+ { content: 'North Carolina', value: 'option10' }
15
+ ];
16
+
17
+ type SelectionsType = (string | number)[];
18
+
19
+ export const MultiSelectTypeaheadDemo: React.FunctionComponent = () => {
20
+ const [selected, setSelected] = React.useState<SelectionsType>(['option5']);
21
+
22
+ const initialOptions = React.useMemo<MultiTypeaheadSelectOption[]>(
23
+ () => Options.map((o) => ({ ...o, selected: selected.includes(o.value) })),
24
+ [selected]
25
+ );
26
+
27
+ return (
28
+ <MultiTypeaheadSelect
29
+ initialOptions={initialOptions}
30
+ placeholder="Select a state"
31
+ noOptionsFoundMessage={(filter) => `No state was found for "${filter}"`}
32
+ onSelectionChange={(_ev, selections) => setSelected(selections)}
33
+ />
34
+ );
35
+ };
@@ -4,25 +4,38 @@ section: components
4
4
  subsection: menus
5
5
  template: true
6
6
  beta: true
7
- propComponents: ['SelectSimple', 'CheckboxSelect']
7
+ propComponents: ['SimpleSelect', 'CheckboxSelect', 'TypeaheadSelect']
8
8
  ---
9
9
 
10
10
  Note: Templates live in their own package at [@patternfly/react-templates](https://www.npmjs.com/package/@patternfly/react-templates)!
11
11
 
12
12
  For custom use cases, please see the select component suite from [@patternfly/react-core](https://www.npmjs.com/package/@patternfly/react-core).
13
13
 
14
- import { SelectOption, Checkbox } from '@patternfly/react-core';
15
- import { SelectSimple, CheckboxSelect } from '@patternfly/react-templates';
14
+ import { Checkbox } from '@patternfly/react-core';
15
+ import { SimpleSelect, CheckboxSelect, TypeaheadSelect, MultiTypeaheadSelect } from '@patternfly/react-templates';
16
16
 
17
17
  ## Select template examples
18
18
 
19
19
  ### Simple
20
20
 
21
- ```ts file="SelectSimpleDemo.tsx"
21
+ ```ts file="SimpleSelectDemo.tsx"
22
22
 
23
23
  ```
24
24
 
25
25
  ### Checkbox
26
26
 
27
27
  ```ts file="CheckboxSelectDemo.tsx"
28
+
29
+ ```
30
+
31
+ ### Typeahead
32
+
33
+ ```ts file="TypeaheadSelectDemo.tsx"
34
+
35
+ ```
36
+
37
+ ### Multi-Typeahead
38
+
39
+ ```ts file="MultiTypeaheadSelectDemo.tsx"
40
+
28
41
  ```
@@ -0,0 +1,36 @@
1
+ import React from 'react';
2
+ import { Checkbox } from '@patternfly/react-core';
3
+ import { SimpleSelect, SimpleSelectOption } from '@patternfly/react-templates';
4
+
5
+ const Options: SimpleSelectOption[] = [
6
+ { content: 'Option 1', value: 'Option1' },
7
+ { content: 'Option 2', value: 'Option2', description: 'Option with description' },
8
+ { content: 'Option 3', value: 'Option3' }
9
+ ];
10
+
11
+ export const SelectSimpleDemo: React.FunctionComponent = () => {
12
+ const [isDisabled, setIsDisabled] = React.useState<boolean>(false);
13
+ const [selected, setSelected] = React.useState<string | undefined>('Option1');
14
+
15
+ const initialOptions = React.useMemo<SimpleSelectOption[]>(
16
+ () => Options.map((o) => ({ ...o, selected: o.value === selected })),
17
+ [selected]
18
+ );
19
+
20
+ return (
21
+ <React.Fragment>
22
+ <Checkbox
23
+ id="toggle-disabled"
24
+ label="isDisabled"
25
+ isChecked={isDisabled}
26
+ onChange={(_event, checked) => setIsDisabled(checked)}
27
+ style={{ marginBottom: 20 }}
28
+ />
29
+ <SimpleSelect
30
+ initialOptions={initialOptions}
31
+ isDisabled={isDisabled}
32
+ onSelect={(_ev, selection) => setSelected(String(selection))}
33
+ />
34
+ </React.Fragment>
35
+ );
36
+ };
@@ -0,0 +1,35 @@
1
+ import React from 'react';
2
+ import { TypeaheadSelect, TypeaheadSelectOption } from '@patternfly/react-templates';
3
+
4
+ const Options = [
5
+ { content: 'Alabama', value: 'option1' },
6
+ { content: 'Florida', value: 'option2' },
7
+ { content: 'New Jersey', value: 'option3' },
8
+ { content: 'New Mexico', value: 'option4' },
9
+ { content: 'New York', value: 'option5' },
10
+ { content: 'North Carolina', value: 'option6' }
11
+ ];
12
+
13
+ /* eslint-disable no-console */
14
+ export const SelectTypeaheadDemo: React.FunctionComponent = () => {
15
+ const [selected, setSelected] = React.useState<string | undefined>();
16
+
17
+ const initialOptions = React.useMemo<TypeaheadSelectOption[]>(
18
+ () => Options.map((o) => ({ ...o, selected: o.value === selected })),
19
+ [selected]
20
+ );
21
+
22
+ React.useEffect(() => {
23
+ console.log(`Selected: ${selected || 'none'}`);
24
+ }, [selected]);
25
+
26
+ return (
27
+ <TypeaheadSelect
28
+ initialOptions={initialOptions}
29
+ placeholder="Select a state"
30
+ noOptionsFoundMessage={(filter) => `No state was found for "${filter}"`}
31
+ onClearSelection={() => setSelected(undefined)}
32
+ onSelect={(_ev, selection) => setSelected(String(selection))}
33
+ />
34
+ );
35
+ };
@@ -1,2 +1,4 @@
1
- export * from './SelectSimple';
1
+ export * from './SimpleSelect';
2
2
  export * from './CheckboxSelect';
3
+ export * from './TypeaheadSelect';
4
+ export * from './MultiTypeaheadSelect';
@@ -1 +1,2 @@
1
+ export * from './Dropdown';
1
2
  export * from './Select';
@@ -1 +0,0 @@
1
- {"version":3,"file":"SelectSimple.d.ts","sourceRoot":"","sources":["../../../../src/components/Select/SelectSimple.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAoC,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AAGxH,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC;IAC5E,oCAAoC;IACpC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,kCAAkC;IAClC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,qCAAqC;IACrC,cAAc,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACtC,uCAAuC;IACvC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC/F,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,qDAAqD;IACrD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,8DAA8D;IAC9D,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAqED,eAAO,MAAM,YAAY,+EAEvB,CAAC"}
@@ -1,31 +0,0 @@
1
- import { __rest } from "tslib";
2
- import React from 'react';
3
- import { Select, SelectList, SelectOption } from '@patternfly/react-core/dist/esm/components/Select';
4
- import { MenuToggle } from '@patternfly/react-core/dist/esm/components/MenuToggle';
5
- const SelectSimpleBase = (_a) => {
6
- var { innerRef, initialOptions, isDisabled, onSelect, onToggle, toggleContent, toggleWidth = '200px' } = _a, props = __rest(_a, ["innerRef", "initialOptions", "isDisabled", "onSelect", "onToggle", "toggleContent", "toggleWidth"]);
7
- const [isOpen, setIsOpen] = React.useState(false);
8
- const [selected, setSelected] = React.useState('Select a value');
9
- const simpleSelectOptions = initialOptions === null || initialOptions === void 0 ? void 0 : initialOptions.map((option) => {
10
- const { content, value } = option, props = __rest(option, ["content", "value"]);
11
- const isSelected = selected.includes(`${value}`);
12
- return (React.createElement(SelectOption, Object.assign({}, props, { value: value, key: value, isSelected: isSelected }), content));
13
- });
14
- const onToggleClick = () => {
15
- onToggle && onToggle(!isOpen);
16
- setIsOpen(!isOpen);
17
- };
18
- const _onSelect = (_event, value) => {
19
- onSelect && onSelect(_event, value);
20
- setSelected(value);
21
- setIsOpen(false);
22
- };
23
- const toggle = (toggleRef) => (React.createElement(MenuToggle, { ref: toggleRef, onClick: onToggleClick, isExpanded: isOpen, isDisabled: isDisabled, style: {
24
- width: toggleWidth
25
- } }, toggleContent ? toggleContent : selected));
26
- return (React.createElement(Select, Object.assign({ id: "single-select", isOpen: isOpen, selected: selected, onSelect: _onSelect, onOpenChange: (isOpen) => setIsOpen(isOpen), toggle: toggle, shouldFocusToggleOnSelect: true, ref: innerRef }, props),
27
- React.createElement(SelectList, null, simpleSelectOptions)));
28
- };
29
- export const SelectSimple = React.forwardRef((props, ref) => (React.createElement(SelectSimpleBase, Object.assign({}, props, { innerRef: ref }))));
30
- SelectSimple.displayName = 'SelectSimple';
31
- //# sourceMappingURL=SelectSimple.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SelectSimple.js","sourceRoot":"","sources":["../../../../src/components/Select/SelectSimple.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAqB,MAAM,mDAAmD,CAAC;AACxH,OAAO,EAAE,UAAU,EAAqB,MAAM,uDAAuD,CAAC;AA0BtG,MAAM,gBAAgB,GAA+C,CAAC,EASlD,EAAE,EAAE;QAT8C,EACpE,QAAQ,EACR,cAAc,EACd,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,WAAW,GAAG,OAAO,OAEH,EADf,KAAK,cAR4D,oGASrE,CADS;IAER,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAS,gBAAgB,CAAC,CAAC;IAEzE,MAAM,mBAAmB,GAAG,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACzD,MAAM,EAAE,OAAO,EAAE,KAAK,KAAe,MAAM,EAAhB,KAAK,UAAK,MAAM,EAArC,oBAA4B,CAAS,CAAC;QAC5C,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;QACjD,OAAO,CACL,oBAAC,YAAY,oBAAK,KAAK,IAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,KACtE,OAAO,CACK,CAChB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,QAAQ,IAAI,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;QAC9B,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,MAAyD,EAAE,KAAkC,EAAE,EAAE;QAClH,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACpC,WAAW,CAAC,KAAe,CAAC,CAAC;QAC7B,SAAS,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,SAAuC,EAAE,EAAE,CAAC,CAC1D,oBAAC,UAAU,IACT,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,UAAU,EACtB,KAAK,EACH;YACE,KAAK,EAAE,WAAW;SACI,IAGzB,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAC9B,CACd,CAAC;IAEF,OAAO,CACL,oBAAC,MAAM,kBACL,EAAE,EAAC,eAAe,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,SAAS,EACnB,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAC3C,MAAM,EAAE,MAAM,EACd,yBAAyB,QACzB,GAAG,EAAE,QAAQ,IACT,KAAK;QAET,oBAAC,UAAU,QAAE,mBAAmB,CAAc,CACvC,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,KAAwB,EAAE,GAAmB,EAAE,EAAE,CAAC,CAC9F,oBAAC,gBAAgB,oBAAK,KAAK,IAAE,QAAQ,EAAE,GAAG,IAAI,CAC/C,CAAC,CAAC;AAEH,YAAY,CAAC,WAAW,GAAG,cAAc,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SelectSimple.d.ts","sourceRoot":"","sources":["../../../../src/components/Select/SelectSimple.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAoC,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AAGxH,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC;IAC5E,oCAAoC;IACpC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,kCAAkC;IAClC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,qCAAqC;IACrC,cAAc,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACtC,uCAAuC;IACvC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC/F,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,qDAAqD;IACrD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,8DAA8D;IAC9D,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAqED,eAAO,MAAM,YAAY,+EAEvB,CAAC"}
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SelectSimple = void 0;
4
- const tslib_1 = require("tslib");
5
- const react_1 = tslib_1.__importDefault(require("react"));
6
- const Select_1 = require('@patternfly/react-core/dist/js/components/Select');
7
- const MenuToggle_1 = require('@patternfly/react-core/dist/js/components/MenuToggle');
8
- const SelectSimpleBase = (_a) => {
9
- var { innerRef, initialOptions, isDisabled, onSelect, onToggle, toggleContent, toggleWidth = '200px' } = _a, props = tslib_1.__rest(_a, ["innerRef", "initialOptions", "isDisabled", "onSelect", "onToggle", "toggleContent", "toggleWidth"]);
10
- const [isOpen, setIsOpen] = react_1.default.useState(false);
11
- const [selected, setSelected] = react_1.default.useState('Select a value');
12
- const simpleSelectOptions = initialOptions === null || initialOptions === void 0 ? void 0 : initialOptions.map((option) => {
13
- const { content, value } = option, props = tslib_1.__rest(option, ["content", "value"]);
14
- const isSelected = selected.includes(`${value}`);
15
- return (react_1.default.createElement(Select_1.SelectOption, Object.assign({}, props, { value: value, key: value, isSelected: isSelected }), content));
16
- });
17
- const onToggleClick = () => {
18
- onToggle && onToggle(!isOpen);
19
- setIsOpen(!isOpen);
20
- };
21
- const _onSelect = (_event, value) => {
22
- onSelect && onSelect(_event, value);
23
- setSelected(value);
24
- setIsOpen(false);
25
- };
26
- const toggle = (toggleRef) => (react_1.default.createElement(MenuToggle_1.MenuToggle, { ref: toggleRef, onClick: onToggleClick, isExpanded: isOpen, isDisabled: isDisabled, style: {
27
- width: toggleWidth
28
- } }, toggleContent ? toggleContent : selected));
29
- return (react_1.default.createElement(Select_1.Select, Object.assign({ id: "single-select", isOpen: isOpen, selected: selected, onSelect: _onSelect, onOpenChange: (isOpen) => setIsOpen(isOpen), toggle: toggle, shouldFocusToggleOnSelect: true, ref: innerRef }, props),
30
- react_1.default.createElement(Select_1.SelectList, null, simpleSelectOptions)));
31
- };
32
- exports.SelectSimple = react_1.default.forwardRef((props, ref) => (react_1.default.createElement(SelectSimpleBase, Object.assign({}, props, { innerRef: ref }))));
33
- exports.SelectSimple.displayName = 'SelectSimple';
34
- //# sourceMappingURL=SelectSimple.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SelectSimple.js","sourceRoot":"","sources":["../../../../src/components/Select/SelectSimple.tsx"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAC1B,6EAAwH;AACxH,qFAAsG;AA0BtG,MAAM,gBAAgB,GAA+C,CAAC,EASlD,EAAE,EAAE;QAT8C,EACpE,QAAQ,EACR,cAAc,EACd,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,WAAW,GAAG,OAAO,OAEH,EADf,KAAK,sBAR4D,oGASrE,CADS;IAER,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAS,gBAAgB,CAAC,CAAC;IAEzE,MAAM,mBAAmB,GAAG,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACzD,MAAM,EAAE,OAAO,EAAE,KAAK,KAAe,MAAM,EAAhB,KAAK,kBAAK,MAAM,EAArC,oBAA4B,CAAS,CAAC;QAC5C,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;QACjD,OAAO,CACL,8BAAC,qBAAY,oBAAK,KAAK,IAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,KACtE,OAAO,CACK,CAChB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,QAAQ,IAAI,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;QAC9B,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,MAAyD,EAAE,KAAkC,EAAE,EAAE;QAClH,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACpC,WAAW,CAAC,KAAe,CAAC,CAAC;QAC7B,SAAS,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,SAAuC,EAAE,EAAE,CAAC,CAC1D,8BAAC,uBAAU,IACT,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,UAAU,EACtB,KAAK,EACH;YACE,KAAK,EAAE,WAAW;SACI,IAGzB,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAC9B,CACd,CAAC;IAEF,OAAO,CACL,8BAAC,eAAM,kBACL,EAAE,EAAC,eAAe,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,SAAS,EACnB,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAC3C,MAAM,EAAE,MAAM,EACd,yBAAyB,QACzB,GAAG,EAAE,QAAQ,IACT,KAAK;QAET,8BAAC,mBAAU,QAAE,mBAAmB,CAAc,CACvC,CACV,CAAC;AACJ,CAAC,CAAC;AAEW,QAAA,YAAY,GAAG,eAAK,CAAC,UAAU,CAAC,CAAC,KAAwB,EAAE,GAAmB,EAAE,EAAE,CAAC,CAC9F,8BAAC,gBAAgB,oBAAK,KAAK,IAAE,QAAQ,EAAE,GAAG,IAAI,CAC/C,CAAC,CAAC;AAEH,oBAAY,CAAC,WAAW,GAAG,cAAc,CAAC"}
package/rollup.config.js DELETED
@@ -1,7 +0,0 @@
1
- const { name } = require('./package.json');
2
- const baseConfig = require('../rollup.base');
3
-
4
- module.exports = baseConfig({
5
- packageName: name.replace('@patternfly/', ''),
6
- name: 'PatternFlyTemplates'
7
- });