@civicactions/cmsds-open-data-components 4.0.6 → 4.0.7-oe

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/dist/main.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import "./main.css";
2
2
  import {jsx as $hgUW1$jsx, jsxs as $hgUW1$jsxs, Fragment as $hgUW1$Fragment} from "react/jsx-runtime";
3
- import {Accordion as $hgUW1$Accordion, AccordionItem as $hgUW1$AccordionItem, Button as $hgUW1$Button, CloseIconThin as $hgUW1$CloseIconThin, ArrowIcon as $hgUW1$ArrowIcon, Spinner as $hgUW1$Spinner, Alert as $hgUW1$Alert, Dialog as $hgUW1$Dialog, TextField as $hgUW1$TextField, Tooltip as $hgUW1$Tooltip, TooltipIcon as $hgUW1$TooltipIcon, Choice as $hgUW1$Choice, Dropdown as $hgUW1$Dropdown, Pagination as $hgUW1$Pagination, Table as $hgUW1$Table, TableHead as $hgUW1$TableHead, TableRow as $hgUW1$TableRow, TableCell as $hgUW1$TableCell, TableBody as $hgUW1$TableBody, Tabs as $hgUW1$Tabs, TabPanel as $hgUW1$TabPanel, ExternalLinkIcon as $hgUW1$ExternalLinkIcon, Badge as $hgUW1$Badge} from "@cmsgov/design-system";
3
+ import {Accordion as $hgUW1$Accordion, AccordionItem as $hgUW1$AccordionItem, Button as $hgUW1$Button, CloseIconThin as $hgUW1$CloseIconThin, ArrowIcon as $hgUW1$ArrowIcon, Spinner as $hgUW1$Spinner, Alert as $hgUW1$Alert, Dialog as $hgUW1$Dialog, TextField as $hgUW1$TextField, Tooltip as $hgUW1$Tooltip, TooltipIcon as $hgUW1$TooltipIcon, Choice as $hgUW1$Choice, Dropdown as $hgUW1$Dropdown, Pagination as $hgUW1$Pagination, Table as $hgUW1$Table, TableHead as $hgUW1$TableHead, TableRow as $hgUW1$TableRow, TableCell as $hgUW1$TableCell, TableBody as $hgUW1$TableBody, Tabs as $hgUW1$Tabs, TabPanel as $hgUW1$TabPanel, Badge as $hgUW1$Badge} from "@cmsgov/design-system";
4
4
  import $hgUW1$react, {createContext as $hgUW1$createContext, useState as $hgUW1$useState, useRef as $hgUW1$useRef, useEffect as $hgUW1$useEffect, useContext as $hgUW1$useContext, useMemo as $hgUW1$useMemo, useCallback as $hgUW1$useCallback} from "react";
5
5
  import {NavLink as $hgUW1$NavLink, Link as $hgUW1$Link, useNavigate as $hgUW1$useNavigate, useLocation as $hgUW1$useLocation, useSearchParams as $hgUW1$useSearchParams} from "react-router-dom";
6
6
  import $hgUW1$qs from "qs";
