Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
77ea81b
refactor: improve actions visibility in List component
akanshaaa19 Nov 26, 2025
dcfe1b0
remove unused 'insideMore' property from action items in multiple lists
akanshaaa19 Nov 26, 2025
846963f
refactor: update test cases to use data-testid for action buttons
akanshaaa19 Nov 26, 2025
03b6d3c
fix: trigger listing page
priyanshu6238 Nov 26, 2025
2f2904f
fix: trigger page
priyanshu6238 Nov 26, 2025
80a2169
refactor: update data-testid attributes for copy and edit icons in Fl…
akanshaaa19 Nov 26, 2025
b20586d
fix: deep scan
priyanshu6238 Nov 26, 2025
d126ac1
chore: checkout bug_bash_1126 branch in cypress testing setup
akanshaaa19 Nov 26, 2025
c171048
refactor: remove unused 'screen' import from TriggerList test file
akanshaaa19 Nov 26, 2025
d0eb795
Merge branch 'master' of github.com:glific/glific-frontend into enhan…
akanshaaa19 Nov 26, 2025
94ce9dd
Merge branch 'master' into refactor/trigger_page
priyanshu6238 Nov 26, 2025
6c7112d
Merge remote-tracking branch 'origin/enhancement/list-component' into…
priyanshu6238 Nov 26, 2025
bd6f252
refactor: trigger listing page
priyanshu6238 Nov 26, 2025
af68a66
fix: deep scan
priyanshu6238 Nov 26, 2025
cba1a75
fix: add test case
priyanshu6238 Nov 26, 2025
464f37d
fix: naming
priyanshu6238 Nov 26, 2025
5cf0ac4
fix: route
priyanshu6238 Nov 26, 2025
9c99802
Merge remote-tracking branch 'origin/bug_bash_1125' into refactor/tri…
priyanshu6238 Nov 26, 2025
c5565f2
fix: label
priyanshu6238 Nov 27, 2025
4331402
fix: naming
priyanshu6238 Nov 27, 2025
3ab3d90
fix: header naming
priyanshu6238 Nov 27, 2025
8847273
fix: description
priyanshu6238 Nov 27, 2025
4f856c4
refactor: add back button
priyanshu6238 Nov 27, 2025
e467738
fix: test case
priyanshu6238 Nov 27, 2025
b91d4fc
FIx: add props to trigger
priyanshu6238 Nov 27, 2025
beeb873
fix: back button
priyanshu6238 Nov 27, 2025
87b1b1f
fix: Remove save when it is in editing mode
priyanshu6238 Nov 27, 2025
a348cbd
fix: remove save button from hsm page
priyanshu6238 Nov 27, 2025
eb47434
Merge remote-tracking branch 'origin/bug_bash_1125' into refactor/tri…
priyanshu6238 Nov 27, 2025
2c7937f
Merge remote-tracking branch 'origin/bug_bash_1125' into refactor/tri…
priyanshu6238 Nov 27, 2025
726753c
fix: trigger page
priyanshu6238 Nov 27, 2025
e1b95df
fix: add global header for format layout
priyanshu6238 Nov 27, 2025
d87a547
refactor: add global header for hsm and add test case
priyanshu6238 Nov 27, 2025
41db357
fix: test case
priyanshu6238 Nov 27, 2025
c461e1f
fix: add new props
priyanshu6238 Nov 27, 2025
dbc9766
fix: add new props for cancel button
priyanshu6238 Nov 27, 2025
24b8050
fix: add new props for header
priyanshu6238 Nov 27, 2025
eb8d6dc
fix: view props
priyanshu6238 Nov 27, 2025
f7b3691
fix: header
priyanshu6238 Nov 28, 2025
69838a6
fix: button logic
priyanshu6238 Nov 28, 2025
2f2c51f
fix: cancel button
priyanshu6238 Nov 28, 2025
f8e5b88
Merge remote-tracking branch 'origin/bug_bash_1125' into refactor/tri…
priyanshu6238 Nov 28, 2025
2f74745
fix: props globally
priyanshu6238 Nov 28, 2025
47008f4
refactor: format layout
priyanshu6238 Nov 28, 2025
7580a6a
refactor: rename props
priyanshu6238 Nov 28, 2025
b6395ec
fix: deep scan
priyanshu6238 Nov 28, 2025
8435b34
fix: props
priyanshu6238 Dec 1, 2025
aeac5da
fix: format layout
priyanshu6238 Dec 1, 2025
21471d4
fix: isView condition
priyanshu6238 Dec 1, 2025
e24809c
refactor: remove console
priyanshu6238 Dec 1, 2025
be7fc8b
fix: header help function
priyanshu6238 Dec 1, 2025
fe5ac0a
Merge remote-tracking branch 'origin/bug_bash_1125' into refactor/tri…
priyanshu6238 Dec 1, 2025
97cc4d7
fix: test case
priyanshu6238 Dec 1, 2025
ed59c85
reafactor: isView props condition in formLayout
priyanshu6238 Dec 1, 2025
2cc70f7
fix: remove undefined type from headerHelp function
priyanshu6238 Dec 2, 2025
f3fcc67
Merge remote-tracking branch 'origin/bug_bash_1125' into refactor/tri…
priyanshu6238 Dec 2, 2025
ef8f9fe
fix: hsm page
priyanshu6238 Dec 2, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 7 additions & 10 deletions src/containers/Trigger/TriggerList/TriggerList.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,18 +28,15 @@ test('should load the trigger list', async () => {
});

