-
-
@L["Menu:Notifications"]
-
-
-
+
diff --git a/applications/Unity.GrantManager/modules/Unity.Notifications/src/Unity.Notifications.Web/Pages/Notifications/Index.css b/applications/Unity.GrantManager/modules/Unity.Notifications/src/Unity.Notifications.Web/Pages/Notifications/Index.css
new file mode 100644
index 0000000000..6a1faf3a05
--- /dev/null
+++ b/applications/Unity.GrantManager/modules/Unity.Notifications/src/Unity.Notifications.Web/Pages/Notifications/Index.css
@@ -0,0 +1,30 @@
+/* The shared initializeDataTable helper enables scrollX, and layout.css forces
+ a permanent vertical scrollbar on the scroll body. Together DataTables bakes
+ ~25px of vertical-scrollbar reservation into the computed column widths, so
+ the inner table ends up wider than its container and renders a phantom
+ horizontal scrollbar even when there is free space.
+
+ `width: 100%` alone does nothing here because the table is table-layout: auto,
+ where the columns' content widths win over the width hint. Switching the
+ inner head/body tables to table-layout: fixed makes width: 100% authoritative,
+ so the table matches the container exactly; over-long values (full email
+ addresses) wrap inside their column instead of forcing a horizontal scroll.
+ Restoring overflow-y: auto lets the vertical scrollbar appear only when rows
+ actually overflow, removing the reserved gutter when they fit.
+
+ Scoped to this table so the intentionally wide, horizontally scrolling tables
+ elsewhere are unaffected. */
+#NotificationListTable_wrapper .dt-scroll-head .dt-scroll-headInner {
+ width: 100% !important;
+}
+
+#NotificationListTable_wrapper .dt-scroll-body {
+ overflow-y: auto !important;
+}
+
+#NotificationListTable_wrapper .dt-scroll-head .dt-scroll-headInner table,
+#NotificationListTable_wrapper .dt-scroll-body table,
+#NotificationListTable {
+ table-layout: fixed !important;
+ width: 100% !important;
+}
diff --git a/applications/Unity.GrantManager/modules/Unity.Notifications/src/Unity.Notifications.Web/Pages/Notifications/Index.js b/applications/Unity.GrantManager/modules/Unity.Notifications/src/Unity.Notifications.Web/Pages/Notifications/Index.js
index d1b0f0d7fd..6fa7e8c0d9 100644
--- a/applications/Unity.GrantManager/modules/Unity.Notifications/src/Unity.Notifications.Web/Pages/Notifications/Index.js
+++ b/applications/Unity.GrantManager/modules/Unity.Notifications/src/Unity.Notifications.Web/Pages/Notifications/Index.js
@@ -58,12 +58,12 @@ $(function () {
getSubmissionIdColumn(columnIndex++),
getTextColumn(columnIndex++, l('NotificationList:ApplicantName'), 'applicantName'),
getSentDateColumn(columnIndex++),
- getTextColumn(columnIndex++, l('NotificationList:Status'), 'status'),
+ getTextColumn(columnIndex++, l('NotificationList:Status'), 'status', { width: '7rem', className: 'data-table-header text-nowrap' }),
getTextColumn(columnIndex++, l('NotificationList:From'), 'fromAddress'),
getTextColumn(columnIndex++, l('NotificationList:To'), 'toAddress'),
getTextColumn(columnIndex++, l('NotificationList:Subject'), 'subject'),
- getTextColumn(columnIndex++, l('NotificationList:Recipient'), 'recipient'),
- getTextColumn(columnIndex++, l('NotificationList:EmailType'), 'emailType')
+ getTextColumn(columnIndex++, l('NotificationList:Recipient'), 'recipient', { width: '8rem', className: 'data-table-header text-nowrap' }),
+ getTextColumn(columnIndex++, l('NotificationList:EmailType'), 'emailType', { width: '9rem', className: 'data-table-header text-nowrap' })
];
return columns.map((column) => ({ ...column, targets: [column.index], orderData: [column.index, 0] }));
}
@@ -84,7 +84,8 @@ $(function () {
title: l('NotificationList:SubmissionId'),
name: 'submissionReferenceNo',
data: 'submissionReferenceNo',
- className: 'data-table-header',
+ className: 'data-table-header text-nowrap',
+ width: '8rem',
index: columnIndex,
render: function (data, type, row) {
if (type !== 'display') {
@@ -106,6 +107,7 @@ $(function () {
name: 'sentDateTime',
data: 'sentDateTime',
className: 'data-table-header text-nowrap',
+ width: '8rem',
index: columnIndex,
render: function (data, type) {
return DateUtils.formatUtcDateToLocal(data, type);
@@ -122,12 +124,13 @@ function responseCallback(result) {
};
}
-function getTextColumn(columnIndex, title, dataField) {
+function getTextColumn(columnIndex, title, dataField, options = {}) {
return {
title: title,
name: dataField,
data: dataField,
- className: 'data-table-header',
+ className: options.className ?? 'data-table-header',
+ ...(options.width ? { width: options.width } : {}),
index: columnIndex
};
}