Skip to content

Commit 11020ff

Browse files
committed
Fixed dropdown rendering.
1 parent 70f252f commit 11020ff

File tree

5 files changed

+51
-34
lines changed

5 files changed

+51
-34
lines changed

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-basics",
3-
"version": "0.121.0",
3+
"version": "0.122.0",
44
"description": "Everyday components for React",
55
"license": "MIT",
66
"repository": {
@@ -124,7 +124,7 @@
124124
"rollup": "^2.79.0",
125125
"rollup-plugin-delete": "^2.0.0",
126126
"rollup-plugin-dts": "^5.1.1",
127-
"rollup-plugin-esbuild": "^5.0.0",
127+
"rollup-plugin-esbuild": "^6.1.0",
128128
"rollup-plugin-postcss": "^4.0.2",
129129
"storybook": "7.0.18",
130130
"storybook-css-modules": "^1.0.8",

src/components/input/Dropdown.tsx

+3-5
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,8 @@ function Dropdown(props: DropdownProps, ref: Ref<HTMLInputElement>) {
8686
autoFocus={true}
8787
/>
8888
)}
89-
{isLoading ? (
90-
<Loading className={styles.loading} icon="dots" position="center" />
91-
) : items?.length ? (
89+
{isLoading && <Loading className={styles.loading} icon="dots" position="center" />}
90+
{!isLoading && (
9291
<Menu
9392
{...menuProps}
9493
items={items}
@@ -97,9 +96,8 @@ function Dropdown(props: DropdownProps, ref: Ref<HTMLInputElement>) {
9796
>
9897
{children}
9998
</Menu>
100-
) : (
101-
renderEmpty?.(search)
10299
)}
100+
{!isLoading && search && items?.length === 0 && renderEmpty?.(search)}
103101
</div>
104102
);
105103
}}