@@ -369,9 +369,15 @@ const $10bc3aae21fc1572$var$DatasetListSubmenu = ({ rootUrl: rootUrl, enablePagi
369
369
  })}`);
370
370
  }
371
371
  });
372
+ // Sync totalItems state with API response data
373
+ // Moved to useEffect to prevent state updates during render (which can cause infinite loops)
374
+ (0, $hgUW1$useEffect)(()=>{
375
+ if (data?.data?.total !== undefined && data.data.total !== totalItems) setTotalItems(data.data.total);
376
+ }, [
377
+ data?.data?.total
378
+ ]);
372
379
  let submenuItemsCount = 0;
373
380
  if (data) {
374
- if (data.data.total && totalItems !== data.data.total) setTotalItems(data.data.total);
375
381
  let resultsCount = Object.keys(data.data.results).length;
376
382
  // For the submenu pager, If there are fewer than 4 dataset items, display the dataset item count, otherwise, show "Viewing 4..".
377
383
  submenuItemsCount = resultsCount > defaultPageSize ? defaultPageSize : resultsCount;
@@ -2258,13 +2264,16 @@ function $7264a673914aa746$export$2b9377795161999(type) {
2258
2264
 
2259
2265
 
2260
2266
 
2261
- const $64a351d3fd8413c3$var$HeaderResizeElement = ({ table: table, header: header, sortElement: sortElement, setAriaLiveFeedback: setAriaLiveFeedback })=>{
2267
+ const $64a351d3fd8413c3$var$HeaderResizeElement = ({ table: table, header: header, sortElement: sortElement, id: id })=>{
2262
2268
  const [columnResizing, setColumnResizing] = (0, $hgUW1$useState)("");
2269
+ // Fix for JSX in Data Dictionary Title header cell
2270
+ const ariaLabel = header.id === "titleResizable" ? "Title" : header.column.columnDef.header;
2263
2271
  return /*#__PURE__*/ (0, $hgUW1$jsxs)("th", {
2264
2272
  key: header.id,
2265
2273
  style: {
2266
2274
  width: header.getSize()
2267
2275
  },
2276
+ id: id,
2268
2277
  title: typeof header.column.columnDef.header === "string" ? header.column.columnDef.header : "",
2269
2278
  className: "ds-u-border-y--2 ds-u-padding--2 ds-u-border--dark ds-u-font-weight--bold",
2270
2279
  "aria-sort": header.column.getIsSorted() === "asc" ? "ascending" : header.column.getIsSorted() === "desc" ? "descending" : "none",
@@ -2280,7 +2289,7 @@ const $64a351d3fd8413c3$var$HeaderResizeElement = ({ table: table, header: heade
2280
2289
  sortElement && /*#__PURE__*/ (0, $hgUW1$jsx)("button", {
2281
2290
  onClick: header.column.getToggleSortingHandler(),
2282
2291
  className: header.column.getCanSort() ? `cursor-pointer select-none ds-u-focus-visible ${sortElement(header.column.getIsSorted())}` : "",
2283
- "aria-label": `${header.column.columnDef.header} sort order`
2292
+ "aria-label": `${ariaLabel} sort order`
2284
2293
  })
2285
2294
  ]
2286
2295
  }),
@@ -2288,7 +2297,7 @@ const $64a351d3fd8413c3$var$HeaderResizeElement = ({ table: table, header: heade
2288
2297
  onMouseDown: header.getResizeHandler(),
2289
2298
  onTouchStart: header.getResizeHandler(),
2290
2299
  className: `dc-c-resize-handle ds-u-focus-visible ${header.column.getIsResizing() || header.column.id == columnResizing ? "isResizing" : ""}`,
2291
- "aria-label": `Resize ${header.column.columnDef.header} column`,
2300
+ "aria-label": `Resize ${ariaLabel} column`,
2292
2301
  onKeyDown: (e)=>{
2293
2302
  const columnSizingObject = table.getState().columnSizing;
2294
2303
  switch(e.key){
@@ -2296,21 +2305,13 @@ const $64a351d3fd8413c3$var$HeaderResizeElement = ({ table: table, header: heade
2296
2305
  case " ":
2297
2306
  e.preventDefault();
2298
2307
  e.stopPropagation();
2299
- if (columnResizing) {
2300
- // end resizing
2301
- setColumnResizing("");
2302
- setAriaLiveFeedback(`${header.column.columnDef.header} dropped.`);
2303
- } else {
2304
- // start resizing
2305
- setColumnResizing(header.column.id);
2306
- setAriaLiveFeedback(`${header.column.columnDef.header} grabbed.`);
2307
- }
2308
+ if (columnResizing) // end resizing
2309
+ setColumnResizing("");
2310
+ else // start resizing
2311
+ setColumnResizing(header.column.id);
2308
2312
  break;
2309
2313
  case "Escape":
2310
- if (columnResizing) {
2311
- setColumnResizing("");
2312
- setAriaLiveFeedback(`${header.column.columnDef.header} dropped.`);
2313
- }
2314
+ if (columnResizing) setColumnResizing("");
2314
2315
  break;
2315
2316
  case "ArrowRight":
2316
2317
  e.preventDefault();
@@ -2318,7 +2319,6 @@ const $64a351d3fd8413c3$var$HeaderResizeElement = ({ table: table, header: heade
2318
2319
  if (columnResizing) {
2319
2320
  columnSizingObject[header.column.id] = header.getSize() + 10;
2320
2321
  table.setColumnSizing(columnSizingObject);
2321
- setAriaLiveFeedback(`${header.column.columnDef.header} has been resized. The new width is ${header.getSize()} pixels.`);
2322
2322
  }
2323
2323
  break;
2324
2324
  case "ArrowLeft":
@@ -2327,7 +2327,6 @@ const $64a351d3fd8413c3$var$HeaderResizeElement = ({ table: table, header: heade
2327
2327
  if (columnResizing) {
2328
2328
  columnSizingObject[header.column.id] = header.getSize() - 10;
2329
2329
  table.setColumnSizing(columnSizingObject);
2330
- setAriaLiveFeedback(`${header.column.columnDef.header} has been resized. The new width is ${header.getSize()} pixels.`);
2331
2330
  }
2332
2331
  break;
2333
2332
  }
@@ -2342,7 +2341,7 @@ const $64a351d3fd8413c3$var$HeaderResizeElement = ({ table: table, header: heade
2342
2341
  var $64a351d3fd8413c3$export$2e2bcd8739ae039 = $64a351d3fd8413c3$var$HeaderResizeElement;
2343
2342
 
2344
2343
 
2345
- const $96d341d082bffec5$var$TruncatedResizeableTHead = ({ table: table, sortElement: sortElement = null, setAriaLiveFeedback: setAriaLiveFeedback })=>{
2344
+ const $96d341d082bffec5$var$TruncatedResizeableTHead = ({ table: table, sortElement: sortElement = null })=>{
2346
2345
  return /*#__PURE__*/ (0, $hgUW1$jsx)("thead", {
2347
2346
  className: "dc-thead--truncated dc-thead--resizeable",
2348
2347
  children: table.getHeaderGroups().map((headerGroup)=>/*#__PURE__*/ (0, $hgUW1$jsx)("tr", {
@@ -2350,8 +2349,7 @@ const $96d341d082bffec5$var$TruncatedResizeableTHead = ({ table: table, sortElem
2350
2349
  children: headerGroup.headers.map((header)=>/*#__PURE__*/ (0, $hgUW1$jsx)((0, $64a351d3fd8413c3$export$2e2bcd8739ae039), {
2351
2350
  table: table,
2352
2351
  header: header,
2353
- sortElement: sortElement,
2354
- setAriaLiveFeedback: setAriaLiveFeedback
2352
+ sortElement: sortElement
2355
2353
  }, header.id + "_dataTableResize"))
2356
2354
  }, headerGroup.id))
2357
2355
  });
@@ -3664,7 +3662,6 @@ const $d98f94c79ddf4e0e$var$DataTable = ({ columns: columns, sortTransform: sort
3664
3662
  const { conditions: conditions } = resource;
3665
3663
  const data = resource.values;
3666
3664
  const [sorting, setSorting] = (0, $hgUW1$useState)([]);
3667
- const [ariaLiveFeedback, setAriaLiveFeedback] = (0, $hgUW1$useState)("");
3668
3665
  const dataTableWrapperElement = (0, $hgUW1$useRef)(null);
3669
3666
  const columnHelper = (0, $hgUW1$createColumnHelper)();
3670
3667
  const table_columns = columns.map((col)=>{
@@ -3860,57 +3857,48 @@ const $d98f94c79ddf4e0e$var$DataTable = ({ columns: columns, sortTransform: sort
3860
3857
  })
3861
3858
  ]
3862
3859
  }),
3863
- /*#__PURE__*/ (0, $hgUW1$jsxs)("div", {
3860
+ /*#__PURE__*/ (0, $hgUW1$jsx)("div", {
3864
3861
  className: "dc-c-datatable-wrapper ds-u-border-x--1 ds-u-border-bottom--1",
3865
3862
  tabIndex: 0,
3866
3863
  ref: dataTableWrapperElement,
3867
- children: [
3868
- /*#__PURE__*/ (0, $hgUW1$jsxs)("table", {
3869
- style: {
3870
- width: canResize ? table.getCenterTotalSize() : "100%",
3871
- minWidth: tableWrapperWidth()
3872
- },
3873
- className: "dc-c-datatable",
3874
- children: [
3875
- canResize ? /*#__PURE__*/ (0, $hgUW1$jsx)((0, $96d341d082bffec5$export$2e2bcd8739ae039), {
3876
- table: table,
3877
- sortElement: sortElement,
3878
- setAriaLiveFeedback: setAriaLiveFeedback
3879
- }) : /*#__PURE__*/ (0, $hgUW1$jsx)((0, $23763e27eda0e8d7$export$2e2bcd8739ae039), {
3880
- table: table,
3881
- sortElement: sortElement
3882
- }),
3883
- loading ? /*#__PURE__*/ (0, $hgUW1$jsx)("tbody", {}) : /*#__PURE__*/ (0, $hgUW1$jsx)("tbody", {
3884
- children: table.getRowModel().rows.map((row, index)=>{
3885
- const even = (index + 1) % 2 === 0;
3886
- const highlight = highlightRow === row.id;
3887
- return /*#__PURE__*/ (0, $hgUW1$jsx)("tr", {
3888
- className: `${highlight ? "dc-c-datatable--highlight-row" : even && "dc-c-datatable--even-row"}`,
3889
- onClick: ()=>setHighlightRow(row.id),
3890
- children: row.getVisibleCells().map((cell)=>{
3891
- let classList = "dc-truncate ds-u-padding-x--1";
3892
- return /*#__PURE__*/ (0, $hgUW1$jsx)("td", {
3893
- key: cell.id,
3894
- style: {
3895
- maxWidth: cell.column.getSize()
3896
- },
3897
- className: `${classList} ${tablePadding}`,
3898
- title: cell.getValue(),
3899
- children: (0, $hgUW1$flexRender)(cell.column.columnDef.cell, cell.getContext())
3900
- });
3901
- })
3902
- }, row.id);
3903
- })
3864
+ children: /*#__PURE__*/ (0, $hgUW1$jsxs)("table", {
3865
+ style: {
3866
+ width: canResize ? table.getCenterTotalSize() : "100%",
3867
+ minWidth: tableWrapperWidth()
3868
+ },
3869
+ className: "dc-c-datatable",
3870
+ children: [
3871
+ canResize ? /*#__PURE__*/ (0, $hgUW1$jsx)((0, $96d341d082bffec5$export$2e2bcd8739ae039), {
3872
+ table: table,
3873
+ sortElement: sortElement
3874
+ }) : /*#__PURE__*/ (0, $hgUW1$jsx)((0, $23763e27eda0e8d7$export$2e2bcd8739ae039), {
3875
+ table: table,
3876
+ sortElement: sortElement
3877
+ }),
3878
+ loading ? /*#__PURE__*/ (0, $hgUW1$jsx)("tbody", {}) : /*#__PURE__*/ (0, $hgUW1$jsx)("tbody", {
3879
+ children: table.getRowModel().rows.map((row, index)=>{
3880
+ const even = (index + 1) % 2 === 0;
3881
+ const highlight = highlightRow === row.id;
3882
+ return /*#__PURE__*/ (0, $hgUW1$jsx)("tr", {
3883
+ className: `${highlight ? "dc-c-datatable--highlight-row" : even && "dc-c-datatable--even-row"}`,
3884
+ onClick: ()=>setHighlightRow(row.id),
3885
+ children: row.getVisibleCells().map((cell)=>{
3886
+ let classList = "dc-truncate ds-u-padding-x--1";
3887
+ return /*#__PURE__*/ (0, $hgUW1$jsx)("td", {
3888
+ key: cell.id,
3889
+ style: {
3890
+ maxWidth: cell.column.getSize()
3891
+ },
3892
+ className: `${classList} ${tablePadding}`,
3893
+ title: cell.getValue(),
3894
+ children: (0, $hgUW1$flexRender)(cell.column.columnDef.cell, cell.getContext())
3895
+ });
3896
+ })
3897
+ }, row.id);
3904
3898
  })
3905
- ]
3906
- }),
3907
- /*#__PURE__*/ (0, $hgUW1$jsx)("div", {
3908
- className: "sr-only",
3909
- "aria-live": "assertive",
3910
- "aria-atomic": "true",
3911
- children: ariaLiveFeedback
3912
- })
3913
- ]
3899
+ })
3900
+ ]
3901
+ })
3914
3902
  }),
3915
3903
  loading && /*#__PURE__*/ (0, $hgUW1$jsx)((0, $hgUW1$Spinner), {
3916
3904
  "aria-valuetext": "Dataset loading",
@@ -4541,42 +4529,6 @@ const $e873081a6e8f024e$var$DatasetSearch = (props)=>{
4541
4529
  window.history.pushState({}, "", `${url.origin}${url.pathname}${urlString}`);
4542
4530
  }
4543
4531
  const pageSize = defaultPageSize;
4544
- (0, $hgUW1$useEffect)(()=>{
4545
- const baseNumber = Number(totalItems) > 0 ? 1 : 0;
4546
- const startingNumber = baseNumber + (Number(pageSize) * Number(page) - Number(pageSize));
4547
- const endingNumber = Number(pageSize) * Number(page);
4548
- setCurrentResultNumbers({
4549
- total: Number(totalItems),
4550
- startingNumber: Number(totalItems) >= startingNumber ? startingNumber : 0,
4551
- endingNumber: Number(totalItems) < endingNumber ? Number(totalItems) : endingNumber
4552
- });
4553
- setTimeout(()=>{
4554
- setAnnouncementText(`Showing ${startingNumber} to ${endingNumber} of ${totalItems} datasets`);
4555
- }, 100);
4556
- if (totalItems <= 0 && currentResultNumbers !== null) setNoResults(true);
4557
- else setNoResults(false);
4558
- }, [
4559
- totalItems,
4560
- pageSize,
4561
- page
4562
- ]);
4563
- (0, $hgUW1$useEffect)(()=>{
4564
- if (page !== 1 && (transformedParams.fulltext !== fulltext || transformedParams.selectedFacets !== selectedFacets)) setPage(1);
4565
- }, [
4566
- fulltext,
4567
- selectedFacets
4568
- ]);
4569
- (0, $hgUW1$useEffect)(()=>{
4570
- if (totalItems !== null && totalItems !== undefined && totalItems > 0) {
4571
- var params = buildSearchParams(true);
4572
- if (params !== location.search) setSearchParams(params);
4573
- }
4574
- }, [
4575
- page,
4576
- sort,
4577
- sortOrder,
4578
- totalItems
4579
- ]);
4580
4532
  function resetFilters() {
4581
4533
  setFullText(defaultFulltext);
4582
4534
  setFilterText(defaultFulltext);
@@ -4619,11 +4571,61 @@ const $e873081a6e8f024e$var$DatasetSearch = (props)=>{
4619
4571
  })}`);
