Skip to content

Commit c0c2921

Browse files
committed
Added filter actions to detailed list (sheet)
1 parent 4754e1b commit c0c2921

File tree

4 files changed

+36
-0
lines changed

4 files changed

+36
-0
lines changed

example/src/main.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,17 @@ export const createMynahUI = (initialData?: MynahUIDataModel): MynahUI => {
179179
}]
180180
},
181181
list: [],
182+
filterActions: [
183+
{
184+
id: 'cancel-mcp',
185+
text: 'Cancel',
186+
},
187+
{
188+
id: 'save-mcp',
189+
text: 'Save',
190+
status: 'primary'
191+
}
192+
],
182193
filterOptions: [
183194
{
184195
type: 'select',

src/components/detailed-list/detailed-list.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export class DetailedListWrapper {
2323
render: ExtendedHTMLElement;
2424
private readonly detailedListItemGroupsContainer: ExtendedHTMLElement;
2525
private readonly filtersContainer: ExtendedHTMLElement;
26+
private readonly filterActionsContainer: ExtendedHTMLElement;
2627
private readonly headerContainer: ExtendedHTMLElement;
2728
private readonly props: DetailedListWrapperProps;
2829
private detailedListItemsBlockData: Array<{
@@ -44,6 +45,11 @@ export class DetailedListWrapper {
4445
classNames: [ 'mynah-detailed-list-filters-wrapper' ],
4546
children: this.getFilters()
4647
});
48+
this.filterActionsContainer = DomBuilder.getInstance().build({
49+
type: 'div',
50+
classNames: [ 'mynah-detailed-list-filter-actions-wrapper' ],
51+
children: this.getFilterActions()
52+
});
4753
this.detailedListItemGroupsContainer = DomBuilder.getInstance().build({
4854
type: 'div',
4955
classNames: [ 'mynah-detailed-list-item-groups-wrapper' ],
@@ -78,6 +84,7 @@ export class DetailedListWrapper {
7884
this.headerContainer,
7985
this.filtersContainer,
8086
this.detailedListItemGroupsContainer,
87+
this.filterActionsContainer
8188
]
8289
});
8390
}
@@ -106,6 +113,13 @@ export class DetailedListWrapper {
106113
return [ '' ];
107114
};
108115

116+
private readonly getFilterActions = (): ExtendedHTMLElement[] => {
117+
return [ new ChatItemButtonsWrapper({
118+
buttons: this.props.detailedList.filterActions ?? [],
119+
// onActionClick: this.props.onActionClick ?? ((action) => {}),
120+
}).render ];
121+
};
122+
109123
private readonly getDetailedListItemGroups = (): Array<ExtendedHTMLElement | string> => {
110124
const groups = this.props.detailedList.list?.map((detailedListGroup: DetailedListItemGroup) => {
111125
return DomBuilder.getInstance().build({
@@ -228,6 +242,13 @@ export class DetailedListWrapper {
228242
});
229243
}
230244

245+
if (detailedList.filterActions != null) {
246+
this.props.detailedList.filterActions = detailedList.filterActions;
247+
this.filterActionsContainer.update({
248+
children: this.getFilterActions()
249+
});
250+
}
251+
231252
if (detailedList.list != null) {
232253
this.detailedListItemsBlockData = [];
233254
this.detailedListItemGroupsContainer.clear();

src/static.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,7 @@ export enum ChatItemType {
257257

258258
export interface DetailedList {
259259
filterOptions?: FilterOption[] | null;
260+
filterActions?: ChatItemButton[];
260261
list?: DetailedListItemGroup[];
261262
header?: {
262263
title?: string;

src/styles/components/_detailed-list.scss

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@
4141
gap: var(--mynah-sizing-3);
4242
}
4343
}
44+
> .mynah-detailed-list-filter-actions-wrapper {
45+
align-self: flex-end;
46+
}
4447
> .mynah-detailed-list-item-groups-wrapper {
4548
flex: 1;
4649
display: flex;

0 commit comments

Comments
 (0)