src/components/utils.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ export function renderChildren(
6565
handler: (child: ReactElement, index: number) => object | undefined,
6666
options?: { validChildren?: any[]; onlyRenderValid?: boolean },
6767
): ReactNode {
68-
if (typeof children === 'function' && items) {
68+
if (typeof children === 'function' && items?.length > 0) {
6969
return cloneChildren(items.map(children), handler, options);
7070
}
7171

src/stories/Dropdown.stories.tsx

+20-2
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,17 @@ const Template: StoryFn<typeof Dropdown> = args => {
1919
const [selected, setSelected] = useState<any>(value);
2020
const [search, setSearch] = useState('');
2121

22-
const renderValue = v => items?.find(e => e.value === v)?.label;
22+
const renderValue = (value: string) => {
23+
console.log({ value });
24+
return items?.find(e => e.value === value)?.label;
25+
};
2326

2427
const filteredItems = search
2528
? items?.filter(({ label }) => label.toLowerCase().includes(search.toLowerCase()))
2629
: items;
2730

31+
console.log({ selected });
32+
2833
return (
2934
<div style={{ width: 200 }}>
3035
<Dropdown
@@ -33,7 +38,7 @@ const Template: StoryFn<typeof Dropdown> = args => {
3338
renderValue={renderValue}
3439
name="dropdown"
3540
value={selected}
36-
onSelect={setSelected}
41+
onChange={setSelected}
3742
onSearch={setSearch}
3843
renderEmpty={() => <div style={{ textAlign: 'center', padding: 20 }}>No results.</div>}
3944
/>
@@ -56,6 +61,19 @@ export const Preselect = makeStory(Template, {
5661
},
5762
});
5863

64+
export const NoItemsProp = makeStory(Template, {
65+
args: {
66+
items,
67+
children: (
68+
<>
69+
<Item key="one">One</Item>
70+
<Item key="two">Two</Item>
71+
<Item key="three">Three</Item>
72+
</>
73+
),
74+
},
75+
});
76+
5977
export const WithSearch = makeStory(Template, {
6078
args: {
6179
items,

yarn.lock

+25-24
Original file line numberDiff line numberDiff line change
@@ -2315,7 +2315,7 @@
23152315
estree-walker "^2.0.1"
23162316
picomatch "^2.2.2"
23172317

2318-
"@rollup/pluginutils@^5.0.0":
2318+
"@rollup/pluginutils@^5.0.0", "@rollup/pluginutils@^5.0.5":
23192319
version "5.1.0"
23202320
resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0"
23212321
integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==
@@ -6057,16 +6057,16 @@ es-get-iterator@^1.1.2:
60576057
is-string "^1.0.5"
60586058
isarray "^2.0.5"
60596059

6060-
es-module-lexer@^1.0.5:
6061-
version "1.1.0"
6062-
resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.1.0.tgz"
6063-
integrity sha512-fJg+1tiyEeS8figV+fPcPpm8WqJEflG3yPU0NOm5xMvrNkuiy7HzX/Ljng4Y0hAoiw4/3hQTCFYw+ub8+a2pRA==
6064-
60656060
es-module-lexer@^1.2.1:
60666061
version "1.2.1"
60676062
resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz"
60686063
integrity sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==
60696064

6065+
es-module-lexer@^1.3.1:
6066+
version "1.4.1"
6067+
resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.4.1.tgz#41ea21b43908fe6a287ffcbe4300f790555331f5"
6068+
integrity sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==
6069+
60706070
es-shim-unscopables@^1.0.0:
60716071
version "1.0.0"
60726072
resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz"
@@ -6990,6 +6990,13 @@ get-symbol-description@^1.0.0:
69906990
call-bind "^1.0.2"
69916991
get-intrinsic "^1.1.1"
69926992

6993+
get-tsconfig@^4.7.2:
6994+
version "4.7.2"
6995+
resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.2.tgz#0dcd6fb330391d46332f4c6c1bf89a6514c2ddce"
6996+
integrity sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==
6997+
dependencies:
6998+
resolve-pkg-maps "^1.0.0"
6999+
69937000
gh-pages@^3.2.3:
69947001
version "3.2.3"
69957002
resolved "https://registry.npmjs.org/gh-pages/-/gh-pages-3.2.3.tgz"
@@ -8456,11 +8463,6 @@ jest@^27.2.4:
84568463
import-local "^3.0.2"
84578464
jest-cli "^27.5.1"
84588465

8459-
joycon@^3.1.1:
8460-
version "3.1.1"
8461-
resolved "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz"
8462-
integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==
8463-
84648466
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
84658467
version "4.0.0"
84668468
resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz"
@@ -8579,11 +8581,6 @@ json5@^2.1.2, json5@^2.2.2, json5@^2.2.3:
85798581
resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz"
85808582
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
85818583

8582-
jsonc-parser@^3.2.0:
8583-
version "3.2.0"
8584-
resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz"
8585-
integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==
8586-
85878584
jsonfile@^4.0.0:
85888585
version "4.0.0"
85898586
resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz"
@@ -11257,6 +11254,11 @@ resolve-from@^5.0.0:
1125711254
resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz"
1125811255
integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
1125911256

11257+
resolve-pkg-maps@^1.0.0:
11258+
version "1.0.0"
11259+
resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f"
11260+
integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==
11261+
1126011262
resolve.exports@^1.1.0:
1126111263
version "1.1.0"
1126211264
resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz"
@@ -11344,16 +11346,15 @@ rollup-plugin-dts@^5.1.1:
1134411346
optionalDependencies:
1134511347
"@babel/code-frame" "^7.18.6"
1134611348

11347-
rollup-plugin-esbuild@^5.0.0:
11348-
version "5.0.0"
11349-
resolved "https://registry.npmjs.org/rollup-plugin-esbuild/-/rollup-plugin-esbuild-5.0.0.tgz"
11350-
integrity sha512-1cRIOHAPh8WQgdQQyyvFdeOdxuiyk+zB5zJ5+YOwrZP4cJ0MT3Fs48pQxrZeyZHcn+klFherytILVfE4aYrneg==
11349+
rollup-plugin-esbuild@^6.1.0:
11350+
version "6.1.0"
11351+
resolved "https://registry.yarnpkg.com/rollup-plugin-esbuild/-/rollup-plugin-esbuild-6.1.0.tgz#966d297fe9edea3e6ba5dfd8ca3208825c82d7ce"
11352+
integrity sha512-HPpXU65V8bSpW8eSYPahtUJaJHmbxJGybuf/M8B3bz/6i11YaYHlNNJIQ38gSEV0FyohQOgVxJ2YMEEZtEmwvA==
1135111353
dependencies:
11352-
"@rollup/pluginutils" "^5.0.1"
11354+
"@rollup/pluginutils" "^5.0.5"
1135311355
debug "^4.3.4"
11354-
es-module-lexer "^1.0.5"
11355-
joycon "^3.1.1"
11356-
jsonc-parser "^3.2.0"
11356+
es-module-lexer "^1.3.1"
11357+
get-tsconfig "^4.7.2"
1135711358

1135811359
rollup-plugin-postcss@^4.0.2:
1135911360
version "4.0.2"

0 commit comments

Comments
 (0)