4620
4572
  }
4621
4573
  });
4622
- if (data && data.data.total && totalItems != data.data.total) setTotalItems(data.data.total);
4574
+ // Sync totalItems state with API response data
4575
+ // Moved to useEffect to prevent state updates during render (which can cause infinite loops)
4576
+ (0, $hgUW1$useEffect)(()=>{
4577
+ if (data?.data?.total !== undefined && data.data.total !== totalItems) setTotalItems(data.data.total);
4578
+ }, [
4579
+ data?.data?.total
4580
+ ]);
4623
4581
  const facets = data && data.data.facets ? (0, $eff7d34c30f5a0fc$export$959638e8dca60ce6)(data ? data.data.facets : []) : {
4624
4582
  theme: null,
4625
4583
  keyword: null
4626
4584
  };
4585
+ (0, $hgUW1$useEffect)(()=>{
4586
+ const baseNumber = Number(totalItems) > 0 ? 1 : 0;
4587
+ const startingNumber = baseNumber + (Number(pageSize) * Number(page) - Number(pageSize));
4588
+ const endingNumber = Number(pageSize) * Number(page);
4589
+ setCurrentResultNumbers({
4590
+ total: Number(totalItems),
4591
+ startingNumber: Number(totalItems) >= startingNumber ? startingNumber : 0,
4592
+ endingNumber: Number(totalItems) < endingNumber ? Number(totalItems) : endingNumber
4593
+ });
4594
+ if (totalItems <= 0 && currentResultNumbers !== null) setNoResults(true);
4595
+ else setNoResults(false);
4596
+ }, [
4597
+ totalItems,
4598
+ pageSize,
4599
+ page
4600
+ ]);
4601
+ (0, $hgUW1$useEffect)(()=>{
4602
+ if (page !== 1 && (transformedParams.fulltext !== fulltext || transformedParams.selectedFacets !== selectedFacets)) setPage(1);
4603
+ }, [
4604
+ fulltext,
4605
+ selectedFacets
4606
+ ]);
4607
+ (0, $hgUW1$useEffect)(()=>{
4608
+ if (totalItems !== null && totalItems !== undefined && totalItems > 0) {
4609
+ var params = buildSearchParams(true);
4610
+ if (params !== location.search) setSearchParams(params);
4611
+ }
4612
+ }, [
4613
+ page,
4614
+ sort,
4615
+ sortOrder,
4616
+ totalItems
4617
+ ]);
4618
+ (0, $hgUW1$useEffect)(()=>{
4619
+ // No results found
4620
+ if (noResults) setAnnouncementText("No results found.");
4621
+ else if (!isPending && (!data || !data.data.results)) setAnnouncementText("Could not connect to the API.");
4622
+ else setAnnouncementText(`Showing ${currentResultNumbers.startingNumber} to ${currentResultNumbers.endingNumber} of ${currentResultNumbers.total} datasets`);
4623
+ }, [
4624
+ data,
4625
+ isPending,
4626
+ noResults,
4627
+ currentResultNumbers
4628
+ ]);
4627
4629
  return /*#__PURE__*/ (0, $hgUW1$jsxs)((0, $hgUW1$Fragment), {
4628
4630
  children: [
4629
4631
  /*#__PURE__*/ (0, $hgUW1$jsx)((0, $5723016a5461c1ca$export$2e2bcd8739ae039), {
@@ -4632,6 +4634,15 @@ const $e873081a6e8f024e$var$DatasetSearch = (props)=>{
4632
4634
  /*#__PURE__*/ (0, $hgUW1$jsxs)("section", {
4633
4635
  className: "ds-l-container",
4634
4636
  children: [
4637
+ /*#__PURE__*/ (0, $hgUW1$jsx)("div", {
4638
+ children: /*#__PURE__*/ (0, $hgUW1$jsx)("p", {
4639
+ className: "ds-u-visibility--screen-reader",
4640
+ "aria-live": "assertive",
4641
+ "aria-atomic": "true",
4642
+ "data-testid": "currentResults",
4643
+ children: announcementText
4644
+ })
4645
+ }),
4635
4646
  /*#__PURE__*/ (0, $hgUW1$jsx)("div", {
4636
4647
  className: "ds-l-row",
4637
4648
  children: /*#__PURE__*/ (0, $hgUW1$jsxs)("div", {
@@ -4716,34 +4727,23 @@ const $e873081a6e8f024e$var$DatasetSearch = (props)=>{
4716
4727
  /*#__PURE__*/ (0, $hgUW1$jsxs)("div", {
4717
4728
  className: "ds-u-display--flex ds-u-justify-content--between ds-u-align-items--end ds-u-flex-wrap--reverse ds-u-sm-flex-wrap--wrap",
4718
4729
  children: [
4719
- enablePagination && /*#__PURE__*/ (0, $hgUW1$jsxs)("div", {
4730
+ enablePagination && /*#__PURE__*/ (0, $hgUW1$jsx)("div", {
4720
4731
  className: "ds-l-col--12 ds-l-sm-col--6 ds-l-md-col--8 ds-u-sm-padding-left--0",
4721
- children: [
4722
- /*#__PURE__*/ (0, $hgUW1$jsx)("p", {
4723
- className: "ds-u-margin-y--0",
4724
- "aria-hidden": "true",
4725
- children: currentResultNumbers && data && /*#__PURE__*/ (0, $hgUW1$jsxs)((0, $hgUW1$Fragment), {
4726
- children: [
4727
- "Showing ",
4728
- currentResultNumbers.startingNumber,
4729
- " -",
4730
- " ",
4731
- currentResultNumbers.endingNumber,
4732
- " of ",
4733
- data.data.total,
4734
- " datasets"
4735
- ]
4736
- })
4737
- }),
4738
- /*#__PURE__*/ (0, $hgUW1$jsx)("p", {
4739
- className: "ds-u-visibility--screen-reader",
4740
- role: "status",
4741
- "aria-live": "assertive",
4742
- "aria-atomic": "true",
4743
- "data-testid": "currentResults",
4744
- children: announcementText
4732
+ children: /*#__PURE__*/ (0, $hgUW1$jsx)("p", {
4733
+ className: "ds-u-margin-y--0",
4734
+ children: currentResultNumbers && data && /*#__PURE__*/ (0, $hgUW1$jsxs)((0, $hgUW1$Fragment), {
4735
+ children: [
4736
+ "Showing ",
4737
+ currentResultNumbers.startingNumber,
4738
+ " -",
4739
+ " ",
4740
+ currentResultNumbers.endingNumber,
4741
+ " of ",
4742
+ data.data.total,
4743
+ " datasets"
4744
+ ]
4745
4745
  })
4746
- ]
4746
+ })
4747
4747
  }),
4748
4748
  enableSort && /*#__PURE__*/ (0, $hgUW1$jsx)("div", {
4749
4749
  className: "ds-l-col--12 ds-l-sm-col--6 ds-l-md-col--4 ds-u-sm-padding-right--0",
@@ -4764,6 +4764,7 @@ const $e873081a6e8f024e$var$DatasetSearch = (props)=>{
4764
4764
  children: [
4765
4765
  noResults && /*#__PURE__*/ (0, $hgUW1$jsx)((0, $hgUW1$Alert), {
4766
4766
  variation: "error",
4767
+ role: "region",
4767
4768
  heading: "No results found."
4768
4769
  }),
4769
4770
  data && data.data.results ? Object.keys(data.data.results).map((key)=>{
@@ -4791,6 +4792,7 @@ const $e873081a6e8f024e$var$DatasetSearch = (props)=>{
4791
4792
  }, item.identifier);
4792
4793
  }) : /*#__PURE__*/ (0, $hgUW1$jsx)((0, $hgUW1$Alert), {
4793
4794
  variation: "error",
4795
+ role: "region",
4794
4796
  heading: "Could not connect to the API."
4795
4797
  })
4796
4798
  ]
@@ -4903,37 +4905,6 @@ const $550bcc185f420ff5$var$DatasetList = ({ rootUrl: rootUrl, enableSort: enabl
4903
4905
  }
4904
4906
  };
4905
4907
  const pageSize = defaultPageSize;
4906
- (0, $hgUW1$useEffect)(()=>{
4907
- // Update browser URL with current search params
4908
- const params = buildSearchParams(true);
4909
- const url = new URL(window.location.href);
4910
- window.history.pushState({}, "", `${url.origin}${url.pathname}${params}`);
4911
- const baseNumber = Number(totalItems) > 0 ? 1 : 0;
4912
- const startingNumber = baseNumber + (Number(pageSize) * Number(page) - Number(pageSize));
4913
- const endingNumber = Number(pageSize) * Number(page);
4914
- setCurrentResultNumbers({
4915
- total: Number(totalItems),
4916
- startingNumber: Number(totalItems) >= startingNumber ? startingNumber : 0,
4917
- endingNumber: Number(totalItems) < endingNumber ? Number(totalItems) : endingNumber
4918
- });
4919
- setTimeout(()=>{
4920
- setAnnouncementText(`Showing ${startingNumber} to ${endingNumber} of ${totalItems} datasets`);
4921
- }, 100);
4922
- if (totalItems <= 0 && currentResultNumbers !== null) setNoResults(true);
4923
- else setNoResults(false);
4924
- }, [
4925
- totalItems,
4926
- pageSize,
4927
- page
4928
- ]);
4929
- (0, $hgUW1$useEffect)(()=>{
4930
- var params = buildSearchParams(true);
4931
- if (params !== location.search) setSearchParams(params);
4932
- }, [
4933
- page,
4934
- sort,
4935
- sortOrder
4936
- ]);
4937
4908
  function buildSearchParams(includePage) {
4938
4909
  let newParams = {};
4939
4910
  if (Number(page) !== 1 && includePage) newParams.page = page;
@@ -4962,7 +4933,52 @@ const $550bcc185f420ff5$var$DatasetList = ({ rootUrl: rootUrl, enableSort: enabl
4962
4933
  })}`);
4963
4934
  }
4964
4935
  });
4965
- if (data && data.data.total && totalItems != data.data.total) setTotalItems(data.data.total);
4936
+ // Sync totalItems state with API response data
4937
+ // Moved to useEffect to prevent state updates during render (which can cause infinite loops)
4938
+ (0, $hgUW1$useEffect)(()=>{
4939
+ if (data?.data?.total !== undefined && data.data.total !== totalItems) setTotalItems(data.data.total);
4940
+ }, [
4941
+ data?.data?.total
4942
+ ]);
4943
+ (0, $hgUW1$useEffect)(()=>{
4944
+ // Update browser URL with current search params
4945
+ const params = buildSearchParams(true);
4946
+ const url = new URL(window.location.href);
4947
+ window.history.pushState({}, "", `${url.origin}${url.pathname}${params}`);
4948
+ const baseNumber = Number(totalItems) > 0 ? 1 : 0;
4949
+ const startingNumber = baseNumber + (Number(pageSize) * Number(page) - Number(pageSize));
4950
+ const endingNumber = Number(pageSize) * Number(page);
4951
+ setCurrentResultNumbers({
4952
+ total: Number(totalItems),
4953
+ startingNumber: Number(totalItems) >= startingNumber ? startingNumber : 0,
4954
+ endingNumber: Number(totalItems) < endingNumber ? Number(totalItems) : endingNumber
4955
+ });
4956
+ if (totalItems <= 0 && currentResultNumbers !== null) setNoResults(true);
4957
+ else setNoResults(false);
4958
+ }, [
4959
+ totalItems,
4960
+ pageSize,
4961
+ page
4962
+ ]);
4963
+ (0, $hgUW1$useEffect)(()=>{
4964
+ var params = buildSearchParams(true);
4965
+ if (params !== location.search) setSearchParams(params);
4966
+ }, [
4967
+ page,
4968
+ sort,
4969
+ sortOrder
4970
+ ]);
4971
+ (0, $hgUW1$useEffect)(()=>{
4972
+ // No results found
4973
+ if (noResults) setAnnouncementText("No results found.");
4974
+ else if (!isPending && (!data || !data.data.results)) setAnnouncementText("Could not connect to the API.");
4975
+ else setAnnouncementText(`Showing ${currentResultNumbers.startingNumber} to ${currentResultNumbers.endingNumber} of ${currentResultNumbers.total} datasets`);
4976
+ }, [
4977
+ data,
4978
+ isPending,
4979
+ noResults,
4980
+ currentResultNumbers
4981
+ ]);
4966
4982
  return /*#__PURE__*/ (0, $hgUW1$jsxs)((0, $hgUW1$Fragment), {
4967
4983
  children: [
4968
4984
  /*#__PURE__*/ (0, $hgUW1$jsx)((0, $5723016a5461c1ca$export$2e2bcd8739ae039), {
@@ -4971,6 +4987,15 @@ const $550bcc185f420ff5$var$DatasetList = ({ rootUrl: rootUrl, enableSort: enabl
4971
4987
  /*#__PURE__*/ (0, $hgUW1$jsxs)("section", {
4972
4988
  className: "ds-l-container",
4973
4989
  children: [
4990
+ /*#__PURE__*/ (0, $hgUW1$jsx)("div", {
4991
+ children: /*#__PURE__*/ (0, $hgUW1$jsx)("p", {
4992
+ className: "ds-u-visibility--screen-reader",
4993
+ "aria-live": "assertive",
4994
+ "aria-atomic": "true",
4995
+ "data-testid": "currentResults",
4996
+ children: announcementText
4997
+ })
4998
+ }),
4974
4999
  /*#__PURE__*/ (0, $hgUW1$jsx)("div", {
4975
5000
  className: "ds-l-row",
4976
5001
  children: /*#__PURE__*/ (0, $hgUW1$jsx)("div", {
@@ -5011,33 +5036,22 @@ const $550bcc185f420ff5$var$DatasetList = ({ rootUrl: rootUrl, enableSort: enabl
5011
5036
  className: "ds-u-margin-bottom--3",
5012
5037
  children: introText ? introText : null
5013
5038
  }),
5014
- enablePagination && /*#__PURE__*/ (0, $hgUW1$jsxs)("div", {
5015
- children: [
5016
- /*#__PURE__*/ (0, $hgUW1$jsx)("p", {
5017
- className: "ds-u-margin-y--0",
5018
- "aria-hidden": "true",
5019
- children: currentResultNumbers && data && /*#__PURE__*/ (0, $hgUW1$jsxs)((0, $hgUW1$Fragment), {
5020
- children: [
5021
- "Showing ",
5022
- currentResultNumbers.startingNumber,
5023
- " -",
5024
- " ",
5025
- currentResultNumbers.endingNumber,
5026
- " of ",
5027
- data.data.total,
5028
- " datasets"
5029
- ]
5030
- })
5031
- }),
5032
- /*#__PURE__*/ (0, $hgUW1$jsx)("p", {
5033
- className: "ds-u-visibility--screen-reader",
5034
- role: "status",
5035
- "aria-live": "assertive",
5036
- "aria-atomic": "true",
5037
- "data-testid": "currentResults",
5038
- children: announcementText
5039
+ enablePagination && /*#__PURE__*/ (0, $hgUW1$jsx)("div", {
5040
+ children: /*#__PURE__*/ (0, $hgUW1$jsx)("p", {
5041
+ className: "ds-u-margin-y--0",
5042
+ children: currentResultNumbers && data && /*#__PURE__*/ (0, $hgUW1$jsxs)((0, $hgUW1$Fragment), {
5043
+ children: [
5044
+ "Showing ",
5045
+ currentResultNumbers.startingNumber,
5046
+ " -",
5047
+ " ",
5048
+ currentResultNumbers.endingNumber,
5049
+ " of ",
5050
+ data.data.total,
5051
+ " datasets"
5052
+ ]
5039
5053
  })
5040
- ]
5054
+ })
5041
5055
  })
5042
5056
  ]
5043
5057
  }),
@@ -5060,6 +5074,7 @@ const $550bcc185f420ff5$var$DatasetList = ({ rootUrl: rootUrl, enableSort: enabl
5060
5074
  children: [
5061
5075
  noResults && /*#__PURE__*/ (0, $hgUW1$jsx)((0, $hgUW1$Alert), {
5062
5076
  variation: "error",
5077
+ role: "region",
5063
5078
  heading: "No results found."
5064
5079
  }),
5065
5080
  data && data.data.results ? Object.keys(data.data.results).map((key)=>{
@@ -5074,6 +5089,7 @@ const $550bcc185f420ff5$var$DatasetList = ({ rootUrl: rootUrl, enableSort: enabl
5074
5089
  }, item.identifier);
5075
5090
  }) : /*#__PURE__*/ (0, $hgUW1$jsx)((0, $hgUW1$Alert), {
5076
5091
  variation: "error",
5092
+ role: "region",
5077
5093
  heading: "Could not connect to the API."
5078
5094
  })
5079
5095
  ]
@@ -5190,6 +5206,11 @@ const $1d3d480a9cfaabe0$var$useDatastore = (resourceId, rootAPIUrl, options, add
5190
5206
  const [schema, setSchema] = (0, $hgUW1$useState)({});
5191
5207
  // const [joins, setJoins] = useState()
5192
5208
  const [properties, setProperties] = (0, $hgUW1$useState)(options.properties ? options.properties : undefined);
5209
+ // Check drupalSettings for datastore_query_api
5210
+ const useDatasetAPI = typeof window !== "undefined" && window.drupalSettings?.datastore_query_api === true;
5211
+ const datasetID = additionalParams.datasetID;
5212
+ // Remove datasetID from params to avoid sending it to the API
5213
+ const { datasetID: _, ...restAdditionalParams } = additionalParams;
5193
5214
  let params = {
5194
5215
  keys: keys,
5195
5216
  limit: limit,
@@ -5198,7 +5219,7 @@ const $1d3d480a9cfaabe0$var$useDatastore = (resourceId, rootAPIUrl, options, add
5198
5219
  sorts: sort,
5199
5220
  properties: properties,
5200
5221
  groupings: groupings,
5201
- ...additionalParams
5222
+ ...restAdditionalParams
5202
5223
  };
5203
5224
  params = (0, $6d5c0212e738499b$export$34e95918366a058e)(params, ACA);
5204
5225
  const paramsString = Object.keys(params).length ? `${(0, $hgUW1$qs).stringify(params)}` : "";
@@ -5207,13 +5228,15 @@ const $1d3d480a9cfaabe0$var$useDatastore = (resourceId, rootAPIUrl, options, add
5207
5228
  if (!requireConditions) enabled = true;
5208
5229
  if (conditions && conditions.length) enabled = true;
5209
5230
  }
5231
+ // Change whether distribution API or dataset API is used based on option
5232
+ const queryID = useDatasetAPI && datasetID ? `${datasetID}/0` : id;
5210
5233
  const { data: data, isPending: isPending, error: error } = (0, $hgUW1$useQuery)({
5211
5234
  queryKey: [
5212
5235
  "datastore" + id + paramsString
5213
5236
  ],
5214
5237
  queryFn: ()=>{
5215
5238
  setCount(null);
5216
- return fetch(`${rootUrl}/datastore/query/${id}?${paramsString}`).then((res)=>res.json());
5239
+ return fetch(`${rootUrl}/datastore/query/${queryID}?${paramsString}`).then((res)=>res.json());
5217
5240
  },
5218
5241
  enabled: enabled
5219
5242
  });
@@ -5227,7 +5250,7 @@ const $1d3d480a9cfaabe0$var$useDatastore = (resourceId, rootAPIUrl, options, add
5227
5250
  count: true,
5228
5251
  schema: true
5229
5252
  };
5230
- return fetch(`${rootUrl}/datastore/query/${id}?${(0, $hgUW1$qs).stringify((0, $6d5c0212e738499b$export$34e95918366a058e)(unfilteredParams, ACA))}`).then((res)=>res.json());
5253
+ return fetch(`${rootUrl}/datastore/query/${queryID}?${(0, $hgUW1$qs).stringify((0, $6d5c0212e738499b$export$34e95918366a058e)(unfilteredParams, ACA))}`).then((res)=>res.json());
5231
5254
  }
5232
5255
  });
5233
5256
  (0, $hgUW1$useEffect)(()=>{
@@ -5829,7 +5852,6 @@ var $cf6eaefd6b928de3$export$2e2bcd8739ae039 = $cf6eaefd6b928de3$var$DatasetAPI;
5829
5852
 
5830
5853
  const $6765a74df807d015$var$DataDictionaryTable = ({ tableColumns: tableColumns, tableData: tableData, pageSize: pageSize, columnFilters: columnFilters })=>{
5831
5854
  const [sorting, setSorting] = (0, $hgUW1$useState)([]);
5832
- const [ariaLiveFeedback, setAriaLiveFeedback] = (0, $hgUW1$useState)("");
5833
5855
  const mobile = (0, $hgUW1$useMediaQuery)({
5834
5856
  minWidth: 0,
5835
5857
  maxWidth: 544
@@ -5942,8 +5964,8 @@ const $6765a74df807d015$var$DataDictionaryTable = ({ tableColumns: tableColumns,
5942
5964
  return header.id === "titleResizable" ? /*#__PURE__*/ (0, $hgUW1$jsx)((0, $64a351d3fd8413c3$export$2e2bcd8739ae039), {
5943
5965
  table: table,
5944
5966
  header: header,
5945
- setAriaLiveFeedback: setAriaLiveFeedback,
5946
- sortElement: sortElement
5967
+ sortElement: sortElement,
5968
+ id: "dataDictionary_" + header.id
5947
5969
  }, header.id + "_resize") : /*#__PURE__*/ (0, $hgUW1$jsxs)((0, $hgUW1$TableCell), {
5948
5970
  key: header.id,
5949
5971
  className: `ds-u-border-y--2 ds-u-border--dark ds-u-border-x--0`,
@@ -5981,12 +6003,6 @@ const $6765a74df807d015$var$DataDictionaryTable = ({ tableColumns: tableColumns,
5981
6003
  })
5982
6004
  ]
5983
6005
  }),
5984
- /*#__PURE__*/ (0, $hgUW1$jsx)("div", {
5985
- className: "sr-only",
5986
- "aria-live": "assertive",
5987
- "aria-atomic": "true",
5988
- children: ariaLiveFeedback
5989
- }),
5990
6006
  table.getRowModel().rows.length === 0 && /*#__PURE__*/ (0, $hgUW1$jsx)((0, $hgUW1$Alert), {
5991
6007
  variation: "warn",
5992
6008
  children: "No results found for the current filters"
@@ -6296,7 +6312,7 @@ const $2bd73bb95b0c04ed$var$DatasetDescription = ({ distribution: distribution,
6296
6312
  if (distribution.data && distribution.data.description) newDescription = distribution.data.description;
6297
6313
  else if (dataset.description) newDescription = dataset.description;
6298
6314
  }
6299
- if (typeof newDescription === "string" && description !== newDescription && updateAriaLive) updateAriaLive(newDescription);
6315
+ if (description !== newDescription && updateAriaLive) updateAriaLive(newDescription);
6300
6316
  setDescription(newDescription);
6301
6317
  }, [
6302
6318
  resource,
@@ -6308,11 +6324,9 @@ const $2bd73bb95b0c04ed$var$DatasetDescription = ({ distribution: distribution,
6308
6324
  className: "ds-u-measure--wide ds-u-margin-bottom--7",
6309
6325
  children: /*#__PURE__*/ (0, $hgUW1$jsx)("div", {
6310
6326
  className: "ds-u-margin-top--0 dc-c-metadata-description",
6311
- children: typeof description === "string" ? /*#__PURE__*/ (0, $hgUW1$jsx)("div", {
6312
- dangerouslySetInnerHTML: {
6313
- __html: (0, $hgUW1$dompurify).sanitize(description)
6314
- }
6315
- }) : description
6327
+ dangerouslySetInnerHTML: {
6328
+ __html: (0, $hgUW1$dompurify).sanitize(description)
6329
+ }
6316
6330
  })
6317
6331
  });
6318
6332
  };
@@ -6359,6 +6373,8 @@ const $a0f13962e513caa1$var$Dataset = ({ id: id, rootUrl: rootUrl, customColumns
6359
6373
  const resource = (0, $1d3d480a9cfaabe0$export$2e2bcd8739ae039)("", rootUrl, {
6360
6374
  ...options,
6361
6375
  limit: defaultPageSize
6376
+ }, {
6377
+ datasetID: id // pass datasetID into additional params to enable dataset API option in useDatastore
6362
6378
  });
6363
6379
  const siteWideDataDictionary = dataDictionaryUrl ? $a0f13962e513caa1$var$getDataDictionary(rootUrl + dataDictionaryUrl).dataDictionary : null;
6364
6380
  // compare schema fields with siteWideDataDictionary to display commonalities for now
@@ -6424,7 +6440,6 @@ const $a0f13962e513caa1$var$Dataset = ({ id: id, rootUrl: rootUrl, customColumns
6424
6440
  window.location.hash
6425
6441
  ]);
6426
6442
  const displayDataDictionaryTab = distribution.data && distribution.data.describedBy && distribution.data.describedByType === "application/vnd.tableschema+json" || datasetSitewideDictionary && datasetSitewideDictionary.length > 0;
6427
- const formatType = (0, $f764661366bd9e1b$export$ee48b7e0e4eb536e)(distribution);
6428
6443
  return /*#__PURE__*/ (0, $hgUW1$jsx)((0, $hgUW1$Fragment), {
6429
6444
  children: dataset.error ? /*#__PURE__*/ (0, $hgUW1$jsx)((0, $026cb986f9fea2b1$export$2e2bcd8739ae039), {
6430
6445
  content: notFoundContent,
@@ -6696,21 +6711,15 @@ var $b9af6ce5e2c06331$export$2e2bcd8739ae039 = $b9af6ce5e2c06331$var$Header;
6696
6711
 
6697
6712
 
6698
6713
 
6699
-
6700
6714
  const $24918217e48ac525$var$NavLink = ({ link: link, className: className = null, wrapLabel: wrapLabel = false, clickHandler: clickHandler })=>{
6701
6715
  const innerHtml = wrapLabel ? /*#__PURE__*/ (0, $hgUW1$jsx)("span", {
6702
6716
  children: link.label
6703
6717
  }) : link.label;
6704
- return /*#__PURE__*/ (0, $hgUW1$jsxs)((0, $hgUW1$NavLink), {
6718
+ return /*#__PURE__*/ (0, $hgUW1$jsx)((0, $hgUW1$NavLink), {
6705
6719
  className: ({ isActive: isActive })=>isActive ? `dc-c-active-link ${className}` : `${className}`,
6706
6720
  to: link.url,
6707
6721
  onClick: clickHandler ? clickHandler : undefined,
6708
- children: [
6709
- innerHtml,
6710
- link?.target === "_blank" && /*#__PURE__*/ (0, $hgUW1$jsx)((0, $hgUW1$ExternalLinkIcon), {
6711
- className: "ds-u-margin-left--05 ds-c-external-link-icon"
6712
- })
6713
- ]
6722
+ children: innerHtml
6714
6723
  });
6715
6724
  // }
6716
6725
  };
@@ -7100,15 +7109,10 @@ const $a6df0aa147323304$var$Footer = ({ links: links, showEmail: showEmail = tru
7100
7109
  children: /*#__PURE__*/ (0, $hgUW1$jsx)("ul", {
7101
7110
  className: "ds-u-padding--0 ds-u-display--flex ds-u-lg-flex-direction--row ds-u-flex-direction--column",
7102
7111
  children: footerUtilityLinks.map((link)=>/*#__PURE__*/ (0, $hgUW1$jsx)("li", {
7103
- children: /*#__PURE__*/ (0, $hgUW1$jsxs)("a", {
7112
+ children: /*#__PURE__*/ (0, $hgUW1$jsx)("a", {
7104
7113
  href: link.url,
7105
7114
  className: "ds-u-margin-right--2",
7106
- children: [
7107
- link.label,
7108
- link?.target === "_blank" && /*#__PURE__*/ (0, $hgUW1$jsx)((0, $hgUW1$ExternalLinkIcon), {
7109
- className: "ds-u-margin-left--05 ds-c-external-link-icon"
7110
- })
7111
- ]
7115
+ children: link.label
7112
7116
  })
7113
7117
  }, link.id))
7114
7118
  })
@@ -7767,6 +7771,8 @@ const $dd6eb2b30d7ad75d$var$FilteredResourceBody = ({ id: id, dataset: dataset,
7767
7771
  const resource = (0, $1d3d480a9cfaabe0$export$2e2bcd8739ae039)("", rootUrl, {
7768
7772
  ...options,
7769
7773
  limit: 25
7774
+ }, {
7775
+ datasetID: id
7770
7776
  });
7771
7777
  (0, $hgUW1$useEffect)(()=>{
7772
7778
  if (distribution.identifier) resource.setResource(distribution.identifier);