@@ -5,6 +5,7 @@ import '@ui5/webcomponents-icons/dist/delete.js';
55import '@ui5/webcomponents-icons/dist/edit.js' ;
66import '@ui5/webcomponents-icons/dist/settings.js' ;
77import NoDataIllustration from '@ui5/webcomponents-fiori/dist/illustrations/NoData.js' ;
8+ import NoFilterResults from '@ui5/webcomponents-fiori/dist/illustrations/NoFilterResults.js' ;
89import { useCallback , useEffect , useMemo , useReducer , useRef , useState } from 'react' ;
910import {
1011 AnalyticalTablePopinDisplay ,
@@ -29,6 +30,8 @@ import { SegmentedButtonItem } from '../../webComponents/SegmentedButtonItem/ind
2930import { Select } from '../../webComponents/Select/index.js' ;
3031import { Tag } from '../../webComponents/Tag/index.js' ;
3132import { Text } from '../../webComponents/Text/index.js' ;
33+ import type { ToggleButtonPropTypes } from '../../webComponents/ToggleButton/index.js' ;
34+ import { ToggleButton } from '../../webComponents/ToggleButton/index.js' ;
3235import { FlexBox } from '../FlexBox/index.js' ;
3336import { ObjectStatus } from '../ObjectStatus/index.js' ;
3437import type { AnalyticalTableColumnDefinition , AnalyticalTablePropTypes } from './index.js' ;
@@ -590,8 +593,34 @@ export const CustomFilter: Story = {
590593export const NoData : Story = {
591594 render ( args , context ) {
592595 const [ selected , setSelected ] = useState ( 'noData' ) ;
596+ const [ filtered , setFiltered ] = useState ( false ) ;
593597 const handleChange : SegmentedButtonPropTypes [ 'onSelectionChange' ] = ( e ) => {
594- setSelected ( e . detail . selectedItems [ 0 ] . dataset . key ) ;
598+ const { key } = e . detail . selectedItems [ 0 ] . dataset ;
599+ setSelected ( key ) ;
600+ if ( key === 'data' ) {
601+ setFiltered ( false ) ;
602+ }
603+ } ;
604+ const handleClick : ToggleButtonPropTypes [ 'onClick' ] = ( e ) => {
605+ setFiltered ( ! ! e . target . pressed ) ;
606+ } ;
607+
608+ const NoDataComponent : AnalyticalTablePropTypes [ 'NoDataComponent' ] =
609+ selected === 'noData'
610+ ? undefined
611+ : ( props ) => {
612+ return filtered ? (
613+ < IllustratedMessage role = { props . accessibleRole } name = { NoFilterResults } />
614+ ) : (
615+ < IllustratedMessage role = { props . accessibleRole } name = { NoDataIllustration } />
616+ ) ;
617+ } ;
618+
619+ const tableProps = {
620+ ...args ,
621+ data : selected === 'data' ? args . data : [ ] ,
622+ globalFilterValue : filtered ? 'Non-existing text' : undefined ,
623+ NoDataComponent : NoDataComponent ,
595624 } ;
596625
597626 return (
@@ -606,27 +635,17 @@ export const NoData: Story = {
606635 < SegmentedButtonItem selected = { selected === 'data' } data-key = "data" >
607636 With Data
608637 </ SegmentedButtonItem >
609- </ SegmentedButton >
638+ </ SegmentedButton > { ' ' }
639+ |{ ' ' }
640+ < ToggleButton onClick = { handleClick } pressed = { filtered } disabled = { selected === 'data' } >
641+ Table filtered
642+ </ ToggleButton >
610643 { context . viewMode === 'story' ? (
611- < AnalyticalTable
612- { ...args }
613- data = { selected === 'data' ? args . data : [ ] }
614- NoDataComponent = {
615- selected === 'noData' ? undefined : ( ) => < IllustratedMessage role = "gridcell" name = { NoDataIllustration } />
616- }
617- />
644+ < AnalyticalTable { ...tableProps } />
618645 ) : (
619646 < >
620647 < hr />
621- < ToggleableTable
622- { ...args }
623- data = { selected === 'data' ? args . data : [ ] }
624- NoDataComponent = {
625- selected === 'noData'
626- ? undefined
627- : ( ) => < IllustratedMessage role = "gridcell" name = { NoDataIllustration } />
628- }
629- />
648+ < ToggleableTable { ...tableProps } />
630649 </ >
631650 ) }
632651 </ >
0 commit comments