@procore/data-table 14.43.2 → 14.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/dist/legacy/index.cjs +88 -5
- package/dist/legacy/index.js +88 -5
- package/dist/modern/index.cjs +85 -5
- package/dist/modern/index.js +85 -5
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## 14.44.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- dc8aaf4: Made data-table column menu accessible via keyboard using `⌥ Alt+↓`
|
|
8
|
+
- a9569f8: Focus BulkEditPanel after opening
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- c33f992: Improve accessibility in QuickFilters by adding descriptive `aria-label` to filter token remove button (includes filter name)
|
|
13
|
+
|
|
3
14
|
## 14.43.2
|
|
4
15
|
|
|
5
16
|
### Patch Changes
|
package/dist/legacy/index.cjs
CHANGED
|
@@ -56619,6 +56619,7 @@ var GenericHeaderRenderer = (props) => {
|
|
|
56619
56619
|
I18n
|
|
56620
56620
|
);
|
|
56621
56621
|
const headerCellRef = React80.useRef(null);
|
|
56622
|
+
const menuButtonRef = React80.useRef(null);
|
|
56622
56623
|
const headerCheckboxSelection = colDef.headerCheckboxSelection;
|
|
56623
56624
|
const headerCheckboxSelectionEnabled = typeof headerCheckboxSelection === "function" ? headerCheckboxSelection({
|
|
56624
56625
|
api: props.api,
|
|
@@ -56985,6 +56986,51 @@ var GenericHeaderRenderer = (props) => {
|
|
|
56985
56986
|
expansionVariant,
|
|
56986
56987
|
onSSDR
|
|
56987
56988
|
);
|
|
56989
|
+
React80__default.default.useEffect(() => {
|
|
56990
|
+
if (!props.enableMenu) return;
|
|
56991
|
+
const MENU_SYNTHETIC = "__menu_synthetic_keydown";
|
|
56992
|
+
const handler = (e) => {
|
|
56993
|
+
var _a2;
|
|
56994
|
+
const button = (_a2 = menuButtonRef.current) == null ? void 0 : _a2.querySelector("button");
|
|
56995
|
+
const isMenuOpen = (button == null ? void 0 : button.getAttribute("aria-expanded")) === "true";
|
|
56996
|
+
if (e[MENU_SYNTHETIC]) {
|
|
56997
|
+
return;
|
|
56998
|
+
}
|
|
56999
|
+
if (e.altKey && e.key === "ArrowDown" && !isMenuOpen) {
|
|
57000
|
+
e.preventDefault();
|
|
57001
|
+
e.stopPropagation();
|
|
57002
|
+
button == null ? void 0 : button.focus();
|
|
57003
|
+
button == null ? void 0 : button.click();
|
|
57004
|
+
return;
|
|
57005
|
+
}
|
|
57006
|
+
if (!isMenuOpen) return;
|
|
57007
|
+
switch (e.key) {
|
|
57008
|
+
case "ArrowDown":
|
|
57009
|
+
case "ArrowUp":
|
|
57010
|
+
case "Enter":
|
|
57011
|
+
case "Escape":
|
|
57012
|
+
e.stopPropagation();
|
|
57013
|
+
e.preventDefault();
|
|
57014
|
+
if (button) {
|
|
57015
|
+
const synthetic = new KeyboardEvent("keydown", {
|
|
57016
|
+
key: e.key,
|
|
57017
|
+
bubbles: true,
|
|
57018
|
+
cancelable: true
|
|
57019
|
+
});
|
|
57020
|
+
synthetic[MENU_SYNTHETIC] = true;
|
|
57021
|
+
button.dispatchEvent(synthetic);
|
|
57022
|
+
}
|
|
57023
|
+
break;
|
|
57024
|
+
case "Tab":
|
|
57025
|
+
case "ArrowLeft":
|
|
57026
|
+
case "ArrowRight":
|
|
57027
|
+
button == null ? void 0 : button.click();
|
|
57028
|
+
break;
|
|
57029
|
+
}
|
|
57030
|
+
};
|
|
57031
|
+
props.eGridHeader.addEventListener("keydown", handler, true);
|
|
57032
|
+
return () => props.eGridHeader.removeEventListener("keydown", handler, true);
|
|
57033
|
+
}, [props.eGridHeader, props.enableMenu]);
|
|
56988
57034
|
return /* @__PURE__ */ React80__default.default.createElement(
|
|
56989
57035
|
coreReact.Flex,
|
|
56990
57036
|
{
|
|
@@ -57059,6 +57105,7 @@ var GenericHeaderRenderer = (props) => {
|
|
|
57059
57105
|
props.enableMenu && /* @__PURE__ */ React80__default.default.createElement(
|
|
57060
57106
|
coreReact.DropdownFlyout,
|
|
57061
57107
|
{
|
|
57108
|
+
ref: menuButtonRef,
|
|
57062
57109
|
className: "data-table-header-menu",
|
|
57063
57110
|
size: "sm",
|
|
57064
57111
|
options: orderMenuOptions(),
|
|
@@ -104213,6 +104260,11 @@ var BulkEditPanel = ({}) => {
|
|
|
104213
104260
|
const { contextPanel, suppressBulkEditToasts } = useInternalTableContext();
|
|
104214
104261
|
const I18n = coreReact.useI18nContext();
|
|
104215
104262
|
const bulkEditRef = React80__default.default.useRef(null);
|
|
104263
|
+
const bodyRef = React80__default.default.useRef(null);
|
|
104264
|
+
React80.useEffect(() => {
|
|
104265
|
+
var _a;
|
|
104266
|
+
(_a = bodyRef.current) == null ? void 0 : _a.focus();
|
|
104267
|
+
}, []);
|
|
104216
104268
|
return /* @__PURE__ */ React80__default.default.createElement(coreReact.Panel, null, /* @__PURE__ */ React80__default.default.createElement(
|
|
104217
104269
|
coreReact.Panel.Header,
|
|
104218
104270
|
{
|
|
@@ -104223,7 +104275,7 @@ var BulkEditPanel = ({}) => {
|
|
|
104223
104275
|
}
|
|
104224
104276
|
},
|
|
104225
104277
|
/* @__PURE__ */ React80__default.default.createElement(coreReact.Panel.Title, null, I18n.t("dataTable.bulkActions.editValues"))
|
|
104226
|
-
), /* @__PURE__ */ React80__default.default.createElement(coreReact.Panel.Body,
|
|
104278
|
+
), /* @__PURE__ */ React80__default.default.createElement(coreReact.Panel.Body, { ref: bodyRef }, /* @__PURE__ */ React80__default.default.createElement(coreReact.Panel.Section, null, /* @__PURE__ */ React80__default.default.createElement(
|
|
104227
104279
|
BulkEdit,
|
|
104228
104280
|
{
|
|
104229
104281
|
ref: bulkEditRef,
|
|
@@ -105773,6 +105825,7 @@ var en_default = {
|
|
|
105773
105825
|
moreFilters: "More Filters",
|
|
105774
105826
|
clearAllFilters: "Clear All Filters",
|
|
105775
105827
|
close: "Close",
|
|
105828
|
+
removeFilterToken: "Remove %{name}",
|
|
105776
105829
|
locationFilter: {
|
|
105777
105830
|
selectAll: "Select all",
|
|
105778
105831
|
includeSublocations: "Include sublocations",
|
|
@@ -105810,6 +105863,7 @@ var en_default = {
|
|
|
105810
105863
|
secondary: "Information loading, thanks for your patience."
|
|
105811
105864
|
},
|
|
105812
105865
|
menuOptions: {
|
|
105866
|
+
ariaMenuColumn: "Press Alt/Option+Down to open column menu.",
|
|
105813
105867
|
sortMenuItem: {
|
|
105814
105868
|
label: "Sort By This Column",
|
|
105815
105869
|
sortAscItem: "Sort Column Ascending",
|
|
@@ -107510,6 +107564,7 @@ var pseudo_default = {
|
|
|
107510
107564
|
moreFilters: "[\u1E3E\u1E3E\u1E3E\u01FF\u0159\u1E17 \xB7 \u0191\u012B\u0140\u0167\u1E17\u0159\u015F\u015F\u015F]",
|
|
107511
107565
|
clearAllFilters: "[\u0187\u0187\u0187\u0187\u0140\u1E17\u0227\u0159 \xB7 \u0226\u0140\u0140 \xB7 \u0191\u012B\u0140\u0167\u1E17\u0159\u015F\u015F\u015F\u015F]",
|
|
107512
107566
|
close: "[\u0187\u0140\u01FF\u015F\u1E17]",
|
|
107567
|
+
removeFilterToken: "[\u0158\u0158\u1E17\u1E3F\u01FF\u1E7D\u1E17 \xB7 \xB7 [NOTRANSLATE]%{name}[/NOTRANSLATE]]",
|
|
107513
107568
|
locationFilter: {
|
|
107514
107569
|
selectAll: "[\u015E\u015E\u1E17\u0140\u1E17\u0188\u0167 \xB7 \u0227\u0140\u0140\u0140]",
|
|
107515
107570
|
includeSublocations: "[\u012A\u012A\u012A\u012A\u019E\u0188\u0140\u016D\u1E13\u1E17 \xB7 \u015F\u016D\u0180\u0140\u01FF\u0188\u0227\u0167\u012B\u01FF\u019E\u015F\u015F\u015F\u015F]",
|
|
@@ -107547,6 +107602,7 @@ var pseudo_default = {
|
|
|
107547
107602
|
secondary: "[\u012A\u012A\u012A\u012A\u012A\u012A\u012A\u012A\u012A\u012A\u019E\u0192\u01FF\u0159\u1E3F\u0227\u0167\u012B\u01FF\u019E \xB7 \u0140\u01FF\u0227\u1E13\u012B\u019E\u0260, \xB7 \u0167\u0127\u0227\u019E\u0137\u015F \xB7 \u0192\u01FF\u0159 \xB7 \u1E8F\u01FF\u016D\u0159 \xB7 \u01A5\u0227\u0167\u012B\u1E17\u019E\u0188\u1E17..........]"
|
|
107548
107603
|
},
|
|
107549
107604
|
menuOptions: {
|
|
107605
|
+
ariaMenuColumn: "[\u01A4\u01A4\u01A4\u01A4\u01A4\u01A4\u01A4\u01A4\u01A4\u0159\u1E17\u015F\u015F \xB7 \u0226\u0140\u0167/\u01FE\u01A5\u0167\u012B\u01FF\u019E+\u1E12\u01FF\u1E87\u019E \xB7 \u0167\u01FF \xB7 \u01FF\u01A5\u1E17\u019E \xB7 \u0188\u01FF\u0140\u016D\u1E3F\u019E \xB7 \u1E3F\u1E17\u019E\u016D.........]",
|
|
107550
107606
|
sortMenuItem: {
|
|
107551
107607
|
label: "[\u015E\u015E\u015E\u015E\u01FF\u0159\u0167 \xB7 \u0181\u1E8F \xB7 \u0166\u0127\u012B\u015F \xB7 \u0187\u01FF\u0140\u016D\u1E3F\u019E\u019E\u019E\u019E]",
|
|
107552
107608
|
sortAscItem: "[\u015E\u015E\u015E\u015E\u015E\u01FF\u0159\u0167 \xB7 \u0187\u01FF\u0140\u016D\u1E3F\u019E \xB7 \u0226\u015F\u0188\u1E17\u019E\u1E13\u012B\u019E\u0260\u0260\u0260\u0260\u0260]",
|
|
@@ -110585,7 +110641,21 @@ var Table = (props) => {
|
|
|
110585
110641
|
params.api
|
|
110586
110642
|
);
|
|
110587
110643
|
},
|
|
110588
|
-
headerCheckboxSelectionFilteredOnly: true
|
|
110644
|
+
headerCheckboxSelectionFilteredOnly: true,
|
|
110645
|
+
// Needed to suppress ag-grid's default keyboard event handling for header menu keys when menu is open
|
|
110646
|
+
suppressHeaderKeyboardEvent({ event }) {
|
|
110647
|
+
var _a2;
|
|
110648
|
+
const headerCell = (_a2 = event.target) == null ? void 0 : _a2.closest(
|
|
110649
|
+
".ag-header-cell"
|
|
110650
|
+
);
|
|
110651
|
+
const isMenuOpen = !!(headerCell == null ? void 0 : headerCell.querySelector(
|
|
110652
|
+
'[aria-expanded="true"]'
|
|
110653
|
+
));
|
|
110654
|
+
if (isMenuOpen && ["ArrowDown", "ArrowUp", "Enter", "Escape"].includes(event.key)) {
|
|
110655
|
+
return true;
|
|
110656
|
+
}
|
|
110657
|
+
return false;
|
|
110658
|
+
}
|
|
110589
110659
|
};
|
|
110590
110660
|
},
|
|
110591
110661
|
[
|
|
@@ -110768,6 +110838,9 @@ var Table = (props) => {
|
|
|
110768
110838
|
suppressPropertyNamesCheck: true,
|
|
110769
110839
|
suppressRowClickSelection: props.suppressRowClickSelection || tableRowSelectionEnabled,
|
|
110770
110840
|
suppressPaginationPanel: true,
|
|
110841
|
+
localeText: {
|
|
110842
|
+
ariaMenuColumn: I18n.t("dataTable.menuOptions.ariaMenuColumn")
|
|
110843
|
+
},
|
|
110771
110844
|
tabToNextCell: props.tabToNextCell,
|
|
110772
110845
|
...clientSideRowData,
|
|
110773
110846
|
...detailRowConfigProps,
|
|
@@ -112412,6 +112485,7 @@ var StyledFilterTokenWrapper = styled4__default.default.div`
|
|
|
112412
112485
|
var ClientSideQuickFilters = ({ overlayMatchesTriggerWidth }) => {
|
|
112413
112486
|
const { tableRef, filterState, getColumnDefinition } = useInternalTableContext();
|
|
112414
112487
|
const hasNoContent = useTableHasNoContent();
|
|
112488
|
+
const I18n = coreReact.useI18nContext();
|
|
112415
112489
|
const { quickFilters, tokens } = React80__default.default.useMemo(() => {
|
|
112416
112490
|
return filterState.allAvailableFilters.reduce(
|
|
112417
112491
|
(acc, filter) => {
|
|
@@ -112483,9 +112557,13 @@ var ClientSideQuickFilters = ({ overlayMatchesTriggerWidth }) => {
|
|
|
112483
112557
|
if (!colDef) {
|
|
112484
112558
|
return null;
|
|
112485
112559
|
}
|
|
112486
|
-
|
|
112560
|
+
const tokenText = getFilterTokenText(colDef, filter.filterValues);
|
|
112561
|
+
return /* @__PURE__ */ React80__default.default.createElement(StyledFilterTokenWrapper, { key: filter.field }, /* @__PURE__ */ React80__default.default.createElement(coreReact.UNSAFE_FilterToken, null, /* @__PURE__ */ React80__default.default.createElement(coreReact.UNSAFE_FilterToken.Label, null, /* @__PURE__ */ React80__default.default.createElement(React80__default.default.Fragment, null, tokenText)), /* @__PURE__ */ React80__default.default.createElement(
|
|
112487
112562
|
coreReact.UNSAFE_FilterToken.Remove,
|
|
112488
112563
|
{
|
|
112564
|
+
"aria-label": I18n.t("dataTable.filters.removeFilterToken", {
|
|
112565
|
+
name: tokenText
|
|
112566
|
+
}),
|
|
112489
112567
|
onClick: () => {
|
|
112490
112568
|
var _a;
|
|
112491
112569
|
return (_a = tableRef == null ? void 0 : tableRef.current) == null ? void 0 : _a.removeFilter(filter.field);
|
|
@@ -112507,6 +112585,7 @@ var ServerSideQuickFilters = ({ overlayMatchesTriggerWidth }) => {
|
|
|
112507
112585
|
getColumnDefinition
|
|
112508
112586
|
} = useInternalTableContext();
|
|
112509
112587
|
const hasNoContent = useTableHasNoContent();
|
|
112588
|
+
const I18n = coreReact.useI18nContext();
|
|
112510
112589
|
const { quickFilterNames, tokenNames } = React80__default.default.useMemo(() => {
|
|
112511
112590
|
const appliedFilterNames = Object.keys(selectedFilters);
|
|
112512
112591
|
const isActiveFilter = (filterName) => appliedFilterNames.includes(filterName);
|
|
@@ -112582,12 +112661,16 @@ var ServerSideQuickFilters = ({ overlayMatchesTriggerWidth }) => {
|
|
|
112582
112661
|
return null;
|
|
112583
112662
|
}
|
|
112584
112663
|
const filter = getListFilter(fieldName);
|
|
112585
|
-
|
|
112664
|
+
const tokenText = getFilterTokenText(
|
|
112586
112665
|
colDef,
|
|
112587
112666
|
colDef.filterRenderer === DateFilterRenderer_default ? filter.value : filter.selected
|
|
112588
|
-
)
|
|
112667
|
+
);
|
|
112668
|
+
return /* @__PURE__ */ React80__default.default.createElement(StyledFilterTokenWrapper, { key: fieldName }, /* @__PURE__ */ React80__default.default.createElement(coreReact.UNSAFE_FilterToken, null, /* @__PURE__ */ React80__default.default.createElement(coreReact.UNSAFE_FilterToken.Label, null, /* @__PURE__ */ React80__default.default.createElement(React80__default.default.Fragment, null, tokenText)), /* @__PURE__ */ React80__default.default.createElement(
|
|
112589
112669
|
coreReact.UNSAFE_FilterToken.Remove,
|
|
112590
112670
|
{
|
|
112671
|
+
"aria-label": I18n.t("dataTable.filters.removeFilterToken", {
|
|
112672
|
+
name: tokenText
|
|
112673
|
+
}),
|
|
112591
112674
|
"data-qa": "data-table-quick-filter-remove-token",
|
|
112592
112675
|
onClick: () => onClearFilter(fieldName)
|
|
112593
112676
|
}
|
package/dist/legacy/index.js
CHANGED
|
@@ -56606,6 +56606,7 @@ var GenericHeaderRenderer = (props) => {
|
|
|
56606
56606
|
I18n
|
|
56607
56607
|
);
|
|
56608
56608
|
const headerCellRef = useRef(null);
|
|
56609
|
+
const menuButtonRef = useRef(null);
|
|
56609
56610
|
const headerCheckboxSelection = colDef.headerCheckboxSelection;
|
|
56610
56611
|
const headerCheckboxSelectionEnabled = typeof headerCheckboxSelection === "function" ? headerCheckboxSelection({
|
|
56611
56612
|
api: props.api,
|
|
@@ -56972,6 +56973,51 @@ var GenericHeaderRenderer = (props) => {
|
|
|
56972
56973
|
expansionVariant,
|
|
56973
56974
|
onSSDR
|
|
56974
56975
|
);
|
|
56976
|
+
React80.useEffect(() => {
|
|
56977
|
+
if (!props.enableMenu) return;
|
|
56978
|
+
const MENU_SYNTHETIC = "__menu_synthetic_keydown";
|
|
56979
|
+
const handler = (e) => {
|
|
56980
|
+
var _a2;
|
|
56981
|
+
const button = (_a2 = menuButtonRef.current) == null ? void 0 : _a2.querySelector("button");
|
|
56982
|
+
const isMenuOpen = (button == null ? void 0 : button.getAttribute("aria-expanded")) === "true";
|
|
56983
|
+
if (e[MENU_SYNTHETIC]) {
|
|
56984
|
+
return;
|
|
56985
|
+
}
|
|
56986
|
+
if (e.altKey && e.key === "ArrowDown" && !isMenuOpen) {
|
|
56987
|
+
e.preventDefault();
|
|
56988
|
+
e.stopPropagation();
|
|
56989
|
+
button == null ? void 0 : button.focus();
|
|
56990
|
+
button == null ? void 0 : button.click();
|
|
56991
|
+
return;
|
|
56992
|
+
}
|
|
56993
|
+
if (!isMenuOpen) return;
|
|
56994
|
+
switch (e.key) {
|
|
56995
|
+
case "ArrowDown":
|
|
56996
|
+
case "ArrowUp":
|
|
56997
|
+
case "Enter":
|
|
56998
|
+
case "Escape":
|
|
56999
|
+
e.stopPropagation();
|
|
57000
|
+
e.preventDefault();
|
|
57001
|
+
if (button) {
|
|
57002
|
+
const synthetic = new KeyboardEvent("keydown", {
|
|
57003
|
+
key: e.key,
|
|
57004
|
+
bubbles: true,
|
|
57005
|
+
cancelable: true
|
|
57006
|
+
});
|
|
57007
|
+
synthetic[MENU_SYNTHETIC] = true;
|
|
57008
|
+
button.dispatchEvent(synthetic);
|
|
57009
|
+
}
|
|
57010
|
+
break;
|
|
57011
|
+
case "Tab":
|
|
57012
|
+
case "ArrowLeft":
|
|
57013
|
+
case "ArrowRight":
|
|
57014
|
+
button == null ? void 0 : button.click();
|
|
57015
|
+
break;
|
|
57016
|
+
}
|
|
57017
|
+
};
|
|
57018
|
+
props.eGridHeader.addEventListener("keydown", handler, true);
|
|
57019
|
+
return () => props.eGridHeader.removeEventListener("keydown", handler, true);
|
|
57020
|
+
}, [props.eGridHeader, props.enableMenu]);
|
|
56975
57021
|
return /* @__PURE__ */ React80.createElement(
|
|
56976
57022
|
Flex,
|
|
56977
57023
|
{
|
|
@@ -57046,6 +57092,7 @@ var GenericHeaderRenderer = (props) => {
|
|
|
57046
57092
|
props.enableMenu && /* @__PURE__ */ React80.createElement(
|
|
57047
57093
|
DropdownFlyout,
|
|
57048
57094
|
{
|
|
57095
|
+
ref: menuButtonRef,
|
|
57049
57096
|
className: "data-table-header-menu",
|
|
57050
57097
|
size: "sm",
|
|
57051
57098
|
options: orderMenuOptions(),
|
|
@@ -104200,6 +104247,11 @@ var BulkEditPanel = ({}) => {
|
|
|
104200
104247
|
const { contextPanel, suppressBulkEditToasts } = useInternalTableContext();
|
|
104201
104248
|
const I18n = useI18nContext();
|
|
104202
104249
|
const bulkEditRef = React80.useRef(null);
|
|
104250
|
+
const bodyRef = React80.useRef(null);
|
|
104251
|
+
useEffect(() => {
|
|
104252
|
+
var _a;
|
|
104253
|
+
(_a = bodyRef.current) == null ? void 0 : _a.focus();
|
|
104254
|
+
}, []);
|
|
104203
104255
|
return /* @__PURE__ */ React80.createElement(Panel, null, /* @__PURE__ */ React80.createElement(
|
|
104204
104256
|
Panel.Header,
|
|
104205
104257
|
{
|
|
@@ -104210,7 +104262,7 @@ var BulkEditPanel = ({}) => {
|
|
|
104210
104262
|
}
|
|
104211
104263
|
},
|
|
104212
104264
|
/* @__PURE__ */ React80.createElement(Panel.Title, null, I18n.t("dataTable.bulkActions.editValues"))
|
|
104213
|
-
), /* @__PURE__ */ React80.createElement(Panel.Body,
|
|
104265
|
+
), /* @__PURE__ */ React80.createElement(Panel.Body, { ref: bodyRef }, /* @__PURE__ */ React80.createElement(Panel.Section, null, /* @__PURE__ */ React80.createElement(
|
|
104214
104266
|
BulkEdit,
|
|
104215
104267
|
{
|
|
104216
104268
|
ref: bulkEditRef,
|
|
@@ -105760,6 +105812,7 @@ var en_default = {
|
|
|
105760
105812
|
moreFilters: "More Filters",
|
|
105761
105813
|
clearAllFilters: "Clear All Filters",
|
|
105762
105814
|
close: "Close",
|
|
105815
|
+
removeFilterToken: "Remove %{name}",
|
|
105763
105816
|
locationFilter: {
|
|
105764
105817
|
selectAll: "Select all",
|
|
105765
105818
|
includeSublocations: "Include sublocations",
|
|
@@ -105797,6 +105850,7 @@ var en_default = {
|
|
|
105797
105850
|
secondary: "Information loading, thanks for your patience."
|
|
105798
105851
|
},
|
|
105799
105852
|
menuOptions: {
|
|
105853
|
+
ariaMenuColumn: "Press Alt/Option+Down to open column menu.",
|
|
105800
105854
|
sortMenuItem: {
|
|
105801
105855
|
label: "Sort By This Column",
|
|
105802
105856
|
sortAscItem: "Sort Column Ascending",
|
|
@@ -107497,6 +107551,7 @@ var pseudo_default = {
|
|
|
107497
107551
|
moreFilters: "[\u1E3E\u1E3E\u1E3E\u01FF\u0159\u1E17 \xB7 \u0191\u012B\u0140\u0167\u1E17\u0159\u015F\u015F\u015F]",
|
|
107498
107552
|
clearAllFilters: "[\u0187\u0187\u0187\u0187\u0140\u1E17\u0227\u0159 \xB7 \u0226\u0140\u0140 \xB7 \u0191\u012B\u0140\u0167\u1E17\u0159\u015F\u015F\u015F\u015F]",
|
|
107499
107553
|
close: "[\u0187\u0140\u01FF\u015F\u1E17]",
|
|
107554
|
+
removeFilterToken: "[\u0158\u0158\u1E17\u1E3F\u01FF\u1E7D\u1E17 \xB7 \xB7 [NOTRANSLATE]%{name}[/NOTRANSLATE]]",
|
|
107500
107555
|
locationFilter: {
|
|
107501
107556
|
selectAll: "[\u015E\u015E\u1E17\u0140\u1E17\u0188\u0167 \xB7 \u0227\u0140\u0140\u0140]",
|
|
107502
107557
|
includeSublocations: "[\u012A\u012A\u012A\u012A\u019E\u0188\u0140\u016D\u1E13\u1E17 \xB7 \u015F\u016D\u0180\u0140\u01FF\u0188\u0227\u0167\u012B\u01FF\u019E\u015F\u015F\u015F\u015F]",
|
|
@@ -107534,6 +107589,7 @@ var pseudo_default = {
|
|
|
107534
107589
|
secondary: "[\u012A\u012A\u012A\u012A\u012A\u012A\u012A\u012A\u012A\u012A\u019E\u0192\u01FF\u0159\u1E3F\u0227\u0167\u012B\u01FF\u019E \xB7 \u0140\u01FF\u0227\u1E13\u012B\u019E\u0260, \xB7 \u0167\u0127\u0227\u019E\u0137\u015F \xB7 \u0192\u01FF\u0159 \xB7 \u1E8F\u01FF\u016D\u0159 \xB7 \u01A5\u0227\u0167\u012B\u1E17\u019E\u0188\u1E17..........]"
|
|
107535
107590
|
},
|
|
107536
107591
|
menuOptions: {
|
|
107592
|
+
ariaMenuColumn: "[\u01A4\u01A4\u01A4\u01A4\u01A4\u01A4\u01A4\u01A4\u01A4\u0159\u1E17\u015F\u015F \xB7 \u0226\u0140\u0167/\u01FE\u01A5\u0167\u012B\u01FF\u019E+\u1E12\u01FF\u1E87\u019E \xB7 \u0167\u01FF \xB7 \u01FF\u01A5\u1E17\u019E \xB7 \u0188\u01FF\u0140\u016D\u1E3F\u019E \xB7 \u1E3F\u1E17\u019E\u016D.........]",
|
|
107537
107593
|
sortMenuItem: {
|
|
107538
107594
|
label: "[\u015E\u015E\u015E\u015E\u01FF\u0159\u0167 \xB7 \u0181\u1E8F \xB7 \u0166\u0127\u012B\u015F \xB7 \u0187\u01FF\u0140\u016D\u1E3F\u019E\u019E\u019E\u019E]",
|
|
107539
107595
|
sortAscItem: "[\u015E\u015E\u015E\u015E\u015E\u01FF\u0159\u0167 \xB7 \u0187\u01FF\u0140\u016D\u1E3F\u019E \xB7 \u0226\u015F\u0188\u1E17\u019E\u1E13\u012B\u019E\u0260\u0260\u0260\u0260\u0260]",
|
|
@@ -110572,7 +110628,21 @@ var Table = (props) => {
|
|
|
110572
110628
|
params.api
|
|
110573
110629
|
);
|
|
110574
110630
|
},
|
|
110575
|
-
headerCheckboxSelectionFilteredOnly: true
|
|
110631
|
+
headerCheckboxSelectionFilteredOnly: true,
|
|
110632
|
+
// Needed to suppress ag-grid's default keyboard event handling for header menu keys when menu is open
|
|
110633
|
+
suppressHeaderKeyboardEvent({ event }) {
|
|
110634
|
+
var _a2;
|
|
110635
|
+
const headerCell = (_a2 = event.target) == null ? void 0 : _a2.closest(
|
|
110636
|
+
".ag-header-cell"
|
|
110637
|
+
);
|
|
110638
|
+
const isMenuOpen = !!(headerCell == null ? void 0 : headerCell.querySelector(
|
|
110639
|
+
'[aria-expanded="true"]'
|
|
110640
|
+
));
|
|
110641
|
+
if (isMenuOpen && ["ArrowDown", "ArrowUp", "Enter", "Escape"].includes(event.key)) {
|
|
110642
|
+
return true;
|
|
110643
|
+
}
|
|
110644
|
+
return false;
|
|
110645
|
+
}
|
|
110576
110646
|
};
|
|
110577
110647
|
},
|
|
110578
110648
|
[
|
|
@@ -110755,6 +110825,9 @@ var Table = (props) => {
|
|
|
110755
110825
|
suppressPropertyNamesCheck: true,
|
|
110756
110826
|
suppressRowClickSelection: props.suppressRowClickSelection || tableRowSelectionEnabled,
|
|
110757
110827
|
suppressPaginationPanel: true,
|
|
110828
|
+
localeText: {
|
|
110829
|
+
ariaMenuColumn: I18n.t("dataTable.menuOptions.ariaMenuColumn")
|
|
110830
|
+
},
|
|
110758
110831
|
tabToNextCell: props.tabToNextCell,
|
|
110759
110832
|
...clientSideRowData,
|
|
110760
110833
|
...detailRowConfigProps,
|
|
@@ -112399,6 +112472,7 @@ var StyledFilterTokenWrapper = styled4.div`
|
|
|
112399
112472
|
var ClientSideQuickFilters = ({ overlayMatchesTriggerWidth }) => {
|
|
112400
112473
|
const { tableRef, filterState, getColumnDefinition } = useInternalTableContext();
|
|
112401
112474
|
const hasNoContent = useTableHasNoContent();
|
|
112475
|
+
const I18n = useI18nContext();
|
|
112402
112476
|
const { quickFilters, tokens } = React80.useMemo(() => {
|
|
112403
112477
|
return filterState.allAvailableFilters.reduce(
|
|
112404
112478
|
(acc, filter) => {
|
|
@@ -112470,9 +112544,13 @@ var ClientSideQuickFilters = ({ overlayMatchesTriggerWidth }) => {
|
|
|
112470
112544
|
if (!colDef) {
|
|
112471
112545
|
return null;
|
|
112472
112546
|
}
|
|
112473
|
-
|
|
112547
|
+
const tokenText = getFilterTokenText(colDef, filter.filterValues);
|
|
112548
|
+
return /* @__PURE__ */ React80.createElement(StyledFilterTokenWrapper, { key: filter.field }, /* @__PURE__ */ React80.createElement(UNSAFE_FilterToken, null, /* @__PURE__ */ React80.createElement(UNSAFE_FilterToken.Label, null, /* @__PURE__ */ React80.createElement(React80.Fragment, null, tokenText)), /* @__PURE__ */ React80.createElement(
|
|
112474
112549
|
UNSAFE_FilterToken.Remove,
|
|
112475
112550
|
{
|
|
112551
|
+
"aria-label": I18n.t("dataTable.filters.removeFilterToken", {
|
|
112552
|
+
name: tokenText
|
|
112553
|
+
}),
|
|
112476
112554
|
onClick: () => {
|
|
112477
112555
|
var _a;
|
|
112478
112556
|
return (_a = tableRef == null ? void 0 : tableRef.current) == null ? void 0 : _a.removeFilter(filter.field);
|
|
@@ -112494,6 +112572,7 @@ var ServerSideQuickFilters = ({ overlayMatchesTriggerWidth }) => {
|
|
|
112494
112572
|
getColumnDefinition
|
|
112495
112573
|
} = useInternalTableContext();
|
|
112496
112574
|
const hasNoContent = useTableHasNoContent();
|
|
112575
|
+
const I18n = useI18nContext();
|
|
112497
112576
|
const { quickFilterNames, tokenNames } = React80.useMemo(() => {
|
|
112498
112577
|
const appliedFilterNames = Object.keys(selectedFilters);
|
|
112499
112578
|
const isActiveFilter = (filterName) => appliedFilterNames.includes(filterName);
|
|
@@ -112569,12 +112648,16 @@ var ServerSideQuickFilters = ({ overlayMatchesTriggerWidth }) => {
|
|
|
112569
112648
|
return null;
|
|
112570
112649
|
}
|
|
112571
112650
|
const filter = getListFilter(fieldName);
|
|
112572
|
-
|
|
112651
|
+
const tokenText = getFilterTokenText(
|
|
112573
112652
|
colDef,
|
|
112574
112653
|
colDef.filterRenderer === DateFilterRenderer_default ? filter.value : filter.selected
|
|
112575
|
-
)
|
|
112654
|
+
);
|
|
112655
|
+
return /* @__PURE__ */ React80.createElement(StyledFilterTokenWrapper, { key: fieldName }, /* @__PURE__ */ React80.createElement(UNSAFE_FilterToken, null, /* @__PURE__ */ React80.createElement(UNSAFE_FilterToken.Label, null, /* @__PURE__ */ React80.createElement(React80.Fragment, null, tokenText)), /* @__PURE__ */ React80.createElement(
|
|
112576
112656
|
UNSAFE_FilterToken.Remove,
|
|
112577
112657
|
{
|
|
112658
|
+
"aria-label": I18n.t("dataTable.filters.removeFilterToken", {
|
|
112659
|
+
name: tokenText
|
|
112660
|
+
}),
|
|
112578
112661
|
"data-qa": "data-table-quick-filter-remove-token",
|
|
112579
112662
|
onClick: () => onClearFilter(fieldName)
|
|
112580
112663
|
}
|
package/dist/modern/index.cjs
CHANGED
|
@@ -56540,6 +56540,7 @@ var GenericHeaderRenderer = (props) => {
|
|
|
56540
56540
|
I18n
|
|
56541
56541
|
);
|
|
56542
56542
|
const headerCellRef = React80.useRef(null);
|
|
56543
|
+
const menuButtonRef = React80.useRef(null);
|
|
56543
56544
|
const headerCheckboxSelection = colDef.headerCheckboxSelection;
|
|
56544
56545
|
const headerCheckboxSelectionEnabled = typeof headerCheckboxSelection === "function" ? headerCheckboxSelection({
|
|
56545
56546
|
api: props.api,
|
|
@@ -56898,6 +56899,50 @@ var GenericHeaderRenderer = (props) => {
|
|
|
56898
56899
|
expansionVariant,
|
|
56899
56900
|
onSSDR
|
|
56900
56901
|
);
|
|
56902
|
+
React80__default.default.useEffect(() => {
|
|
56903
|
+
if (!props.enableMenu) return;
|
|
56904
|
+
const MENU_SYNTHETIC = "__menu_synthetic_keydown";
|
|
56905
|
+
const handler = (e) => {
|
|
56906
|
+
const button = menuButtonRef.current?.querySelector("button");
|
|
56907
|
+
const isMenuOpen = button?.getAttribute("aria-expanded") === "true";
|
|
56908
|
+
if (e[MENU_SYNTHETIC]) {
|
|
56909
|
+
return;
|
|
56910
|
+
}
|
|
56911
|
+
if (e.altKey && e.key === "ArrowDown" && !isMenuOpen) {
|
|
56912
|
+
e.preventDefault();
|
|
56913
|
+
e.stopPropagation();
|
|
56914
|
+
button?.focus();
|
|
56915
|
+
button?.click();
|
|
56916
|
+
return;
|
|
56917
|
+
}
|
|
56918
|
+
if (!isMenuOpen) return;
|
|
56919
|
+
switch (e.key) {
|
|
56920
|
+
case "ArrowDown":
|
|
56921
|
+
case "ArrowUp":
|
|
56922
|
+
case "Enter":
|
|
56923
|
+
case "Escape":
|
|
56924
|
+
e.stopPropagation();
|
|
56925
|
+
e.preventDefault();
|
|
56926
|
+
if (button) {
|
|
56927
|
+
const synthetic = new KeyboardEvent("keydown", {
|
|
56928
|
+
key: e.key,
|
|
56929
|
+
bubbles: true,
|
|
56930
|
+
cancelable: true
|
|
56931
|
+
});
|
|
56932
|
+
synthetic[MENU_SYNTHETIC] = true;
|
|
56933
|
+
button.dispatchEvent(synthetic);
|
|
56934
|
+
}
|
|
56935
|
+
break;
|
|
56936
|
+
case "Tab":
|
|
56937
|
+
case "ArrowLeft":
|
|
56938
|
+
case "ArrowRight":
|
|
56939
|
+
button?.click();
|
|
56940
|
+
break;
|
|
56941
|
+
}
|
|
56942
|
+
};
|
|
56943
|
+
props.eGridHeader.addEventListener("keydown", handler, true);
|
|
56944
|
+
return () => props.eGridHeader.removeEventListener("keydown", handler, true);
|
|
56945
|
+
}, [props.eGridHeader, props.enableMenu]);
|
|
56901
56946
|
return /* @__PURE__ */ React80__default.default.createElement(
|
|
56902
56947
|
coreReact.Flex,
|
|
56903
56948
|
{
|
|
@@ -56972,6 +57017,7 @@ var GenericHeaderRenderer = (props) => {
|
|
|
56972
57017
|
props.enableMenu && /* @__PURE__ */ React80__default.default.createElement(
|
|
56973
57018
|
coreReact.DropdownFlyout,
|
|
56974
57019
|
{
|
|
57020
|
+
ref: menuButtonRef,
|
|
56975
57021
|
className: "data-table-header-menu",
|
|
56976
57022
|
size: "sm",
|
|
56977
57023
|
options: orderMenuOptions(),
|
|
@@ -104091,6 +104137,10 @@ var BulkEditPanel = ({}) => {
|
|
|
104091
104137
|
const { contextPanel, suppressBulkEditToasts } = useInternalTableContext();
|
|
104092
104138
|
const I18n = coreReact.useI18nContext();
|
|
104093
104139
|
const bulkEditRef = React80__default.default.useRef(null);
|
|
104140
|
+
const bodyRef = React80__default.default.useRef(null);
|
|
104141
|
+
React80.useEffect(() => {
|
|
104142
|
+
bodyRef.current?.focus();
|
|
104143
|
+
}, []);
|
|
104094
104144
|
return /* @__PURE__ */ React80__default.default.createElement(coreReact.Panel, null, /* @__PURE__ */ React80__default.default.createElement(
|
|
104095
104145
|
coreReact.Panel.Header,
|
|
104096
104146
|
{
|
|
@@ -104100,7 +104150,7 @@ var BulkEditPanel = ({}) => {
|
|
|
104100
104150
|
}
|
|
104101
104151
|
},
|
|
104102
104152
|
/* @__PURE__ */ React80__default.default.createElement(coreReact.Panel.Title, null, I18n.t("dataTable.bulkActions.editValues"))
|
|
104103
|
-
), /* @__PURE__ */ React80__default.default.createElement(coreReact.Panel.Body,
|
|
104153
|
+
), /* @__PURE__ */ React80__default.default.createElement(coreReact.Panel.Body, { ref: bodyRef }, /* @__PURE__ */ React80__default.default.createElement(coreReact.Panel.Section, null, /* @__PURE__ */ React80__default.default.createElement(
|
|
104104
104154
|
BulkEdit,
|
|
104105
104155
|
{
|
|
104106
104156
|
ref: bulkEditRef,
|
|
@@ -105634,6 +105684,7 @@ var en_default = {
|
|
|
105634
105684
|
moreFilters: "More Filters",
|
|
105635
105685
|
clearAllFilters: "Clear All Filters",
|
|
105636
105686
|
close: "Close",
|
|
105687
|
+
removeFilterToken: "Remove %{name}",
|
|
105637
105688
|
locationFilter: {
|
|
105638
105689
|
selectAll: "Select all",
|
|
105639
105690
|
includeSublocations: "Include sublocations",
|
|
@@ -105671,6 +105722,7 @@ var en_default = {
|
|
|
105671
105722
|
secondary: "Information loading, thanks for your patience."
|
|
105672
105723
|
},
|
|
105673
105724
|
menuOptions: {
|
|
105725
|
+
ariaMenuColumn: "Press Alt/Option+Down to open column menu.",
|
|
105674
105726
|
sortMenuItem: {
|
|
105675
105727
|
label: "Sort By This Column",
|
|
105676
105728
|
sortAscItem: "Sort Column Ascending",
|
|
@@ -107371,6 +107423,7 @@ var pseudo_default = {
|
|
|
107371
107423
|
moreFilters: "[\u1E3E\u1E3E\u1E3E\u01FF\u0159\u1E17 \xB7 \u0191\u012B\u0140\u0167\u1E17\u0159\u015F\u015F\u015F]",
|
|
107372
107424
|
clearAllFilters: "[\u0187\u0187\u0187\u0187\u0140\u1E17\u0227\u0159 \xB7 \u0226\u0140\u0140 \xB7 \u0191\u012B\u0140\u0167\u1E17\u0159\u015F\u015F\u015F\u015F]",
|
|
107373
107425
|
close: "[\u0187\u0140\u01FF\u015F\u1E17]",
|
|
107426
|
+
removeFilterToken: "[\u0158\u0158\u1E17\u1E3F\u01FF\u1E7D\u1E17 \xB7 \xB7 [NOTRANSLATE]%{name}[/NOTRANSLATE]]",
|
|
107374
107427
|
locationFilter: {
|
|
107375
107428
|
selectAll: "[\u015E\u015E\u1E17\u0140\u1E17\u0188\u0167 \xB7 \u0227\u0140\u0140\u0140]",
|
|
107376
107429
|
includeSublocations: "[\u012A\u012A\u012A\u012A\u019E\u0188\u0140\u016D\u1E13\u1E17 \xB7 \u015F\u016D\u0180\u0140\u01FF\u0188\u0227\u0167\u012B\u01FF\u019E\u015F\u015F\u015F\u015F]",
|
|
@@ -107408,6 +107461,7 @@ var pseudo_default = {
|
|
|
107408
107461
|
secondary: "[\u012A\u012A\u012A\u012A\u012A\u012A\u012A\u012A\u012A\u012A\u019E\u0192\u01FF\u0159\u1E3F\u0227\u0167\u012B\u01FF\u019E \xB7 \u0140\u01FF\u0227\u1E13\u012B\u019E\u0260, \xB7 \u0167\u0127\u0227\u019E\u0137\u015F \xB7 \u0192\u01FF\u0159 \xB7 \u1E8F\u01FF\u016D\u0159 \xB7 \u01A5\u0227\u0167\u012B\u1E17\u019E\u0188\u1E17..........]"
|
|
107409
107462
|
},
|
|
107410
107463
|
menuOptions: {
|
|
107464
|
+
ariaMenuColumn: "[\u01A4\u01A4\u01A4\u01A4\u01A4\u01A4\u01A4\u01A4\u01A4\u0159\u1E17\u015F\u015F \xB7 \u0226\u0140\u0167/\u01FE\u01A5\u0167\u012B\u01FF\u019E+\u1E12\u01FF\u1E87\u019E \xB7 \u0167\u01FF \xB7 \u01FF\u01A5\u1E17\u019E \xB7 \u0188\u01FF\u0140\u016D\u1E3F\u019E \xB7 \u1E3F\u1E17\u019E\u016D.........]",
|
|
107411
107465
|
sortMenuItem: {
|
|
107412
107466
|
label: "[\u015E\u015E\u015E\u015E\u01FF\u0159\u0167 \xB7 \u0181\u1E8F \xB7 \u0166\u0127\u012B\u015F \xB7 \u0187\u01FF\u0140\u016D\u1E3F\u019E\u019E\u019E\u019E]",
|
|
107413
107467
|
sortAscItem: "[\u015E\u015E\u015E\u015E\u015E\u01FF\u0159\u0167 \xB7 \u0187\u01FF\u0140\u016D\u1E3F\u019E \xB7 \u0226\u015F\u0188\u1E17\u019E\u1E13\u012B\u019E\u0260\u0260\u0260\u0260\u0260]",
|
|
@@ -110396,7 +110450,20 @@ var Table = (props) => {
|
|
|
110396
110450
|
params.api
|
|
110397
110451
|
);
|
|
110398
110452
|
},
|
|
110399
|
-
headerCheckboxSelectionFilteredOnly: true
|
|
110453
|
+
headerCheckboxSelectionFilteredOnly: true,
|
|
110454
|
+
// Needed to suppress ag-grid's default keyboard event handling for header menu keys when menu is open
|
|
110455
|
+
suppressHeaderKeyboardEvent({ event }) {
|
|
110456
|
+
const headerCell = event.target?.closest(
|
|
110457
|
+
".ag-header-cell"
|
|
110458
|
+
);
|
|
110459
|
+
const isMenuOpen = !!headerCell?.querySelector(
|
|
110460
|
+
'[aria-expanded="true"]'
|
|
110461
|
+
);
|
|
110462
|
+
if (isMenuOpen && ["ArrowDown", "ArrowUp", "Enter", "Escape"].includes(event.key)) {
|
|
110463
|
+
return true;
|
|
110464
|
+
}
|
|
110465
|
+
return false;
|
|
110466
|
+
}
|
|
110400
110467
|
};
|
|
110401
110468
|
},
|
|
110402
110469
|
[
|
|
@@ -110579,6 +110646,9 @@ var Table = (props) => {
|
|
|
110579
110646
|
suppressPropertyNamesCheck: true,
|
|
110580
110647
|
suppressRowClickSelection: props.suppressRowClickSelection || tableRowSelectionEnabled,
|
|
110581
110648
|
suppressPaginationPanel: true,
|
|
110649
|
+
localeText: {
|
|
110650
|
+
ariaMenuColumn: I18n.t("dataTable.menuOptions.ariaMenuColumn")
|
|
110651
|
+
},
|
|
110582
110652
|
tabToNextCell: props.tabToNextCell,
|
|
110583
110653
|
...clientSideRowData,
|
|
110584
110654
|
...detailRowConfigProps,
|
|
@@ -112196,6 +112266,7 @@ var StyledFilterTokenWrapper = styled4__default.default.div`
|
|
|
112196
112266
|
var ClientSideQuickFilters = ({ overlayMatchesTriggerWidth }) => {
|
|
112197
112267
|
const { tableRef, filterState, getColumnDefinition } = useInternalTableContext();
|
|
112198
112268
|
const hasNoContent = useTableHasNoContent();
|
|
112269
|
+
const I18n = coreReact.useI18nContext();
|
|
112199
112270
|
const { quickFilters, tokens } = React80__default.default.useMemo(() => {
|
|
112200
112271
|
return filterState.allAvailableFilters.reduce(
|
|
112201
112272
|
(acc, filter) => {
|
|
@@ -112260,9 +112331,13 @@ var ClientSideQuickFilters = ({ overlayMatchesTriggerWidth }) => {
|
|
|
112260
112331
|
if (!colDef) {
|
|
112261
112332
|
return null;
|
|
112262
112333
|
}
|
|
112263
|
-
|
|
112334
|
+
const tokenText = getFilterTokenText(colDef, filter.filterValues);
|
|
112335
|
+
return /* @__PURE__ */ React80__default.default.createElement(StyledFilterTokenWrapper, { key: filter.field }, /* @__PURE__ */ React80__default.default.createElement(coreReact.UNSAFE_FilterToken, null, /* @__PURE__ */ React80__default.default.createElement(coreReact.UNSAFE_FilterToken.Label, null, /* @__PURE__ */ React80__default.default.createElement(React80__default.default.Fragment, null, tokenText)), /* @__PURE__ */ React80__default.default.createElement(
|
|
112264
112336
|
coreReact.UNSAFE_FilterToken.Remove,
|
|
112265
112337
|
{
|
|
112338
|
+
"aria-label": I18n.t("dataTable.filters.removeFilterToken", {
|
|
112339
|
+
name: tokenText
|
|
112340
|
+
}),
|
|
112266
112341
|
onClick: () => tableRef?.current?.removeFilter(filter.field)
|
|
112267
112342
|
}
|
|
112268
112343
|
)));
|
|
@@ -112281,6 +112356,7 @@ var ServerSideQuickFilters = ({ overlayMatchesTriggerWidth }) => {
|
|
|
112281
112356
|
getColumnDefinition
|
|
112282
112357
|
} = useInternalTableContext();
|
|
112283
112358
|
const hasNoContent = useTableHasNoContent();
|
|
112359
|
+
const I18n = coreReact.useI18nContext();
|
|
112284
112360
|
const { quickFilterNames, tokenNames } = React80__default.default.useMemo(() => {
|
|
112285
112361
|
const appliedFilterNames = Object.keys(selectedFilters);
|
|
112286
112362
|
const isActiveFilter = (filterName) => appliedFilterNames.includes(filterName);
|
|
@@ -112355,12 +112431,16 @@ var ServerSideQuickFilters = ({ overlayMatchesTriggerWidth }) => {
|
|
|
112355
112431
|
return null;
|
|
112356
112432
|
}
|
|
112357
112433
|
const filter = getListFilter(fieldName);
|
|
112358
|
-
|
|
112434
|
+
const tokenText = getFilterTokenText(
|
|
112359
112435
|
colDef,
|
|
112360
112436
|
colDef.filterRenderer === DateFilterRenderer_default ? filter.value : filter.selected
|
|
112361
|
-
)
|
|
112437
|
+
);
|
|
112438
|
+
return /* @__PURE__ */ React80__default.default.createElement(StyledFilterTokenWrapper, { key: fieldName }, /* @__PURE__ */ React80__default.default.createElement(coreReact.UNSAFE_FilterToken, null, /* @__PURE__ */ React80__default.default.createElement(coreReact.UNSAFE_FilterToken.Label, null, /* @__PURE__ */ React80__default.default.createElement(React80__default.default.Fragment, null, tokenText)), /* @__PURE__ */ React80__default.default.createElement(
|
|
112362
112439
|
coreReact.UNSAFE_FilterToken.Remove,
|
|
112363
112440
|
{
|
|
112441
|
+
"aria-label": I18n.t("dataTable.filters.removeFilterToken", {
|
|
112442
|
+
name: tokenText
|
|
112443
|
+
}),
|
|
112364
112444
|
"data-qa": "data-table-quick-filter-remove-token",
|
|
112365
112445
|
onClick: () => onClearFilter(fieldName)
|
|
112366
112446
|
}
|
package/dist/modern/index.js
CHANGED
|
@@ -56527,6 +56527,7 @@ var GenericHeaderRenderer = (props) => {
|
|
|
56527
56527
|
I18n
|
|
56528
56528
|
);
|
|
56529
56529
|
const headerCellRef = useRef(null);
|
|
56530
|
+
const menuButtonRef = useRef(null);
|
|
56530
56531
|
const headerCheckboxSelection = colDef.headerCheckboxSelection;
|
|
56531
56532
|
const headerCheckboxSelectionEnabled = typeof headerCheckboxSelection === "function" ? headerCheckboxSelection({
|
|
56532
56533
|
api: props.api,
|
|
@@ -56885,6 +56886,50 @@ var GenericHeaderRenderer = (props) => {
|
|
|
56885
56886
|
expansionVariant,
|
|
56886
56887
|
onSSDR
|
|
56887
56888
|
);
|
|
56889
|
+
React80.useEffect(() => {
|
|
56890
|
+
if (!props.enableMenu) return;
|
|
56891
|
+
const MENU_SYNTHETIC = "__menu_synthetic_keydown";
|
|
56892
|
+
const handler = (e) => {
|
|
56893
|
+
const button = menuButtonRef.current?.querySelector("button");
|
|
56894
|
+
const isMenuOpen = button?.getAttribute("aria-expanded") === "true";
|
|
56895
|
+
if (e[MENU_SYNTHETIC]) {
|
|
56896
|
+
return;
|
|
56897
|
+
}
|
|
56898
|
+
if (e.altKey && e.key === "ArrowDown" && !isMenuOpen) {
|
|
56899
|
+
e.preventDefault();
|
|
56900
|
+
e.stopPropagation();
|
|
56901
|
+
button?.focus();
|
|
56902
|
+
button?.click();
|
|
56903
|
+
return;
|
|
56904
|
+
}
|
|
56905
|
+
if (!isMenuOpen) return;
|
|
56906
|
+
switch (e.key) {
|
|
56907
|
+
case "ArrowDown":
|
|
56908
|
+
case "ArrowUp":
|
|
56909
|
+
case "Enter":
|
|
56910
|
+
case "Escape":
|
|
56911
|
+
e.stopPropagation();
|
|
56912
|
+
e.preventDefault();
|
|
56913
|
+
if (button) {
|
|
56914
|
+
const synthetic = new KeyboardEvent("keydown", {
|
|
56915
|
+
key: e.key,
|
|
56916
|
+
bubbles: true,
|
|
56917
|
+
cancelable: true
|
|
56918
|
+
});
|
|
56919
|
+
synthetic[MENU_SYNTHETIC] = true;
|
|
56920
|
+
button.dispatchEvent(synthetic);
|
|
56921
|
+
}
|
|
56922
|
+
break;
|
|
56923
|
+
case "Tab":
|
|
56924
|
+
case "ArrowLeft":
|
|
56925
|
+
case "ArrowRight":
|
|
56926
|
+
button?.click();
|
|
56927
|
+
break;
|
|
56928
|
+
}
|
|
56929
|
+
};
|
|
56930
|
+
props.eGridHeader.addEventListener("keydown", handler, true);
|
|
56931
|
+
return () => props.eGridHeader.removeEventListener("keydown", handler, true);
|
|
56932
|
+
}, [props.eGridHeader, props.enableMenu]);
|
|
56888
56933
|
return /* @__PURE__ */ React80.createElement(
|
|
56889
56934
|
Flex,
|
|
56890
56935
|
{
|
|
@@ -56959,6 +57004,7 @@ var GenericHeaderRenderer = (props) => {
|
|
|
56959
57004
|
props.enableMenu && /* @__PURE__ */ React80.createElement(
|
|
56960
57005
|
DropdownFlyout,
|
|
56961
57006
|
{
|
|
57007
|
+
ref: menuButtonRef,
|
|
56962
57008
|
className: "data-table-header-menu",
|
|
56963
57009
|
size: "sm",
|
|
56964
57010
|
options: orderMenuOptions(),
|
|
@@ -104078,6 +104124,10 @@ var BulkEditPanel = ({}) => {
|
|
|
104078
104124
|
const { contextPanel, suppressBulkEditToasts } = useInternalTableContext();
|
|
104079
104125
|
const I18n = useI18nContext();
|
|
104080
104126
|
const bulkEditRef = React80.useRef(null);
|
|
104127
|
+
const bodyRef = React80.useRef(null);
|
|
104128
|
+
useEffect(() => {
|
|
104129
|
+
bodyRef.current?.focus();
|
|
104130
|
+
}, []);
|
|
104081
104131
|
return /* @__PURE__ */ React80.createElement(Panel, null, /* @__PURE__ */ React80.createElement(
|
|
104082
104132
|
Panel.Header,
|
|
104083
104133
|
{
|
|
@@ -104087,7 +104137,7 @@ var BulkEditPanel = ({}) => {
|
|
|
104087
104137
|
}
|
|
104088
104138
|
},
|
|
104089
104139
|
/* @__PURE__ */ React80.createElement(Panel.Title, null, I18n.t("dataTable.bulkActions.editValues"))
|
|
104090
|
-
), /* @__PURE__ */ React80.createElement(Panel.Body,
|
|
104140
|
+
), /* @__PURE__ */ React80.createElement(Panel.Body, { ref: bodyRef }, /* @__PURE__ */ React80.createElement(Panel.Section, null, /* @__PURE__ */ React80.createElement(
|
|
104091
104141
|
BulkEdit,
|
|
104092
104142
|
{
|
|
104093
104143
|
ref: bulkEditRef,
|
|
@@ -105621,6 +105671,7 @@ var en_default = {
|
|
|
105621
105671
|
moreFilters: "More Filters",
|
|
105622
105672
|
clearAllFilters: "Clear All Filters",
|
|
105623
105673
|
close: "Close",
|
|
105674
|
+
removeFilterToken: "Remove %{name}",
|
|
105624
105675
|
locationFilter: {
|
|
105625
105676
|
selectAll: "Select all",
|
|
105626
105677
|
includeSublocations: "Include sublocations",
|
|
@@ -105658,6 +105709,7 @@ var en_default = {
|
|
|
105658
105709
|
secondary: "Information loading, thanks for your patience."
|
|
105659
105710
|
},
|
|
105660
105711
|
menuOptions: {
|
|
105712
|
+
ariaMenuColumn: "Press Alt/Option+Down to open column menu.",
|
|
105661
105713
|
sortMenuItem: {
|
|
105662
105714
|
label: "Sort By This Column",
|
|
105663
105715
|
sortAscItem: "Sort Column Ascending",
|
|
@@ -107358,6 +107410,7 @@ var pseudo_default = {
|
|
|
107358
107410
|
moreFilters: "[\u1E3E\u1E3E\u1E3E\u01FF\u0159\u1E17 \xB7 \u0191\u012B\u0140\u0167\u1E17\u0159\u015F\u015F\u015F]",
|
|
107359
107411
|
clearAllFilters: "[\u0187\u0187\u0187\u0187\u0140\u1E17\u0227\u0159 \xB7 \u0226\u0140\u0140 \xB7 \u0191\u012B\u0140\u0167\u1E17\u0159\u015F\u015F\u015F\u015F]",
|
|
107360
107412
|
close: "[\u0187\u0140\u01FF\u015F\u1E17]",
|
|
107413
|
+
removeFilterToken: "[\u0158\u0158\u1E17\u1E3F\u01FF\u1E7D\u1E17 \xB7 \xB7 [NOTRANSLATE]%{name}[/NOTRANSLATE]]",
|
|
107361
107414
|
locationFilter: {
|
|
107362
107415
|
selectAll: "[\u015E\u015E\u1E17\u0140\u1E17\u0188\u0167 \xB7 \u0227\u0140\u0140\u0140]",
|
|
107363
107416
|
includeSublocations: "[\u012A\u012A\u012A\u012A\u019E\u0188\u0140\u016D\u1E13\u1E17 \xB7 \u015F\u016D\u0180\u0140\u01FF\u0188\u0227\u0167\u012B\u01FF\u019E\u015F\u015F\u015F\u015F]",
|
|
@@ -107395,6 +107448,7 @@ var pseudo_default = {
|
|
|
107395
107448
|
secondary: "[\u012A\u012A\u012A\u012A\u012A\u012A\u012A\u012A\u012A\u012A\u019E\u0192\u01FF\u0159\u1E3F\u0227\u0167\u012B\u01FF\u019E \xB7 \u0140\u01FF\u0227\u1E13\u012B\u019E\u0260, \xB7 \u0167\u0127\u0227\u019E\u0137\u015F \xB7 \u0192\u01FF\u0159 \xB7 \u1E8F\u01FF\u016D\u0159 \xB7 \u01A5\u0227\u0167\u012B\u1E17\u019E\u0188\u1E17..........]"
|
|
107396
107449
|
},
|
|
107397
107450
|
menuOptions: {
|
|
107451
|
+
ariaMenuColumn: "[\u01A4\u01A4\u01A4\u01A4\u01A4\u01A4\u01A4\u01A4\u01A4\u0159\u1E17\u015F\u015F \xB7 \u0226\u0140\u0167/\u01FE\u01A5\u0167\u012B\u01FF\u019E+\u1E12\u01FF\u1E87\u019E \xB7 \u0167\u01FF \xB7 \u01FF\u01A5\u1E17\u019E \xB7 \u0188\u01FF\u0140\u016D\u1E3F\u019E \xB7 \u1E3F\u1E17\u019E\u016D.........]",
|
|
107398
107452
|
sortMenuItem: {
|
|
107399
107453
|
label: "[\u015E\u015E\u015E\u015E\u01FF\u0159\u0167 \xB7 \u0181\u1E8F \xB7 \u0166\u0127\u012B\u015F \xB7 \u0187\u01FF\u0140\u016D\u1E3F\u019E\u019E\u019E\u019E]",
|
|
107400
107454
|
sortAscItem: "[\u015E\u015E\u015E\u015E\u015E\u01FF\u0159\u0167 \xB7 \u0187\u01FF\u0140\u016D\u1E3F\u019E \xB7 \u0226\u015F\u0188\u1E17\u019E\u1E13\u012B\u019E\u0260\u0260\u0260\u0260\u0260]",
|
|
@@ -110383,7 +110437,20 @@ var Table = (props) => {
|
|
|
110383
110437
|
params.api
|
|
110384
110438
|
);
|
|
110385
110439
|
},
|
|
110386
|
-
headerCheckboxSelectionFilteredOnly: true
|
|
110440
|
+
headerCheckboxSelectionFilteredOnly: true,
|
|
110441
|
+
// Needed to suppress ag-grid's default keyboard event handling for header menu keys when menu is open
|
|
110442
|
+
suppressHeaderKeyboardEvent({ event }) {
|
|
110443
|
+
const headerCell = event.target?.closest(
|
|
110444
|
+
".ag-header-cell"
|
|
110445
|
+
);
|
|
110446
|
+
const isMenuOpen = !!headerCell?.querySelector(
|
|
110447
|
+
'[aria-expanded="true"]'
|
|
110448
|
+
);
|
|
110449
|
+
if (isMenuOpen && ["ArrowDown", "ArrowUp", "Enter", "Escape"].includes(event.key)) {
|
|
110450
|
+
return true;
|
|
110451
|
+
}
|
|
110452
|
+
return false;
|
|
110453
|
+
}
|
|
110387
110454
|
};
|
|
110388
110455
|
},
|
|
110389
110456
|
[
|
|
@@ -110566,6 +110633,9 @@ var Table = (props) => {
|
|
|
110566
110633
|
suppressPropertyNamesCheck: true,
|
|
110567
110634
|
suppressRowClickSelection: props.suppressRowClickSelection || tableRowSelectionEnabled,
|
|
110568
110635
|
suppressPaginationPanel: true,
|
|
110636
|
+
localeText: {
|
|
110637
|
+
ariaMenuColumn: I18n.t("dataTable.menuOptions.ariaMenuColumn")
|
|
110638
|
+
},
|
|
110569
110639
|
tabToNextCell: props.tabToNextCell,
|
|
110570
110640
|
...clientSideRowData,
|
|
110571
110641
|
...detailRowConfigProps,
|
|
@@ -112183,6 +112253,7 @@ var StyledFilterTokenWrapper = styled4.div`
|
|
|
112183
112253
|
var ClientSideQuickFilters = ({ overlayMatchesTriggerWidth }) => {
|
|
112184
112254
|
const { tableRef, filterState, getColumnDefinition } = useInternalTableContext();
|
|
112185
112255
|
const hasNoContent = useTableHasNoContent();
|
|
112256
|
+
const I18n = useI18nContext();
|
|
112186
112257
|
const { quickFilters, tokens } = React80.useMemo(() => {
|
|
112187
112258
|
return filterState.allAvailableFilters.reduce(
|
|
112188
112259
|
(acc, filter) => {
|
|
@@ -112247,9 +112318,13 @@ var ClientSideQuickFilters = ({ overlayMatchesTriggerWidth }) => {
|
|
|
112247
112318
|
if (!colDef) {
|
|
112248
112319
|
return null;
|
|
112249
112320
|
}
|
|
112250
|
-
|
|
112321
|
+
const tokenText = getFilterTokenText(colDef, filter.filterValues);
|
|
112322
|
+
return /* @__PURE__ */ React80.createElement(StyledFilterTokenWrapper, { key: filter.field }, /* @__PURE__ */ React80.createElement(UNSAFE_FilterToken, null, /* @__PURE__ */ React80.createElement(UNSAFE_FilterToken.Label, null, /* @__PURE__ */ React80.createElement(React80.Fragment, null, tokenText)), /* @__PURE__ */ React80.createElement(
|
|
112251
112323
|
UNSAFE_FilterToken.Remove,
|
|
112252
112324
|
{
|
|
112325
|
+
"aria-label": I18n.t("dataTable.filters.removeFilterToken", {
|
|
112326
|
+
name: tokenText
|
|
112327
|
+
}),
|
|
112253
112328
|
onClick: () => tableRef?.current?.removeFilter(filter.field)
|
|
112254
112329
|
}
|
|
112255
112330
|
)));
|
|
@@ -112268,6 +112343,7 @@ var ServerSideQuickFilters = ({ overlayMatchesTriggerWidth }) => {
|
|
|
112268
112343
|
getColumnDefinition
|
|
112269
112344
|
} = useInternalTableContext();
|
|
112270
112345
|
const hasNoContent = useTableHasNoContent();
|
|
112346
|
+
const I18n = useI18nContext();
|
|
112271
112347
|
const { quickFilterNames, tokenNames } = React80.useMemo(() => {
|
|
112272
112348
|
const appliedFilterNames = Object.keys(selectedFilters);
|
|
112273
112349
|
const isActiveFilter = (filterName) => appliedFilterNames.includes(filterName);
|
|
@@ -112342,12 +112418,16 @@ var ServerSideQuickFilters = ({ overlayMatchesTriggerWidth }) => {
|
|
|
112342
112418
|
return null;
|
|
112343
112419
|
}
|
|
112344
112420
|
const filter = getListFilter(fieldName);
|
|
112345
|
-
|
|
112421
|
+
const tokenText = getFilterTokenText(
|
|
112346
112422
|
colDef,
|
|
112347
112423
|
colDef.filterRenderer === DateFilterRenderer_default ? filter.value : filter.selected
|
|
112348
|
-
)
|
|
112424
|
+
);
|
|
112425
|
+
return /* @__PURE__ */ React80.createElement(StyledFilterTokenWrapper, { key: fieldName }, /* @__PURE__ */ React80.createElement(UNSAFE_FilterToken, null, /* @__PURE__ */ React80.createElement(UNSAFE_FilterToken.Label, null, /* @__PURE__ */ React80.createElement(React80.Fragment, null, tokenText)), /* @__PURE__ */ React80.createElement(
|
|
112349
112426
|
UNSAFE_FilterToken.Remove,
|
|
112350
112427
|
{
|
|
112428
|
+
"aria-label": I18n.t("dataTable.filters.removeFilterToken", {
|
|
112429
|
+
name: tokenText
|
|
112430
|
+
}),
|
|
112351
112431
|
"data-qa": "data-table-quick-filter-remove-token",
|
|
112352
112432
|
onClick: () => onClearFilter(fieldName)
|
|
112353
112433
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@procore/data-table",
|
|
3
|
-
"version": "14.
|
|
3
|
+
"version": "14.44.0",
|
|
4
4
|
"description": "Complex data grid built on top of ag-grid, with DST components and styles.",
|
|
5
5
|
"author": "Procore Technologies",
|
|
6
6
|
"homepage": "https://github.com/procore/core/tree/main/packages/data-table",
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
"@procore/core-css": "10.17.0",
|
|
109
109
|
"@procore/core-icons": "^12.15.0",
|
|
110
110
|
"@procore/core-prettier": "10.2.0",
|
|
111
|
-
"@procore/core-react": "^12.
|
|
111
|
+
"@procore/core-react": "^12.44.0",
|
|
112
112
|
"@procore/eslint-config": "10.0.0",
|
|
113
113
|
"@procore/globalization-toolkit": "3.1.0",
|
|
114
114
|
"@procore/labs-financials-utils": "4.3.1",
|