diff --git a/superset-frontend/src/explore/components/DatasourcePanel/index.tsx b/superset-frontend/src/explore/components/DatasourcePanel/index.tsx index bac9babcea..1c88fddff7 100644 --- a/superset-frontend/src/explore/components/DatasourcePanel/index.tsx +++ b/superset-frontend/src/explore/components/DatasourcePanel/index.tsx @@ -42,6 +42,18 @@ export interface Props { actions: Partial & Pick; } +const Button = styled.button` + background: none; + border: none; + text-decoration: underline; + color: ${({ theme }) => theme.colors.primary.dark1}; +`; + +const ButtonContainer = styled.div` + text-align: center; + padding-top: 2px; +`; + const DatasourceContainer = styled.div` background-color: ${({ theme }) => theme.colors.grayscale.light4}; position: relative; @@ -113,6 +125,11 @@ export default function DataSourcePanel({ columns, metrics, }); + const [showAllMetrics, setShowAllMetrics] = useState(false); + const [showAllColumns, setShowAllColumns] = useState(false); + + const DEFAULT_MAX_COLUMNS_LENGTH = 50; + const DEFAULT_MAX_METRICS_LENGTH = 50; const search = debounce((value: string) => { if (value === '') { @@ -176,8 +193,12 @@ export default function DataSourcePanel({ setInputValue(''); }, [columns, datasource, metrics]); - const metricSlice = lists.metrics.slice(0, 50); - const columnSlice = lists.columns.slice(0, 50); + const metricSlice = showAllMetrics + ? lists.metrics + : lists.metrics.slice(0, DEFAULT_MAX_COLUMNS_LENGTH); + const columnSlice = showAllColumns + ? lists.columns + : lists.columns.slice(0, DEFAULT_MAX_METRICS_LENGTH); const mainBody = ( <> @@ -219,6 +240,15 @@ export default function DataSourcePanel({ )} ))} + {lists.metrics.length > DEFAULT_MAX_METRICS_LENGTH ? ( + + + + ) : ( + <> + )} {t('Columns')}} @@ -241,6 +271,15 @@ export default function DataSourcePanel({ )} ))} + {lists.columns.length > DEFAULT_MAX_COLUMNS_LENGTH ? ( + + + + ) : ( + <> + )}