From 6b781b7c12ffc34ff2664b260ddf49188a54303c Mon Sep 17 00:00:00 2001 From: Talha12Shiekh Date: Mon, 3 Aug 2026 23:29:59 +0500 Subject: [PATCH] feat(web): add showOnlyOneOption prop to list and dropdown list components --- packages/web/src/components/list/MultiDropdownList.d.ts | 1 + packages/web/src/components/list/MultiDropdownList.js | 6 ++++++ packages/web/src/components/list/MultiList.d.ts | 1 + packages/web/src/components/list/MultiList.js | 6 ++++++ packages/web/src/components/list/SingleDropdownList.d.ts | 1 + packages/web/src/components/list/SingleDropdownList.js | 6 ++++++ packages/web/src/components/list/SingleList.d.ts | 1 + packages/web/src/components/list/SingleList.js | 6 ++++++ 8 files changed, 28 insertions(+) diff --git a/packages/web/src/components/list/MultiDropdownList.d.ts b/packages/web/src/components/list/MultiDropdownList.d.ts index b389841e34..91ac683e88 100644 --- a/packages/web/src/components/list/MultiDropdownList.d.ts +++ b/packages/web/src/components/list/MultiDropdownList.d.ts @@ -44,6 +44,7 @@ export interface MultiDropdownList extends CommonProps { preferencesPath?: string; showClear?: boolean; endpoint?: types.endpointConfig; + showOnlyOneOption?: boolean; } declare const MultiDropdownList: React.ComponentClass; diff --git a/packages/web/src/components/list/MultiDropdownList.js b/packages/web/src/components/list/MultiDropdownList.js index bce5b7fac8..a86ca0a23f 100644 --- a/packages/web/src/components/list/MultiDropdownList.js +++ b/packages/web/src/components/list/MultiDropdownList.js @@ -373,6 +373,10 @@ class MultiDropdownList extends Component { return isFunction(renderError) ? renderError(error) : renderError; } + if (this.state.options && this.state.options.length <= 1 && !this.props.showOnlyOneOption) { + return null; + } + if (!this.hasCustomRenderer && this.state.options.length === 0) { if (this.props.renderNoResults && !this.props.isLoading) { return this.props.renderNoResults(); @@ -494,6 +498,7 @@ MultiDropdownList.propTypes = { showClear: types.bool, isOpen: types.bool, endpoint: types.endpoint, + showOnlyOneOption: types.bool, }; MultiDropdownList.defaultProps = { @@ -513,6 +518,7 @@ MultiDropdownList.defaultProps = { showLoadMore: false, loadMoreLabel: 'Load More', isOpen: false, + showOnlyOneOption: true, }; // Add componentType for SSR diff --git a/packages/web/src/components/list/MultiList.d.ts b/packages/web/src/components/list/MultiList.d.ts index 8f20086786..0648aba1bf 100644 --- a/packages/web/src/components/list/MultiList.d.ts +++ b/packages/web/src/components/list/MultiList.d.ts @@ -42,6 +42,7 @@ export interface MultiList extends CommonProps { index?: string; preferencesPath?: string; endpoint?: types.endpointConfig; + showOnlyOneOption?: boolean; } declare const MultiList: React.ComponentClass; diff --git a/packages/web/src/components/list/MultiList.js b/packages/web/src/components/list/MultiList.js index 9a933ddbb8..8828b2fc80 100644 --- a/packages/web/src/components/list/MultiList.js +++ b/packages/web/src/components/list/MultiList.js @@ -481,6 +481,10 @@ class MultiList extends Component { return isFunction(renderError) ? renderError(error) : renderError; } + if (this.state.options && this.state.options.length <= 1 && !this.props.showOnlyOneOption) { + return null; + } + if (!this.hasCustomRenderer && this.state.options && this.state.options.length === 0) { return this.props.renderNoResults ? this.props.renderNoResults() : null; } @@ -661,6 +665,7 @@ MultiList.propTypes = { loadMoreLabel: types.title, index: types.string, endpoint: types.endpoint, + showOnlyOneOption: types.bool, }; MultiList.defaultProps = { @@ -678,6 +683,7 @@ MultiList.defaultProps = { missingLabel: 'N/A', showLoadMore: false, loadMoreLabel: 'Load More', + showOnlyOneOption: true, }; // Add componentType for SSR diff --git a/packages/web/src/components/list/SingleDropdownList.d.ts b/packages/web/src/components/list/SingleDropdownList.d.ts index 9a0ae6dfed..6ce282864b 100644 --- a/packages/web/src/components/list/SingleDropdownList.d.ts +++ b/packages/web/src/components/list/SingleDropdownList.d.ts @@ -42,6 +42,7 @@ export interface SingleDropdownList extends CommonProps { preferencesPath?: string; showClear?: boolean; endpoint?: types.endpointConfig; + showOnlyOneOption?: boolean; } declare const SingleDropdownList: React.ComponentClass; diff --git a/packages/web/src/components/list/SingleDropdownList.js b/packages/web/src/components/list/SingleDropdownList.js index 02d1002245..a0f153e766 100644 --- a/packages/web/src/components/list/SingleDropdownList.js +++ b/packages/web/src/components/list/SingleDropdownList.js @@ -282,6 +282,10 @@ class SingleDropdownList extends Component { return isFunction(renderError) ? renderError(error) : renderError; } + if (this.state.options && this.state.options.length <= 1 && !this.props.showOnlyOneOption) { + return null; + } + if (!this.hasCustomRenderer && this.state.options.length === 0) { if (this.props.renderNoResults && !this.props.isLoading) { return this.props.renderNoResults(); @@ -402,6 +406,7 @@ SingleDropdownList.propTypes = { showClear: types.bool, isOpen: types.bool, endpoint: types.endpoint, + showOnlyOneOption: types.bool, }; SingleDropdownList.defaultProps = { @@ -420,6 +425,7 @@ SingleDropdownList.defaultProps = { showLoadMore: false, loadMoreLabel: 'Load More', isOpen: false, + showOnlyOneOption: true, }; // Add componentType for SSR diff --git a/packages/web/src/components/list/SingleList.d.ts b/packages/web/src/components/list/SingleList.d.ts index cc443dea35..38db34a29d 100644 --- a/packages/web/src/components/list/SingleList.d.ts +++ b/packages/web/src/components/list/SingleList.d.ts @@ -42,6 +42,7 @@ export interface SingleList extends CommonProps { preferencesPath?: string; enableStrictSelection?: boolean; endpoint?: types.endpointConfig; + showOnlyOneOption?: boolean; } declare const SingleList: React.ComponentClass; diff --git a/packages/web/src/components/list/SingleList.js b/packages/web/src/components/list/SingleList.js index 6ad88fd8c5..1c2f1c6232 100644 --- a/packages/web/src/components/list/SingleList.js +++ b/packages/web/src/components/list/SingleList.js @@ -375,6 +375,10 @@ class SingleList extends Component { return isFunction(renderError) ? renderError(error) : renderError; } + if (this.state.options && this.state.options.length <= 1 && !this.props.showOnlyOneOption) { + return null; + } + if (!this.hasCustomRenderer && this.state.options.length === 0) { if (this.props.renderNoResults && !this.props.isLoading) { return this.props.renderNoResults(); @@ -552,6 +556,7 @@ SingleList.propTypes = { index: types.string, enableStrictSelection: types.bool, endpoint: types.endpoint, + showOnlyOneOption: types.bool, }; SingleList.defaultProps = { @@ -570,6 +575,7 @@ SingleList.defaultProps = { showLoadMore: false, loadMoreLabel: 'Load More', enableStrictSelection: false, + showOnlyOneOption: true, }; // Add componentType for SSR