test('click on Make a copy', async () => {
const { getAllByTestId } = render(wrapper);
const { getByText, findAllByTestId } = render(wrapper);

await waitFor(() => {
expect(getAllByTestId('MoreIcon')[0]).toBeInTheDocument();
});

fireEvent.click(getAllByTestId('MoreIcon')[0]);
const copyIcons = await findAllByTestId('copy-icon');
expect(copyIcons.length).toBeGreaterThan(0);
expect(getByText('Triggers')).toBeInTheDocument();

await waitFor(() => {
expect(screen.getByTestId('additionalButton')).toBeInTheDocument();
fireEvent.click(screen.getByTestId('additionalButton'));
});
const actionButtons = await findAllByTestId('additionalButton');
expect(actionButtons.length).toBeGreaterThan(0);
fireEvent.click(actionButtons[0]);
});

test('hover over tooltip', async () => {
Expand Down
95 changes: 78 additions & 17 deletions src/containers/Trigger/TriggerList/TriggerList.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import dayjs from 'dayjs';
import relativeTime from 'dayjs/plugin/relativeTime';
import { useNavigate } from 'react-router';
import { useState } from 'react';
import { useTranslation } from 'react-i18next';
import TriggerIcon from 'assets/images/icons/Trigger/Union.svg?react';
import ClockIcon from 'assets/images/icons/Trigger/Clock.svg?react';
Expand All @@ -11,8 +12,12 @@ import { DELETE_TRIGGER } from 'graphql/mutations/Trigger';
import { EXTENDED_DATE_TIME_FORMAT_WITH_AMPM, LONG_DATE_FORMAT, dayList } from 'common/constants';
import { List } from 'containers/List/List';
import { Tooltip } from 'components/UI/Tooltip/Tooltip';
import DeleteIcon from 'assets/images/icons/Delete/Red.svg?react';
import { DialogBox } from 'components/UI/DialogBox/DialogBox';
import styles from './TriggerList.module.css';
import { triggerInfo } from 'common/HelpData';
import { useMutation } from '@apollo/client';
import ViewIcon from 'assets/images/icons/ViewLight.svg?react';
dayjs.extend(relativeTime);

const getTooltip = (frequency: any, days: any) => {
Expand Down Expand Up @@ -67,20 +72,42 @@ const queries = {
};

export const TriggerList = () => {
const [dialogType, setDialogType] = useState<string | null>(null);
const [currentItem, setCurrentItem] = useState<any>(null);

const navigate = useNavigate();
const { t } = useTranslation();

const setDialog = (id: any) => {
navigate(`/trigger/${id}/edit`, { state: 'copy' });
};
const [deleteTrigger] = useMutation(DELETE_TRIGGER);
const setDelete = (item: any) => {
setCurrentItem(item);
setDialogType('delete');
};
const handleEdit = (id: any) => {
navigate(`/trigger/${id}/edit`);
};

const additionalAction = () => [
{
label: t('Copy'),
icon: <DuplicateIcon />,
icon: <DuplicateIcon data-testid="copy-icon" />,
parameter: 'id',
dialog: setDialog,
insideMore: true,
},
{
label: t('Delete'),
icon: <DeleteIcon />,
parameter: 'id',
dialog: setDelete,
},
{
label: t('View'),
icon: <ViewIcon />,
parameter: 'id',
dialog: handleEdit,
},
];

Expand All @@ -97,24 +124,58 @@ export const TriggerList = () => {
columnStyles,
};

const handleOk = async () => {
if (dialogType === 'delete' && currentItem) {
await deleteTrigger({
variables: { id: currentItem.id },
});
}

setDialogType(null);
setCurrentItem(null);
};
let dialog = null;

if (dialogType === 'delete') {
dialog = (
<DialogBox
title="Do you want to delete this trigger?"
handleOk={handleOk}
handleCancel={() => {
setCurrentItem(null);
setDialogType(null);
}}
alignButtons="center"
>
<p className={styles.DialogText}>This trigger will be permanently deleted and cannot be used again.</p>
</DialogBox>
);
}

const dialogMessage = t("You won't be able to use this trigger.");

return (
<List
helpData={triggerInfo}
title="Triggers"
listItem="triggers"
listItemName="trigger"
pageLink="trigger"
button={{ show: true, label: t('Create') }}
listIcon={triggerIcon}
dialogMessage={dialogMessage}
{...queries}
{...columnAttributes}
searchParameter={['name']}
additionalAction={additionalAction}
sortConfig={{ sortBy: 'updated_at', sortOrder: 'desc' }}
/>
<>
{dialog}
<List
helpData={triggerInfo}
title="Triggers"
listItem="triggers"
listItemName="trigger"
pageLink="trigger"
button={{ show: true, label: t('Create') }}
listIcon={triggerIcon}
dialogMessage={dialogMessage}
{...queries}
{...columnAttributes}
searchParameter={['name']}
additionalAction={additionalAction}
sortConfig={{ sortBy: 'updated_at', sortOrder: 'desc' }}
restrictedAction={(item: any) => ({
delete: false,
})}
/>
</>
);
};

Expand Down
Loading