Skip to content

Commit ac27167

Browse files
authored
Merge pull request #1409 from inplayer-org/feature/show-total-items-table
Showing item entries at the bottom of the Table
2 parents 74219ad + ff1a7b0 commit ac27167

File tree

6 files changed

+110
-82
lines changed

6 files changed

+110
-82
lines changed

CHANGELOG.md

+7-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
# [2.5.26] - 21.07.2022
6+
7+
## Added
8+
9+
- Add `hasItemEntries` prop for Table component
10+
511
# [2.5.25] - 04.04.2022
612

713
## Added
@@ -132,7 +138,7 @@ All notable changes to this project will be documented in this file.
132138

133139
### Change
134140

135-
- Changes connected with logo re-branding
141+
- Changes connected with logo re-branding
136142

137143
# [2.5.6] - 09-04-2021
138144

index.d.ts

+39-33
Original file line numberDiff line numberDiff line change
@@ -122,10 +122,10 @@ export interface Event {
122122

123123
export type AnalyticsHandlerFn = (event: Record<string, any>) => void;
124124

125-
export declare const AnalyticsPage: FunctionComponent<AnalyticsPageProps>
125+
export declare const AnalyticsPage: FunctionComponent<AnalyticsPageProps>;
126126

127-
export declare const AnalyticsComponent: FunctionComponent<AnalyticsComponentProps>
128-
export interface ContainerProps extends AnalyticsProps{
127+
export declare const AnalyticsComponent: FunctionComponent<AnalyticsComponentProps>;
128+
export interface ContainerProps extends AnalyticsProps {
129129
className?: string;
130130
columns?: number | string;
131131
gap?: string;
@@ -140,14 +140,15 @@ export interface ContainerProps extends AnalyticsProps{
140140
alignContent?: string;
141141
}
142142

143-
declare type TrackParams = Pick<Event, 'event' | 'type' | 'tag'> & Partial<Pick<Event, 'pages' | 'merchantId' | 'ip'>>;
143+
declare type TrackParams = Pick<Event, 'event' | 'type' | 'tag'> &
144+
Partial<Pick<Event, 'pages' | 'merchantId' | 'ip'>>;
144145

145146
export declare const useAnalytics: () => {
146147
track: (trackParams: TrackParams) => void;
147148
trackCallback: (trackParams: TrackParams) => () => void;
148149
};
149150

150-
export interface CellProps extends AnalyticsProps{
151+
export interface CellProps extends AnalyticsProps {
151152
className?: string;
152153
width?: number;
153154
height?: number;
@@ -165,7 +166,7 @@ interface IGrid {
165166

166167
export declare const Grid: IGrid;
167168

168-
export interface CheckboxProps extends AnalyticsProps{
169+
export interface CheckboxProps extends AnalyticsProps {
169170
label: string;
170171
id: string;
171172
name?: string;
@@ -187,7 +188,7 @@ export interface MenuItem {
187188
smallSize?: boolean;
188189
}
189190

190-
export interface ModalProps extends AnalyticsProps{
191+
export interface ModalProps extends AnalyticsProps {
191192
isModalOpen: boolean;
192193
closeModal: () => any;
193194
children: ReactNode;
@@ -200,15 +201,15 @@ export declare const Modal: FunctionComponent<ModalProps>;
200201

201202
export type NoteType = 'informative' | 'success' | 'warning' | 'danger';
202203

203-
export interface NoteProps extends AnalyticsProps{
204+
export interface NoteProps extends AnalyticsProps {
204205
title: string;
205206
text: string;
206207
type: NoteType;
207208
}
208209

209210
export declare const Note: FunctionComponent<NoteProps>;
210211

211-
export interface RadioProps extends AnalyticsProps{
212+
export interface RadioProps extends AnalyticsProps {
212213
label: string;
213214
id: string;
214215
name?: string;
@@ -279,7 +280,7 @@ interface TableButtonProps extends AnalyticsProps {
279280
type: string;
280281
}
281282

282-
export interface TableProps<TableData extends TableRowData = TableRowData> extends AnalyticsProps{
283+
export interface TableProps<TableData extends TableRowData = TableRowData> extends AnalyticsProps {
283284
columns: Array<TableColumn<TableData>>;
284285
data: Array<TableData>;
285286
showLoader?: boolean;
@@ -290,6 +291,8 @@ export interface TableProps<TableData extends TableRowData = TableRowData> exten
290291
tableButton?: Array<TableButtonProps>;
291292
actionsRowTitle?: string;
292293
editableById?: string;
294+
hasItemEntries?: boolean;
295+
totalItems?: number;
293296
}
294297

295298
interface TableState {
@@ -310,7 +313,7 @@ export declare class Table<TableData extends TableRowData> extends Component<
310313
renderColumns: (data: Array<TableColumn<TableData>>) => ReactNodeArray;
311314
renderRows: (data: Array<TableData>) => ReactNodeArray;
312315
}
313-
interface NavigationTab extends AnalyticsProps{
316+
interface NavigationTab extends AnalyticsProps {
314317
title: string;
315318
}
316319

@@ -320,7 +323,10 @@ export interface TabContentProps {
320323
iconModifiers?: Array<string>;
321324
}
322325

323-
export interface TabNavigationProps<T> extends DivHTMLAttributes<HTMLDivElement>, TabContentProps, AnalyticsProps {
326+
export interface TabNavigationProps<T>
327+
extends DivHTMLAttributes<HTMLDivElement>,
328+
TabContentProps,
329+
AnalyticsProps {
324330
tabs: Array<NavigationTab>;
325331
onTabClick: (index: number) => any;
326332
selectedTabIndex: number;
@@ -334,7 +340,7 @@ interface TabInfo {
334340
name: string;
335341
}
336342

337-
interface TabsProps extends AnalyticsProps{
343+
interface TabsProps extends AnalyticsProps {
338344
tabs: Array<TabInfo>;
339345
selectedTabIndex: number;
340346
onTabClick: (index: number) => void;
@@ -348,7 +354,7 @@ export interface ActionButtonRenderProps {
348354
closeAccordion: (e?: SyntheticEvent<*>) => void;
349355
}
350356

351-
export interface AccordionPanel extends AnalyticsProps{
357+
export interface AccordionPanel extends AnalyticsProps {
352358
label: string;
353359
icon?: ReactNode;
354360
iconTooltip?: TooltipProps;
@@ -397,7 +403,8 @@ export type ButtonModifier =
397403

398404
export interface ButtonProps<T>
399405
extends ButtonHTMLAttributes<HTMLButtonElement>,
400-
ButtonContentProps, AnalyticsProps {
406+
ButtonContentProps,
407+
AnalyticsProps {
401408
buttonModifiers?: Array<ButtonModifier>;
402409
size?: ButtonSize;
403410
style?: CSSProperties;
@@ -409,7 +416,7 @@ export interface ButtonProps<T>
409416

410417
export declare class Button<T = {}> extends Component<T & ButtonProps<T>> {}
411418

412-
export interface CardProps extends AnalyticsProps{
419+
export interface CardProps extends AnalyticsProps {
413420
title?: string;
414421
titleVariant?: string;
415422
className?: string;
@@ -427,7 +434,7 @@ export type DayPicker$OnDateChange = (values: DayPicker$OnDateChange$Arguments)
427434

428435
export type DayPicker$OnFocusChange = (focusedInput: boolean) => any;
429436

430-
export interface DayPickerProps extends AnalyticsProps{
437+
export interface DayPickerProps extends AnalyticsProps {
431438
isOutsideRange?: (day: number) => any;
432439
onDateChange: (date: Moment) => any;
433440
onFocusChange: (focused: any) => any;
@@ -504,12 +511,12 @@ export declare class DatePicker extends Component<DatePickerProps, DatePickerSta
504511
renderDatePresets: () => ReactNode;
505512
}
506513

507-
export interface Option extends AnalyticsProps{
514+
export interface Option extends AnalyticsProps {
508515
value: string;
509516
displayName: string;
510517
}
511518

512-
export interface DefaultOption extends AnalyticsProps{
519+
export interface DefaultOption extends AnalyticsProps {
513520
displayName: string;
514521
disabled?: boolean;
515522
}
@@ -534,29 +541,28 @@ export interface DropdownProps extends AllHTMLAttributes<HTMLSelectElement>, Ana
534541

535542
export declare const Dropdown: FunctionComponent<DropdownProps>;
536543

537-
export interface DrawerProps extends AnalyticsProps{
544+
export interface DrawerProps extends AnalyticsProps {
538545
handleClose: () => void;
539546
isOpen: boolean;
540547
width?: string;
541548
}
542549

543550
export declare const Drawer: FunctionComponent<DrawerProps>;
544551

545-
546552
export type LabelModifier =
547553
| 'fontSizeExtraSmall'
548554
| 'fontSizeSmall'
549555
| 'fontSizeMedium'
550556
| 'fontSizeLarge';
551557

552-
export interface LabelProps extends AnalyticsProps{
558+
export interface LabelProps extends AnalyticsProps {
553559
disabled?: boolean;
554560
modifiers?: Array<LabelModifier>;
555561
}
556562

557563
export declare const Label: StyledComponent<'label', Theme, LabelProps>;
558564

559-
export interface LoaderProps extends AnalyticsProps{
565+
export interface LoaderProps extends AnalyticsProps {
560566
height?: number;
561567
width?: number;
562568
color?: string;
@@ -568,7 +574,7 @@ export declare const Loader: StyledComponent<'div', Theme, LoaderProps>;
568574

569575
export type NotificationVariant = 'success' | 'danger' | 'warning';
570576

571-
interface NotificationProps extends AnalyticsProps{
577+
interface NotificationProps extends AnalyticsProps {
572578
title: string;
573579
content: string;
574580
variant?: NotificationVariant;
@@ -586,7 +592,7 @@ interface INotification extends FunctionComponent<NotificationProps> {
586592

587593
export declare const Notification: INotification;
588594

589-
export interface PaginationProps extends AnalyticsProps{
595+
export interface PaginationProps extends AnalyticsProps {
590596
onPageChange: (pageNumber: number) => any;
591597
totalItems: number;
592598
startPage?: number;
@@ -600,7 +606,7 @@ export type PillLabelModifier = 'primary' | 'info' | 'success' | 'danger' | 'war
600606

601607
export type PillLabelSize = 'xs' | 'sm' | 'md' | 'lg';
602608

603-
interface PillLabelProps extends AnalyticsProps{
609+
interface PillLabelProps extends AnalyticsProps {
604610
modifiers?: Array<PillLabelModifier>;
605611
size?: PillLabelSize;
606612
}
@@ -609,7 +615,7 @@ export declare const PillLabel: StyledComponent<'span', Theme, PillLabelProps>;
609615

610616
export type ProgressType = 'circle' | 'line';
611617

612-
export interface ProgressProps extends AnalyticsProps{
618+
export interface ProgressProps extends AnalyticsProps {
613619
type?: ProgressType;
614620
strokeWidth?: number;
615621
strokeColor?: string;
@@ -626,7 +632,7 @@ export interface ProgressProps extends AnalyticsProps{
626632

627633
export declare const Progress: FunctionComponent<ProgressProps>;
628634

629-
export interface SwitchProps extends AnalyticsProps{
635+
export interface SwitchProps extends AnalyticsProps {
630636
checked: boolean;
631637
disabled?: boolean;
632638
id: string;
@@ -666,7 +672,7 @@ export interface TypographyProps {
666672

667673
export declare const Typography: FunctionComponent<TypographyProps>;
668674

669-
export interface Theme extends AnalyticsProps{
675+
export interface Theme extends AnalyticsProps {
670676
palette: {
671677
primary: {
672678
main: string;
@@ -768,7 +774,7 @@ interface IColors {
768774
emerald: '#2ecc71';
769775
peterRiver: '#3498db';
770776
amethyst: '#9b59b6';
771-
asphalt: '#282c35',
777+
asphalt: '#282c35';
772778
wetAsphalt: '#34495e';
773779
greenSea: '#16a085';
774780
nephritis: '#27ae60';
@@ -795,7 +801,7 @@ export type FadeEasing = 'linear' | 'ease' | 'ease-in' | 'ease-out' | 'ease-in-o
795801

796802
export type TooltipBehavior = 'hover' | 'click' | 'ref';
797803

798-
export interface TooltipProps extends AnalyticsProps{
804+
export interface TooltipProps extends AnalyticsProps {
799805
behavior?: TooltipBehavior;
800806
durationOnClick?: number;
801807
arrowWidth?: number;
@@ -830,13 +836,13 @@ export declare class Tooltip extends Component<TooltipProps, TooltipState> {
830836

831837
type TransitionVariant = 'fadeInLeft' | 'fadeInRight' | 'fadeOutLeft' | 'fadeOutRight';
832838

833-
export interface Step extends AnalyticsProps{
839+
export interface Step extends AnalyticsProps {
834840
isDisabled: boolean;
835841
isCompleted: boolean;
836842
component: ReactNode;
837843
}
838844

839-
interface StepWizardProps extends AnalyticsProps{
845+
interface StepWizardProps extends AnalyticsProps {
840846
steps: Array<Step>;
841847
activeStep: number;
842848
className?: string;

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@inplayer-org/inplayer-ui",
33
"sideEffects": false,
4-
"version": "2.5.25",
4+
"version": "2.5.26",
55
"author": "InPlayer",
66
"description": "InPlayer React UI Components",
77
"main": "dist/inplayer-ui.cjs.js",

src/components/Table/Table.tsx

+11
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import {
3232
StyledIcon,
3333
StyledForm,
3434
FormWrapper,
35+
ItemEntriesTypography,
3536
} from './styled';
3637

3738
interface Data {
@@ -110,6 +111,8 @@ type Props<T = Data> = {
110111
tableButton?: Array<TableButtonProps>;
111112
actionsRowTitle?: string;
112113
editableId?: string;
114+
hasItemEntries?: boolean;
115+
totalItems?: number;
113116
} & AnalyticsProps;
114117

115118
type State = {
@@ -140,6 +143,7 @@ class Table<T> extends Component<Props<T>, State> {
140143
renderEmptyTable: false,
141144
tableButton: [],
142145
actionsRowTitle: 'Actions',
146+
hasItemEntries: false,
143147
};
144148

145149
state: State = {
@@ -403,6 +407,8 @@ class Table<T> extends Component<Props<T>, State> {
403407
showLoader,
404408
renderEmptyTable,
405409
tableButton,
410+
hasItemEntries,
411+
totalItems,
406412
options: { headerSection },
407413
} = this.props;
408414

@@ -448,6 +454,11 @@ class Table<T> extends Component<Props<T>, State> {
448454
</ButtonTableRow>
449455
))}
450456
</tfoot>
457+
{hasItemEntries && (
458+
<ItemEntriesTypography>
459+
Showing 1 - {totalItems} of {totalItems} items
460+
</ItemEntriesTypography>
461+
)}
451462
</TableWrapper>
452463
);
453464
};

src/components/Table/styled.ts

+6
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,11 @@ export const StyledReactIcon = styled(IoIosCheckmark)<StyledReactIconProps>`
153153
cursor: pointer;
154154
`;
155155

156+
const ItemEntriesTypography = styled.p`
157+
color: #475467;
158+
padding: 12px 32px;
159+
`;
160+
156161
export {
157162
TableWithHeaderSectionContainer,
158163
TableWrapper,
@@ -166,4 +171,5 @@ export {
166171
TableButton,
167172
StyledForm,
168173
FormWrapper,
174+
ItemEntriesTypography,
169175
};

0 commit comments

Comments
 (0)