@civicactions/cmsds-open-data-components 4.0.12 → 4.0.13-alpha.1
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.css +8 -2
- package/dist/main.css.map +1 -1
- package/dist/main.js +579 -562
- package/dist/main.js.map +1 -1
- package/dist/types.d.ts +45 -44
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["src/index.ts","src/components/ApiRowLimitNotice/index.tsx","src/components/CMSTopNav/index.tsx","src/components/HeaderTagline/index.tsx","src/components/HeaderNavIconLink/index.tsx","src/components/ErrorBoundary/index.tsx","src/components/FAQAccordion/index.tsx","src/components/HeaderNav/index.tsx","src/templates/Header/HeaderContext.tsx","src/components/SubMenu/index.jsx","src/components/DatasetListSubmenu/index.jsx","src/components/DatasetListSubmenu/DatasetListSubmenu.tsx","src/utilities/QueryProvider/QueryProvider.jsx","src/components/DatasetListSubmenuItem/index.tsx","src/utilities/aca.ts","src/utilities/ACAContext.ts","src/components/SubMenuStaticList/index.jsx","src/components/HeaderSearch/index.tsx","src/components/HeaderSiteTitle/index.tsx","src/components/MobileMenuButton/index.tsx","src/components/NavBar/index.ts","src/components/NavBar/Navbar.tsx","src/components/SidebarNavigation/index.tsx","src/templates/SidebarPage/index.tsx","src/components/Hero/index.jsx","src/components/DatasetListItem/index.tsx","src/components/TransformedDate/index.jsx","src/components/DatasetSearchListItem/index.tsx","src/components/LargeFileDialog/index.tsx","src/assets/icons/searchItem.tsx","src/components/DatasetSearchListItem/truncateText.ts","src/components/DatasetDate/index.tsx","src/components/DatasetDateItem/index.tsx","src/utilities/format.ts","src/components/DatasetSearchFacets/index.tsx","src/components/ApiDocumentation/index.jsx","src/components/ResourceHeader/index.jsx","src/components/DataTablePageResults/index.js","src/components/DataTablePageResults/DataTablePageResults.tsx","src/components/DataTableDensity/index.jsx","src/components/DataTableRowChanger/index.tsx","src/assets/icons/download.jsx","src/assets/icons/copy.jsx","src/assets/icons/settings.jsx","src/components/ResourcePreview/index.jsx","src/services/useDatastore/transformSorts.js","src/templates/FilteredResource/functions.js","src/components/Datatable/index.js","src/components/Datatable/Datatable.jsx","src/components/Datatable/TruncatedResizeableTHead.jsx","src/components/Datatable/HeaderResizeElement.tsx","src/components/Datatable/FixedSizeTHead.jsx","src/templates/Dataset/DataTableContext.tsx","src/components/DatasetTableTab/DataTableActionsContext.tsx","src/components/DataTableToolbar/index.tsx","src/components/ManageColumns/ManageColumns.jsx","src/components/ManageColumns/Card.tsx","src/components/FullScreenDataTable/index.tsx","src/components/DatasetTableTab/index.tsx","src/components/FilterDataset/index.tsx","src/components/FilterDataset/FilterItem.tsx","src/components/QueryBuilder/ClearFiltersButton.tsx","src/components/FilterChip/index.tsx","src/components/DisplaySettings/index.tsx","src/components/ResourceFooter/index.jsx","src/components/Breadcrumb/index.jsx","src/components/Breadcrumb/Breadcrumb.jsx","src/components/SearchInput/index.jsx","src/assets/icons/magnifyingglass.jsx","src/assets/icons/chevronright.jsx","src/components/DatasetAdditionalInformation/index.jsx","src/templates/APIPage/index.jsx","src/templates/APIPage/APIPage.jsx","src/templates/PageNotFound/index.jsx","src/templates/PageNotFound/PageNotFound.jsx","src/templates/DatasetSearch/index.jsx","src/templates/DatasetSearch/DatasetSearch.tsx","src/components/LargeFileInfo/index.tsx","src/components/SearchButton/index.tsx","src/components/PageHeader/index.tsx","src/services/useSearchAPI/helpers.ts","src/templates/DatasetList/index.jsx","src/templates/DatasetList/DatasetList.tsx","src/templates/Dataset/index.tsx","src/services/useMetastoreDataset/index.jsx","src/services/useMetastoreDataset/useMetastoreDataset.tsx","src/services/useDatastore/index.js","src/services/useDatastore/useDatastore.jsx","src/assets/metadataMapping.jsx","src/assets/frequencyMap.js","src/components/DatasetOverviewTab/index.tsx","src/components/Resource/index.tsx","src/components/ResourceInformation/index.tsx","src/components/DatasetAPITab/index.tsx","src/components/DatasetDataDictionaryTab/index.tsx","src/components/SitewideDataDictionaryTable/index.tsx","src/components/DataDictionaryTable/index.tsx","src/components/DatasetDictionaryTable/index.tsx","src/components/DatasetTableTab/DataTableStateWrapper.tsx","src/components/DatasetDescription/index.tsx","src/templates/Header/index.tsx","src/templates/Footer/index.jsx","src/components/NavLink/index.tsx","src/templates/SpecsAndLimits/index.tsx","src/templates/SpecsAndLimits/DocumentationTable.jsx","src/templates/SpecsAndLimits/documentationData.js","src/templates/StoredQueryPage/index.tsx","src/templates/FilteredResource/index.jsx","src/templates/FilteredResource/FilteredResourceBody.jsx","src/templates/FilteredResource/QueryBuilder.jsx","src/templates/FilteredResource/QueryRow.jsx","src/templates/FilteredResource/QueryTitle.jsx","src/services/useSearchAPI/index.jsx","src/services/useSearchAPI/useSearchAPI.jsx","src/components/useAddLoginLink/index.jsx","src/components/useScrollToTop/index.jsx"],"sourcesContent":["// Components\nexport { default as ApiRowLimitNotice } from './components/ApiRowLimitNotice';\nexport { default as CMSTopNav } from './components/CMSTopNav';\nexport { default as ErrorBoundary } from './components/ErrorBoundary';\nexport { default as FAQAccordion } from './components/FAQAccordion';\nexport { default as HeaderNav } from './components/HeaderNav';\nexport { default as HeaderNavIconLink } from './components/HeaderNavIconLink';\nexport { default as HeaderSearch } from './components/HeaderSearch';\nexport { default as HeaderSiteTitle } from './components/HeaderSiteTitle';\nexport { default as HeaderTagline } from './components/HeaderTagline';\nexport { default as MobileMenuButton } from './components/MobileMenuButton';\nexport { default as NavBar } from './components/NavBar';\nexport { default as SidebarNavigation } from './components/SidebarNavigation';\nexport { default as SidebarPage } from './templates/SidebarPage';\nexport { default as SubMenu } from './components/SubMenu';\nexport { default as Hero } from './components/Hero';\nexport { default as DatasetListItem } from './components/DatasetListItem';\nexport { default as DatasetSearchListItem } from './components/DatasetSearchListItem';\nexport { default as DatasetDateItem } from './components/DatasetDateItem';\nexport { default as DatasetDate } from './components/DatasetDate';\nexport { default as DatasetListSubmenu } from './components/DatasetListSubmenu'\nexport { default as DatasetSearchFacets } from './components/DatasetSearchFacets'\nexport { default as ApiDocumentation } from './components/ApiDocumentation';\nexport { default as ResourceHeader } from './components/ResourceHeader';\nexport { default as ResourcePreview } from './components/ResourcePreview';\nexport { default as ResourceFooter } from './components/ResourceFooter';\nexport { default as Breadcrumb } from './components/Breadcrumb';\nexport { default as TransformedDate } from './components/TransformedDate';\nexport { default as DataTable } from './components/Datatable';\nexport { default as SearchInput } from './components/SearchInput';\nexport { buildRows } from './components/DatasetAdditionalInformation';\nexport { default as DataTablePageResults } from './components/DataTablePageResults';\nexport { truncateText } from './components/DatasetSearchListItem/truncateText';\n\n// Templates\nexport { default as APIPage } from './templates/APIPage';\nexport { default as PageNotFound } from './templates/PageNotFound';\nexport { default as DatasetSearch } from './templates/DatasetSearch';\nexport { default as DatasetList } from './templates/DatasetList';\nexport { default as Dataset } from './templates/Dataset';\nexport { default as DatasetTable } from './components/DatasetTableTab';\nexport { default as Header } from './templates/Header';\nexport { default as Footer } from './templates/Footer';\nexport { default as SpecsAndLimits } from './templates/SpecsAndLimits';\nexport { default as StoredQueryPage } from './templates/StoredQueryPage';\nexport { default as FilteredResource } from './templates/FilteredResource';\nexport { default as QueryTitle } from './templates/FilteredResource/QueryTitle';\nexport { buildOperatorOptions, convertUTCToLocalDate, cleanText, buildCustomColHeaders } from './templates/FilteredResource/functions';\n\n// Context\nexport { default as HeaderContext } from './templates/Header/HeaderContext';\nexport { default as DataTableContext } from './templates/Dataset/DataTableContext';\nexport { default as DataTableActionsProvider } from './components/DatasetTableTab/DataTableActionsContext'\nexport { ACAContext } from './utilities/ACAContext';\n\n// Services\nexport { default as useSearchAPI } from './services/useSearchAPI';\nexport { default as useDatastore } from './services/useDatastore';\nexport { transformTableSortToQuerySort } from './services/useDatastore/transformSorts';\n\n// Hooks\nexport { default as useAddLoginLink } from './components/useAddLoginLink';\nexport { default as useScrollToTop } from './components/useScrollToTop';\nexport { default as useMetastoreDataset } from './services/useMetastoreDataset';\nexport { default as withQueryProvider } from './utilities/QueryProvider/QueryProvider'\n\n// Utilities\nexport { acaToParams } from './utilities/aca';\n\n// Assets\n// export { default as frequencyMap } from './assets/frequencyMap';\nexport { defaultMetadataMapping } from './assets/metadataMapping';\n","import { Accordion, AccordionItem } from '@cmsgov/design-system';\n\nexport default function ApiRowLimitNotice() {\n return (\n <div className=\"ds-u-padding-top--3\">\n <Accordion bordered>\n <AccordionItem key=\"1\" heading=\"Row Limit Warning\">\n <p>\n If you receive a 500 response from your API query it is most likely due to memory\n exhaustion. You may see a \"Temporarily Unavailable\" message. Make sure you include a\n limit appropriate to the speed of your connection, HTTP calls will time out if set too\n high and payloads for high limits can be very large. Complex queries should include a\n smaller limit value. Use the <strong>limit</strong> and <strong>offset</strong>{' '}\n parameters to iterate through result sets that are larger than the row limit when\n running queries against the datastore API.\n </p>\n </AccordionItem>\n </Accordion>\n </div>\n );\n}\n","import React from 'react';\nimport { NavLink } from 'react-router-dom';\nimport HeaderTagline from '../HeaderTagline';\nimport HeaderNavIconLink from '../HeaderNavIconLink';\nimport { OrgType, NavLinkArray } from '../../types/misc';\nimport './cms-topnav.scss';\n\nexport type CMSTopNavProps = {\n org: OrgType\n links: NavLinkArray[]\n}\n\nconst CMSTopNav = (props: CMSTopNavProps) => {\n const { links, org } = props;\n const { urlTitle, logoAltText=\"\", logoFilePath=\"\", tagline, url} = org;\n return (\n <div className=\"dkan-c-cms-topnav ds-u-display--flex ds-u-padding-x--5 ds-u-align-items--center ds-u-justify-content--center ds-u-lg-justify-content--start\">\n <div className=\"ds-l-col--12 ds-l-md-col--5 ds-l-lg-col--7 ds-u-display--flex ds-u-align-items--center ds-u-justify-content--center ds-u-md-justify-content--start\">\n <HeaderNavIconLink\n url={url}\n urlTitle={urlTitle}\n logoAltText={logoAltText}\n logoFilePath={logoFilePath}\n />\n <HeaderTagline tagline={tagline} />\n </div>\n <div className=\"ds-l-col--7 ds-l-lg-col--5 ds-u-display--none ds-u-md-display--inline-flex ds-u-align-items--center ds-u-justify-content--end\">\n <nav className=\"dkan-c-cms-topnav--menu\">\n <ul className=\"ds-u-justify-content--end ds-u-md-align-items--center ds-u-flex-direction--column ds-u-md-flex-direction--row\">\n {links.map((link: any) => {\n return(\n <li className=\"ds-u-margin-x--05 ds-u-font-size--sm\">\n <NavLink to={link.url}>\n <span>{link.label}</span>\n </NavLink>\n </li>\n )\n })}\n </ul>\n </nav>\n </div>\n </div>\n );\n}\n\nexport default CMSTopNav;\n","import React from 'react';\nimport './header-tagline.scss';\n\nexport type HeaderTaglineProps = {\n tagline: string;\n \n}\n\nconst HeaderTagline = (props: HeaderTaglineProps) => {\n return (\n <span className=\"dkan-c-cms-topnav--tagline ds-u-valign--middle\tds-u-padding-left--2\">\n {props.tagline}\n </span>\n );\n};\n\nexport default HeaderTagline;\n","import React from 'react';\n\nimport \"./header-nav-icon-link.scss\";\n\nexport type HeaderNavIconLinkProps = {\n url: string;\n urlTitle: string;\n logoFilePath: string;\n logoAltText: string;\n backArrow?: boolean;\n}\n\nconst HeaderNavIconLink = (props: HeaderNavIconLinkProps) => {\n const { url, urlTitle, logoFilePath, logoAltText, backArrow } = props;\n return(\n <div className={`dkan-c-header-nav-icon-link ${backArrow ? 'show-back-arrow' : ''} ds-u-valign--middle\t`}>\n <a href={url} title={urlTitle}>\n <img src={logoFilePath} alt={logoAltText} />\n </a>\n </div>\n );\n}\n\nexport default HeaderNavIconLink;\n","import React from 'react';\n\ntype ErrorBoundaryProps = {\n children: any[] | any;\n component?: boolean;\n Layout?: any;\n}\n\ntype ErrorBoundaryState = {\n hasError: boolean;\n error?: any;\n};\n\nclass ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = { hasError: false, error: undefined };\n }\n\n static getDerivedStateFromError(error: any) {\n // Update state so the next render will show the fallback UI.\n return { hasError: true, error };\n }\n\n componentDidCatch(error: any, info: any) {\n // TODO report to logging solution\n console.error({ error, info });\n }\n\n render() {\n if (this.props.component) {\n if (this.state.hasError) {\n return (\n <>\n <p>We're sorry, the site has encountered an unexpected error.</p>\n </>\n );\n }\n return this.props.children;\n }\n\n return (\n <>\n <div className=\"ds-l-container\">\n <h2 className=\"ds-text-heading--2xl\">Error</h2>\n <p>We're sorry, the site has encountered an unexpected error.</p>\n </div>\n </>\n );\n }\n}\n\nexport default ErrorBoundary;\n","import React from 'react';\nimport { FAQItemType } from '../../types/misc';\nimport { Accordion, AccordionItem, Button } from \"@cmsgov/design-system\";\n\ntype FAQProps = {\n faqs: FAQItemType[]\n}\n\nconst FAQAccordion = (props: FAQProps) => {\n const { faqs } = props;\n const [expanded, setExpanded] = React.useState(false);\n const [faqItems, setFaqItems] = React.useState(faqs);\n\n function toggleAll() {\n if (expanded) {\n const newFaqs = faqItems.map((item) => ({...item, open: false}));\n setFaqItems(newFaqs);\n setExpanded(false);\n } else {\n const newFaqs = faqItems.map((item) => ({...item, open: true}));\n setFaqItems(newFaqs);\n setExpanded(true);\n }\n }\n\n function toggleAccordionItem(id: string) {\n const currentFaqIndex = faqItems.findIndex((item) => item.id === id);\n const updatedFaq = {\n ...faqItems[currentFaqIndex],\n open: !faqItems[currentFaqIndex].open\n }\n\n const newFaqs = [\n ...faqItems.slice(0, currentFaqIndex),\n updatedFaq,\n ...faqItems.slice(currentFaqIndex + 1)\n ]\n setFaqItems(newFaqs);\n\n const openCount = newFaqs.filter((item) => item.open === true).length;\n if (openCount > 0 && openCount == newFaqs.length) {\n setExpanded(true);\n } else {\n setExpanded(false);\n }\n }\n\n return(\n <div>\n <Button className='ds-u-margin-y--2 ds-u-float--right' type=\"button\" variation='ghost' onClick={() => toggleAll()}>\n {`${expanded ? 'Collapse' : 'Expand'} all FAQs`}\n </Button>\n <Accordion>\n {faqItems.map((faq) => (\n <AccordionItem\n key={faq.id}\n heading={faq.title}\n isControlledOpen={faq.open}\n onChange={() => toggleAccordionItem(faq.id)}\n >\n {faq.body}\n </AccordionItem>\n ))}\n </Accordion>\n </div>\n );\n};\n\nexport default FAQAccordion;\n","import React from 'react';\nimport { NavLink } from 'react-router-dom';\nimport { Button, CloseIconThin } from '@cmsgov/design-system';\nimport HeaderContext from '../../templates/Header/HeaderContext';\nimport SubMenu from '../SubMenu';\nimport { NavLinkArray } from '../../templates/Header';\nimport HeaderSearch from '../HeaderSearch';\nimport './header-nav.scss';\n\nexport type HeaderNavProps = {\n links: NavLinkArray[];\n topNavLinks?: NavLinkArray[];\n searchInMobile?: boolean;\n wrapperClasses?: string;\n}\n\nconst HeaderNav = (props: HeaderNavProps) => {\n const headerContext = React.useContext(HeaderContext);\n const { links, topNavLinks, wrapperClasses, searchInMobile } = props;\n const navMenuOpenClass = `dkan-c-nav-menu--${headerContext.mobileMenuOpen ? \"open\" : \"close\"}`;\n const isMobileClass = `dkan-c-nav-menu--${headerContext.isMobile ? 'mobile' : 'desktop'}`;\n const linkClasses = 'dkan-c-header--link ds-c-button ds-c-button--ghost';\n const listClasses = 'dkan-c-header--link-list ';\n return (\n <div\n className={`dkan-c-nav-menu ${wrapperClasses} ${navMenuOpenClass} ${isMobileClass}`}\n ref={headerContext.menuRef}\n >\n <Button\n variation='ghost'\n onDark\n className='dkan-c-nav-menu--mobile-close-button'\n onClick={() => headerContext.setMobileMenuOpen(false)}\n >\n <CloseIconThin />\n <span className=\"ds-u-margin-left--1\">Close</span>\n </Button>\n <nav className='dkan-c-main-nav'>\n <ul className={listClasses}>\n {links.map((link: any) => {\n if (link.submenu) {\n return (\n <SubMenu\n key={link.id}\n link={link}\n wrapLabel={true}\n subLinkClasses={linkClasses}\n linkClasses={linkClasses}\n />\n )\n }\n return (\n <li>\n <NavLink to={link.url} className={linkClasses}>\n <span>{link.label}</span>\n </NavLink>\n </li>\n )\n })}\n </ul>\n </nav>\n {topNavLinks &&\n <nav className='dkan-c-top-nav'>\n <ul className={listClasses}>\n {topNavLinks.map((link: any) => {\n return (\n <li>\n <NavLink to={link.url} className={linkClasses}>\n <span>{link.label}</span>\n </NavLink>\n </li>\n )\n })}\n </ul>\n </nav>\n }\n {searchInMobile &&\n <HeaderSearch />\n }\n </div>\n );\n}\n\nexport default HeaderNav;\n","import { createContext, useRef } from \"react\";\n\nconst HeaderContext = createContext({\n mobileMenuOpen: false, \n setMobileMenuOpen: (el: boolean) => {},\n menuRef: null as any,\n isMobile: false,\n onDark: true,\n});\n\nexport default HeaderContext;\n","import React, { useEffect, useState, useRef } from 'react';\nimport { Button, ArrowIcon } from '@cmsgov/design-system';\nimport HeaderContext from '../../templates/Header/HeaderContext';\nimport DatasetListSubmenu from '../DatasetListSubmenu';\n\nimport './submenu.scss';\nimport SubMenuStaticList from '../SubMenuStaticList';\n\nconst SubMenu = ({ link, linkClasses, subLinkClasses, wrapLabel = true }) => {\n const [isExpanded, setIsExpanded] = useState(false);\n const headerContext = React.useContext(HeaderContext);\n const innerHtml = wrapLabel ? <span>{link.label}</span> : link.label;\n const menu = useRef();\n useEffect(() => {\n let currentMenu = null;\n if (menu.current) {\n currentMenu = menu.current;\n }\n\n function handleClickOutside(event) {\n if (currentMenu && !currentMenu.contains(event.target)) {\n setIsExpanded(false);\n }\n }\n function handleFocusOut(event) {\n if (currentMenu && !currentMenu.contains(event.relatedTarget)) {\n setIsExpanded(false);\n }\n }\n document.addEventListener('mousedown', handleClickOutside);\n currentMenu?.addEventListener('focusout', handleFocusOut);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n if (currentMenu) {\n currentMenu.removeEventListener('focusout', handleFocusOut);\n }\n };\n }, [isExpanded]);\n\n let submenuBlock;\n\n if(link.submenu) {\n if (Array.isArray(link.submenu)) {\n submenuBlock = <SubMenuStaticList\n submenuArray={link.submenu}\n subLinkClasses={subLinkClasses}\n setIsExpanded={setIsExpanded}\n />;\n } else if (React.isValidElement(link.submenu) ) {\n const {rootUrl, location} = link.submenu.props;\n submenuBlock = <DatasetListSubmenu\n location={location}\n rootUrl={rootUrl}\n subLinkClasses={subLinkClasses}\n />\n }\n }\n\n return (\n <li className={`dkan-c-nav-submenu has-submenu${isExpanded ? ' open' : ''}`} ref={menu}>\n <Button\n variation=\"ghost\"\n onDark={headerContext.onDark}\n className={`${linkClasses}`}\n aria-haspopup=\"true\"\n aria-expanded={isExpanded}\n onClick={(e) => {\n e.preventDefault();\n setIsExpanded(!isExpanded);\n }}\n >\n {innerHtml}\n <ArrowIcon className=\"ds-u-margin-left--1\" direction={isExpanded ? \"down\" : \"right\"} />\n </Button>\n {submenuBlock}\n </li>\n );\n};\n\nexport default SubMenu;\n","export { default } from './DatasetListSubmenu'\n","import React, { useContext, useEffect, useState } from 'react';\nimport { Link } from 'react-router-dom';\nimport qs from 'qs';\nimport axios from 'axios';\nimport withQueryProvider from '../../utilities/QueryProvider/QueryProvider';\nimport { Spinner, Alert } from '@cmsgov/design-system';\nimport DatasetListSubmenuItem from '../DatasetListSubmenuItem';\nimport { useQuery } from '@tanstack/react-query';\n\nimport \"./dataset-list-submenu.scss\";\nimport { DatasetSubmenuListProps } from '../../types/search';\nimport { acaToParams } from '../../utilities/aca';\nimport { ACAContext } from '../../utilities/ACAContext';\n\nconst DatasetListSubmenu = ({\n rootUrl,\n enablePagination = true,\n defaultPageSize = 4,\n defaultSort = { defaultSort: 'modified', defaultOrder: 'desc' },\n subLinkClasses\n}: DatasetSubmenuListProps) => {\n const { ACA } = useContext(ACAContext);\n\n const [currentResultNumbers, setCurrentResultNumbers] = useState({ total: 0, startingNumber: 0, endingNumber: 0 });\n const [noResults, setNoResults] = useState(false);\n const [totalItems, setTotalItems] = useState(0);\n\n const pageSize = defaultPageSize;\n\n useEffect(() => {\n if (totalItems <= 0 && currentResultNumbers !== null) {\n setNoResults(true);\n } else {\n setNoResults(false);\n }\n }, [totalItems, pageSize]);\n\n let params = {\n sort: defaultSort.defaultSort,\n ['sort-order']: defaultSort.defaultOrder, // Display the default sort order of newest items first.\n ['page-size']: defaultPageSize, // Only show 4 items in the submenu.\n }\n\n const { data, isPending, error } = useQuery({\n queryKey: [\"datasets\", params],\n queryFn: () => {\n return axios.get(`${rootUrl}/search/?${qs.stringify(acaToParams(params, ACA), { arrayFormat: 'comma', encode: false })}`)\n }\n });\n\n let submenuItemsCount = 0;\n\n if (data) {\n if (data.data.total && totalItems !== data.data.total) setTotalItems(data.data.total);\n let resultsCount = Object.keys(data.data.results).length;\n // For the submenu pager, If there are fewer than 4 dataset items, display the dataset item count, otherwise, show \"Viewing 4..\".\n submenuItemsCount = resultsCount > defaultPageSize ? defaultPageSize : resultsCount\n }\n\n return (\n <>\n <section className=\" dkan-c-site-menu--sub-menu\">\n {isPending ? (\n <Spinner\n className=\"ds-u-valign--middle\"\n aria-valuetext=\"Dataset Search loading\"\n role=\"status\"\n />\n ) : (\n <>\n <ol className=\"dc-dataset-search-list ds-u-padding--0 ds-u-margin-top--0 ds-u-lg-margin-top--2 ds-u-margin-bottom--2 ds-u-display--block\" data-testid=\"submenu-results-list\">\n {noResults && <Alert variation=\"error\" heading=\"No results found.\" />}\n {data && data.data.results ? Object.keys(data.data.results).map((key) => {\n return data.data.results[key];\n }).map((item) => {\n return (\n <DatasetListSubmenuItem\n key={item.identifier}\n title={item.title}\n identifier={item.identifier}\n linkClasses={subLinkClasses}\n />\n )\n }) : (\n <Alert variation=\"error\" heading=\"Could not connect to the API.\" />\n )}\n </ol>\n <div className=\"ds-u-display--flex ds-u-justify-content--between ds-u-align-items--center ds-u-border-top--1 ds-u-padding-top--3 ds-u-padding-bottom--2 ds-u-margin-x--3 ds-u-lg-margin-x--0\">\n {enablePagination && (\n <>\n <div className=\"\">\n <p className=\"ds-u-margin-y--0 ds-u-font-size--sm\" aria-hidden=\"true\">\n {(data) && (\n <>\n Viewing {submenuItemsCount} of {data.data.total}\n </>\n )}\n </p>\n </div>\n <div className=\"\">\n {(data && data.data.total > 0) && (\n <Link className=\"ds-u-padding--0 ds-c-button ds-c-button--ghost dkan-c-header--link\" to={`../whats-new`}>\n <span className=\"ds-text-heading--md\"> {`View all ${data.data.total} entries`} </span>\n </Link>\n )}\n </div>\n </>\n )}\n </div>\n </>\n )}\n </section>\n </>\n );\n};\n\nexport default withQueryProvider(DatasetListSubmenu);\n","import React from 'react';\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n }\n }\n});\n\nconst withQueryProvider = (WrappedComponent) => (props) => {\n return (\n <QueryClientProvider client={queryClient}>\n <WrappedComponent { ...props }/>\n </QueryClientProvider>\n )\n}\n\nexport default withQueryProvider;","import React from 'react';\nimport { NavLink } from 'react-router-dom';\nimport './dataset-list-submenu-item.scss';\n\ntype SearchItemProps = {\n title: string;\n identifier: string;\n linkClasses?: string;\n}\n\nconst DatasetListSubmenuItem = (props: SearchItemProps) => {\n const { title, identifier, linkClasses } = props;\n\n return (\n <li className=\"dc-c-list-item\" key={identifier}>\n <NavLink\n className={`ds-u-display-flex ds-u-align-items--center ds-u-text-align--left ${linkClasses}`}\n to={`/dataset/${identifier}`}\n >\n <span className=\"ds-text-heading--md ds-u-margin-left--0\">{title}</span>\n </NavLink>\n </li>\n );\n};\n\nexport default DatasetListSubmenuItem;\n","export function acaToParams(params: any, ACA : string | undefined) {\n if (ACA) {\n params = Object.assign(params, {\n ACA: ACA,\n redirect: false\n })\n }\n return params;\n}\n","import { createContext } from \"react\";\n\nexport const ACAContext = createContext({ACA: undefined})\n","import { NavLink } from 'react-router-dom';\n\n\nconst SubMenuStaticList = ({submenuArray, subLinkClasses, setIsExpanded}) => {\n // Render a static list of submenu items as listed in the assets/menu.jsx file.\n let submenuItems = submenuArray.map((s) => {\n return (\n <li key={s.id}>\n {s.external || s.drupalPage ? (\n <a href={s.url} className={`ds-u-display-flex ds-u-align-items--center ${subLinkClasses}`}>\n {s.icon ?? null}\n <span>{s.label}</span>\n </a>\n ) : (\n <NavLink\n to={s.url}\n className={`ds-u-display-flex ds-u-align-items--center ${subLinkClasses}`}\n onClick={() => setIsExpanded(prev => !prev)}\n >\n {s.icon ?? null}\n <span>\n {s.label}\n </span>\n </NavLink>\n )}\n </li>\n )\n })\n return (\n <ul className={`dkan-c-site-menu--sub-menu`}>\n {submenuItems}\n </ul>\n );\n}\n\nexport default SubMenuStaticList;\n","import React, { useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Button, Dialog, TextField } from \"@cmsgov/design-system\";\n\nimport \"./header-search.scss\";\n\nexport type HeaderSearchProps = {\n headingText?: string\n};\n\nconst HeaderSearch = (props: HeaderSearchProps) => {\n const { headingText = \"Dataset Search\" } = props;\n const navigate = useNavigate();\n const [modalSearchTerm, setModalSearchTerm] = useState('');\n const [modalSearch, setModalSearch] = useState(false);\n\n function searchForDataset(e: React.SyntheticEvent) {\n e.preventDefault();\n if (window) {\n if (window.location.pathname !== '/datasets') {\n navigate(`/datasets?fulltext=${modalSearchTerm}`);\n } else {\n window.location.search = `fulltext=${modalSearchTerm}`;\n setModalSearch(false);\n }\n }\n }\n\n return (\n <div className=\"dkan-c-main-navigation--search\">\n <Button\n variation=\"ghost\"\n onDark={true}\n className=\"ds-u-border--0 dkan-c-header-search--modal-button\"\n onClick={() => setModalSearch(true)}\n >\n <span>Search</span>\n </Button>\n {modalSearch && (\n <Dialog\n className=\"dc-c-search-dialog\"\n isOpen={modalSearch}\n onExit={() => setModalSearch(false)}\n heading={`${headingText}`}\n actions= {<>\n <form\n className=\"ds-u-display--flex ds-u-align-items--stretch ds-u-flex-wrap--nowrap\"\n onSubmit={(e: React.SyntheticEvent) => {\n searchForDataset(e);\n }}\n >\n <TextField\n value={modalSearchTerm}\n fieldClassName=\"ds-u-display--inline-block\"\n className=\"ds-l-col--9\"\n label=\"Search Term\"\n name=\"search-modal\"\n labelClassName=\"ds-u-visibility--screen-reader\"\n onChange={(e) => setModalSearchTerm(e.target.value)}\n />\n <Button type=\"submit\" className=\"ds-l-col--3\">\n <span className=\"fas fa-search small-text ds-u-sm-display--none\" />\n <span className=\"full-text ds-u-display--none ds-u-sm-display--inline-block\">\n Search\n </span>\n </Button>\n </form>\n </>}\n />\n )}\n </div>\n );\n}\n\nexport default HeaderSearch;\n","import React from 'react';\nimport { NavLink } from 'react-router-dom';\nimport { OrgType } from '../../types/misc';\n\nexport type HeaderSiteTitleProps = {\n inverse?: boolean\n org: OrgType\n}\n\nconst HeaderSiteTitle = (props: HeaderSiteTitleProps) => {\n const inverse = props.inverse;\n const { logoFilePath, logoAltText, urlTitle } = props.org;\n const classList = \"ds-u-padding-y--3 dc-c-site-title print-padding-top--0 print-padding-bottom--0 ds-u-text-align--center ds-u-md-text-align--left\";\n if(logoFilePath) {\n return (\n <div className={classList}>\n <NavLink to=\"/\">\n <img src={logoFilePath} alt={logoAltText} />\n </NavLink>\n </div>\n \n )\n }\n return(\n <div className={classList}>\n <NavLink to=\"/\" className={`${inverse ? \"ds-c-link--inverse \" : \"\"} ds-u-font-size--2xl ds-u-lg-font-size--3xl`}>\n {urlTitle}\n </NavLink>\n </div>\n \n )\n}\n\nexport default HeaderSiteTitle;\n","import React from 'react';\nimport { Button } from '@cmsgov/design-system';\nimport HeaderContext from '../../templates/Header/HeaderContext';\n\nimport \"./mobile-menu-button.scss\";\n\nexport type MobileMenuButtonProps = {\n wrapperClasses?: string\n}\n\nconst MobileMenuButton = (props: MobileMenuButtonProps) => {\n const headerContext = React.useContext(HeaderContext);\n const { wrapperClasses } = props;\n return(\n <Button\n aria-haspopup=\"true\"\n aria-expanded={headerContext.mobileMenuOpen}\n className={`dkan-c-mobile-menu-button ${wrapperClasses} dkan-c-mobile-menu-button--${headerContext.mobileMenuOpen ? \"close\" : \"open\"}`}\n onClick={() => headerContext.setMobileMenuOpen(!headerContext.mobileMenuOpen)}\n >\n <span>Menu</span>\n </Button>\n );\n}\n\nexport default MobileMenuButton;\n","export { default } from './Navbar';\n","import SubMenu from '../SubMenu';\nimport { NavLink } from 'react-router-dom';\nimport { NavbarProps } from './Navbar.types';\nimport './navbar.scss';\n\nconst NavBar = (props: NavbarProps) => {\n const { links, menuName, menuId, menuClasses, linkClasses, subLinkClasses, wrapLabel = false } = props;\n return (\n <nav className={`dkan-c-${menuId}-menu`} aria-labelledby={`dkan-c-${menuId}-menu--heading`}>\n <h2 id={`dkan-c-${menuId}-menu--heading`} className=\"ds-u-visibility--screen-reader\">\n {menuName}\n </h2>\n <ul className={menuClasses}>\n {links.map((link) => {\n if (link.submenu) {\n return (\n <SubMenu\n key={link.id}\n link={link}\n wrapLabel={wrapLabel}\n subLinkClasses={subLinkClasses}\n linkClasses={linkClasses}\n />\n );\n } else {\n return (\n <li key={link.id}>\n <NavLink to={link} className={linkClasses}>\n <span>{link.label}</span>\n </NavLink>\n </li>\n );\n }\n })}\n </ul>\n </nav>\n );\n};\n\nexport default NavBar;\n","import React, { useState } from 'react';\nimport { NavLink, useLocation } from 'react-router-dom';\nimport { Button, ArrowIcon } from '@cmsgov/design-system';\nimport { MenuLinkType } from '../../types/misc';\nimport './sidebar-navigation.scss';\n\ntype SidebarNavigationProps = {\n title: string;\n links: MenuLinkType[];\n mobileMax: boolean;\n}\n\nconst SidebarNavigation = (props: SidebarNavigationProps) => {\n const { title, links, mobileMax } = props;\n const active = useLocation().pathname;\n const [menuOpen, setMenuOpen] = useState(false);\n const styleClasses = 'dkan-c--sidebar-nav-wrapper ds-u-border--1 ds-u-border--color-gray-lightest ds-u-padding--2';\n const mobileClass = `dkan-c-sidebar-nav--${mobileMax ? 'mobile' : 'desktop'}`\n return(\n <div className={`dkan-c-sidebar-nav ${mobileClass}`}>\n <div className='dkan-c-sidebar-nav--mobile-header ds-u-align-items--center ds-u-justify-content--between ds-u-padding-y--2 ds-u-fill--primary-darker ds-u-color--white'>\n <span className=\"ds-u-margin-left--2 ds-u-margin-y--0 ds-text-heading--xl\">Pages in this section</span>\n <Button\n aria-haspopup=\"true\"\n variation='ghost'\n aria-expanded={`${menuOpen ? 'true' : 'false'}`}\n onDark\n onClick={() => setMenuOpen(!menuOpen)}\n >\n <span className=\"ds-u-visibility--screen-reader\">Toggle menu</span>\n <ArrowIcon direction={menuOpen ? 'up' : 'down'} />\n </Button>\n </div>\n <div className={``}>\n <nav className={`${styleClasses} dkan-c-sidebar-nav-menu dkan-c-sidebar-nav-menu--${menuOpen ? 'open' : 'close'}`}>\n <div className=\"ds-u-padding--2 ds-u-border-bottom--1 ds-u-border--color-gray-lightest\">\n <h3 className=\"ds-text-heading--lg\">{ title }</h3>\n </div>\n <ul className=\"ds-u-padding-bottom--2\">\n {links.map(({ url, label }) => (\n <li\n className={`ds-u-padding--1 ds-u-padding-top--2 ds-u-border-bottom--1 ds-u-border--color-gray-lightest ${\n active === url ? 'active' : ''\n }`}\n key={`${url}${label}`}\n >\n <div className=\"ds-u-display--flex ds-u-padding-y--1\">\n <div className=\"dkan-c-sidebar-nav-link-status\"></div>\n <NavLink to={url} className=\"dkan-c-sidebar-nav-link ds-u-margin-left--2\">\n {label}\n </NavLink>\n </div>\n </li>\n ))}\n </ul>\n </nav>\n </div>\n </div>\n );\n\n};\n\nexport default SidebarNavigation;\n","import React, { ReactNode } from 'react';\nimport { useMediaQuery } from 'react-responsive'\nimport SidebarNavigation from '../../components/SidebarNavigation';\nimport { MenuLinkType } from '../../types/misc';\n\ntype SidebarPageProps = {\n links: MenuLinkType[],\n menuTitle: string,\n mobileMaxWidth?: number;\n children: ReactNode\n}\n\nconst SidebarPage = (props: SidebarPageProps) => {\n const {links, menuTitle, mobileMaxWidth = 768, children} = props;\n const mobileMax = useMediaQuery({ query: `(max-width: ${mobileMaxWidth}px)` });\n return(\n <div className={`${mobileMax ? \"a\" : 'ds-l-container'}`}>\n <div className={`${mobileMax ? \"a\" : 'ds-l-row'}`}>\n <div className={`${mobileMax ? 'a' : \"ds-l-col--4\"}`}>\n <SidebarNavigation links={links} title={menuTitle} mobileMax={mobileMax} />\n </div>\n <div className={`${mobileMax ? \"ds-l-container\" : \" ds-l-md-col--8\"}`}>\n { children }\n </div>\n </div>\n\n </div>\n );\n}\n\nexport default SidebarPage;\n","import React from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { Button, TextField } from '@cmsgov/design-system';\n\nconst Hero = ({\n title,\n description,\n searchUrl = 'datasets',\n searchKey = 'fulltext',\n textfieldLabel = 'Search for a dataset',\n searchButtonText = 'Search'\n}) => {\n const navigate = useNavigate();\n const [searchValue, setSearchValue] = React.useState('');\n\n function submitHero(e) {\n e.preventDefault();\n navigate(`/${searchUrl}?${searchKey}=${searchValue}`);\n }\n\n return (\n <section className={`dc-c-hero ds-base ds-u-padding--2`}>\n <div className=\"ds-l-container\">\n <div className=\"ds-l-row\">\n <h1 className=\"ds-text-heading--5xl ds-u-color--white ds-u-margin-y--1\">{title}</h1>\n <p className=\"ds-u-color--white ds-u-measure--wide\">{description}</p>\n </div>\n <form onSubmit={(e) => submitHero(e)}>\n <div\n style={{ position: 'relative' }}\n className=\"ds-l-row ds-u-align-items--stretch ds-u-margin-y--4 ds-u-flex-wrap--nowrap\"\n >\n <div\n className=\"ds-u-padding--0 ds-u-margin-right--1\"\n style={{ flex: '1 1 100%', maxWidth: '100%' }}\n >\n <TextField\n label={textfieldLabel}\n labelClassName=\"ds-u-visibility--screen-reader\"\n name=\"search_text_input\"\n style={{ maxWidth: 'none', height: '61px', margin: '0 20px 0 0' }}\n onChange={(e) => setSearchValue(e.target.value)}\n />\n </div>\n <Button className=\"ds-u-margin-left--auto\" size=\"big\" type=\"submit\" variation=\"solid\" onDark>\n <span className=\"fas fa-search small-text ds-u-sm-display--none\" />\n <span className=\"full-text ds-u-display--none ds-u-sm-display--inline-block\">\n {searchButtonText}\n </span>\n </Button>\n </div>\n </form>\n </div>\n </section>\n );\n};\n\nexport default Hero;\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport { useMediaQuery } from 'react-responsive';\nimport TransformedDate from '../TransformedDate';\nimport './dataset-list-item.scss';\nimport { truncateText } from './truncateText';\n\ntype SearchItemProps = {\n title: string;\n modified: string;\n identifier: string;\n paginationEnabled: boolean;\n dataDictionaryLinks: boolean;\n}\n\nconst DatasetListItem = (props: SearchItemProps) => {\n const desktop = useMediaQuery({ minWidth: 1024 });\n const { title, modified, identifier, paginationEnabled, dataDictionaryLinks } = props;\n\n let linkContainerClasses = 'ds-u-margin-bottom--2';\n if (dataDictionaryLinks) {\n linkContainerClasses += ' ds-l-col--6 ds-u-padding-right--0';\n } else {\n linkContainerClasses += ' ds-l-col--auto ds-u-padding-left--0';\n }\n let linkClasses = 'ds-u-display--block ds-u-text-align--left';\n if (desktop) {\n linkContainerClasses = 'ds-u-padding-x--0';\n linkClasses += ' ds-l-col--4 ds-l-md-col--auto';\n }\n\n return (\n <li className=\"dc-c-list-item ds-u-padding-top--4\">\n <div className={`dc-c-searchlist-item ${paginationEnabled ? 'ds-u-border-top--1' : 'ds-u-border-bottom--1 ds-u-padding-bottom--3'}`}>\n <div className=\"ds-l-row ds-u-align-items--start\">\n <span id={`dataset-${identifier}-updated-date`} className={`ds-l-col--12 ds-u-text-align--left ds-text-heading--sm ${paginationEnabled ? 'ds-u-padding-top--3' : 'ds-u-padding-top--0'}`}>\n Updated <TransformedDate date={modified} />\n </span>\n <h2 className=\"ds-l-col--12 ds-text-heading--2xl\">{title}</h2>\n </div>\n <div className=\"ds-l-row\">\n <div className=\"ds-l-col--12 ds-l-md-col--12 ds-u-margin-top--2\">The {title} dataset was updated.</div>\n </div>\n <div className=\"ds-l-row\">\n <div className=\"ds-l-col--12\">\n <Link aria-describedby={`dataset-${identifier}-updated-date`} to={`/dataset/${identifier}`}>View the Dataset for {title} </Link></div>\n </div>\n </div>\n </li>\n );\n};\n\nexport default DatasetListItem;\n","import React from 'react';\n\nconst TransformedDate = ({\n date,\n options = {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n timeZone: 'UTC',\n }\n}) => {\n const rawDate = new Date(date);\n let modifiedDate = '';\n if (rawDate) {\n modifiedDate = rawDate.toLocaleDateString('en-US', options);\n }\n return <>{modifiedDate}</>;\n};\n\nexport default TransformedDate;\n","import React from 'react';\nimport { Link, useLocation } from 'react-router-dom';\nimport { useMediaQuery } from 'react-responsive';\nimport LargeFileDialog from '../LargeFileDialog';\nimport SearchItemIcon from '../../assets/icons/searchItem';\nimport TransformedDate from '../TransformedDate';\nimport './dataset-search-list-item.scss';\nimport { truncateText } from './truncateText';\nimport { Button, Tooltip } from '@cmsgov/design-system';\nimport DatasetDate from '../DatasetDate';\nimport { getFormatType } from '../../utilities/format';\nimport { DistributionType } from '../../types/dataset';\n\ntype LocationType = {\n pathname: string;\n search?: string;\n hash?: string;\n state?: any;\n};\n\ntype SearchItemProps = {\n title: string;\n modified: string;\n description: string;\n downloadUrl?: string | null;\n identifier: string;\n largeFile: boolean;\n paginationEnabled: boolean;\n dataDictionaryLinks: boolean;\n refresh?: string;\n released?: string;\n showTopics?: boolean;\n showDateDetails?: boolean;\n theme?: string[];\n topicSlugs?: { [key: string]: string }; // Map of topic titles to their slugs\n location: LocationType;\n distribution: DistributionType | {};\n}\n\nconst DatasetSearchListItem = (props: SearchItemProps) => {\n const desktop = useMediaQuery({ minWidth: 1024 });\n const { \n title, \n modified, \n description, \n downloadUrl, \n largeFile = false, \n paginationEnabled, \n dataDictionaryLinks,\n identifier,\n refresh,\n released,\n showDateDetails = false,\n showTopics = false,\n theme,\n topicSlugs,\n distribution,\n } = props;\n\n const location = useLocation();\n\n let linkContainerClasses = 'ds-u-margin-bottom--2';\n if (dataDictionaryLinks) {\n linkContainerClasses += ' ds-l-col--6 ds-u-padding-right--0';\n } else {\n linkContainerClasses += ' ds-l-col--auto ds-u-padding-left--0';\n }\n let linkClasses = 'ds-u-display--block ds-u-text-align--left';\n if (desktop) {\n linkContainerClasses = 'ds-u-padding-x--0';\n linkClasses += ' ds-l-col--4 ds-l-md-col--auto';\n }\n\n let themes\n\n if (theme && showTopics) {\n themes = (\n <ul className='theme-list item-theme'>\n {theme.map((topic: string, index: number) => {\n const title = topic || 'Unknown Topic'\n const prefix = 'topics'\n \n // Use the provided slug or fallback to a simple slug generation\n const slug = topicSlugs?.[title]\n const link = `/${prefix}/${slug}`\n \n return (\n <li className='ds-u-fill--primary ds-u-radius--pill' key={`dist-${title}-${index}`}>\n <Link\n to={link}\n state={{\n fromUrl: location.pathname,\n fromTitle: false,\n fromSearchList: location.pathname.includes('search')\n }}\n >\n {title}\n </Link>\n </li>)\n })}\n </ul>\n )\n }\n\n const date: { modified?: string; released?: string; refresh?: string } = {\n modified,\n released,\n refresh\n };\n\n const url = `/dataset/${identifier}`\n\n const DataTableLink: React.FC = () => {\n if (getFormatType(distribution as DistributionType) === \"csv\") {\n return (\n <Link to={`${url}#data-table`}>\n <SearchItemIcon id=\"data-table\" />\n Data Table\n </Link>\n )\n }\n\n return (\n <Tooltip\n className=\"dkan-disabled-link\"\n component=\"a\"\n offset={[\n 0,\n 5\n ]}\n title=\"There is no Data Table associated with this dataset. Data Tables will only display for CSV files.\"\n aria-disabled=\"true\"\n >\n <SearchItemIcon id=\"data-table\" />\n Data Table\n </Tooltip>\n )\n }\n\n const dataDictionaryExists = (): boolean => {\n if (distribution && \"data\" in distribution) {\n if (\"describedBy\" in distribution.data && \"describedByType\" in distribution.data) {\n return distribution.data.describedByType === 'application/vnd.tableschema+json';\n }\n }\n\n return false;\n }\n\n const DataDictionaryLink: React.FC = () => {\n if (dataDictionaryExists()) {\n return (\n <Link to={`${url}#data-dictionary`}>\n <SearchItemIcon id=\"data-dictionary\" />\n Data Dictionary\n </Link>\n )\n }\n\n return (\n <Tooltip\n className=\"dkan-disabled-link\"\n component=\"a\"\n offset={[\n 0,\n 5\n ]}\n title=\"There is no Data Dictionary associated with this dataset.\"\n aria-disabled=\"true\"\n >\n <SearchItemIcon id=\"data-dictionary\" />\n Data Dictionary\n </Tooltip>\n )\n }\n\n return (\n <li className=\"dc-c-search-list-item ds-u-padding-top--3\">\n <div className={`dc-c-searchlist-item ${paginationEnabled ? 'ds-u-border-top--1' : 'ds-u-border-bottom--1 ds-u-padding-bottom--3'}`}>\n {themes}\n <div className=\"ds-l-row ds-u-align-items--start\">\n {!showDateDetails && <span id={`dataset-${identifier}-updated-date`} className={`ds-l-col--12 ds-u-text-align--right ${paginationEnabled ? 'ds-u-padding-top--2' : 'ds-u-padding-top--0'}`}>\n <span>Updated:</span> <TransformedDate date={modified} />\n </span>}\n <h2 className=\"ds-l-col--12 ds-text-heading--2xl\">\n <Link aria-describedby={`dataset-${identifier}-updated-date`} to={`${url}`}>{title}</Link>\n </h2>\n </div>\n {description && <div className=\"ds-l-row\">\n <div className=\"ds-l-col--12 ds-l-md-col--12 ds-u-margin-top--2\">{truncateText(description)}{description.length > 240 ? (\n <>\n {' '}<Link to={`/dataset/${identifier}`}>See more</Link> \n </>\n ) : ''}</div>\n </div>}\n {showDateDetails && <div className='dataset-dates'>\n <DatasetDate date={date} displayTooltips={false}/>\n </div>}\n {( downloadUrl ) ? (\n <div className={`ds-u-margin-top--3 ds-u-padding-left--0 download-button`}>\n {largeFile ? (\n <span>\n {<LargeFileDialog downloadUrl={downloadUrl} />}\n </span>\n ) : (\n <Button href={downloadUrl} variation=\"solid\" className=\"ds-l-col--12 ds-l-md-col--auto\">\n <SearchItemIcon id=\"download\" />\n Download\n </Button>\n )}\n </div>\n ) : (\n ''\n )}\n <ul className={`ds-l-row ds-u-padding--0 ds-u-flex-direction--row ds-u-justify-content--between ds-u-md-justify-content--start ds-u-margin-top--3 ds-u-margin-x--0 ${!dataDictionaryLinks ? 'ds-u-justify-content--center ds-u-md-justify-content--start' : ''}`}>\n <li className={linkContainerClasses}>\n <span className={`${linkClasses}${getFormatType(distribution as DistributionType) === \"csv\" ? '' : ' dkan-disabled-link-wrapper'}`}>\n <DataTableLink />\n </span>\n </li>\n <li className={linkContainerClasses}>\n <span className={linkClasses}>\n <Link to={`${url}#overview`}>\n <SearchItemIcon id=\"overview\" />\n Overview\n </Link>\n </span>\n </li>\n { dataDictionaryLinks ? (\n <li className={linkContainerClasses}>\n <span className={`${linkClasses}${dataDictionaryExists() ? '' : ' dkan-disabled-link-wrapper'}`}>\n <DataDictionaryLink />\n </span>\n </li>\n ) : ''}\n <li className={linkContainerClasses}>\n <span className={linkClasses}>\n <Link to={`${url}#api`}>\n <SearchItemIcon id=\"api\" />\n API\n </Link>\n </span>\n </li>\n </ul>\n </div>\n </li>\n );\n};\n\nexport default DatasetSearchListItem;","import React from 'react';\nimport { useState } from 'react';\nimport { Dialog, Button } from '@cmsgov/design-system';\nimport SearchItemIcon from '../../assets/icons/searchItem';\n\ntype LargeFileDialogProps = {\n downloadUrl: string;\n};\n\nconst LargeFileDialog = (props: LargeFileDialogProps) => {\n const [modalOpen, setModalOpen] = useState(false);\n const { downloadUrl } = props;\n return (\n <>\n <Button variation=\"solid\" className=\"ds-l-col--12 ds-l-md-col--auto\" onClick={() => setModalOpen(true)}>\n <SearchItemIcon id=\"download\" />\n Download\n </Button>\n {modalOpen && (\n <Dialog\n onExit={() => setModalOpen(false)}\n isOpen={modalOpen}\n heading=\"Notice: Large File Size\"\n actions={\n <>\n <Button href={downloadUrl} className=\"ds-u-margin-right--2 \" variation=\"solid\">\n Yes, download\n </Button>\n <Button variation=\"ghost\" onClick={() => setModalOpen(false)}>\n No, cancel\n </Button>\n </>\n }\n >\n <p>\n This is a very large file and, depending on your network characteristics and software,\n may take a long time to download or fail to download. Additionally, the number of rows\n in the file may larger than the maximum rows your version of Microsoft Excel supports.\n If you can't download the file, we recommend engaging your IT support staff. If you are\n able to download the file but are unable to open it in MS Excel or get a message that\n the data has been truncated, we recommend trying alternative programs such as MS Access,\n Universal Viewer, Editpad or any other software your organization has available for\n large datasets.\n </p>\n <p>Would you like to proceed?</p>\n </Dialog>\n )}\n </>\n );\n};\n\nexport default LargeFileDialog;","import React from 'react'\ntype IconProps = {\n id: string;\n};\n\nconst SearchItemIcon = (props: IconProps) => {\n switch (props.id) {\n case 'overview':\n return (\n <svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n aria-hidden=\"true\"\n >\n <title>Overview Icon</title>\n <g stroke=\"none\" strokeWidth=\"1\" fillRule=\"evenodd\">\n <g transform=\"translate(0.000000, -4.000000)\" fillRule=\"nonzero\">\n <g transform=\"translate(0.000000, -1.000000)\">\n <g transform=\"translate(0.000000, 5.000000)\">\n <g>\n <path d=\"M9.55610973,15.6404494 C9.31670823,15.8801498 9.02743142,16 8.6882793,16 C8.34912718,16 8.05985037,15.8801498 7.82044888,15.6404494 L0.33915212,8.14981273 C0.206151288,8.01664586 0.116375727,7.87682064 0.0698254364,7.73033708 C0.0232751455,7.58385352 0,7.43071161 0,7.27091136 L0,1.19850187 C0,0.852267998 0.113050707,0.565959218 0.33915212,0.339575531 C0.565253533,0.113191844 0.85120532,0 1.19700748,0 L7.26184539,0 C7.42144638,0 7.58104738,0.0233042031 7.74064838,0.0699126092 C7.90024938,0.116521015 8.04655029,0.206408656 8.17955112,0.339575531 L15.6209476,7.79026217 C15.8736492,8.04327923 16,8.33957553 16,8.67915106 C16,9.01872659 15.8736492,9.31502289 15.6209476,9.56803995 L9.55610973,15.6404494 Z M8.75953079,15 L15,8.75953079 L7.24046921,1 L1,1 L1,7.24046921 L8.75953079,15 Z M3,4 C3.26923077,4 3.50320513,3.90064103 3.70192308,3.70192308 C3.90064103,3.50320513 4,3.26923077 4,3 C4,2.73076923 3.90064103,2.49679487 3.70192308,2.29807692 C3.50320513,2.09935897 3.26923077,2 3,2 C2.73076923,2 2.49679487,2.09935897 2.29807692,2.29807692 C2.09935897,2.49679487 2,2.73076923 2,3 C2,3.26923077 2.09935897,3.50320513 2.29807692,3.70192308 C2.49679487,3.90064103 2.73076923,4 3,4 L3,4 Z\"></path>\n </g>\n <g transform=\"translate(7.890470, 8.890470) rotate(45.000000) translate(-7.890470, -8.890470) translate(3.543164, 6.321607)\">\n <path d=\"M6.16557222,4.98656515 C6.09634145,5.05213515 6.01557222,5.08309876 5.92326452,5.07945598 C5.83095683,5.07581321 5.7501876,5.04120682 5.68095683,4.97563682 C5.61172606,4.91006682 5.57711068,4.8317471 5.57711068,4.74067766 C5.57711068,4.64960821 5.61172606,4.57128849 5.68095683,4.50571849 L7.72326452,2.57140353 L5.69249529,0.648016895 C5.62326452,0.582446896 5.59057222,0.504127176 5.59441837,0.413057733 C5.59826452,0.32198829 5.63480299,0.243668569 5.70403375,0.17809857 C5.77326452,0.112528571 5.85595683,0.0797435719 5.95211068,0.0797435719 C6.04826452,0.0797435719 6.13095683,0.112528571 6.2001876,0.17809857 L8.47326452,2.34190853 C8.54249529,2.40747853 8.57711068,2.48397686 8.57711068,2.57140353 C8.57711068,2.65883019 8.54249529,2.73532853 8.47326452,2.80089852 L6.16557222,4.98656515 Z M2.29670341,4.98413866 L0.0208413435,2.82877761 C-0.0481241737,2.7631321 -0.0826069324,2.68654566 -0.0826069324,2.59901831 C-0.0826069324,2.51149096 -0.0481241737,2.43490453 0.0208413435,2.36925901 L2.31969192,0.181075204 C2.38865744,0.115429689 2.47103291,0.0826069324 2.56681835,0.0826069324 C2.6626038,0.0826069324 2.74497927,0.115429689 2.81394479,0.181075204 C2.88291031,0.246720718 2.91739307,0.325130638 2.91739307,0.416304963 C2.91739307,0.507479288 2.88291031,0.585889208 2.81394479,0.651534722 L0.76796778,2.59901831 L2.79095629,4.52462006 C2.8599218,4.59026558 2.89440456,4.66685201 2.89440456,4.75437936 C2.89440456,4.84190671 2.8599218,4.91849315 2.79095629,4.98413866 C2.72199077,5.04978418 2.63961529,5.08260693 2.54382985,5.08260693 C2.44804441,5.08260693 2.36566893,5.04978418 2.29670341,4.98413866 L2.29670341,4.98413866 Z\"></path>\n </g>\n </g>\n </g>\n </g>\n </g>\n </svg>\n );\n case 'data-table':\n return (\n <svg\n width=\"16px\"\n height=\"12px\"\n viewBox=\"0 0 16 12\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n aria-hidden=\"true\"\n >\n <title>Data Table Icon</title>\n <g stroke=\"none\" strokeWidth=\"1\" fillRule=\"evenodd\">\n <g transform=\"translate(-132.000000, -6.000000)\" fillRule=\"nonzero\">\n <g transform=\"translate(132.000000, -1.000000)\">\n <g transform=\"translate(8.000000, 13.000000) scale(1, -1) translate(-8.000000, -13.000000) translate(0.000000, 7.000000)\">\n <path d=\"M0,12 L0,0 L16,0 L16,12 L0,12 Z M1,10 L5,10 L5,1 L1,1 L1,10 Z M6,10 L10,10 L10,1 L6,1 L6,10 Z M11,10 L15,10 L15,1 L11,1 L11,10 Z\"></path>\n </g>\n </g>\n </g>\n </g>\n </svg>\n );\n case 'api':\n return (\n <svg\n width=\"16px\"\n height=\"13px\"\n viewBox=\"0 0 16 13\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n aria-hidden=\"true\"\n >\n <title>API Icon</title>\n <g stroke=\"none\" strokeWidth=\"1\" fillRule=\"evenodd\">\n <g transform=\"translate(-279.000000, -6.000000)\" fillRule=\"nonzero\">\n <g transform=\"translate(279.000000, -1.000000)\">\n <g transform=\"translate(0.000000, 7.000000)\">\n <path d=\"M10.5806452,13 C10.4129032,13 10.2741935,12.9424479 10.1645161,12.8273438 C10.0548387,12.7122396 10,12.5666667 10,12.390625 C10,12.2145833 10.0548387,12.0690104 10.1645161,11.9539062 C10.2741935,11.8388021 10.4129032,11.78125 10.5806452,11.78125 L12.3225806,11.78125 C12.5935484,11.78125 12.8225806,11.6830729 13.0096774,11.4867188 C13.1967742,11.2903646 13.2903226,11.05 13.2903226,10.765625 L13.2903226,8.734375 C13.2903226,8.23333333 13.4354839,7.78645833 13.7258065,7.39375 C14.016129,7.00104167 14.3870968,6.73020833 14.8387097,6.58125 L14.8387097,6.41875 C14.3870968,6.28333333 14.016129,6.01588542 13.7258065,5.61640625 C13.4354839,5.21692708 13.2903226,4.76666667 13.2903226,4.265625 L13.2903226,2.234375 C13.2903226,1.95 13.1967742,1.70963542 13.0096774,1.51328125 C12.8225806,1.31692708 12.5935484,1.21875 12.3225806,1.21875 L10.5806452,1.21875 C10.4129032,1.21875 10.2741935,1.16119792 10.1645161,1.04609375 C10.0548387,0.930989583 10,0.785416667 10,0.609375 C10,0.433333333 10.0548387,0.287760417 10.1645161,0.17265625 C10.2741935,0.0575520833 10.4129032,8.8817842e-16 10.5806452,8.8817842e-16 L12.3225806,8.8817842e-16 C12.916129,8.8817842e-16 13.4193548,0.216666667 13.8322581,0.65 C14.2451613,1.08333333 14.4516129,1.61145833 14.4516129,2.234375 L14.4516129,4.265625 C14.4516129,4.55 14.5451613,4.79036458 14.7322581,4.98671875 C14.9193548,5.18307292 15.1483871,5.28125 15.4193548,5.28125 C15.5870968,5.28125 15.7258065,5.33880208 15.8354839,5.45390625 C15.9451613,5.56901042 16,5.71458333 16,5.890625 L16,7.109375 C16,7.271875 15.9451613,7.4140625 15.8354839,7.5359375 C15.7258065,7.6578125 15.5870968,7.71875 15.4193548,7.71875 C15.1483871,7.71875 14.9193548,7.81692708 14.7322581,8.01328125 C14.5451613,8.20963542 14.4516129,8.45 14.4516129,8.734375 L14.4516129,10.765625 C14.4516129,11.3885417 14.2451613,11.9166667 13.8322581,12.35 C13.4193548,12.7833333 12.916129,13 12.3225806,13 L10.5806452,13 Z M3.67741935,13 C3.08387097,13 2.58064516,12.7833333 2.16774194,12.35 C1.75483871,11.9166667 1.5483871,11.3885417 1.5483871,10.765625 L1.5483871,8.734375 C1.5483871,8.45 1.45483871,8.20963542 1.26774194,8.01328125 C1.08064516,7.81692708 0.851612903,7.71875 0.580645161,7.71875 C0.425806452,7.71875 0.290322581,7.6578125 0.174193548,7.5359375 C0.0580645161,7.4140625 3.52606833e-13,7.271875 3.52606833e-13,7.109375 L3.52606833e-13,5.890625 C3.52606833e-13,5.71458333 0.0580645161,5.56901042 0.174193548,5.45390625 C0.290322581,5.33880208 0.425806452,5.28125 0.580645161,5.28125 C0.851612903,5.28125 1.08064516,5.18307292 1.26774194,4.98671875 C1.45483871,4.79036458 1.5483871,4.55 1.5483871,4.265625 L1.5483871,2.234375 C1.5483871,1.61145833 1.75483871,1.08333333 2.16774194,0.65 C2.58064516,0.216666667 3.08387097,8.8817842e-16 3.67741935,8.8817842e-16 L5.41935484,8.8817842e-16 C5.58709677,8.8817842e-16 5.72580645,0.0575520833 5.83548387,0.17265625 C5.94516129,0.287760417 6,0.433333333 6,0.609375 C6,0.785416667 5.94516129,0.930989583 5.83548387,1.04609375 C5.72580645,1.16119792 5.58709677,1.21875 5.41935484,1.21875 L3.67741935,1.21875 C3.40645161,1.21875 3.17741935,1.31692708 2.99032258,1.51328125 C2.80322581,1.70963542 2.70967742,1.95 2.70967742,2.234375 L2.70967742,4.265625 C2.70967742,4.76666667 2.56451613,5.21692708 2.27419355,5.61640625 C1.98387097,6.01588542 1.61290323,6.28333333 1.16129032,6.41875 L1.16129032,6.58125 C1.61290323,6.73020833 1.98387097,7.00104167 2.27419355,7.39375 C2.56451613,7.78645833 2.70967742,8.23333333 2.70967742,8.734375 L2.70967742,10.765625 C2.70967742,11.05 2.80322581,11.2903646 2.99032258,11.4867188 C3.17741935,11.6830729 3.40645161,11.78125 3.67741935,11.78125 L5.41935484,11.78125 C5.58709677,11.78125 5.72580645,11.8388021 5.83548387,11.9539062 C5.94516129,12.0690104 6,12.2145833 6,12.390625 C6,12.5666667 5.94516129,12.7122396 5.83548387,12.8273438 C5.72580645,12.9424479 5.58709677,13 5.41935484,13 L3.67741935,13 Z\"></path>\n </g>\n </g>\n </g>\n </g>\n </svg>\n );\n case 'download':\n return (\n <svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n aria-hidden=\"true\"\n >\n <title>Download Icon</title>\n <g stroke=\"none\" strokeWidth=\"1\" fillRule=\"evenodd\">\n <g transform=\"translate(-370.000000, -4.000000)\" fillRule=\"nonzero\">\n <g transform=\"translate(370.000000, -1.000000)\">\n <path d=\"M9,6 C9,5.446875 8.553125,5 8,5 C7.446875,5 7,5.446875 7,6 L7,13.584375 L4.70625,11.290625 C4.315625,10.9 3.68125,10.9 3.290625,11.290625 C2.9,11.68125 2.9,12.315625 3.290625,12.70625 L7.290625,16.70625 C7.68125,17.096875 8.315625,17.096875 8.70625,16.70625 L12.70625,12.70625 C13.096875,12.315625 13.096875,11.68125 12.70625,11.290625 C12.315625,10.9 11.68125,10.9 11.290625,11.290625 L9,13.584375 L9,6 Z M2,16 C0.896875,16 0,16.896875 0,18 L0,19 C0,20.103125 0.896875,21 2,21 L14,21 C15.103125,21 16,20.103125 16,19 L16,18 C16,16.896875 15.103125,16 14,16 L10.828125,16 L9.4125,17.415625 C8.63125,18.196875 7.365625,18.196875 6.584375,17.415625 L5.171875,16 L2,16 Z M13.5,19.25 C13.084375,19.25 12.75,18.915625 12.75,18.5 C12.75,18.084375 13.084375,17.75 13.5,17.75 C13.915625,17.75 14.25,18.084375 14.25,18.5 C14.25,18.915625 13.915625,19.25 13.5,19.25 Z\"></path>\n </g>\n </g>\n </g>\n </svg>\n );\n case 'data-dictionary':\n return (\n <svg width=\"14px\" height=\"16px\" viewBox=\"0 0 14 16\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\" aria-hidden=\"true\">\n <title>Data Dictionary Icon</title>\n <g id=\"Dev-Handoff\" stroke=\"none\" strokeWidth=\"1\" fillRule=\"evenodd\">\n <g id=\"Group-15\" transform=\"translate(0, 0)\" fillRule=\"nonzero\">\n <path d=\"M0.0218026938,8.0971396 C0.0218026938,6.24591342 -0.0192244811,4.39368657 0.0358119731,2.54446171 C0.0728364968,1.28162525 1.07950328,0.231929969 2.34434106,0.0678212692 C2.69057039,0.022791443 3.04180304,0.00477951255 3.39003369,0.00477951255 C6.28395052,-0.000223801472 9.17786735,-0.00322578988 12.0717842,0.00578017535 C12.6811878,0.00778150096 13.2435603,0.169888875 13.6428248,0.683228893 C13.9059991,1.02145292 13.9950581,1.42171804 13.9970594,1.83299045 C14.0050647,4.76793446 14.0080667,7.70287846 13.9950581,10.6378225 C13.9920561,11.280248 13.7689083,11.8466231 13.1875232,12.2078624 C13.0464297,12.2959207 12.992394,12.4099963 12.9953959,12.5811096 C13.0054026,13.1394795 13.0064032,13.69885 12.9953959,14.2572198 C12.9913933,14.4473458 13.0364231,14.5173922 13.2425597,14.5243968 C13.6178082,14.5364047 13.8979938,14.7765638 13.9720428,15.0987772 C14.0450912,15.4129854 13.9069998,15.7482074 13.6088022,15.9013088 C13.4827187,15.9663519 13.3226127,15.9933698 13.1775166,15.9933698 C9.62516362,15.9983731 6.07181,16.0053777 2.51945705,15.9933698 C1.09851587,15.9883665 0.0708351712,15.0207255 0.0268060079,13.5997844 C-0.0202251439,12.0507583 0.00979474021,10.4987303 0.00579208899,8.94770299 C0.00579208899,8.66451541 0.00579208899,8.38032718 0.00579208899,8.0971396 C0.010795403,8.0971396 0.015798717,8.0971396 0.0218026938,8.0971396 L0.0218026938,8.0971396 Z M1.49477834,11.1421565 C1.99510974,11.1071333 2.44740933,11.0490949 2.90070958,11.0480942 C5.91970926,11.0400889 8.93870894,11.0440916 11.9577086,11.0430909 C12.4020029,11.0430909 12.5280864,10.9200094 12.5280864,10.4837204 C12.5280864,7.66585394 12.5280864,4.84698682 12.5280864,2.02912036 C12.5280864,1.58382542 12.4430301,1.49976974 12.0057404,1.49976974 C9.7952763,1.49976974 7.58581283,1.49976974 5.37534869,1.49976974 C4.50777404,1.49976974 3.64019939,1.4927651 2.7736254,1.50277173 C2.01712432,1.51177769 1.47576575,2.0711482 1.47576575,2.82664862 C1.47576575,5.50342162 1.47576575,8.17919395 1.47576575,10.855967 C1.47576575,10.9610365 1.48877436,11.0661061 1.49377768,11.1421565 L1.49477834,11.1421565 Z M6.8923535,14.5153908 C8.3263033,14.5153908 9.7602531,14.5093869 11.1932022,14.5203941 C11.4393653,14.5223955 11.5334276,14.467359 11.5224203,14.2041847 C11.5014064,13.7388765 11.5044084,13.2705663 11.5224203,12.8042574 C11.5314263,12.5630977 11.4553759,12.4960533 11.2132155,12.4960533 C8.37933843,12.5040586 5.54446071,12.5010566 2.71058365,12.5020573 C2.5935061,12.5020573 2.47642855,12.4990553 2.36135233,12.5140652 C1.64988108,12.6031242 1.26662722,13.4186644 1.63387047,14.0360733 C1.86102093,14.4173259 2.22426152,14.5083862 2.61652134,14.5113882 C4.04146518,14.5203941 5.46740967,14.5153908 6.8923535,14.5153908 L6.8923535,14.5153908 Z\" id=\"Shape\"></path>\n <path d=\"M7.50976245,7.49574126 C6.62717786,7.49574126 5.7435926,7.49774259 4.86100801,7.49574126 C4.36167727,7.49373993 4.05747578,7.22956495 4.03045788,6.787272 C4.00243933,6.33597307 4.34366534,6.01476031 4.87101464,6.01275899 C5.95373179,6.00775567 7.03644895,6.01175832 8.1191661,6.01175832 C8.79361283,6.01175832 9.46805956,6.00675501 10.143507,6.01375965 C10.7519099,6.01976362 11.0981393,6.45305062 10.9360319,6.99140721 C10.8429703,7.30261334 10.55578,7.4947406 10.1585169,7.49674192 C9.2759323,7.50074457 8.39234705,7.49774259 7.50976245,7.49774259 L7.50976245,7.49574126 Z\" id=\"Path\"></path>\n <path d=\"M7.50776113,5.00108889 C6.61617057,5.00108889 5.72458001,5.0060922 4.83298945,4.99908757 C4.25360569,4.99508491 3.90237305,4.53177804 4.07248572,4.01643669 C4.1565414,3.76226834 4.33365871,3.61517091 4.5868264,3.55913379 C4.6999013,3.53411722 4.81797951,3.52611192 4.9340564,3.52611192 C6.6501931,3.52411059 8.36733048,3.52411059 10.0834672,3.52611192 C10.5577814,3.52611192 10.8299616,3.69022062 10.9340306,4.03044597 C11.090134,4.53778201 10.7439046,4.99408425 10.1825328,4.99908757 C9.29094224,5.00709287 8.39935169,5.00108889 7.50776113,5.00108889 L7.50776113,5.00108889 Z\" id=\"Path\"></path>\n </g>\n </g>\n </svg>\n );\n default:\n return null;\n }\n};\n\nexport default SearchItemIcon;\n","import DOMPurify from 'dompurify';\nimport truncate from 'lodash.truncate';\n\nexport function truncateText(textString: string, textLength: number = 240): string {\n if (!textString) {\n return '';\n }\n\n let cleanedText = textString;\n if(cleanedText.split('</p>').length > 1) {\n cleanedText = cleanedText.split('</p>')[0];\n }\n\n if(cleanedText.split('<br/>').length > 1) {\n cleanedText = cleanedText.split('<br/>')[0];\n }\n\n cleanedText = truncate(cleanedText, {\n 'length': textLength,\n 'separator': ' '}\n );\n\n return DOMPurify.sanitize(cleanedText, {ALLOWED_TAGS: []});\n}","import React from 'react';\nimport DatasetDateItem from '../DatasetDateItem';\n\ntype DateObject = {\n modified?: string;\n released?: string;\n refresh?: string;\n};\n\ntype DatasetDateProps = {\n date: DateObject;\n updatedBoldLabel?: boolean;\n releasedBoldLabel?: boolean;\n refreshBoldLabel?: boolean;\n displayTooltips?: boolean;\n};\n\nconst DatasetDate = (props: DatasetDateProps) => {\n const {\n date,\n updatedBoldLabel = false,\n releasedBoldLabel = false,\n refreshBoldLabel = false,\n displayTooltips = true\n } = props;\n\n const { modified, released, refresh } = date;\n\n // Create an array of date items to render\n const dateItems = [];\n \n if (modified) {\n dateItems.push(\n <DatasetDateItem \n key=\"modified\"\n displayTooltips={displayTooltips} \n type='modified' \n date={modified} \n boldLabel={updatedBoldLabel} \n />\n );\n }\n \n if (released) {\n dateItems.push(\n <DatasetDateItem \n key=\"released\"\n displayTooltips={displayTooltips} \n type='released' \n date={released} \n boldLabel={releasedBoldLabel} \n />\n );\n }\n \n if (refresh) {\n dateItems.push(\n <DatasetDateItem \n key=\"refresh\"\n displayTooltips={displayTooltips} \n type='refresh' \n date={refresh} \n boldLabel={refreshBoldLabel} \n />\n );\n }\n\n return (\n <div className='dataset-date'>\n {dateItems.map((item, index) => (\n <React.Fragment key={index}>\n {item}\n {index < dateItems.length - 1 && (\n <span className='bullet-point'>•</span>\n )}\n </React.Fragment>\n ))}\n </div>\n );\n};\n\nexport default DatasetDate; ","import React from 'react';\nimport { Tooltip, TooltipIcon } from '@cmsgov/design-system';\nimport TransformedDate from '../TransformedDate';\ntype DateType = 'modified' | 'released' | 'refresh';\n\ntype DatasetDateItemProps = {\n type: DateType;\n date: string;\n boldLabel?: boolean;\n displayTooltips?: boolean;\n};\n\nconst DatasetDateItem = (props: DatasetDateItemProps) => {\n const { type, date, boldLabel = false, displayTooltips = true } = props;\n\n const dateText: Record<DateType, string> = {\n modified: 'Last Modified',\n released: 'Released',\n refresh: 'Planned Update'\n };\n\n const tooltipContent = {\n modified: (\n <>\n <strong>Last Modified: </strong> The date the <br/>dataset was last updated.\n </>\n ),\n released: (\n <>\n <strong>Released: </strong> The date the most <br/>recent dataset was made available<br/>to the public.\n </>\n ),\n refresh: (\n <>\n <strong>Planned Update:</strong> The date the <br/>dataset is scheduled to be updated.\n </>\n )\n };\n\n return (\n <div className={`dataset-date-item${boldLabel ? ' bold-label' : ''}`}>\n <span className='dataset-data-item-label'>\n <span>{dateText[type]}</span>: <TransformedDate date={date} />\n </span>\n {displayTooltips === true && (\n <Tooltip\n aria-label={dateText[type]}\n className=\"ds-c-tooltip__trigger-icon ds-u-display--inline ds-u-padding-left--0 ds-uw-padding-right--0\"\n title={tooltipContent[type]}\n placement=\"top\"\n >\n <TooltipIcon />\n </Tooltip>\n )}\n </div>\n );\n};\n\nexport default DatasetDateItem; ","import { DistributionType } from \"../types/dataset\";\n\nexport function getFormatType(dist : DistributionType) {\n if (dist && dist.data) {\n if(dist.data.format) {\n return dist.data.format.toLowerCase()\n }\n if(dist.data.mediaType) {\n const mediaType = dist.data.mediaType.split('/');\n if (mediaType.length && mediaType[1]) {\n return mediaType[1].toLowerCase();\n }\n }\n if(dist.data[\"%Ref:downloadURL\"].length && dist.data[\"%Ref:downloadURL\"][0].data) {\n if(dist.data[\"%Ref:downloadURL\"][0].data.mimeType) {\n const mimeType = dist.data[\"%Ref:downloadURL\"][0].data.mimeType.split(\"/\");\n if (mimeType.length && mimeType[1]) {\n return mimeType[1].toLowerCase();\n }\n }\n }\n }\n return '';\n}","import React from 'react';\nimport { Choice, Accordion, AccordionItem, AddIcon, RemoveIcon } from '@cmsgov/design-system';\nimport { SearchAPIFacetType, SearchFacetsPropTypes } from '../../types/search';\nimport './dataset-search-facets.scss';\n\nconst SearchFacets = (props: SearchFacetsPropTypes) => {\n const { facets, title, onClickFunction, selectedFacets = [] } = props;\n const filteredFacets = facets .filter((f: SearchAPIFacetType) => {\n return Number(f.total) > 0 || selectedFacets.findIndex((i) => i === f.name) !== -1;\n });\n\n return (\n <div className=\"dkan-dataset-search--facet-container ds-u-margin-bottom--4\">\n <Accordion>\n <AccordionItem\n contentClassName=\"ds-u-padding-left--1 ds-u-padding-right--0\"\n heading={title}\n defaultOpen\n >\n {!filteredFacets.length ?\n <p className=\"ds-text-heading--md\">No matching facets found.</p>\n :\n <ul>\n {filteredFacets\n .map((f: SearchAPIFacetType) => {\n return (\n <li key={f.name as React.Key}>\n <Choice\n className=\"ds-u-margin-y--1\"\n checked={selectedFacets.findIndex((s) => s === f.name) > -1 ? true : false}\n name={`facet_theme_${f.name}`}\n type=\"checkbox\"\n label={`${f.name} (${f.total})`}\n value={f.name}\n onClick={() => onClickFunction(f.type, f.name)}\n />\n </li>\n )})\n }\n </ul>\n }\n </AccordionItem>\n </Accordion>\n </div>\n );\n};\n\nexport default SearchFacets;\n","import React from 'react';\nimport SwaggerUI from 'swagger-ui-react';\nimport { SpanOpenAPIVersion, SpanVersionStamp } from '@civicactions/swagger-ui-layout';\nimport 'swagger-ui-react/swagger-ui.css';\nimport '../../templates/APIPage/swagger-ui-overrides.scss';\n\nconst ApiDocumentation = ({ endpoint }) => {\n return (\n <div>\n <SwaggerUI\n url={endpoint}\n plugins={[SpanOpenAPIVersion, SpanVersionStamp]}\n />\n </div>\n );\n};\n\nexport default ApiDocumentation;\n","import React from 'react';\nimport { useMediaQuery } from 'react-responsive';\nimport {\n Button,\n Tooltip,\n} from '@cmsgov/design-system';\nimport DataTablePageResults from '../DataTablePageResults';\nimport DataTableDensity from '../DataTableDensity';\nimport DataTableRowChanger from '../DataTableRowChanger';\nimport DownloadIcon from '../../assets/icons/download';\nimport CopyIcon from '../../assets/icons/copy';\nimport SettingsIcon from '../../assets/icons/settings';\nimport './resource-header.scss';\n\nconst ResourceHeader = ({\n setTablePadding,\n includeDensity,\n includeDownload,\n resource,\n tablePadding,\n downloadUrl,\n}) => {\n const md = useMediaQuery({ minWidth: 0, maxWidth: 768 });\n const { limit, offset, count, setLimit, setOffset } = resource;\n const intCount = count ? parseInt(count) : 0;\n\n return (\n <div className=\"dc-c-resource-header\">\n <div className=\"ds-l-row ds-u-align-items--center\">\n <div className=\"ds-l-col--12 ds-u-display--flex ds-u-justify-content--between ds-u-align-items--center ds-u-margin-bottom--2\">\n <div className=\"ds-u-font-weight--bold\">\n {(!resource.loading && resource.count !== null) && (\n <DataTablePageResults\n totalRows={parseInt(intCount)}\n limit={parseInt(limit)}\n offset={parseInt(offset)}\n />\n )}\n </div>\n <div className=\"dc-c-resource-header--buttons\">\n {includeDownload && (\n <>\n <Button\n size=\"small\"\n className=\"ds-u-text-align--left ds-u-font-weight--normal ds-u-font-size--base ds-u-margin-right--1\"\n href={downloadUrl}\n >\n <DownloadIcon />\n {!md && (\n <span className=\"ds-u-font-weight--semibold ds-u-margin-left--1\">\n Download filtered data (CSV)\n </span>\n )}\n </Button>\n\n <Tooltip\n onOpen={() => {\n navigator.clipboard.writeText(window.location.href);\n }}\n className=\"ds-c-button ds-c-button--small ds-u-text-align--left ds-u-margin-right--1 display-settings-font\"\n placement=\"bottom\"\n dialog\n ariaLabel=\"Copy link to filtered data\"\n title=\"Link copied to clipboard\"\n >\n <CopyIcon />\n {!md && (\n <span className=\"ds-u-font-weight--semibold ds-u-margin-left--1\">\n Copy link to filtered data\n </span>\n )}\n </Tooltip>\n </>\n )}\n <Tooltip\n className=\"ds-c-button ds-c-button--small ds-u-text-align--left display-settings-font\"\n placement=\"bottom\"\n dialog\n ariaLabel=\"Display settings\"\n title={\n <div className=\"dc-c-display-settings\">\n <DataTableRowChanger limit={Number(limit)} setLimit={setLimit} setOffset={setOffset} />\n {includeDensity && (\n <DataTableDensity\n setTablePadding={setTablePadding}\n tablePadding={tablePadding}\n />\n )}\n </div>\n }\n >\n <SettingsIcon />\n {!md && (\n <span className=\"ds-u-font-weight--semibold ds-u-margin-left--1\">\n Display settings\n </span>\n )}\n </Tooltip>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default ResourceHeader;\n","export { default } from './DataTablePageResults';","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport type DataTablePageResultsType = {\n totalRows: number;\n limit: number;\n offset: number;\n className?: string;\n}\n\nconst DataTablePageResults = ({\n totalRows, limit, offset, className = 'data-table-results'\n}: DataTablePageResultsType) => {\n const numTotalRows = totalRows;\n if (numTotalRows === 0) {\n return <p className={className}>{`0 - 0 of 0 rows`}</p>\n }\n const ofTotal = () => {\n if (limit >= numTotalRows) { return numTotalRows; }\n if (limit + offset >= numTotalRows) { return numTotalRows; }\n if (offset === 0) { return limit; }\n return (offset + limit);\n }\n const page = offset / limit;\n const startTotal = () => (page * limit + 1)\n return (\n <p className={className}>\n Displaying{' '}\n <span className=\"ds-u-font-weight--bold\">{`${startTotal().toLocaleString()} - ${ofTotal().toLocaleString()}`}</span>{' '}\n of <span className=\"ds-u-font-weight--bold\">{`${numTotalRows.toLocaleString()}`}</span>{' '}\n rows\n </p>\n );\n};\n\nDataTablePageResults.propTypes = {\n className: PropTypes.string,\n totalRows: PropTypes.number.isRequired,\n limit: PropTypes.number.isRequired,\n offset: PropTypes.number.isRequired,\n};\n\nexport default DataTablePageResults;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Dropdown } from '@cmsgov/design-system';\n\nconst DataTableDensity = ({ setTablePadding, tablePadding }) => {\n return (\n <div className=\"ds-u-display--flex\">\n <Dropdown\n options={[\n { label: 'Tight', value: 'ds-u-padding-y--0' },\n { label: 'Normal', value: 'ds-u-padding-y--1' },\n { label: 'Expanded', value: 'ds-u-padding-y--2' },\n ]}\n label=\"Display density:\"\n labelClassName=\"ds-u-margin-top--0\"\n name=\"datatable_display_density\"\n onChange={(e) => setTablePadding(e.target.value)}\n defaultValue={tablePadding}\n />\n </div>\n );\n};\n\nDataTableDensity.propTypes = {\n setTablePadding: PropTypes.func.isRequired,\n};\n\nexport default DataTableDensity;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Dropdown, DropdownValue, DropdownOption } from '@cmsgov/design-system';\n\ntype DataTableRowChangerProps = {\n limit: DropdownValue,\n rowOptions: Array<Number>,\n setLimit: Function,\n};\n\nconst DataTableRowChanger = ({limit, rowOptions = [10, 25, 50, 100], setLimit} : DataTableRowChangerProps) => {\n const rowOptionsFormatted = rowOptions.map((row: Number) => ({ label: row.toString(), value: row.toString() as DropdownValue } )) as Array<DropdownOption>;\n return (\n <div className=\"ds-u-display--flex\">\n <Dropdown\n options={rowOptionsFormatted}\n label=\"Rows per page:\"\n labelClassName=\"ds-u-margin-top--0\"\n name=\"datatable_rows_per_page\"\n onChange={(e) => setLimit(e.target.value)}\n defaultValue={limit.toString()}\n />\n </div>\n );\n};\n\nDataTableRowChanger.propTypes = {\n rowOptions: PropTypes.arrayOf(PropTypes.number),\n setLimit: PropTypes.func.isRequired,\n limit: PropTypes.number,\n};\n\nexport default DataTableRowChanger;\n","import React from 'react';\n\nconst DownloadIcon = () => (\n <svg\n width=\"15px\"\n height=\"15px\"\n viewBox=\"0 0 384 512\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n >\n <title>Download Icon</title>\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <path\n fill=\"#112E51\"\n fillRule=\"nonzero\"\n d=\"M384 128h-128V0L384 128zM256 160H384v304c0 26.51-21.49 48-48 48h-288C21.49 512 0 490.5 0 464v-416C0 21.49 21.49 0 48 0H224l.0039 128C224 145.7 238.3 160 256 160zM255 295L216 334.1V232c0-13.25-10.75-24-24-24S168 218.8 168 232v102.1L128.1 295C124.3 290.3 118.2 288 112 288S99.72 290.3 95.03 295c-9.375 9.375-9.375 24.56 0 33.94l80 80c9.375 9.375 24.56 9.375 33.94 0l80-80c9.375-9.375 9.375-24.56 0-33.94S264.4 285.7 255 295z\"\n />\n </g>\n </svg>\n);\n\nexport default DownloadIcon;\n","import React from 'react';\n\nconst CopyIcon = () => (\n <svg\n width=\"15px\"\n height=\"15px\"\n viewBox=\"0 0 512 512\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n >\n <title>Copy Icon</title>\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <path\n fill=\"#112E51\"\n fillRule=\"nonzero\"\n d=\"M384 96L384 0h-112c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48H464c26.51 0 48-21.49 48-48V128h-95.1C398.4 128 384 113.6 384 96zM416 0v96h96L416 0zM192 352V128h-144c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h192c26.51 0 48-21.49 48-48L288 416h-32C220.7 416 192 387.3 192 352z\"\n />\n </g>\n </svg>\n);\n\nexport default CopyIcon;\n","import React from 'react';\n\nconst SettingsIcon = () => (\n <svg\n width=\"15px\"\n height=\"15px\"\n // viewBox=\"0 0 15 15\"\n viewBox=\"0 0 512 512\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n >\n <title>Settings Icon</title>\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <path\n fill=\"#112E51\"\n fillRule=\"nonzero\"\n d=\"M495.9 166.6C499.2 175.2 496.4 184.9 489.6 191.2L446.3 230.6C447.4 238.9 448 247.4 448 256C448 264.6 447.4 273.1 446.3 281.4L489.6 320.8C496.4 327.1 499.2 336.8 495.9 345.4C491.5 357.3 486.2 368.8 480.2 379.7L475.5 387.8C468.9 398.8 461.5 409.2 453.4 419.1C447.4 426.2 437.7 428.7 428.9 425.9L373.2 408.1C359.8 418.4 344.1 427 329.2 433.6L316.7 490.7C314.7 499.7 307.7 506.1 298.5 508.5C284.7 510.8 270.5 512 255.1 512C241.5 512 227.3 510.8 213.5 508.5C204.3 506.1 197.3 499.7 195.3 490.7L182.8 433.6C167 427 152.2 418.4 138.8 408.1L83.14 425.9C74.3 428.7 64.55 426.2 58.63 419.1C50.52 409.2 43.12 398.8 36.52 387.8L31.84 379.7C25.77 368.8 20.49 357.3 16.06 345.4C12.82 336.8 15.55 327.1 22.41 320.8L65.67 281.4C64.57 273.1 64 264.6 64 256C64 247.4 64.57 238.9 65.67 230.6L22.41 191.2C15.55 184.9 12.82 175.3 16.06 166.6C20.49 154.7 25.78 143.2 31.84 132.3L36.51 124.2C43.12 113.2 50.52 102.8 58.63 92.95C64.55 85.8 74.3 83.32 83.14 86.14L138.8 103.9C152.2 93.56 167 84.96 182.8 78.43L195.3 21.33C197.3 12.25 204.3 5.04 213.5 3.51C227.3 1.201 241.5 0 256 0C270.5 0 284.7 1.201 298.5 3.51C307.7 5.04 314.7 12.25 316.7 21.33L329.2 78.43C344.1 84.96 359.8 93.56 373.2 103.9L428.9 86.14C437.7 83.32 447.4 85.8 453.4 92.95C461.5 102.8 468.9 113.2 475.5 124.2L480.2 132.3C486.2 143.2 491.5 154.7 495.9 166.6V166.6zM256 336C300.2 336 336 300.2 336 255.1C336 211.8 300.2 175.1 256 175.1C211.8 175.1 176 211.8 176 255.1C176 300.2 211.8 336 256 336z\"\n />\n </g>\n </svg>\n);\n\nexport default SettingsIcon;\n","import React, { useContext } from 'react';\n\nimport { Spinner, TextField } from '@cmsgov/design-system';\nimport { transformTableSortToQuerySort} from '../../services/useDatastore/transformSorts';\nimport { buildCustomColHeaders } from '../../templates/FilteredResource/functions';\nimport DataTable from '../Datatable';\nimport DataTableContext from \"../../templates/Dataset/DataTableContext\";\n\nexport function prepareColumns(columns, schema) {\n return columns.map((column) => ({\n header:\n schema && schema.fields[column].description ? schema.fields[column].description : column,\n accessor: column,\n }));\n}\n\nfunction DefaultColumnFilter({ column: { Header, accessor, setFilter, filterValue } }) {\n return (\n <TextField\n label={`Filter by ${Header}`}\n onChange={(e) => {\n setFilter(e.target.value) || undefined;\n }}\n labelClassName=\"ds-u-visibility--screen-reader\"\n name={accessor}\n value={filterValue || ''}\n />\n );\n}\n\nconst ResourcePreview = ({\n tablePadding,\n id,\n canResize = true,\n}) => {\n const {resource, customColumns} = useContext(DataTableContext);\n\n const customColumnHeaders = buildCustomColHeaders(\n customColumns,\n resource.columns,\n resource.schema[id]\n );\n\n const columns = customColumnHeaders\n ? customColumnHeaders\n : prepareColumns(resource.columns, resource.schema[id]);\n\n if (\n Object.keys(resource).length &&\n columns.length &&\n resource.schema\n ) {\n return (\n <div\n id=\"resource-preview\"\n className=\"ds-u-overflow--auto ds-u-border-x--1 ds-u-border-bottom--1\"\n >\n <DataTable\n canResize={canResize}\n columns={\n customColumns ? customColumns : prepareColumns(resource.columns, resource.schema[id])\n }\n sortTransform={transformTableSortToQuerySort}\n tablePadding={tablePadding}\n loading={resource.loading}\n className=\"dc-c-datatable\"\n customColumnFilter={DefaultColumnFilter}\n />\n </div>\n )\n} else {\n return (\n <Spinner />\n )\n}\n};\n\nexport default ResourcePreview;\n","export function transformTableSortToQuerySort(sortArray) {\n let newQuery = [];\n sortArray.forEach((s) => {\n return newQuery.push({property: s.id, order: s.desc ? 'desc' : 'asc'})\n })\n return newQuery;\n}","// Example custom column headers, where only effective date has an ! at the end\n// [\n// {schema: 'date', cell: ({ value }) => localeDate(value),},\n// {accessor: 'effective_date',cell: ({ value }) => localeDate(value) + '!',},\n// ]\n\nexport function buildCustomColHeaders(customHeaders, columns, schema) {\n return columns.map((column) => {\n const customAccessorIndex = customHeaders.findIndex((header) => header.accessor === column);\n const customSchemaIndex = customHeaders.findIndex(\n (header) => header.schema === schema.fields[column].mysql_type\n );\n let newColumn = {};\n // If specific accessor is passed, this will override a general mysql_type Cell rewrite.\n if (customAccessorIndex > -1) {\n newColumn.header =\n schema && schema.fields[column].description ? schema.fields[column].description : column;\n newColumn.accessor = column;\n newColumn.cell = customHeaders[customAccessorIndex].cell;\n } else {\n newColumn.header =\n schema && schema.fields[column].description ? schema.fields[column].description : column;\n newColumn.accessor = column;\n if (customSchemaIndex > -1) {\n newColumn.cell = customHeaders[customSchemaIndex].cell;\n }\n }\n return newColumn;\n });\n}\n\nexport function convertUTCToLocalDate(date) {\n if (!date) {\n return date;\n }\n date = new Date(date);\n date = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n return date;\n}\n\nexport function cleanText(value, operator) {\n let newValue = value;\n if (Array.isArray(newValue)) {\n newValue = newValue.join(',');\n }\n // return newValue.replace(/(^\\%+|\\%+$)/gm, '');\n return newValue\n}\n\nexport const operatorMapping = [\n { label: 'Is', value: '=' },\n { label: 'Starts With', value: 'starts with' },\n { label: 'Contains', value: 'contains' },\n { label: 'Is Not', value: '<>' },\n { label: 'Or', value: 'in' },\n { label: 'Is', value: '=' },\n { label: 'Is Not', value: '<>' },\n { label: 'Greater Than', value: '>' },\n { label: 'Less Than', value: '<' },\n];\n\nexport function getOperatorLabel(operatorValue) {\n const operator = operatorMapping.find(op => op.value === operatorValue);\n return operator ? operator.label : operatorValue; // Return original value if not found\n}\n\nexport function buildOperatorOptions(type) {\n switch (type) {\n case 'text': // Will change from text to string in future update\n case 'string':\n return [\n { label: 'Is', value: '=' },\n { label: 'Starts With', value: 'starts with' },\n { label: 'Contains', value: 'contains' },\n { label: 'Is Not', value: '<>' },\n { label: 'Or', value: 'in' },\n ];\n case 'date':\n return [\n { label: 'Is', value: '=' },\n { label: 'Is Not', value: '<>' },\n { label: 'Greater Than', value: '>' },\n { label: 'Less Than', value: '<' },\n ];\n default:\n // These 2 should be safe for all data types\n return [\n { label: 'Is', value: '=' },\n { label: 'Is Not', value: '<>' },\n ];\n }\n}\n","export { default } from './Datatable';","import React, { useState, useMemo, useContext, useRef, useEffect } from \"react\";\nimport {\n useReactTable,\n flexRender,\n getCoreRowModel,\n createColumnHelper,\n getSortedRowModel,\n} from \"@tanstack/react-table\";\nimport { Spinner, Alert, Tooltip, Button } from \"@cmsgov/design-system\";\nimport TruncatedResizeableTHead from \"./TruncatedResizeableTHead\";\nimport FixedSizeTHead from \"./FixedSizeTHead\";\nimport \"./datatable.scss\";\nimport DataTableContext from \"../../templates/Dataset/DataTableContext\";\nimport { DataTableActionsContext } from \"../DatasetTableTab/DataTableActionsContext\";\nimport DataTableToolbar from \"../DataTableToolbar\";\n\nconst DataTable = ({\n columns,\n sortTransform,\n tablePadding,\n canResize,\n loading = false,\n isModal,\n downloadURL,\n unfilteredDownloadURL,\n setPage,\n showCopyLinkButton,\n showDataTableToolbar,\n showDownloadFilteredDataButton,\n showDownloadFullDataButton,\n showStoredQueryDownloadButton,\n}) => {\n const { id, resource, datasetTableControls, dataDictionaryBanner } = useContext(DataTableContext);\n const { columnOrder, setColumnOrder, columnVisibility, setColumnVisibility } = useContext(DataTableActionsContext);\n const { conditions } = resource;\n\n const data = resource.values;\n const [ sorting, setSorting ] = useState([])\n const [ariaLiveFeedback, setAriaLiveFeedback] = useState('')\n const dataTableWrapperElement = useRef(null)\n const columnHelper = createColumnHelper()\n\n const table_columns = columns.map((col) => {\n if (col.cell) {\n return (\n columnHelper.accessor(col.accessor, {\n header: col.header,\n cell: col.cell,\n })\n )\n }\n return (\n columnHelper.accessor(col.accessor, {\n header: col.header,\n })\n )\n })\n\n const [ highlightRow, setHighlightRow ] = useState(null);\n\n useEffect(() => {\n if (columnOrder && !columnOrder.length)\n setColumnOrder(table_columns.map(c => c.accessorKey))\n }, [columnOrder])\n\n const sortElement = (isSorted, onClickFn) => {\n if(isSorted === 'asc') {\n return 'dc-c-sort--asc'\n }\n if(isSorted === 'desc') {\n return 'dc-c-sort--desc'\n }\n return 'dc-c-sort--default'\n }\n const filters = []\n const table = useReactTable({\n data: data,\n columns: table_columns,\n manualSorting: true,\n state: {\n columnOrder,\n columnVisibility,\n sorting,\n },\n columnResizeMode: 'onChange',\n onSortingChange: setSorting,\n onColumnOrderChange: setColumnOrder,\n onColumnVisibilityChange: setColumnVisibility,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n debugTable: false,\n });\n\n useEffect(() => {\n const normalizedSort = sortTransform ? sortTransform(sorting) : filters;\n resource.setSort(normalizedSort);\n }, [sorting]);\n\n const defaultColumnOrder = useMemo(() => table_columns.map(column => column.accessorKey), []);\n const tableWrapperWidth = () => {\n if (dataTableWrapperElement.current) {\n return dataTableWrapperElement.current.offsetWidth;\n }\n\n return 'auto';\n };\n\n useEffect(() => {\n setHighlightRow(null);\n }, [data])\n\n return(\n <>\n {showDataTableToolbar && (\n <>\n <div className=\"ds-u-margin-bottom--3\">\n {showDownloadFullDataButton && (\n <Button\n className=\"ds-c-button ds-c-button--solid ds-l-col--12 ds-l-md-col--auto\"\n href={unfilteredDownloadURL}\n >\n <span className=\"ds-u-font-weight--bold ds-u-font-size--md ds-u-margin-x--0 ds-u-padding--0\">\n <i className=\"fas fa-file-csv\"></i> Download full dataset (CSV)\n </span>\n </Button>\n )}\n </div>\n <DataTableToolbar\n id={id}\n columns={table.getAllLeafColumns()}\n defaultColumnOrder={defaultColumnOrder}\n isModal={isModal}\n resource={resource}\n datasetTableControls={datasetTableControls}\n columnVisibility={columnVisibility}\n setColumnVisibility={setColumnVisibility}\n />\n <div className=\"ds-u-display--flex ds-l-col--12 ds-l-md-col--11 ds-u-justify-content--between ds-u-padding--0 ds-u-margin-y--2 ds-u-md-margin-y--3 ds-u-flex-direction--column ds-u-md-flex-direction--row\">\n <div className=\"dkan-data-table-info-container ds-u-padding-right--0 ds-u-md-padding-right--4\">\n {dataDictionaryBanner && !isModal && (\n <div className=\"ds-u-margin-bottom--3\">\n <Alert>Click on the \"Data Dictionary\" tab above for full column definitions</Alert>\n </div>\n )}\n <p className=\"ds-u-margin--0\">Activate the column resize button and use the right and left arrow keys to resize a column or use your mouse to drag/resize. Press escape to cancel the resizing.</p>\n </div>\n <div className=\"dkan-data-table-share-container ds-l-col--auto ds-u-padding--0 ds-u-margin-bottom--2 ds-u-md-margin-bottom--0\">\n <Tooltip\n className=\"ds-c-button ds-c-button--solid dkan-data-table-share-button ds-u-display--flex ds-u-align-items--center ds-u-padding-x--3 ds-u-padding-y--1 ds-u-font-weight--bold ds-l-col--12 ds-l-md-col--auto ds-u-justify-content--center\"\n activeClassName=\"dkan-data-table-share-tooltip-open\"\n dialog\n offset={[\n 0,\n 5\n ]}\n placement=\"bottom-start\"\n maxWidth=\"320px\"\n title={\n <div className=\"dc-c-resource-header--buttons ds-u-display--flex ds-u-flex-direction--column ds-l-col--12 ds-u-padding-x--0\">\n {showCopyLinkButton && (\n <>\n {conditions && conditions.length ? (\n <Tooltip\n onOpen={() => {\n navigator.clipboard.writeText(window.location.href);\n }}\n className=\"ds-c-button ds-u-text-align--center ds-l-col--12 ds-u-padding-x--2 ds-u-margin-x--0 ds-u-margin-bottom--1\"\n placement=\"bottom\"\n dialog\n ariaLabel=\"Copy link to filtered data\"\n title=\"Link copied to clipboard\"\n aria-disabled={!conditions || conditions.length === 0}\n >\n <span className=\"ds-u-font-weight--normal ds-u-font-size--md ds-u-margin-x--0 ds-u-padding--0\">\n <i className=\"fas fa-copy\"></i> Copy link to filtered data\n </span>\n </Tooltip>\n ) : (\n <Button\n aria-disabled={true}\n aria-label=\"Copy link to filtered data\"\n className=\"ds-c-button ds-u-text-align--center ds-l-col--12 ds-u-padding-x--2 ds-u-margin-x--0 ds-u-margin-bottom--1\"\n >\n <span className=\"ds-u-font-weight--normal ds-u-font-size--md ds-u-padding--0\">\n <i className=\"fas fa-copy\"></i> Copy link to filtered data\n </span>\n </Button>\n )}\n </>\n )}\n {(showDownloadFilteredDataButton || showStoredQueryDownloadButton) && (\n <div className=\"ds-l-col--12 ds-u-padding-x--0 ds-u-margin-x--0\">\n <Button\n className=\"ds-u-text-align--center ds-u-display--inline-block ds-l-col--12 ds-u-padding-x--2 ds-u-margin-x--0 ds-u-margin-bottom--1\"\n href={downloadURL}\n aria-disabled={!conditions || conditions.length === 0}\n >\n <span className=\"ds-u-font-weight--normal ds-u-font-size--md ds-u-padding--0\">\n <i className=\"fas fa-file-csv\"></i> {showDownloadFilteredDataButton ? `Download filtered data (CSV)` : `Download stored query data (CSV)`}\n </span>\n </Button>\n </div>\n )}\n </div>\n }\n >\n <i className=\"far fa-share-alt\"></i>\n <span className=\"ds-u-margin-x--05\">Share</span>\n <i className=\"fa fa-chevron-down\"></i>\n <i className=\"fa fa-chevron-up\"></i>\n </Tooltip>\n </div>\n </div>\n </>\n )}\n <div className=\"dc-c-datatable-wrapper ds-u-border-x--1 ds-u-border-bottom--1\" tabIndex={0} ref={dataTableWrapperElement}>\n <table\n {...{\n style: {\n width: canResize ? table.getCenterTotalSize() : \"100%\",\n minWidth: tableWrapperWidth()\n },\n }}\n className=\"dc-c-datatable\"\n >\n {canResize\n ? <TruncatedResizeableTHead table={table} sortElement={sortElement} setAriaLiveFeedback={setAriaLiveFeedback} />\n : <FixedSizeTHead table={table} sortElement={sortElement} />\n }\n {loading ? (\n <tbody></tbody>\n ) : (\n <tbody>\n {table.getRowModel().rows.map((row, index) => {\n const even = (index + 1) % 2 === 0;\n const highlight = highlightRow === row.id;\n return(\n <tr key={row.id} className={`${highlight ? \"dc-c-datatable--highlight-row\" : (even && \"dc-c-datatable--even-row\")}`} onClick={() => setHighlightRow(row.id)}>\n {row.getVisibleCells().map((cell) => {\n let classList = \"dc-truncate ds-u-padding-x--1\"\n return (\n <td\n {...{\n key: cell.id,\n style: {\n maxWidth: cell.column.getSize(),\n },\n }}\n className={`${classList} ${tablePadding}`}\n title={cell.getValue()}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </td>\n );\n })}\n </tr>\n )\n })\n }\n </tbody>\n )}\n </table>\n <div className='sr-only' aria-live='assertive' aria-atomic='true'>{ariaLiveFeedback}</div>\n </div>\n {loading && (\n <Spinner aria-valuetext=\"Dataset loading\" role=\"status\" className=\"ds-u-margin--3\" />\n )}\n {!loading && table.getRowModel().rows.length === 0 && (\n <Alert variation=\"warn\">No results found for the current filters</Alert>\n )}\n </>\n )\n}\n\nexport default DataTable;\n","import React from 'react';\nimport HeaderResizeElement from './HeaderResizeElement';\n\nconst TruncatedResizeableTHead = ({table, sortElement = null, setAriaLiveFeedback}) => {\n return(\n <thead className=\"dc-thead--truncated dc-thead--resizeable\">\n {table.getHeaderGroups().map(headerGroup => (\n <tr key={headerGroup.id} className=\"dc-c-sticky-header\">\n {headerGroup.headers.map(header => <HeaderResizeElement key={header.id + \"_dataTableResize\"} table={table} header={header} sortElement={sortElement} setAriaLiveFeedback={setAriaLiveFeedback} />)}\n </tr>\n ))}\n </thead>\n );\n}\n\nexport default TruncatedResizeableTHead;\n","import React, {useState} from 'react'\nimport { flexRender } from \"@tanstack/react-table\";\n\nconst HeaderResizeElement = ({table, header, sortElement, setAriaLiveFeedback, id} :\n {table: any, header: any, sortElement?: Function, setAriaLiveFeedback: Function, id?: string }) => {\n const [columnResizing, setColumnResizing] = useState('');\n\n // Fix for JSX in Data Dictionary Title header cell\n const ariaLabel = header.id === \"titleResizable\" ? \"Title\" : header.column.columnDef.header;\n\n return(\n <th {\n ...{\n key: header.id,\n style: {\n width: header.getSize(),\n }\n }\n }\n id={id}\n title={typeof(header.column.columnDef.header) === \"string\" ? header.column.columnDef.header : ''}\n className=\"ds-u-border-y--2 ds-u-padding--2 ds-u-border--dark ds-u-font-weight--bold\"\n aria-sort={\n header.column.getIsSorted() === 'asc'\n ? 'ascending'\n : header.column.getIsSorted() === 'desc'\n ? 'descending'\n : 'none'\n }\n >\n <div className=\"ds-u-display--flex\">\n <div>\n <span>\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext()\n ) as React.ReactNode}\n </span>\n </div>\n {sortElement && (\n <button\n onClick={header.column.getToggleSortingHandler()}\n {...{\n className: header.column.getCanSort()\n ? `cursor-pointer select-none ds-u-focus-visible ${sortElement(header.column.getIsSorted())}`\n : '',\n }}\n aria-label={`${ariaLabel} sort order`}\n />\n )}\n </div>\n <button\n {...{\n onMouseDown: header.getResizeHandler(),\n onTouchStart: header.getResizeHandler(),\n className: `dc-c-resize-handle ds-u-focus-visible ${\n header.column.getIsResizing() || header.column.id == columnResizing ? 'isResizing' : ''\n }`,\n }}\n aria-label={`Resize ${ariaLabel} column`}\n onKeyDown={(e) => {\n const columnSizingObject = table.getState().columnSizing;\n switch (e.key) {\n case 'Enter':\n case ' ':\n e.preventDefault();\n e.stopPropagation();\n if (columnResizing) {\n // end resizing\n setColumnResizing('')\n setAriaLiveFeedback(`${header.column.columnDef.header} dropped.`)\n } else {\n // start resizing\n setColumnResizing(header.column.id)\n setAriaLiveFeedback(`${header.column.columnDef.header} grabbed.`)\n }\n break;\n\n case 'Escape':\n if (columnResizing) {\n setColumnResizing('')\n setAriaLiveFeedback(`${header.column.columnDef.header} dropped.`)\n }\n break;\n case 'ArrowRight':\n e.preventDefault();\n e.stopPropagation();\n if (columnResizing) {\n columnSizingObject[header.column.id] = header.getSize() + 10;\n table.setColumnSizing(columnSizingObject);\n setAriaLiveFeedback(`${header.column.columnDef.header} has been resized. The new width is ${header.getSize()} pixels.`);\n }\n break;\n case 'ArrowLeft':\n e.preventDefault();\n e.stopPropagation();\n if (columnResizing) {\n columnSizingObject[header.column.id] = header.getSize() - 10;\n table.setColumnSizing(columnSizingObject);\n setAriaLiveFeedback(`${header.column.columnDef.header} has been resized. The new width is ${header.getSize()} pixels.`)\n }\n break;\n }\n }}\n onBlur={() => {\n setColumnResizing('')\n }}\n />\n </th>\n )\n}\n\nexport default HeaderResizeElement\n","import React from 'react';\nimport { flexRender } from \"@tanstack/react-table\";\n\nconst FixedSizeTHead = ({table, sortElement}) => {\n return(\n <thead className=\"dc-thead--fixed-size\">\n {table.getHeaderGroups().map(headerGroup => (\n <tr key={headerGroup.id}>\n {headerGroup.headers.map(header => {\n return(\n <th {\n ...{\n key: header.id,\n style: {\n width: header.getSize(),\n },\n title: header.column.columnDef.header\n }\n }\n className=\"ds-u-border-y--2 ds-u-padding--2 ds-u-border--dark ds-u-font-weight--bold\"\n aria-sort={\n header.column.getIsSorted() === 'asc'\n ? 'ascending'\n : header.column.getIsSorted() === 'desc'\n ? 'descending'\n : 'none'\n }\n >\n <div onClick={header.column.getToggleSortingHandler()} className=\"ds-u-display--flex\">\n <span>\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n </span>\n <span\n {...{\n className: header.column.getCanSort()\n ? `cursor-pointer select-none ${sortElement(header.column.getIsSorted())}`\n : '',\n }}\n />\n </div>\n </th>\n );\n })}\n </tr>\n ))}\n </thead>\n );\n}\n\nexport default FixedSizeTHead;\n","import { createContext } from 'react';\nimport { DistributionType, ResourceType, ColumnType } from '../../types/dataset';\n\n// create context\nexport type DataTableContextType = {\n id: string | null,\n resource?: ResourceType,\n distribution?: DistributionType,\n rootUrl?: string,\n customColumns?: Array<ColumnType>,\n dataDictionaryBanner?: boolean,\n datasetTableControls?: boolean\n}\nconst DataTableContext = createContext<DataTableContextType>({ id: null})\n\nexport default DataTableContext;\n","import React, { ReactNode } from 'react';\nimport { createContext, useContext, useState } from 'react';\nimport DataTableContext from '../../templates/Dataset/DataTableContext';\n \n// Define context props\nexport type DataTableActionsContextProps = {\n columnOrder: string[];\n setColumnOrder: React.Dispatch<React.SetStateAction<string[]>>;\n columnVisibility: {\n [key: string]: boolean\n }\n setColumnVisibility: React.Dispatch<React.SetStateAction<{ [key: string]: boolean }>>;\n page: number;\n setPage: React.Dispatch<React.SetStateAction<number>>;\n tableDensity: 'compact' | 'normal' | 'expanded';\n setTableDensity: React.Dispatch<React.SetStateAction<'compact' | 'normal' | 'expanded'>>;\n}\n\n// Create a defaults object for reusability\nconst DataTableActionsContextDefaults: DataTableActionsContextProps = {\n columnOrder: [],\n setColumnOrder: () => {},\n columnVisibility: {},\n setColumnVisibility: () => {},\n page: 1,\n setPage: () => {},\n tableDensity: 'normal' as const,\n setTableDensity: () => {}\n}\n\n// Create the context instance\nexport const DataTableActionsContext = createContext<DataTableActionsContextProps>(DataTableActionsContextDefaults);\n\n// Define our reusable provider component\nconst DataTableActionsProvider: React.FC<{ children: ReactNode }> = ({ children }) => {\n // Set up all of the state\n const { id, datasetTableControls } = useContext(DataTableContext);\n // a wrapper component to keep column state synced between full screen and regular modes\n const localStorageData = id ? JSON.parse(localStorage.getItem(id) as string) : null;\n\n const [page, setPage] = useState<DataTableActionsContextProps['page']>(1);\n const [columnOrder, setColumnOrder] = useState<DataTableActionsContextProps['columnOrder']>(() => {\n if (datasetTableControls && localStorageData) return localStorageData.tableColumnOrder;\n else return [];\n });\n const [columnVisibility, setColumnVisibility] = useState<DataTableActionsContextProps['columnVisibility']>(() => {\n if (datasetTableControls && localStorageData) return localStorageData.tableColumnVisibility;\n else return {};\n });\n const [tableDensity, setTableDensity] = useState<DataTableActionsContextProps['tableDensity']>('normal');\n\n const providerValue: DataTableActionsContextProps = {\n columnOrder,\n setColumnOrder,\n columnVisibility,\n setColumnVisibility,\n page,\n setPage,\n tableDensity,\n setTableDensity\n }\n\n return (\n <DataTableActionsContext.Provider value={providerValue}>\n {children}\n </DataTableActionsContext.Provider>\n )\n}\n\n// For easy mocking in unit tests\ntype MockDataTableActionsProviderProps = {\n children: ReactNode;\n value: DataTableActionsContextProps\n}\n\nexport const MockDataTableActionsProvider: React.FC<MockDataTableActionsProviderProps> = ({\n children,\n value = DataTableActionsContextDefaults\n}) => (\n <DataTableActionsContext.Provider value={value}>\n {children}\n </DataTableActionsContext.Provider>\n);\n\nexport default DataTableActionsProvider;\n","import React, { ReactNode } from \"react\";\nimport qs from 'qs';\nimport DataTablePageResults from '../DataTablePageResults';\nimport { Button, Tooltip, Dropdown } from '@cmsgov/design-system';\nimport { ResourceType, ConditionType } from '../../types/dataset';\nimport ManageColumns from \"../ManageColumns/ManageColumns\";\nimport FullScreenDataTable from \"../FullScreenDataTable\";\nimport FilterDataset from \"../FilterDataset\";\nimport FilterChip from \"../FilterChip\"\nimport DisplaySettings from \"../DisplaySettings\";\nimport { getOperatorLabel } from \"../../templates/FilteredResource/functions\";\n\nimport \"./DataTableToolbar.scss\";\n\ntype DataTableToolbarProps = {\n resource: ResourceType;\n id: string;\n columns: Array<any>;\n defaultColumnOrder: Array<string>;\n isModal: boolean;\n datasetTableControls: boolean;\n columnVisibility: {\n [key: string]: boolean\n };\n setColumnVisibility: React.Dispatch<React.SetStateAction<{ [key: string]: boolean }>>;\n}\n\nconst updateBrowserURL = (newConditions: Array<ConditionType>) => {\n const url = new URL(window.location.href);\n const urlString = qs.stringify(\n { conditions: newConditions },\n { encodeValuesOnly: true, addQueryPrefix: true }\n );\n window.history.pushState({}, '', `${url.origin}${url.pathname}${urlString}`);\n}\n\n\n\nconst DataTableToolbar: React.FC<DataTableToolbarProps> = ({\n resource,\n id,\n columns,\n defaultColumnOrder,\n isModal,\n datasetTableControls,\n columnVisibility,\n setColumnVisibility,\n}) => {\n const { limit, offset, count, conditions, setConditions } = resource;\n const intCount = count ? count : 0;\n const hiddenColumns = Object.keys(columnVisibility).filter(key => columnVisibility[key] === false).length;\n\n const resetColumnVisibility = () => {\n const columns = { ...columnVisibility };\n\n for (let key in columns) {\n if (columns[key] === false) {\n columns[key] = true;\n }\n }\n\n setColumnVisibility(columns);\n\n // save to localStorage\n const currentLocalStorage = JSON.parse(localStorage.getItem(id) as string);\n const updatedLocalStorageData = {\n ...currentLocalStorage,\n tableColumnVisibility: columns\n }\n\n localStorage.setItem(id, JSON.stringify(updatedLocalStorageData));\n }\n\n const removeCondition = (index: number) => {\n // just removes the condition from the UI - \"Apply Filters\" must be clicked to change the data model\n let updatedConditions: ConditionType[] = JSON.parse(JSON.stringify(conditions))\n updatedConditions.splice(index, 1);\n\n setConditions(updatedConditions);\n updateBrowserURL(updatedConditions);\n };\n\n return (\n <div className=\"ds-u-margin-top--2\">\n <div className=\"dkan-filter-dataset-toolbar ds-u-fill--white ds-u-border--1\" role=\"region\" aria-label=\"toolbar\">\n <div className=\"ds-l-col--12 ds-u-display--flex ds-u-justify-content--between ds-u-align-items--center ds-u-flex-wrap--wrap ds-u-padding-x--0 ds-u-padding-y--2\">\n <div className=\"ds-u-padding-x--2\">\n {!resource.loading && resource.count !== null && (\n <DataTablePageResults\n totalRows={intCount}\n limit={limit}\n offset={offset}\n className=\"data-table-results ds-u-margin--0 ds-u-font-size--sm ds-u-padding-y--0 ds-u-md-padding-y--1 ds-u-padding-bottom--2 ds-u-md-padding-bottom--0\"\n />\n )}\n </div>\n {datasetTableControls && (\n <div className=\"dkan-data-table-toolbar-controls ds-u-display--flex ds-u-flex-wrap--wrap ds-u-align-items--center ds-l-md-col--auto ds-l-col--12 ds-u-padding-x--2 ds-u-padding-top--2 ds-u-md-padding-top--0\">\n <FilterDataset />\n <ManageColumns id={id} columns={columns} defaultColumnOrder={defaultColumnOrder} />\n <DisplaySettings />\n <FullScreenDataTable isModal={isModal} />\n </div>\n )}\n </div>\n </div>\n {Array.isArray(conditions) && (conditions.length > 0 || hiddenColumns > 0) && (\n <div className=\"ds-u-fill--white ds-u-padding-x--0 ds-u-md-padding-x--2 ds-u-padding-top--2\">\n <h2 className=\"ds-u-margin--0 ds-u-margin-bottom--2 ds-u-font-size--lg ds-u-font-weight--bold\">Selected filters</h2>\n <div className=\"ds-u-display--flex ds-u-justify-content--between ds-u-md-align-items--end ds-u-flex-direction--column ds-u-md-flex-direction--row\">\n <div className=\"ds-u-display--flex ds-u-padding-right--0 ds-u-md-padding-right--4 ds-u-flex-wrap--wrap\">\n {conditions.length > 0\n ? conditions.map((condition, index) => (\n <FilterChip\n key={index}\n iconClass=\"far fa-filter\"\n text={`\"${condition.property}\" ${getOperatorLabel(condition.operator).toLowerCase()} ${condition.value}`}\n onClick={() => {\n removeCondition(index);\n }}\n />\n ))\n : null}\n {hiddenColumns > 0\n ? <FilterChip\n iconClass=\"fa fa-columns\"\n text={`${hiddenColumns} Column${hiddenColumns === 1 ? '' : 's'} Hidden`}\n onClick={() => {\n resetColumnVisibility();\n }}\n />\n : null\n }\n </div>\n <div className=\"ds-l-col--auto ds-u-padding--0 ds-u-display--flex ds-u-justify-content--end\">\n <button\n className=\"dkan-clear-all-filters-button ds-u-color--primary ds-u-font-size--md ds-u-font-weight--bold ds-u-border--0 ds-u-padding--0 ds-u-margin--0 ds-u-fill--transparent ds-u-text-decoration--underline ds-u-margin-bottom--1\"\n onClick={() => {\n setConditions([]);\n updateBrowserURL([]);\n resetColumnVisibility();\n }}\n >\n Clear all filters\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n )\n}\n\nexport default DataTableToolbar;\n","import React, { useCallback, useContext, useEffect, useMemo, useState } from 'react'\nimport { DndContext, closestCenter, KeyboardSensor, PointerSensor, useSensor, useSensors } from '@dnd-kit/core'\nimport { SortableContext, verticalListSortingStrategy, sortableKeyboardCoordinates, arrayMove } from '@dnd-kit/sortable'\nimport { restrictToVerticalAxis } from '@dnd-kit/modifiers'\nimport { Button, Choice, Dialog } from '@cmsgov/design-system'\nimport Card from './Card'\nimport { DataTableActionsContext } from '../DatasetTableTab/DataTableActionsContext'\nimport './ManageColumns.scss'\n\nclass ExcludeCheckboxKeyboardSensor extends KeyboardSensor {\n // Custom function to exclude checkbox from keyboard dragging\n static activators = [\n {\n eventName: 'onKeyDown',\n handler: ({nativeEvent: event}) => {\n // prevent scrolling the list\n const isCheckbox = [\"input\", \"checkbox\"].indexOf(event.target.tagName.toLowerCase()) !== -1;\n if(event.key === \" \" && !isCheckbox){ \n event.preventDefault();\n } \n\n // only activate on a space or return press\n if ([\" \", \"Enter\"].indexOf(event.key) === -1) return false;\n if (!isCheckbox)\n {\n return true;\n }\n return false;\n },\n },\n ];\n}\n\nclass ExcludeCheckboxPointerSensor extends PointerSensor {\n // Custom function to stop accidental checkbox clicks on pointer activation\n static activators = [\n {\n eventName: 'onPointerDown',\n handler: ({nativeEvent: event}) => {\n if (event.target.tagName.toLowerCase() === \"input\") return false;\n if (event.target.tagName.toLowerCase() === \"label\") {\n event.target.blur();\n }\n return true;\n }\n }\n ]\n}\n\nconst ManageColumns = ({\n id,\n columns,\n defaultColumnOrder\n}) => {\n const {columnOrder, setColumnOrder, setColumnVisibility, columnVisibility: contextColumnVisibility} = useContext(DataTableActionsContext);\n const columnVisibility = contextColumnVisibility || {};\n const [modalOpen, setModalOpen] = useState(false);\n // maintain card state separately from table state - only sync states when the Save button is pressed\n const [cards, setCards] = useState(columns.map(c => {\n return {id: c.id, visible: c.getIsVisible()}\n }));\n const cardOrder = useMemo(() => \n cards.map(({id}) => id),\n [cards]\n );\n\n // keep state in sync\n useEffect(() => {\n if (columnOrder.length)\n setCards(columnOrder.map(c => {\n const column = columns.filter(col => col.id === c)[0];\n return {id: column.id, visible: column.getIsVisible()}\n }))\n }, [columnOrder])\n\n // Update cards state when columnVisibility changes\n useEffect(() => {\n setCards(prevCards => \n prevCards.map(card => ({\n ...card,\n visible: columnVisibility[card.id] !== false\n }))\n );\n }, [columnVisibility]);\n \n\n const sensors = useSensors(\n useSensor(ExcludeCheckboxPointerSensor, {\n activationConstraint: {\n distance: 5\n }\n }),\n useSensor(ExcludeCheckboxKeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n const cardHiddenColumns = cards.filter(c => c.visible === false).length\n\n const updateVisibility = useCallback((id, newVisibility) => {\n setCards(cards.map(card => {\n if (card.id === id) {\n return {...card, visible: newVisibility}\n }\n return card;\n }))\n });\n\n function handleDragEnd(e) {\n const { active, over } = e;\n if (active.id !== over.id) {\n const oldIndex = cardOrder.indexOf(active.id);\n const newIndex = cardOrder.indexOf(over.id);\n let newCards = arrayMove(cards, oldIndex, newIndex);\n setCards(newCards);\n }\n }\n\n const resetCards = () => {\n setCards(columns.map(c => {\n return {id: c.id, visible: c.getIsVisible()}\n }));\n }\n\n const hiddenColumns = Object.keys(columnVisibility).filter(key => columnVisibility[key] === false).length;\n return (\n <div className=\"dkan-manage-columns-wrapper\">\n <button\n aria-haspopup=\"dialog\"\n className=\"dkan-filter-dataset-toolbar-button ds-u-color--primary ds-u-text-decoration--underline ds-u-font-size--sm ds-u-padding-x--2 ds-u-margin--0 ds-u-border--0 ds-u-fill--transparent\"\n onClick={() => {\n setModalOpen(true)\n }}\n >\n <i className=\"fa fa-columns ds-u-margin-right--1\"></i>\n <span>\n <span className=\"dkan-dataset-toolbar-button-label\">Manage Columns</span>\n {hiddenColumns ? ` (${hiddenColumns})` : ''}\n </span>\n </button>\n <div className={`ds-c-dialog-wrap${modalOpen ? ' open' : ''}`}>\n <Dialog\n heading='Manage columns'\n isOpen={modalOpen}\n ariaCloseLabel=\"Close dialog\"\n onExit={() => {\n setModalOpen(false);\n resetCards();\n }}\n className=\"dkan-manage-columns-dialog\"\n actions={(\n <div className='ds-u-display--flex ds-u-justify-content--between ds-u-flex-wrap--wrap ds-u-padding-x--3 ds-u-padding-bottom--1 ds-u-sm-padding-bottom--3'>\n <div className=\"ds-l-col--12 ds-l-sm-col--auto ds-u-padding-x--0\">\n <Button\n variation=\"solid\"\n className=\"ds-l-col--6 ds-l-sm-col--auto\"\n onClick={() => {\n setModalOpen(false);\n // update table state\n\n // Visibility\n // This code is building a new columnVisibility state object from the card state and doing a single setState on the table\n // vs doing a setState on every changed column individually\n const newColumnVisibility = Object.fromEntries(cards.map(c => Object.values(c)));\n setColumnVisibility(newColumnVisibility);\n\n // Card order\n const newCardOrder = cards.map(c => {\n return c.id;\n });\n setColumnOrder(newCardOrder);\n\n // save to localStorage\n const localStorageData = {\n tableColumnOrder: newCardOrder,\n tableColumnVisibility: newColumnVisibility\n }\n localStorage.setItem(id, JSON.stringify(localStorageData))\n }}\n >\n Save\n </Button>\n <Button\n variation=\"ghost\"\n className=\"ds-l-col--6 ds-l-sm-col--auto\"\n onClick={() => {\n setModalOpen(false)\n resetCards();\n }}\n >\n Cancel\n </Button>\n </div>\n <div className=\"ds-l-col--12 ds-l-sm-col--auto ds-u-padding-x--0 ds-u-padding-top--1 ds-u-sm-padding-y--0\">\n <Button\n variation=\"ghost\"\n className=\"ds-l-col--6 ds-l-sm-col--auto\"\n onClick={() => {\n // reset to default column order and set all cards to visible\n // do not save this to the table state until the \"Save\" button is clicked\n setCards(defaultColumnOrder.map(column => {\n const card = cards.filter(c => c.id === column)[0]\n return {...card, visible: true }\n }));\n }}\n >\n Reset Columns\n </Button>\n </div>\n </div>\n )}\n >\n <p id='reorder-help' className='ds-u-padding-x--3'>Activate the reorder button and use the arrow keys to reorder the list or use your mouse to drag/reorder. Press escape to cancel the reordering.</p>\n <Choice\n checked={cardHiddenColumns === 0}\n type='checkbox'\n onChange={() => {\n setCards(cards.map(c => {\n return {...c, visible: cardHiddenColumns !== 0}\n }))\n }}\n className='ds-u-padding-x--3'\n name=''\n value=''\n label='Select all'\n hint={cardHiddenColumns && cardHiddenColumns + \" columns hidden\"}\n />\n <div className='ds-u-display--flex ds-u-justify-content--between ds-u-font-weight--bold ds-u-padding-y--2 ds-u-padding-x--3 ds-u-border-y--1 ds-u-margin-top--2'>\n <span>Display column</span>\n <span>Reorder</span>\n </div>\n <DndContext\n collisionDetection={closestCenter}\n modifiers={[restrictToVerticalAxis]}\n sensors={sensors}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={cardOrder} strategy={verticalListSortingStrategy}>\n <ul className=\"dkan-manage-columns-list\">\n {cards.map((card) => {\n return (\n <Card id={card.id} visible={card.visible} key={card.id} updateVisibility={updateVisibility} />\n )\n })}\n </ul>\n </SortableContext>\n </DndContext>\n </Dialog>\n </div>\n </div>\n )\n};\n\nexport default ManageColumns;\n","import React from \"react\";\nimport { CSSProperties } from \"react\";\nimport { Choice } from \"@cmsgov/design-system\";\nimport { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\n\nconst Card = ({id, visible, updateVisibility}: {id: string, visible: boolean, updateVisibility: Function}) => {\n const {attributes, listeners, setNodeRef, transform, transition, isDragging} = useSortable({\n id: id,\n });\n\n const style: CSSProperties = {\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.7 : 1,\n zIndex: isDragging ? 1 : 0,\n position: 'relative',\n background: 'white',\n touchAction: 'none'\n };\n\n return (\n <li\n className=\"ds-u-display--flex ds-u-justify-content--between ds-u-border-bottom--1\"\n ref={setNodeRef}\n style={style}\n {...listeners}\n {...attributes}\n tabIndex={-1}\n onPointerUp={(e) => {\n // Small hack to get around a chrome / webkit rendering bug = force chrome to repaint the checkbox\n // For whatever reason the way dnd-kit handles events doesn't work well with chrome\n // Without this code checkboxes can end up visually out of sync with app state until a repaint is forced\n // this code forces the repaint without user interaction\n const target = e.target as HTMLElement;\n if (isDragging && target.tagName.toLowerCase() === \"label\") {\n setTimeout(() => {\n target.parentNode!.querySelector('input')!.checked = visible\n }, 1)\n }\n }} \n >\n <Choice\n type=\"checkbox\"\n label={id}\n name={id + \"_visibility\"}\n checked={visible}\n className=\"ds-l-col--10 ds-u-margin-top--0 ds-u-margin-y--1 ds-u-padding-x--3\"\n labelClassName=\"dc-truncate\"\n value=\"\"\n onChange={() => {\n updateVisibility(id, !visible)\n }}\n />\n <button className={`ds-l-col--2 dkan-manage-columns-reorder-button ${isDragging && 'grabbed'}`} aria-label={`Reorder ${id} column`}>\n <span className=\"fa fa-sort\"></span>\n </button>\n </li>\n )\n}\n\nexport default Card;","import React, { useState } from \"react\";\nimport { Dialog } from \"@cmsgov/design-system\";\nimport './FullScreenDataTable.scss';\nimport DatasetTable from \"../DatasetTableTab\";\n\nexport type FullScreenDataTableProps = { \n isModal: boolean;\n}\n\nconst FullScreenDataTable: React.FC<FullScreenDataTableProps> = ({ isModal }) => {\n const [modalOpen, setModalOpen] = useState(isModal);\n if (isModal) return null;\n \n return (\n <div className=\"dkan-fullscreen-data-table-wrapper\">\n <button\n aria-haspopup=\"dialog\"\n className=\"dkan-filter-dataset-toolbar-button ds-u-color--primary ds-u-text-decoration--underline ds-u-font-size--sm ds-u-padding-x--2 ds-u-margin--0 ds-u-border--0 ds-u-fill--transparent\"\n onClick={() => {\n if (modalOpen) {\n setModalOpen(false);\n } else {\n setModalOpen(true)\n }\n }}\n >\n <i className={`far ${modalOpen ? 'fa-compress' : 'fa-expand'} ds-u-margin-right--1`}></i>\n <span className=\"dkan-dataset-toolbar-button-label\">\n {modalOpen ? \"Exit Full Screen\" : \"Full Screen\"}\n </span>\n </button>\n <div className={`ds-c-dialog-wrap${modalOpen ? ' open' : ''}`}>\n <Dialog\n heading='Dataset Explorer'\n isOpen={modalOpen}\n onExit={() => setModalOpen(false)}\n ariaCloseLabel=\"Close dialog\"\n className=\"dkan-full-screen-dataset-dialog\"\n >\n <DatasetTable isModal={true} />\n </Dialog>\n </div>\n </div>\n )\n}\nexport default FullScreenDataTable;","import React, { useContext } from 'react';\nimport qs from 'qs';\nimport DataTable from '../Datatable/Datatable';\nimport { transformTableSortToQuerySort } from '../../services/useDatastore/transformSorts';\nimport { buildCustomColHeaders } from '../../templates/FilteredResource/functions';\nimport { Pagination, Spinner, Alert } from '@cmsgov/design-system';\nimport QueryBuilder from '../QueryBuilder';\nimport { DistributionType, ColumnType, ResourceType } from '../../types/dataset';\nimport DataTableContext from '../../templates/Dataset/DataTableContext';\nimport { DataTableActionsContext } from './DataTableActionsContext';\n\nexport function prepareColumns(columns: any, schema: any) {\n return columns.map((column: any) => ({\n header:\n schema && schema.fields[column].description ? schema.fields[column].description : column,\n accessor: column,\n }));\n}\n\nexport type DatasetTableTabProps = {\n id: string;\n distribution: DistributionType;\n resource: ResourceType;\n rootUrl: string;\n customColumns: Array<ColumnType>;\n dataDictionaryBanner: boolean;\n datasetTableControls: boolean;\n};\n\nconst DatasetTable = ({\n isModal = false,\n showCopyLinkButton = true,\n showDataTableToolbar = true,\n showDownloadFilteredDataButton = true,\n showDownloadFullDataButton = true,\n showStoredQueryDownloadButton = false,\n}: {\n isModal?: boolean;\n showCopyLinkButton?: boolean;\n showDataTableToolbar?: boolean;\n showDownloadFilteredDataButton?: boolean;\n showDownloadFullDataButton?: boolean;\n showStoredQueryDownloadButton?: boolean;\n}) => {\n const {\n id,\n distribution,\n resource,\n rootUrl,\n customColumns = [],\n dataDictionaryBanner,\n } = useContext(DataTableContext) as DatasetTableTabProps;\n const { page, setPage, tableDensity } = useContext(DataTableActionsContext);\n\n const defaultPageSize = 10;\n\n const customColumnHeaders = buildCustomColHeaders(\n customColumns,\n resource.columns,\n resource.schema[distribution.identifier]\n );\n\n const columns = customColumnHeaders\n ? customColumnHeaders\n : prepareColumns(resource.columns, resource.schema[id]);\n\n const { limit, setOffset } = resource;\n const pageSize = limit ? limit : defaultPageSize;\n\n const downloadURL = `${rootUrl}/datastore/query/${id}/0/download?${qs.stringify(\n { conditions: resource.conditions },\n { encode: true }\n )}&format=csv`;\n\n if (\n Object.keys(resource).length &&\n columns.length &&\n resource.schema &&\n Object.keys(distribution).length\n ) {\n return (\n <>\n <div\n className={isModal ? 'dkan-datatable-fullscreen-mode' : ''}\n >\n <DataTable\n canResize={true}\n columns={columns}\n sortTransform={transformTableSortToQuerySort}\n tablePadding={\n tableDensity === 'normal'\n ? 'ds-u-padding-y--2'\n : tableDensity === 'compact'\n ? 'ds-u-padding-y--1'\n : 'ds-u-padding-y--3'\n }\n loading={resource.loading}\n isModal={isModal}\n downloadURL={downloadURL}\n unfilteredDownloadURL={distribution.data.downloadURL}\n setPage={setPage}\n showCopyLinkButton={showCopyLinkButton}\n showDataTableToolbar={showDataTableToolbar}\n showDownloadFilteredDataButton={showDownloadFilteredDataButton}\n showDownloadFullDataButton={showDownloadFullDataButton}\n showStoredQueryDownloadButton={showStoredQueryDownloadButton}\n />\n </div>\n {!resource.loading && resource.count !== null && (\n <div\n className={[\n 'ds-u-display--flex',\n 'ds-u-flex-wrap--wrap',\n 'ds-u-justify-content--end',\n 'ds-u-md-justify-content--between',\n 'ds-u-margin-top--2',\n 'ds-u-align-items--center',\n isModal && 'ds-u-margin-bottom--2',\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <Pagination\n totalPages={Math.ceil(resource.count ? resource.count / pageSize : 1)}\n currentPage={Number(page)}\n onPageChange={(evt, page) => {\n evt.preventDefault();\n setOffset((page - 1) * limit);\n setPage(page);\n }}\n renderHref={(p) => `?page=${p}`}\n className=\"ds-l-col--12 ds-u-padding-x--0\"\n />\n </div>\n )}\n </>\n );\n } else\n return <Spinner aria-valuetext=\"Dataset loading\" role=\"status\" className=\"ds-u-margin--3\" />;\n};\n\nexport default DatasetTable;\n","import React, { useEffect, useState, useContext } from \"react\";\nimport qs from 'qs';\nimport { buildOperatorOptions, buildCustomColHeaders } from \"../../templates/FilteredResource/functions\";\nimport { Dialog, Button } from \"@cmsgov/design-system\";\nimport { ConditionType } from \"../../types/dataset\";\nimport DataTableContext from \"../../templates/Dataset/DataTableContext\";\nimport { DataTableActionsContext } from \"../DatasetTableTab/DataTableActionsContext\";\nimport { DatasetTableTabProps, prepareColumns } from \"../DatasetTableTab\";\nimport FilterItem from \"./FilterItem\";\nimport ClearFiltersButton from \"../QueryBuilder/ClearFiltersButton\";\n\nimport './FilterDataset.scss'\n\nfunction updateQueryForDatastore(condition: ConditionType) {\n let cond = condition;\n delete cond.key;\n if (cond.operator === '=' || cond.operator === '<>') {\n if (Array.isArray(cond.value)) {\n cond.value = cond.value.join();\n }\n cond.value = cond.value.replace(/(^\\%+|\\%+$)/gm, '');\n }\n if (cond.operator.toLowerCase() === 'like') {\n if (Array.isArray(cond.value)) {\n cond.value = cond.value.join();\n }\n const cleanedValue = cond.value.replace(/(^\\%+|\\%+$)/gm, '');\n cond.value = `%${cleanedValue}%`;\n }\n if (cond.operator.toLowerCase() === 'in') {\n if (!Array.isArray(cond.value)) {\n cond.value = cond.value.split(',');\n }\n }\n if (Array.isArray(cond.value)) {\n cond.value = cond.value.map((v) => v.trim().replace(/(^\\%+|\\%+$)/gm, ''));\n }\n return cond;\n}\n\nconst FilterDataset: React.FC = () => {\n const {\n distribution,\n resource,\n customColumns = [],\n } = useContext(DataTableContext) as DatasetTableTabProps;\n\n const { setPage } = useContext(DataTableActionsContext);\n\n if (!resource) return null;\n\n const customColumnHeaders = buildCustomColHeaders(\n customColumns,\n resource.columns,\n resource.schema[distribution.identifier]\n );\n\n const id = distribution.identifier;\n const columns = customColumnHeaders\n ? customColumnHeaders\n : prepareColumns(resource.columns, resource.schema[id]);\n\n const { conditions, schema, setConditions, setOffset } = resource;\n const fields = Object.keys(schema[id].fields);\n\n const [queryConditions, setQueryConditions] = useState<Array<ConditionType>>([]);\n const [titleConditions, setTitleConditions] = useState<Array<ConditionType>>([]);\n const [conditionsChanged, setConditionsChanged] = useState(false);\n const [modalOpen, setModalOpen] = useState(false);\n\n const syncConditions = () => {\n if (conditions && conditions.length) {\n const keyedConditions = conditions.map((oc) => ({\n ...oc,\n key: Date.now().toString() + oc.value + oc.property,\n }));\n setQueryConditions(keyedConditions);\n } else {\n setQueryConditions([\n {\n property: fields[0],\n value: '',\n operator: buildOperatorOptions(schema[id].fields[fields[0]].mysql_type)[0].value,\n key: Date.now().toString(),\n },\n ])\n }\n }\n\n const addCondition = (condition: Array<ConditionType> | ConditionType | null) => {\n if (Array.isArray(condition)) {\n const keyedConditions = condition.map((oc) => ({\n ...oc,\n key: Date.now().toString() + oc.value + oc.property,\n }));\n setQueryConditions(keyedConditions);\n } else {\n setQueryConditions([\n ...queryConditions,\n {\n property: fields[0],\n value: '',\n operator: buildOperatorOptions(schema[id].fields[fields[0]].mysql_type)[0].value,\n key: Date.now().toString(),\n },\n ]);\n }\n };\n\n // Sync the UI with the actual data conditions whenever those change\n useEffect(() => {\n syncConditions();\n setTitleConditions(conditions);\n }, [conditions]);\n\n const propertyOptions = fields.map((f) => {\n if (schema[id].fields[f].description) {\n return { label: schema[id].fields[f].description, value: f };\n }\n return { label: f, value: f };\n });\n\n const updateBrowserURL = (newConditions: Array<ConditionType>) => {\n const url = new URL(window.location.href);\n const urlString = qs.stringify(\n { conditions: newConditions },\n { encodeValuesOnly: true, addQueryPrefix: true }\n );\n window.history.pushState({}, '', `${url.origin}${url.pathname}${urlString}`);\n }\n\n const submitConditions = () => {\n // only update the data conditions when \"Apply filters\" is pressed\n const submitConditions = queryConditions\n .filter((oc: ConditionType) => {\n if (oc.property) {\n return oc;\n }\n return false;\n })\n .map((oc) => {\n let cond = Object.assign({}, oc);\n return updateQueryForDatastore(cond);\n });\n \n const completeConditions = conditionsReadyToSubmit(submitConditions);\n \n if (completeConditions.length) { // Safeguard but there should always be at least one \n setConditions(completeConditions);\n setPage(1);\n setOffset(0);\n setConditionsChanged(false);\n updateBrowserURL(completeConditions as ConditionType[]);\n setModalOpen(false);\n }\n };\n\n const conditionsReadyToSubmit = (conditions: ConditionType[]) => {\n const isEmpty = (val: string | string[] | undefined) => {\n if (typeof val === \"string\") {\n return val.trim() === \"\";\n }\n\n if (Array.isArray(val)) {\n return val.length === 0;\n }\n\n return true;\n };\n\n const completeConditions = conditions.filter(condition => {\n if (condition) {\n if (!isEmpty(condition.property) && !isEmpty(condition.operator) && !isEmpty(condition.value)) {\n return condition;\n }\n }\n });\n\n return completeConditions;\n }\n\n const updateCondition = (index: number, key: string, value: string) => {\n let newConditions = [...queryConditions];\n newConditions[index][key] = value;\n setQueryConditions(newConditions);\n setConditionsChanged(true);\n };\n\n const removeCondition = (index: number) => {\n // just removes the condition from the UI - \"Apply Filters\" must be clicked to change the data model\n let newConditions = queryConditions.map((oc) => Object.assign({}, oc));\n newConditions.splice(index, 1);\n setQueryConditions(newConditions);\n setConditionsChanged(true);\n\n if (newConditions.length === 0) {\n setConditions([]);\n updateBrowserURL([]);\n }\n };\n\n const disableFilterSubmitButton = () => {\n return !conditionsChanged || queryConditions.length === 0 || conditionsReadyToSubmit(queryConditions).length === 0;\n }\n\n return (\n <>\n {(Object.keys(resource).length && columns.length && resource.schema && Object.keys(distribution).length) ? (\n <div className=\"dkan-filter-dataset-wrapper\">\n <button\n aria-haspopup=\"dialog\"\n className=\"dkan-filter-dataset-toolbar-button ds-u-color--primary ds-u-text-decoration--underline ds-u-font-size--sm ds-u-padding-x--2 ds-u-margin--0 ds-u-border--0 ds-u-fill--transparent\"\n onClick={() => {\n setModalOpen(true)\n }}\n >\n <i className=\"fa fa-filter ds-u-margin-right--1\"></i>\n <span>\n <span className=\"dkan-dataset-toolbar-button-label\">\n {conditions.length > 0\n ? `Edit Filters`\n : 'Filter Dataset'\n }\n </span>\n {conditions.length > 0 && ` (${conditions.length})`}\n </span>\n </button>\n <div className={`ds-c-dialog-wrap${modalOpen ? ' open' : ''}`}>\n <Dialog\n heading=\"Filter Dataset\"\n isOpen={modalOpen}\n onExit={() => setModalOpen(false)}\n className=\"dkan-filter-dataset-dialog\"\n ariaCloseLabel=\"Close dialog\"\n actions={(\n <div className=\"ds-u-display--flex ds-u-justify-content--end ds-u-padding-x--2 ds-u-md-padding-x--3 ds-u-padding-y--2\">\n <div className=\"ds-u-display--flex \">\n <ClearFiltersButton\n disabled={queryConditions.length === 0}\n clearFiltersFn={() => {\n setConditions([]);\n updateBrowserURL([]);\n }}\n disableDefaultClasses\n className=\"ds-l-md-col--auto ds-l-col--auto ds-u-margin--right--0 ds-u-sm-margin-right--2\"\n />\n <Button\n disabled={disableFilterSubmitButton()}\n className=\"dkan-apply-dataset-filters-button ds-u-float--right ds-l-md-col--auto ds-l-col--auto\"\n onClick={submitConditions}\n variation=\"solid\"\n >\n {`Apply ${conditionsReadyToSubmit(queryConditions).length || ''} filter${conditionsReadyToSubmit(queryConditions).length === 1 ? '' : 's'}`}\n </Button>\n </div>\n </div>\n )}\n >\n <div>\n <p className=\"ds-u-margin--0 ds-u-margin-top--1 ds-u-margin-bottom--2 ds-u-padding-x--2 ds-u-md-padding-x--3\">\n Add filters to only display data that meets your criteria. Filtered results can be downloaded.\n </p>\n\n <div className=\"dkan-filter-dataset-controls-header ds-u-padding-x--2 ds-u-md-padding-x--3 ds-u-padding-y--1 ds-u-margin-top--05 ds-u-fill--gray-lightest\">\n <h3 className=\"ds-u-margin--0 ds-u-font-weight--bold ds-u-padding--0\">Column Name</h3>\n <h3 className=\"ds-u-margin--0 ds-u-font-weight--bold ds-u-padding--0\">Condition</h3>\n <h3 className=\"ds-u-margin--0 ds-u-font-weight--bold ds-u-padding--0\">Value</h3>\n <div className=\"dkan-filter-dataset-controls-header-gutter\"></div>\n </div>\n\n <div className=\"dkan-filter-dataset-form-container ds-u-display--flex ds-u-flex-direction--column ds-u-border-bottom--1\">\n <div className=\"ds-u-padding-bottom--05\">\n <div className=\"dkan-filter-dataset-controls\">\n {queryConditions.map((qf, index) => (\n <FilterItem\n key={qf.key}\n id={id}\n schema={schema}\n condition={qf}\n index={index}\n propertyOptions={propertyOptions}\n update={updateCondition}\n remove={removeCondition}\n className={index !== 0 ? \"ds-u-border-top--1\" : \"ds-u-border--0\"}\n />\n ))}\n </div>\n <div className=\"ds-u-padding-x--2 ds-u-md-padding-x--3 ds-u-padding-y--1 ds-u-border-top--1 ds-u-margin-top--05\">\n <Button\n onClick={() => addCondition(null)}\n className=\"dkan-add-dataset-filter-button ds-l-col--12 ds-u-radius--pill ds-u-margin-top--05 ds-u-font-weight--normal\"\n >\n + Add filter\n </Button>\n </div>\n </div>\n </div>\n </div>\n </Dialog>\n </div>\n </div>\n ) : null}\n </>\n )\n}\nexport default FilterDataset;","import React, { useState, useEffect } from 'react';\nimport DatePicker from 'react-datepicker';\nimport { useMediaQuery } from 'react-responsive';\nimport { Button, Dropdown, TextField } from '@cmsgov/design-system';\nimport { buildOperatorOptions, convertUTCToLocalDate, cleanText } from '../../templates/FilteredResource/functions';\nimport 'react-datepicker/dist/react-datepicker.css';\nimport { FilterItemType, ConditionType } from '../../types/dataset';\n\nimport './FilterItem.scss';\n\nfunction getStartDate(condition : ConditionType, schema : any, id : string) {\n if (schema[id].fields[condition.property].mysql_type === 'date') {\n const newDate = new Date(condition.value.toString());\n if (newDate instanceof Date && !isNaN(newDate.getTime())) {\n return newDate;\n }\n }\n return new Date();\n}\n\nconst FilterItem = ({ id, condition, index, update, remove, propertyOptions, schema, className = '' } : FilterItemType) => {\n const [operator, setOperator] = useState(condition.operator);\n const [property, setProperty] = useState(condition.property);\n const [value, setValue] = useState(condition.value);\n const [startDate, setStartDate] = React.useState(getStartDate(condition, schema, id));\n\n const xl = useMediaQuery({minWidth: 1280})\n\n useEffect(() => {\n if (property !== condition.property) {\n if (property) {\n update(index, 'property', property);\n } else {\n update(index, 'property', '');\n }\n if (schema[id].fields[condition.property].mysql_type === 'date') {\n if (!value) {\n setValue(startDate.toJSON().slice(0, 10));\n }\n }\n }\n }, [property, value, startDate, schema, id, condition]);\n\n useEffect(() => {\n if (operator !== condition.operator) {\n if (operator) {\n update(index, 'operator', operator);\n } else {\n update(index, 'operator', '');\n }\n }\n }, [operator]);\n\n useEffect(() => {\n if (value !== condition.value) {\n if (value) {\n update(index, 'value', value);\n } else {\n update(index, 'value', '');\n }\n }\n }, [value]);\n\n return (\n <fieldset className={`dkan-filter-dataset-control ds-u-padding-x--2 ds-u-md-padding-x--3 ds-u-padding-y--1 ds-u-margin-top--05${className !== '' ? ` ${className}` : ''}`}>\n <Dropdown\n options={propertyOptions}\n className=\"ds-u-padding-x--0\"\n value={property}\n label=\"Column Name\"\n name={`${condition.key}_property`}\n onChange={(e) => setProperty(e.target.value)}\n />\n <Dropdown\n options={buildOperatorOptions(schema[id].fields[property].mysql_type)}\n className=\"ds-u-padding-x--0\"\n value={operator}\n label=\"Condition\"\n name={`${condition.key}_operator`}\n onChange={(e) => setOperator(e.target.value)}\n />\n {schema[id].fields[property].mysql_type === 'date' ? (\n <div>\n <label\n className=\"ds-c-label\"\n htmlFor={`${condition.key}_date_value`}\n id={`${condition.key}_date_value-label`}\n >\n <span>Value</span>\n </label>\n <DatePicker\n name={`${condition.key}_date_value`}\n selected={convertUTCToLocalDate(startDate)}\n onChange={(date : Date) => {\n setStartDate(date);\n setValue(date.toJSON().slice(0, 10));\n }}\n showMonthDropdown\n showYearDropdown\n dropdownMode=\"select\"\n className=\"ds-c-field\"\n withPortal\n />\n </div>\n ) : (\n <TextField\n className=\"ds-u-padding-x--0\"\n label=\"Value\"\n name={`${condition.key}_value`}\n value={cleanText(value, operator)}\n onChange={(e) => setValue(e.target.value)}\n placeholder='Enter value'\n />\n )}\n\n <Button\n variation=\"ghost\"\n size=\"small\"\n className=\"dkan-delete-dataset-filter-button ds-u-padding-x--0 ds-u-margin-left--05 ds-u-md-margin-top--0 ds-u-border--1 ds-u-border--dark ds-u-color--black\"\n aria-label=\"Delete filter\"\n onClick={() => remove(index)}\n >\n <span className=\"far fa-trash\"></span>\n </Button>\n </fieldset>\n );\n};\n\nexport default FilterItem;","import React from \"react\";\nimport { Button } from \"@cmsgov/design-system\";\nimport { useMediaQuery } from \"react-responsive\";\n\nimport \"./ClearFiltersButton.scss\";\n\nconst ClearFiltersButton = ({\n disabled = false,\n clearFiltersFn,\n disableDefaultClasses = false,\n className = ''\n} : { \n disabled?: boolean,\n clearFiltersFn: Function,\n disableDefaultClasses?: boolean,\n className?: string\n}) => {\n const small = useMediaQuery({ minWidth: 0, maxWidth: 544 });\n return (\n <Button\n disabled={disabled}\n className={`dkan-clear-dataset-filters-button ${disableDefaultClasses ? '' : ' ds-u-float--right ds-l-md-col--6 ds-l-col--5'}${className !== '' ? ` ${className}` : ''}`}\n variation={small ? 'ghost' : undefined}\n onClick={() => clearFiltersFn()}\n >\n Reset\n </Button>\n )\n}\n\nexport default ClearFiltersButton;","import React from \"react\";\n\nimport \"./FilterChip.scss\";\n\nexport type FilterChipProps = {\n iconClass: string;\n text: string;\n onClick: React.MouseEventHandler<HTMLButtonElement>\n}\n\nconst FliterChip: React.FC<FilterChipProps> = ({ iconClass, text, onClick }) => {\n return (\n <button className=\"dkan-filter-chip ds-u-display--flex ds-u-font-size--sm ds-u-align-items--center ds-u-padding-x--1 ds-u-padding-y--05 ds-u-margin--0 ds-u-margin-right--1 ds-u-margin-bottom--1\" onClick={onClick}>\n <i className={`${iconClass} ds-u-color--primary ds-u-margin-right--1`} />\n {text}\n <i className=\"fa fa-xmark ds-u-font-size--sm ds-u-margin-left--1\" />\n </button>\n )\n}\n\nexport default FliterChip;","import React, { useContext } from \"react\";\nimport { Tooltip, Dropdown } from \"@cmsgov/design-system\";\nimport DataTableContext from \"../../templates/Dataset/DataTableContext\";\nimport { DataTableActionsContext } from \"../DatasetTableTab/DataTableActionsContext\";\nimport { ResourceType } from \"../../types/dataset\";\n\nimport \"./DisplaySettings.scss\";\n\nconst DisplaySettings: React.FC = () => {\n const { resource } = useContext(DataTableContext);\n const { setPage, tableDensity, setTableDensity } = useContext(DataTableActionsContext);\n const rowOptions = [10, 25, 50, 100];\n\n if (!resource) return null;\n\n const { limit, setLimit, setOffset } = resource as ResourceType;\n\n return (\n <div className=\"dkan-display-settings-wrapper\">\n <Tooltip\n className=\"dkan-filter-dataset-toolbar-button ds-u-display--flex ds-u-align-items--center ds-u-color--primary ds-u-border--0 ds-u-padding--0 ds-u-padding-x--2 ds-u-margin--0 ds-u-fill--transparent ds-u-font-size--sm\"\n activeClassName=\"dkan-data-table-display-settings-tooltip-open\"\n dialog\n offset={[\n 0,\n 5\n ]}\n placement=\"bottom-start\"\n maxWidth=\"350px\"\n aria-haspopup=\"dialog\" \n title={\n <div className=\"ds-u-display--flex ds-u-flex-direction--column\">\n <div className=\"dkan-data-table-display-settings-row ds-u-padding-bottom--1\">\n <div className=\"\">\n <span className=\"ds-u-font-size--md ds-u-font-weight--normal\">Row height</span>\n </div>\n <div className=\"ds-u-display--flex ds-u-align-items--start\">\n <button\n onClick={() => setTableDensity('expanded')}\n aria-label=\"Row height, Expanded\"\n className={`dkan-table-density-button ds-u-leading--reset ds-u-padding--1 ds-u-margin--0 ${tableDensity === 'expanded' ? 'active ds-u-fill--primary-lightest' : ''}`}\n >\n <i className=\"ds-u-display--block\">\n <svg className=\"ds-u-display--block\"viewBox=\"0 0 512 512\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" focusable=\"false\" height=\"16\" role=\"img\" width=\"16\">\n <path d=\"M496,384 C504.836556,384 512,391.163444 512,400 L512,496 C512,504.836556 504.836556,512 496,512 L16,512 C7.163444,512 1.082166e-15,504.836556 0,496 L0,400 C-1.082166e-15,391.163444 7.163444,384 16,384 L496,384 Z M496,192 C504.836556,192 512,199.163444 512,208 L512,304 C512,312.836556 504.836556,320 496,320 L16,320 C7.163444,320 1.082166e-15,312.836556 0,304 L0,208 C-1.082166e-15,199.163444 7.163444,192 16,192 L496,192 Z M496,0 C504.836556,-1.623249e-15 512,7.163444 512,16 L512,112 C512,120.836556 504.836556,128 496,128 L16,128 C7.163444,128 1.082166e-15,120.836556 0,112 L0,16 C-1.082166e-15,7.163444 7.163444,1.623249e-15 16,0 L496,0 Z\"></path>\n </svg>\n </i>\n </button>\n <button\n onClick={() => setTableDensity('normal')}\n aria-label=\"Row height, Normal\"\n className={`dkan-table-density-button ds-u-leading--reset ds-u-padding--1 ds-u-margin--0 ${tableDensity === 'normal' ? 'active ds-u-fill--primary-lightest' : ''}`}\n >\n <i className=\"ds-u-display--block\">\n <svg className=\"ds-u-display--block\" viewBox=\"0 0 512 512\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" focusable=\"false\" height=\"16\" role=\"img\" width=\"16\">\n <path d=\"M496,416 C504.836556,416 512,423.163444 512,432 L512,496 C512,504.836556 504.836556,512 496,512 L16,512 C7.163444,512 1.082166e-15,504.836556 0,496 L0,432 C-1.082166e-15,423.163444 7.163444,416 16,416 L496,416 Z M496,277 C504.836556,277 512,284.163444 512,293 L512,357 C512,365.836556 504.836556,373 496,373 L16,373 C7.163444,373 1.082166e-15,365.836556 0,357 L0,293 C-1.082166e-15,284.163444 7.163444,277 16,277 L496,277 Z M496,139 C504.836556,139 512,146.163444 512,155 L512,219 C512,227.836556 504.836556,235 496,235 L16,235 C7.163444,235 1.082166e-15,227.836556 0,219 L0,155 C-1.082166e-15,146.163444 7.163444,139 16,139 L496,139 Z M496,0 C504.836556,-1.623249e-15 512,7.163444 512,16 L512,80 C512,88.836556 504.836556,96 496,96 L16,96 C7.163444,96 1.082166e-15,88.836556 0,80 L0,16 C-1.082166e-15,7.163444 7.163444,1.623249e-15 16,0 L496,0 Z\"></path>\n </svg>\n </i>\n </button>\n <button\n onClick={() => setTableDensity('compact')}\n aria-label=\"Row height, Compact\"\n className={`dkan-table-density-button ds-u-leading--reset ds-u-padding--1 ds-u-margin--0 ${tableDensity === 'compact' ? 'active ds-u-fill--primary-lightest ' : ''}`}\n >\n <i className=\"ds-u-display--block\">\n <svg className=\"ds-u-display--block\" viewBox=\"0 0 512 512\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" focusable=\"false\" height=\"16\" role=\"img\" width=\"16\">\n <path d=\"M496,448 C504.836556,448 512,455.163444 512,464 L512,496 C512,504.836556 504.836556,512 496,512 L16,512 C7.163444,512 1.082166e-15,504.836556 0,496 L0,464 C-1.082166e-15,455.163444 7.163444,448 16,448 L496,448 Z M496,336 C504.836556,336 512,343.163444 512,352 L512,384 C512,392.836556 504.836556,400 496,400 L16,400 C7.163444,400 1.082166e-15,392.836556 0,384 L0,352 C-1.082166e-15,343.163444 7.163444,336 16,336 L496,336 Z M496,224 C504.836556,224 512,231.163444 512,240 L512,272 C512,280.836556 504.836556,288 496,288 L16,288 C7.163444,288 1.082166e-15,280.836556 0,272 L0,240 C-1.082166e-15,231.163444 7.163444,224 16,224 L496,224 Z M496,112 C504.836556,112 512,119.163444 512,128 L512,160 C512,168.836556 504.836556,176 496,176 L16,176 C7.163444,176 1.082166e-15,168.836556 0,160 L0,128 C-1.082166e-15,119.163444 7.163444,112 16,112 L496,112 Z M496,0 C504.836556,-1.623249e-15 512,7.163444 512,16 L512,48 C512,56.836556 504.836556,64 496,64 L16,64 C7.163444,64 1.082166e-15,56.836556 0,48 L0,16 C-1.082166e-15,7.163444 7.163444,1.623249e-15 16,0 L496,0 Z\"></path>\n </svg>\n </i>\n </button>\n </div>\n </div>\n <div className=\"dkan-data-table-display-settings-row ds-u-border-top--1 ds-u-padding-top--1\">\n <div className=\"\">\n <span className=\"ds-u-font-size--md ds-u-font-weight--normal\">Rows per page</span>\n </div>\n <Dropdown\n className=\"\"\n options={rowOptions.map((row) => ({ label: row.toString(), value: row }))}\n size=\"medium\"\n label=\"Rows per page:\"\n labelClassName=\"ds-u-margin-top--0 ds-u-font-size--md ds-u-font-weight--normal\"\n name=\"datatable_rows_per_page\"\n onChange={(e) => {\n setLimit(parseInt(e.target.value));\n setPage(1);\n setOffset(0);\n }}\n value={limit.toString()}\n defaultValue={limit.toString()}\n />\n </div>\n </div>\n }\n >\n <i className=\"far fa-sliders-h ds-u-margin-right--1\"></i>\n <span className=\"dkan-dataset-toolbar-button-label\">Display Settings</span>\n <i className=\"fa fa-chevron-down ds-u-margin-left--1 ds-u-font-weight--bold\"></i>\n <i className=\"fa fa-chevron-up ds-u-margin-left--1 ds-u-font-weight--bold\"></i>\n </Tooltip>\n </div>\n )\n}\n\nexport default DisplaySettings;","import React from 'react';\nimport { Pagination } from '@cmsgov/design-system';\n\nconst ResourceFooter = ({ resource }) => {\n const { limit, values, offset, count, setOffset } = resource;\n\n return (\n <div>\n {values && values.length > 0 && (\n <Pagination\n currentPage={Number(offset) / limit + 1}\n totalPages={Math.ceil(Number(count) / limit)}\n onPageChange={(evt, page) => {\n evt.preventDefault();\n setOffset((page - 1) * limit);\n }}\n renderHref={(page) => {\n return \"\";\n }}\n />\n )}\n </div>\n );\n};\n\nexport default ResourceFooter;\n","export { default } from './Breadcrumb';\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom';\nimport './breadcrumb.scss';\n\nconst Breadcrumb = ({ currentPage, pageTrail = [] }) => {\n const pageTrailContent = pageTrail.map((page) => (\n <li class=\"dc-c-breadcrumb__list-item\">\n <Link to={page.path} class=\"dc-c-breadcrumb__link\">\n <span>{page.title}</span>\n </Link>\n </li>\n ));\n\n return (\n <nav class=\"dc-c-breadcrumb ds-u-margin-top--6\" aria-label=\"Breadcrumbs\">\n <ol class=\"dc-c-breadcrumb__list\">\n {pageTrailContent}\n {currentPage ? (\n <li class=\"dc-c-breadcrumb__list-item dc-c-current\" aria-current=\"page\">\n <span>{currentPage}</span>\n </li>\n ) : (\n ''\n )}\n </ol>\n </nav>\n );\n};\n\nBreadcrumb.propTypes = {\n currentPage: PropTypes.string.isRequired,\n pageTrail: PropTypes.arrayOf(\n PropTypes.shape({\n path: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n })\n ),\n};\n\nexport default Breadcrumb;\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, TextField } from '@cmsgov/design-system'\nimport MagnifyingGlassIcon from '../../assets/icons/magnifyingglass'\nimport ChevronRightIcon from '../../assets/icons/chevronright'\nimport './search-input.scss'\n\nconst SearchInput = ({\n placeholder = 'Search the Data',\n showMagnifyingGlass,\n showSearchButton,\n onDark,\n onChange,\n onSubmit,\n onKeyDown,\n defaultValue = ''\n}) => (\n <div className=\"search-input-container\">\n <TextField\n className={`${showMagnifyingGlass ? 'left-padding' : ''} ${showSearchButton ? 'right-padding' : ''}`}\n label={placeholder}\n labelClassName=\"ds-u-visibility--screen-reader\"\n placeholder={placeholder}\n onBlur={() => {}}\n onChange={onChange}\n onKeyDown={onKeyDown}\n defaultValue={defaultValue}\n />\n {showMagnifyingGlass && (\n <div className=\"magnifying-glass-icon ds-u-visibility--hidden ds-u-sm-visibility--visible\">\n <MagnifyingGlassIcon />\n </div>\n )}\n {showSearchButton && (\n <Button\n variation=\"solid\"\n className={onDark && 'on-dark'}\n onClick={onSubmit}\n >\n <span className=\"magnifying-glass-icon\" aria-label=\"Search the Data\">\n <MagnifyingGlassIcon />\n </span>\n <span className=\"sm-label\">\n Search the Data <ChevronRightIcon />\n </span>\n </Button>\n )}\n <div className=\"rounded-border\" />\n </div>\n)\n\nSearchInput.propTypes = {\n placeholder: PropTypes.string,\n showMagnifyingGlass: PropTypes.bool,\n showSearchButton: PropTypes.bool,\n onDark: PropTypes.bool,\n onChange: PropTypes.func,\n onSubmit: PropTypes.func,\n onKeyDown: PropTypes.func,\n defaultValue: PropTypes.string\n}\n\nexport default SearchInput\n","import * as React from \"react\";\nconst MagnifyingGlassIcon = (props) => (\n <svg\n fill=\"#000000\"\n width=\"24px\"\n height=\"24px\"\n viewBox=\"0 0 250 250\"\n id=\"Flat\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M232.47656,215.51563l-40.67773-40.67774a96.10791,96.10791,0,1,0-16.97168,16.96973l40.67871,40.67871a12.0001,12.0001,0,1,0,16.9707-16.9707ZM43.99707,116a72,72,0,1,1,72,72A72.08124,72.08124,0,0,1,43.99707,116Z\" />\n </svg>\n);\nexport default MagnifyingGlassIcon;\n","import * as React from \"react\";\nconst ChevronRightIcon = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={16}\n height={28}\n fill=\"currentColor\"\n className=\"mi-solid mi-chevron-right\"\n viewBox=\"10.125 3.25 9.5 19.5\"\n {...props}\n >\n <path d=\"M10.064 7.269a1.08 1.08 0 0 0 0 1.527L14.267 13l-4.203 4.203a1.079 1.079 0 1 0 1.527 1.527l4.973 -4.973a1.08 1.08 0 0 0 0 -1.527l-4.973 -4.973a1.087 1.087 0 0 0 -1.527 0.011\" />\n </svg>\n);\nexport default ChevronRightIcon;\n","import React, { useState } from 'react';\nimport { Table, TableHead, TableRow, TableCell, TableBody } from '@cmsgov/design-system';\nimport './additional-information-table.scss';\n\nexport function buildRows(metadataMapping, datasetInfo) {\n const rows = [];\n Object.keys(metadataMapping).forEach((d) => {\n if (!datasetInfo[d]) {\n return null;\n } else {\n rows.push(...metadataMapping[d](datasetInfo[d]));\n }\n });\n return rows;\n}\n\nconst DatasetAdditionalInformation = ({ datasetInfo, id, metadataMapping}) => {\n const rows = buildRows(metadataMapping, datasetInfo);\n return (\n <div className=\"dc-c-additional-info-table ds-u-margin-bottom--6\">\n <h2 className=\"ds-text-heading--2xl ds-u-margin-y--3\">Additional Information</h2>\n <Table compact striped>\n <TableHead>\n <TableRow>\n <TableCell>Field</TableCell>\n <TableCell>Value</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {rows.map((r) => (\n <TableRow key={`${r.label}_${id}`}>\n <TableCell>{r.label}</TableCell>\n <TableCell className=\"ds-u-word-break-anywhere\">{r.value}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n );\n};\n\nexport default DatasetAdditionalInformation;\n","export { default } from './APIPage';\n","import React, { useContext } from 'react';\nimport qs from 'qs';\nimport SwaggerUI from 'swagger-ui-react';\nimport { SpanOpenAPIVersion, SpanVersionStamp } from '@civicactions/swagger-ui-layout';\nimport ApiRowLimitNotice from '../../components/ApiRowLimitNotice';\nimport 'swagger-ui-react/swagger-ui.css';\nimport './swagger-ui-overrides.scss';\nimport { acaToParams } from '../../utilities/aca';\nimport { ACAContext } from '../../utilities/ACAContext';\n\nconst APIPage = ({ hideAuth = true, rootUrl, showRowLimitNotice = false }) => {\n let params = {\n authentication: hideAuth ? false : undefined,\n };\n const {ACA} = useContext(ACAContext);\n return (\n <>\n {showRowLimitNotice && <ApiRowLimitNotice />}\n <section className=\"ds-l-container\">\n <SwaggerUI\n url={`${rootUrl}${qs.stringify(acaToParams(params, ACA), { addQueryPrefix: true })}`}\n docExpansion={'list'}\n defaultModelsExpandDepth={-1}\n plugins={[SpanOpenAPIVersion, SpanVersionStamp]}\n />\n </section>\n </>\n );\n};\n\nexport default APIPage;\n","export { default } from './PageNotFound';\n","import React from 'react';\n\nconst PageNotFound = ({ siteUrl, content }) => {\n return (\n <section className=\"ds-l-container ds-u-padding-top--3\">\n {content ? (\n content\n ) : (\n <>\n <h1 className=\"ds-text-heading--4xl\">Error: Page not found</h1>\n <p>\n We're sorry, but there is no {siteUrl} web page that matches your entry. You may have\n been directed here because:\n </p>\n <ol>\n <li>The address you typed contains a typo;</li>\n <li>The requested page may have expired or;</li>\n <li>The requested page may have been moved.</li>\n </ol>\n <p>\n <span className=\"ds-u-font-weight--bold\">Note:</span> If you were using a bookmark,\n please reset it once you find the correct page.\n </p>\n </>\n )}\n </section>\n );\n};\n\nexport default PageNotFound;\n","export { default } from './DatasetSearch';\n","import React, { useContext, useEffect, useState } from 'react';\nimport { useSearchParams, useLocation } from 'react-router-dom';\nimport qs from 'qs';\nimport axios from 'axios';\nimport withQueryProvider from '../../utilities/QueryProvider/QueryProvider';\nimport { Accordion, AccordionItem, TextField, Dropdown, Spinner, Button, Alert, Pagination } from '@cmsgov/design-system';\nimport DatasetSearchListItem from '../../components/DatasetSearchListItem';\nimport DatasetSearchFacets from '../../components/DatasetSearchFacets';\nimport LargeFileInfo from '../../components/LargeFileInfo';\nimport SearchButton from '../../components/SearchButton';\nimport PageHeader from '../../components/PageHeader';\nimport { useQuery } from '@tanstack/react-query';\nimport { separateFacets, transformUrlParamsToSearchObject } from '../../services/useSearchAPI/helpers';\n\nimport './dataset-search.scss';\nimport { DatasetSearchPageProps, SelectedFacetsType, SidebarFacetTypes, DistributionItemType } from '../../types/search';\nimport { TextFieldValue } from '@cmsgov/design-system/dist/react-components/types/TextField/TextField';\nimport { acaToParams } from '../../utilities/aca';\nimport { ACAContext } from '../../utilities/ACAContext';\n\nconst DatasetSearch = (props: DatasetSearchPageProps) => {\n const {\n rootUrl,\n enableSort = true,\n enablePagination = true,\n defaultPageSize = 10,\n defaultSort = { defaultSort: 'modified', defaultOrder: 'desc' },\n pageTitle = 'Dataset Explorer',\n filterTitle = 'Tags',\n showLargeFileWarning = false,\n largeFileThemes,\n introText = '',\n showDownloadIcon = false,\n altMobileSearchButton,\n dataDictionaryLinks = false,\n } = props;\n const { ACA } = useContext(ACAContext);\n\n const sortOptions = [\n { label: 'Newest', value: 'newest' },\n { label: 'Oldest', value: 'oldest' },\n { label: 'Title A-Z', value: 'titleAZ' },\n { label: 'Title Z-A', value: 'titleZA' }\n ];\n\n const defaultSortBy = \"\";\n const defaultFulltext = \"\";\n const defaultSelectedFacets = { theme: [], keyword: [] };\n const defaultSortOrder = \"\";\n const defaultPage = 1;\n\n const location = useLocation();\n const transformedParams = transformUrlParamsToSearchObject(location.search, defaultSort);\n\n const [currentResultNumbers, setCurrentResultNumbers] = useState({ total: 0, startingNumber: 0, endingNumber: 0 });\n const [noResults, setNoResults] = useState(false);\n const [announcementText, setAnnouncementText] = useState('');\n let [searchParams, setSearchParams] = useSearchParams();\n const [fulltext, setFullText] = useState(transformedParams.fulltext);\n const [filterText, setFilterText] = useState(transformedParams.fulltext);\n const [totalItems, setTotalItems] = useState(0);\n const [page, setPage] = useState(transformedParams.page ? transformedParams.page : defaultPage);\n const [sort, setSort] = useState(\n transformedParams.sort ? transformedParams.sort : defaultSort ? defaultSort.defaultSort : defaultSortBy\n );\n const [sortOrder, setSortOrder] = useState(\n transformedParams.sortOrder\n ? transformedParams.sortOrder\n : defaultSort ? defaultSort.defaultOrder : defaultSortOrder\n );\n const [sortDisplay, setSortDisplay] = useState(() => {\n return sort === 'modified' ? (sortOrder === 'desc' ? 'newest' : 'oldest') : (sortOrder === 'desc' ? 'titleZA' : 'titleAZ');\n })\n const [selectedFacets, setSelectedFacets] = useState<SelectedFacetsType>(\n transformedParams.selectedFacets\n ? transformedParams.selectedFacets\n : {\n theme: [],\n keyword: [],\n }\n )\n\n const setSortOptions = (value: string) => {\n setSortDisplay(value)\n switch (value) {\n case 'newest':\n setSort('modified');\n setSortOrder('desc');\n break;\n case 'oldest':\n setSort('modified');\n setSortOrder('asc');\n break;\n case 'titleAZ':\n setSort('title');\n setSortOrder('asc');\n break;\n case 'titleZA':\n setSort('title');\n setSortOrder('desc');\n break;\n }\n }\n\n function updateSelectedFacets(key: string, value: string) {\n const newFacets: SelectedFacetsType = { ...selectedFacets };\n if (key === 'theme') {\n const existingFacet = newFacets.theme.findIndex((s) => s === value);\n if (existingFacet > -1) {\n newFacets.theme.splice(existingFacet, 1);\n } else {\n newFacets.theme.push(value);\n }\n }\n if (key === 'keyword') {\n const existingFacet = newFacets.keyword.findIndex((s) => s === value);\n if (existingFacet > -1) {\n newFacets.keyword.splice(existingFacet, 1);\n } else {\n newFacets.keyword.push(value);\n }\n }\n const urlString = qs.stringify(\n { theme: newFacets.theme, keyword: newFacets.keyword },\n { encodeValuesOnly: true, addQueryPrefix: true }\n );\n setSelectedFacets(newFacets);\n const url = new URL(window.location.href);\n window.history.pushState({}, '', `${url.origin}${url.pathname}${urlString}`);\n }\n\n const pageSize = defaultPageSize;\n\n function resetFilters() {\n setFullText(defaultFulltext);\n setFilterText(defaultFulltext);\n setSelectedFacets(defaultSelectedFacets);\n setPage(defaultPage);\n const url = new URL(window.location.href);\n window.history.pushState({}, '', `${url.origin}${url.pathname}`);\n }\n\n function buildSearchParams(includePage: boolean) {\n let newParams: any = {};\n if (Number(page) !== 1 && includePage) {\n newParams.page = page;\n }\n if (sort !== defaultSort.defaultSort) {\n newParams.sort = sort;\n }\n if (sortOrder !== defaultSort.defaultOrder) {\n newParams.sortOrder = sortOrder;\n }\n if (fulltext !== '') {\n newParams.fulltext = fulltext;\n }\n if (Object.keys(selectedFacets).length) {\n Object.keys(selectedFacets).forEach((key) => {\n newParams[key] = selectedFacets[key];\n });\n }\n return qs.stringify(newParams, { addQueryPrefix: includePage, encode: true });\n }\n\n let params = {\n fulltext: fulltext ? fulltext : undefined,\n ...selectedFacets,\n sort: sort ? sort : undefined,\n ['sort-order']: sortOrder ? sortOrder : undefined,\n page: page !== 1 ? page : undefined, //use index except for when submitting to Search API\n ['page-size']: pageSize !== 10 ? pageSize : undefined,\n }\n const { data, isPending, error } = useQuery({\n queryKey: [\"datasets\", params],\n queryFn: () => {\n return axios.get(`${rootUrl}/search/?${qs.stringify(acaToParams(params, ACA), { arrayFormat: 'comma', encode: false })}`)\n }\n });\n\n if ((data && data.data.total) && totalItems != data.data.total) setTotalItems(data.data.total);\n\n const facets: SidebarFacetTypes = (data && data.data.facets) ? separateFacets(data ? data.data.facets : []) : { theme: null, keyword: null };\n\n useEffect(() => {\n const baseNumber = Number(totalItems) > 0 ? 1 : 0;\n const startingNumber = baseNumber + (Number(pageSize) * Number(page) - Number(pageSize));\n const endingNumber = Number(pageSize) * Number(page);\n\n setCurrentResultNumbers({\n total: Number(totalItems),\n startingNumber: Number(totalItems) >= startingNumber ? startingNumber : 0,\n endingNumber: Number(totalItems) < endingNumber ? Number(totalItems) : endingNumber,\n });\n\n if (totalItems <= 0 && currentResultNumbers !== null) {\n setNoResults(true);\n } else {\n setNoResults(false);\n }\n }, [totalItems, pageSize, page]);\n\n useEffect(() => {\n if (page !== 1 && (transformedParams.fulltext !== fulltext || transformedParams.selectedFacets !== selectedFacets))\n setPage(1)\n }, [fulltext, selectedFacets]);\n\n useEffect(() => {\n if (totalItems !== null && totalItems !== undefined && totalItems > 0) {\n var params = buildSearchParams(true);\n if (params !== location.search) {\n setSearchParams(params);\n }\n }\n }, [page, sort, sortOrder, totalItems]);\n\n useEffect(() => {\n // No results found\n if (noResults) {\n setAnnouncementText('No results found.');\n }\n\n // Could not connect to the API\n else if (!isPending && (!data || !data.data.results)) {\n setAnnouncementText('Could not connect to the API.');\n }\n\n // Show results as normal\n else {\n setAnnouncementText(`Showing ${currentResultNumbers.startingNumber} to ${currentResultNumbers.endingNumber} of ${currentResultNumbers.total} datasets`);\n }\n }, [data, isPending, noResults, currentResultNumbers]);\n\n return (\n <>\n <PageHeader headerText={pageTitle} />\n <section className=\"ds-l-container\">\n <div>\n <p\n className=\"ds-u-visibility--screen-reader\"\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n data-testid=\"currentResults\"\n >\n {announcementText}\n </p>\n </div>\n <div className=\"ds-l-row\">\n <div className=\"ds-l-col--12\">\n {introText ? introText : null}\n {showLargeFileWarning && (\n <div className=\"ds-l-row ds-u-margin-bottom--2 ds-u-margin-top--4\">\n <div className=\"ds-l-md-col--12\">\n <Accordion bordered>\n <AccordionItem\n contentClassName=\"downloading-datasets\"\n heading=\"Please read before downloading datasets\"\n >\n <LargeFileInfo />\n </AccordionItem>\n </Accordion>\n </div>\n </div>\n )}\n <form\n onSubmit={(e) => {\n e.preventDefault();\n setFullText(filterText);\n }}\n className=\"dkan-dataset-search ds-l-form-row ds-u-padding-bottom--4 ds-u-border-bottom--1\"\n >\n <span className=\"ds-c-field__before fas fa-search ds-u-display--none ds-u-sm-display--inline-block\" />\n <TextField\n fieldClassName=\"ds-u-margin--0\"\n value={filterText as TextFieldValue}\n className={`ds-u-padding-right--2 ${altMobileSearchButton ? 'ds-l-col--12 ds-l-md-col--10 --alt-style' : 'ds-l-col--10'}`}\n label=\"Search datasets\"\n labelClassName=\"ds-u-visibility--screen-reader\"\n placeholder=\"Search datasets\"\n name=\"dataset_fulltext_search\"\n onChange={(e) => setFilterText(e.target.value)}\n />\n <SearchButton altMobileStyle={altMobileSearchButton} />\n </form>\n </div>\n </div>\n <div className=\"ds-l-row ds-u-padding-top--4\">\n <div className=\"ds-l-col--12 ds-l-sm-col--4\">\n <Button\n className=\"dc-dataset-search--clear-all-filters ds-u-margin-bottom--2\"\n onClick={() => resetFilters()}\n >\n Clear all filters\n </Button>\n {facets.theme && (\n <DatasetSearchFacets\n facets={facets.theme}\n title=\"Categories\"\n onClickFunction={updateSelectedFacets}\n selectedFacets={selectedFacets.theme}\n />\n )}\n {facets.keyword && (\n <DatasetSearchFacets\n facets={facets.keyword}\n title={filterTitle}\n onClickFunction={updateSelectedFacets}\n selectedFacets={selectedFacets.keyword}\n />\n )}\n </div>\n <div className=\"ds-l-col--12 ds-l-sm-col--8\">\n {isPending ? (\n <Spinner\n className=\"ds-u-valign--middle\"\n aria-valuetext=\"Dataset Search loading\"\n role=\"status\"\n />\n ) : (\n <>\n <div 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\">\n {enablePagination && (\n <div className=\"ds-l-col--12 ds-l-sm-col--6 ds-l-md-col--8 ds-u-sm-padding-left--0\">\n <p className=\"ds-u-margin-y--0\">\n {(currentResultNumbers && data) && (\n <>\n Showing {currentResultNumbers.startingNumber} -{' '}\n {currentResultNumbers.endingNumber} of {data.data.total} datasets\n </>\n )}\n </p>\n </div>\n )}\n {enableSort && (\n <div className=\"ds-l-col--12 ds-l-sm-col--6 ds-l-md-col--4 ds-u-sm-padding-right--0\">\n <Dropdown\n options={sortOptions}\n value={sortDisplay}\n label=\"Sort\"\n labelClassName=\"ds-u-margin-top--0\"\n name=\"dataset_search_sort\"\n onChange={(e) => setSortOptions(e.target.value)}\n />\n </div>\n )}\n </div>\n <ol className=\"dc-dataset-search-list ds-u-padding--0 ds-u-margin-top--0 ds-u-margin-bottom--4 ds-u-display--block\" data-testid=\"results-list\">\n {noResults && <Alert variation=\"error\" role=\"region\" heading=\"No results found.\" />}\n {data && data.data.results ? Object.keys(data.data.results).map((key) => {\n return data.data.results[key];\n }).map((item) => {\n function getDownloadUrl(item: DistributionItemType) {\n let distribution_array = item.distribution ? item.distribution : [];\n return distribution_array.length ? item.distribution[0].downloadURL : null;\n }\n let showLargeFile = false;\n if (largeFileThemes && item.theme)\n largeFileThemes.forEach(theme => {\n if (item.theme.includes(theme))\n showLargeFile = true;\n });\n \n return (\n <DatasetSearchListItem\n key={item.identifier}\n location={location}\n title={item.title}\n modified={item.modified}\n description={item.description}\n identifier={item.identifier}\n downloadUrl={showDownloadIcon ? getDownloadUrl(item) : null}\n largeFile={showLargeFile}\n paginationEnabled={enablePagination}\n dataDictionaryLinks={dataDictionaryLinks}\n distribution={\"%Ref:distribution\" in item ? item[\"%Ref:distribution\"][0] : {}}\n />\n )\n }) : (\n <Alert variation=\"error\" role=\"region\" heading=\"Could not connect to the API.\" />\n )}\n </ol>\n {enablePagination && (data && data.data.total) && data.data.total != 0 && (\n <Pagination\n currentPage={Number(page)}\n totalPages={Math.ceil(Number(data.data.total) / pageSize)}\n onPageChange={(evt, page) => {\n evt.preventDefault();\n window.scroll(0, 0);\n setPage(page);\n }}\n renderHref={(page) => {\n const searchParams = buildSearchParams(false);\n const includeAnd = searchParams ? '&' : '';\n return `/datasets?page=${page}${includeAnd}${searchParams}`;\n }}\n />\n )}\n\n </>\n )}\n </div>\n </div>\n </section>\n </>\n );\n};\n\nexport default withQueryProvider(DatasetSearch);","import { Link } from 'react-router-dom';\n\ntype LargeFileInfoProps = {\n className?: string;\n};\n\nconst LargeFileInfo = (props: LargeFileInfoProps) => (\n <div className={props.className}>\n <p>\n Some datasets contain very large files and, depending on your network characteristics and\n software, may take a long time to download or fail to download. Additionally, the number of\n rows in the file may be larger than the maximum rows your version of Microsoft Excel supports.\n If you can't download the file, we recommend engaging your IT support staff. If you are able\n to download the file but are unable to open it in MS Excel or get a message that the data has\n been truncated, we recommend trying alternative programs such as MS Access, Universal Viewer,\n Editpad or any other software your organization has available for large datasets.\n </p>\n <p>\n <Link to=\"/about/software-specs-and-limits\">\n Click here to learn more about software specifications and limits.\n </Link>\n </p>\n </div>\n);\n\nexport default LargeFileInfo;\n","import React from 'react';\nimport { useMediaQuery } from 'react-responsive';\nimport { Button } from '@cmsgov/design-system';\n\ntype SearchButtonProps = {\n text?: string;\n altMobileStyle?: boolean;\n};\n\nconst SearchButton = (props: SearchButtonProps) => {\n const { text, altMobileStyle } = props;\n const sm = useMediaQuery({ minWidth: 0, maxWidth: 768 });\n return (altMobileStyle && sm) ? (\n <Button\n className=\"ds-u-margin-left--auto ds-u-padding-x--0 ds-c-button--solid dc-c-search-button-mobile\"\n size=\"big\"\n type=\"submit\"\n style={{ width: '70px' }}\n >\n <span className=\"fas fa-search small-text\" />\n </Button>\n ) : (\n <Button type=\"submit\" variation=\"solid\" className=\"ds-l-col--2\">\n <span className=\"fas fa-search small-text ds-u-sm-display--none\" />\n <div className=\"full-text ds-u-display--none ds-u-sm-display--inline-block ds-u-display--flex ds-u-align-items--center\">\n <span>{text ? text : 'Search'}</span>\n {` `}\n <span className=\"fas fa-arrow-right\" />\n </div>\n </Button>\n );\n};\n\nexport default SearchButton;\n","import React from 'react';\ntype pageHeaderProps = {\n headerText: string;\n};\n\nconst PageHeader = (props: pageHeaderProps) => {\n const { headerText } = props;\n return (\n <div className=\"ds-l-container\">\n <div className=\"ds-l-row\">\n <div className=\"ds-l-md-col--8\">\n <h1 className=\"dc-c-entity__name ds-text-heading--3xl ds-u-margin-bottom--4\">\n <span className=\"ds-u-margin-right--2\" data-testid=\"profile-full-name\">\n {headerText}\n </span>\n </h1>\n </div>\n </div>\n </div>\n );\n};\n\nexport default PageHeader;\n","import axios from 'axios';\nimport qs from 'qs';\nimport { SearchAPIFacetType, SortType } from '../../types/search';\nimport { acaToParams } from '../../utilities/aca';\nimport { useContext } from 'react';\nimport { ACAContext } from '../../utilities/ACAContext';\n\nexport function separateFacets(facets: SearchAPIFacetType[]) {\n let facetObj: any = {};\n if (facets) {\n facets.forEach((f) => {\n if(facetObj[f.type]) {\n facetObj[f.type] = [...facetObj[f.type], f]\n } else {\n facetObj[f.type] = [f]\n }\n })\n // sort facets descending by int value, put non int last\n if (facetObj.keyword) {\n facetObj.keyword.sort((a: {name: string}, b: {name:string}) => {\n if (Number(a.name) && Number(b.name)) {\n return Number(b.name) - Number(a.name);\n }\n });\n }\n return facetObj;\n }\n}\n\nexport function transformUrlParamsToSearchObject(searchParams: string, defaultSortOptions: SortType) {\n const params = qs.parse(searchParams, { ignoreQueryPrefix: true });\n let themes = params.theme as string[];\n let keywords = params.keyword as string[];\n return {\n page: params.page,\n sort: !params.sort ? defaultSortOptions.defaultSort : params.sort,\n sortOrder: !params.sortOrder ? defaultSortOptions.defaultOrder : params.sortOrder,\n fulltext: params.fulltext,\n selectedFacets: {\n theme: themes ? themes : [],\n keyword: keywords ? keywords : [],\n },\n };\n}\n\nexport async function fetchDatasets(rootUrl: string, options: any, ACA?: string) {\n const { fulltext, selectedFacets, sort, sortOrder, page, pageSize } = options;\n\n let params = {\n fulltext: fulltext ? fulltext : undefined,\n ...selectedFacets,\n sort: sort ? sort : undefined,\n ['sort-order']: sortOrder ? sortOrder : undefined,\n page: page !== 1 ? page : undefined, //use index except for when submitting to Search API\n ['page-size']: pageSize !== 10 ? pageSize : undefined,\n }\n return await axios.get(`${rootUrl}/search/?${qs.stringify(acaToParams(params, ACA), {arrayFormat: 'comma',encode: false})}`)\n}\n","export { default } from './DatasetList';\n","import React, { useContext, useEffect, useState } from 'react';\nimport { useSearchParams, useLocation } from 'react-router-dom';\nimport qs from 'qs';\nimport axios from 'axios';\nimport withQueryProvider from '../../utilities/QueryProvider/QueryProvider';\nimport { Accordion, AccordionItem, Dropdown, Spinner, Alert, Pagination } from '@cmsgov/design-system';\nimport DatasetListItem from '../../components/DatasetListItem';\nimport LargeFileInfo from '../../components/LargeFileInfo';\nimport PageHeader from '../../components/PageHeader';\nimport { useQuery } from '@tanstack/react-query';\nimport { transformUrlParamsToSearchObject } from '../../services/useSearchAPI/helpers';\n\n// import '../DatasetSearch/dataset-search.scss';\nimport { DatasetSearchPageProps } from '../../types/search';\nimport { acaToParams } from '../../utilities/aca';\nimport { ACAContext } from '../../utilities/ACAContext';\n\nconst DatasetList = ({\n rootUrl,\n enableSort = true,\n enablePagination = true,\n defaultPageSize = 10,\n defaultSort = { defaultSort: 'modified', defaultOrder: 'desc' },\n pageTitle = 'What\\'s New ',\n showLargeFileWarning = false,\n introText = '',\n dataDictionaryLinks = false,\n}: DatasetSearchPageProps) => {\n\n const { ACA } = useContext(ACAContext);\n\n const sortOptions = [\n { label: 'Newest', value: 'newest' },\n { label: 'Oldest', value: 'oldest' },\n { label: 'Title A-Z', value: 'titleAZ' },\n { label: 'Title Z-A', value: 'titleZA' }\n ];\n\n const defaultSortBy = \"\";\n const defaultSortOrder = \"\";\n const defaultPage = 1;\n\n const location = useLocation();\n const transformedParams = transformUrlParamsToSearchObject(location.search, defaultSort);\n\n const [currentResultNumbers, setCurrentResultNumbers] = useState({ total: 0, startingNumber: 0, endingNumber: 0 });\n const [noResults, setNoResults] = useState(false);\n const [announcementText, setAnnouncementText] = useState('');\n let [searchParams, setSearchParams] = useSearchParams();\n const [totalItems, setTotalItems] = useState(0);\n const [page, setPage] = useState(transformedParams.page ? transformedParams.page : defaultPage);\n const [sort, setSort] = useState(\n transformedParams.sort ? transformedParams.sort : defaultSort ? defaultSort.defaultSort : defaultSortBy\n );\n const [sortOrder, setSortOrder] = useState(\n transformedParams.sortOrder\n ? transformedParams.sortOrder\n : defaultSort ? defaultSort.defaultOrder : defaultSortOrder\n );\n const [sortDisplay, setSortDisplay] = useState(() => {\n return sort === 'modified' ? (sortOrder === 'desc' ? 'newest' : 'oldest') : (sortOrder === 'desc' ? 'titleZA' : 'titleAZ');\n })\n\n const setSortOptions = (value: string) => {\n setSortDisplay(value)\n switch (value) {\n case 'newest':\n setSort('modified');\n setSortOrder('desc');\n break;\n case 'oldest':\n setSort('modified');\n setSortOrder('asc');\n break;\n case 'titleAZ':\n setSort('title');\n setSortOrder('asc');\n break;\n case 'titleZA':\n setSort('title');\n setSortOrder('desc');\n break;\n }\n }\n\n const pageSize = defaultPageSize;\n\n function buildSearchParams(includePage: boolean) {\n let newParams: any = {};\n if (Number(page) !== 1 && includePage) {\n newParams.page = page;\n }\n if (sort !== defaultSort.defaultSort) {\n newParams.sort = sort;\n }\n if (sortOrder !== defaultSort.defaultOrder) {\n newParams.sortOrder = sortOrder;\n }\n return qs.stringify(newParams, { addQueryPrefix: includePage, encode: true });\n }\n\n let params = {\n sort: sort ? sort : undefined,\n ['sort-order']: sortOrder ? sortOrder : undefined,\n page: page !== 1 ? page : undefined, //use index except for when submitting to Search API\n ['page-size']: pageSize !== 10 ? pageSize : undefined,\n }\n const { data, isPending, error } = useQuery({\n queryKey: [\"datasets\", params],\n queryFn: () => {\n return axios.get(`${rootUrl}/search/?${qs.stringify(acaToParams(params, ACA), { arrayFormat: 'comma', encode: false })}`)\n }\n });\n\n if ((data && data.data.total) && totalItems != data.data.total) setTotalItems(data.data.total);\n\n useEffect(() => {\n // Update browser URL with current search params\n const params = buildSearchParams(true);\n const url = new URL(window.location.href);\n window.history.pushState({}, '', `${url.origin}${url.pathname}${params}`);\n\n const baseNumber = Number(totalItems) > 0 ? 1 : 0;\n const startingNumber = baseNumber + (Number(pageSize) * Number(page) - Number(pageSize));\n const endingNumber = Number(pageSize) * Number(page);\n\n setCurrentResultNumbers({\n total: Number(totalItems),\n startingNumber: Number(totalItems) >= startingNumber ? startingNumber : 0,\n endingNumber: Number(totalItems) < endingNumber ? Number(totalItems) : endingNumber,\n });\n\n if (totalItems <= 0 && currentResultNumbers !== null) {\n setNoResults(true);\n } else {\n setNoResults(false);\n }\n }, [totalItems, pageSize, page]);\n\n useEffect(() => {\n var params = buildSearchParams(true);\n if (params !== location.search) {\n setSearchParams(params);\n }\n }, [page, sort, sortOrder]);\n\n useEffect(() => {\n // No results found\n if (noResults) {\n setAnnouncementText('No results found.');\n }\n\n // Could not connect to the API\n else if (!isPending && (!data || !data.data.results)) {\n setAnnouncementText('Could not connect to the API.');\n }\n\n // Show results as normal\n else {\n setAnnouncementText(`Showing ${currentResultNumbers.startingNumber} to ${currentResultNumbers.endingNumber} of ${currentResultNumbers.total} datasets`);\n }\n }, [data, isPending, noResults, currentResultNumbers]);\n\n return (\n <>\n <PageHeader headerText={pageTitle} />\n <section className=\"ds-l-container\">\n <div>\n <p\n className=\"ds-u-visibility--screen-reader\"\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n data-testid=\"currentResults\"\n >\n {announcementText}\n </p>\n </div>\n <div className=\"ds-l-row\">\n <div className=\"ds-l-col--12\">\n {showLargeFileWarning && (\n <div className=\"ds-l-row ds-u-margin-bottom--2 ds-u-margin-top--4\">\n <div className=\"ds-l-md-col--12\">\n <Accordion bordered>\n <AccordionItem\n contentClassName=\"downloading-datasets\"\n heading=\"Please read before downloading datasets\"\n >\n <LargeFileInfo />\n </AccordionItem>\n </Accordion>\n </div>\n </div>\n )}\n </div>\n </div>\n <div className=\"ds-l-row\">\n <div className=\"ds-l-col--12\">\n {isPending ? (\n <Spinner\n className=\"ds-u-valign--middle\"\n aria-valuetext=\"Dataset Search loading\"\n role=\"status\"\n />\n ) : (\n <>\n <div 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\">\n <div className=\"ds-l-col--12 ds-l-sm-col--6 ds-l-md-col--8 ds-u-sm-padding-left--0\">\n <div className=\"ds-u-margin-bottom--3\">{introText ? introText : null}</div>\n {enablePagination && (\n <div>\n <p className=\"ds-u-margin-y--0\">\n {(currentResultNumbers && data) && (\n <>\n Showing {currentResultNumbers.startingNumber} -{' '}\n {currentResultNumbers.endingNumber} of {data.data.total} datasets\n </>\n )}\n </p>\n </div>\n )}\n </div>\n {enableSort && (\n <div className=\"ds-l-col--12 ds-l-sm-col--6 ds-l-md-col--4 ds-u-sm-padding-right--0\">\n <Dropdown\n options={sortOptions}\n value={sortDisplay}\n label=\"Sort\"\n labelClassName=\"ds-u-margin-top--0\"\n name=\"dataset_search_sort\"\n onChange={(e) => setSortOptions(e.target.value)}\n />\n </div>\n )}\n </div>\n <ol className=\"dc-dataset-search-list ds-u-padding--0 ds-u-margin-top--0 ds-u-margin-bottom--4 ds-u-display--block\" data-testid=\"datasetlist-results-list\">\n {noResults && <Alert variation=\"error\" role=\"region\" heading=\"No results found.\" />}\n {data && data.data.results ? Object.keys(data.data.results).map((key) => {\n return data.data.results[key];\n }).map((item) => {\n return (\n <DatasetListItem\n key={item.identifier}\n title={item.title}\n modified={item.modified}\n identifier={item.identifier}\n paginationEnabled={enablePagination}\n dataDictionaryLinks={dataDictionaryLinks}\n />\n )\n }) : (\n <Alert variation=\"error\" role=\"region\" heading=\"Could not connect to the API.\" />\n )}\n </ol>\n {enablePagination && (data && data.data.total) && data.data.total != 0 && (\n <Pagination\n currentPage={Number(page)}\n totalPages={Math.ceil(Number(data.data.total) / pageSize)}\n onPageChange={(evt, page) => {\n evt.preventDefault();\n window.scroll(0, 0);\n setPage(page);\n }}\n renderHref={(page) => {\n const searchParams = buildSearchParams(false);\n const includeAnd = searchParams ? '&' : '';\n return `/datasets?page=${page}${includeAnd}${searchParams}`;\n }}\n />\n )}\n\n </>\n )}\n </div>\n </div>\n </section>\n </>\n );\n};\n\nexport default withQueryProvider(DatasetList);\n","import React, { useContext, useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport qs from 'qs';\nimport { useQuery } from '@tanstack/react-query';\nimport withQueryProvider from '../../utilities/QueryProvider/QueryProvider';\nimport useMetastoreDataset from '../../services/useMetastoreDataset';\nimport useDatastore from '../../services/useDatastore';\nimport PageNotFound from '../PageNotFound';\nimport { defaultMetadataMapping } from '../../assets/metadataMapping';\nimport { Tabs, TabPanel } from '@cmsgov/design-system';\nimport SearchItemIcon from '../../assets/icons/searchItem';\nimport DatasetOverview from '../../components/DatasetOverviewTab';\nimport DatasetAPI from '../../components/DatasetAPITab';\nimport DataDictionary from '../../components/DatasetDataDictionaryTab';\nimport { DatasetDictionaryItemType, DatasetPageType, DatasetDictionaryType, DistributionType, ResourceType, ColumnType } from '../../types/dataset';\nimport TransformedDate from '../../components/TransformedDate';\nimport { getFormatType } from '../../utilities/format';\nimport './dataset.scss';\nimport DataTableStateWrapper from '../../components/DatasetTableTab/DataTableStateWrapper';\nimport DataTableContext from './DataTableContext';\nimport DatasetDescription from '../../components/DatasetDescription';\nimport { acaToParams } from '../../utilities/aca';\nimport { ACAContext } from '../../utilities/ACAContext';\n\nconst getDataDictionary = (dataDictionaryUrl: string) => {\n const { ACA } = useContext(ACAContext);\n const { data, isPending, error } = useQuery({\n queryKey: [\"dictionary\" + dataDictionaryUrl],\n queryFn: () => {\n return fetch(`${dataDictionaryUrl}?${qs.stringify(acaToParams({}, ACA), { arrayFormat: 'comma', encode: false })}`).then(\n (res) => res.json(),\n )\n }\n });\n\n return {\n dataDictionary: data as DatasetDictionaryType,\n dataDictionaryLoading: isPending\n }\n}\n\nconst Dataset = ({\n id,\n rootUrl,\n customColumns,\n setDatasetTitle,\n customMetadataMapping,\n apiPageUrl = \"/api\",\n dataDictionaryUrl,\n borderlessTabs = false,\n defaultPageSize = 25,\n dataDictionaryCSV = false,\n dataDictionaryBanner = false,\n disableTableControls = false,\n hideDataDictionary = false,\n customDescription,\n updateAriaLive,\n showRowLimitNotice = false,\n}: DatasetPageType) => {\n const options = location.search\n ? { ...qs.parse(location.search, { ignoreQueryPrefix: true }) }\n : { conditions: [] };\n\n const { dataset, isPending } = useMetastoreDataset(id, rootUrl);\n const title = dataset.title ? dataset.title : '';\n const metadataMapping = {\n ...defaultMetadataMapping,\n ...customMetadataMapping,\n };\n\n let distribution = {} as DistributionType;\n let distributions = dataset.distribution ? dataset.distribution : [];\n if (distributions.length) {\n distribution = distributions[0];\n }\n\n const resource = useDatastore(\n '',\n rootUrl,\n {\n ...options,\n limit: defaultPageSize,\n },\n {\n datasetID: id // pass datasetID into additional params to enable dataset API option in useDatastore\n }\n ) as ResourceType;\n\n const siteWideDataDictionary = dataDictionaryUrl ? getDataDictionary(rootUrl + dataDictionaryUrl).dataDictionary : null;\n\n // compare schema fields with siteWideDataDictionary to display commonalities for now\n // until dataset level data dictionaries are implemented\n const datasetSitewideDictionary = (siteWideDataDictionary && siteWideDataDictionary.data && siteWideDataDictionary.data.fields && resource && resource.schema[distribution.identifier]) ?\n siteWideDataDictionary.data.fields.filter((field: DatasetDictionaryItemType) => {\n return Object.keys(resource.schema[distribution.identifier].fields).indexOf(field.name) !== -1;\n }) : null;\n\n useEffect(() => {\n const localFileFormat = getFormatType(distribution);\n if (localFileFormat === 'csv') {\n resource.setResource(distribution.identifier);\n }\n }, [distribution]);\n\n useEffect(() => {\n if (title) {\n if (setDatasetTitle) {\n setDatasetTitle(title);\n }\n }\n }, [title]);\n\n const notFoundContent = (\n <div className=\"ds-u-padding-top--3\">\n <h1 className=\"ds-text-heading--4xl\">Error: Dataset not found</h1>\n <p>\n We're sorry, but there is no dataset ID that matches your entry. You may have been directed\n here because:\n </p>\n <ol>\n <li>The address you typed contains a typo;</li>\n <li>The requested dataset no longer exists.</li>\n </ol>\n <p>\n <span className=\"ds-u-font-weight--bold\">Note:</span> If you were using a bookmark, please\n reset it once you find the correct dataset.\n </p>\n </div>\n );\n\n\n // The below code manages the selected tab in the Design System tab group manually to ensure we can still use the\n // Data Table tab as the default since it no longer exists on initial render (By default, Overview will appear as default)\n const getDefaultTab = () => {\n return (getFormatType(distribution) === \"csv\") ? \"data-table\" : \"overview\";\n }\n const [selectedTab, setSelectedTab] = useState(\n window.location.hash.substring(1) ? window.location.hash.substring(1) : getDefaultTab())\n\n useEffect(() => {\n if (!window.location.hash.substring(1))\n setSelectedTab(getDefaultTab())\n else if (window.location.hash.substring(1) != selectedTab)\n setSelectedTab(window.location.hash.substring(1))\n }, [distribution, window.location.hash])\n\n const displayDataDictionaryTab = ((distribution.data && distribution.data.describedBy && distribution.data.describedByType === 'application/vnd.tableschema+json') || (datasetSitewideDictionary && datasetSitewideDictionary.length > 0)) as boolean;\n\n return (\n <>\n {dataset.error ? (\n <PageNotFound content={notFoundContent} siteUrl={rootUrl} />\n ) : (\n <div className={'ds-l-container'}>\n <div className={'ds-l-row'}>\n <div className={'ds-l-md-col--9'}>\n <h1 className=\"ds-text-heading--3xl\">{title}</h1>\n </div>\n <div className={'ds-l-md-col--12 ds-u-margin-y--1 ds-u-text-align--right'}>\n <p className=\"ds-u-margin--0\">Updated <TransformedDate date={dataset.modified} /></p>\n </div>\n <div className={'ds-l-md-col--9'}>\n <DatasetDescription\n distribution={distribution}\n dataset={dataset}\n resource={resource}\n customDescription={customDescription}\n updateAriaLive={updateAriaLive}\n />\n </div>\n </div>\n <div className={'ds-l-row'}>\n <div className={'ds-l-md-col--12 dc-dataset'}>\n {!isPending && (\n <Tabs\n onChange={(selectedId, prevSelectedId) => {\n setSelectedTab(selectedId)\n }}\n selectedId={selectedTab}\n >\n <TabPanel\n id={'data-table'}\n tab={\n <span className=\"ds-u-color--primary\">\n <SearchItemIcon id=\"data-table\" />\n Data Table\n </span>\n }\n className={borderlessTabs ? 'ds-u-border--0 ds-u-padding-x--0' : ''}\n >\n {getFormatType(distribution) === \"csv\"\n ? (\n <DataTableContext.Provider value={{\n id: id,\n resource: resource,\n distribution: distribution,\n rootUrl: rootUrl,\n customColumns: customColumns,\n dataDictionaryBanner: (dataDictionaryBanner && displayDataDictionaryTab),\n datasetTableControls: !disableTableControls\n }}>\n <DataTableStateWrapper />\n </DataTableContext.Provider>\n ) : (\n <p>There is no Data Table associated with this dataset. Data Tables will only display for CSV files.</p>\n )\n }\n </TabPanel>\n <TabPanel\n id={'overview'}\n tab={\n <span className=\"ds-u-color--primary\">\n <SearchItemIcon id=\"overview\" />\n Overview\n </span>\n }\n className={borderlessTabs ? 'ds-u-border--0 ds-u-padding-x--0' : ''}\n >\n <DatasetOverview resource={resource} dataset={dataset} distributions={distributions} metadataMapping={metadataMapping} rootUrl={rootUrl} />\n </TabPanel>\n {!hideDataDictionary && (\n <TabPanel\n id={'data-dictionary'}\n tab={\n <span className=\"ds-u-color--primary\">\n <SearchItemIcon id=\"data-dictionary\" />\n Data Dictionary\n </span>\n }\n className={borderlessTabs ? 'ds-u-border--0 ds-u-padding-x--0' : ''}\n >\n {displayDataDictionaryTab\n ? (\n <DataDictionary\n datasetSitewideDictionary={datasetSitewideDictionary}\n datasetDictionaryEndpoint={distribution.data.describedBy}\n title={\"Data Dictionary\"}\n csvDownload={dataDictionaryCSV}\n />\n ) : (\n <p>There is no Data Dictionary associated with this dataset.</p>\n )}\n </TabPanel>\n )}\n {distribution && distribution.data && (\n <TabPanel\n id={'api'}\n tab={\n <span className=\"ds-u-color--primary\">\n <SearchItemIcon id=\"api\" />\n API\n </span>\n }\n className={borderlessTabs ? 'ds-u-border--0 ds-u-padding-x--0' : ''}\n >\n <DatasetAPI id={id} rootUrl={rootUrl} apiUrl={apiPageUrl} showRowLimitNotice={showRowLimitNotice} />\n </TabPanel>\n )}\n </Tabs>\n )}\n </div>\n </div>\n </div>\n )}\n </>\n );\n};\n\nDataset.propTypes = {\n id: PropTypes.string.isRequired,\n rootUrl: PropTypes.string.isRequired,\n};\n\nexport default withQueryProvider(Dataset);\n","export { default } from './useMetastoreDataset';","import { useState, useEffect, useContext } from 'react';\nimport qs from 'qs';\nimport { DatasetType } from '../../types/dataset';\nimport { useQuery } from '@tanstack/react-query';\nimport axios from 'axios';\nimport { acaToParams } from '../../utilities/aca';\nimport { ACAContext } from '../../utilities/ACAContext';\n\nconst useMetastoreDataset = (datasetId : string, rootAPIUrl : string) => {\n const [dataset, setDataset] = useState({\n title: '',\n distribution: [],\n error: '',\n description: '',\n identifier: '',\n modified: '',\n } as DatasetType);\n const [id, setId] = useState(datasetId)\n const [rootUrl, setRootUrl] = useState(rootAPIUrl)\n const {ACA} = useContext(ACAContext);\n\n const { data, isPending } = useQuery({\n queryKey: [\"metastore\" + id],\n queryFn: () => {\n return axios.get(`${rootUrl}/metastore/schemas/dataset/items/${id}?show-reference-ids${ACA ? '&' : ''}${qs.stringify(acaToParams({}, ACA))}`)\n .then((res) => res.data)\n .catch((error) => {return {title: dataset.title, distribution: dataset.distribution, error: error, description: dataset.description, identifier: dataset.identifier, modified: dataset.modified}});\n }\n })\n useEffect(() => {\n if (!isPending && data && data != dataset)\n setDataset(data)\n }, [data])\n\n return {dataset, isPending, setId, setRootUrl};\n}\n\nexport default useMetastoreDataset;\n","export { default } from './useDatastore';","import { useState, useEffect, useContext } from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport qs from 'qs';\nimport { acaToParams } from \"../../utilities/aca\";\nimport { ACAContext } from \"../../utilities/ACAContext\";\n\nconst useDatastore = (\n resourceId,\n rootAPIUrl,\n options,\n additionalParams = {}\n) => {\n const keys = options.keys ? options.keys : true;\n const { prepareColumns } = options;\n\n const {ACA} = useContext(ACAContext);\n\n const [values, setValues] = useState([]);\n const [id, setResource] = useState(resourceId);\n const [rootUrl, setRootUrl] = useState(rootAPIUrl);\n const [limit, setLimit] = useState(options.limit ? options.limit : 20);\n const [count, setCount] = useState(null);\n const [columns, setColumns] = useState([]);\n // unfiltered row / column count for overview tab\n const [totalRows, setTotalRows] = useState(0);\n const [totalColumns, setTotalColumns] = useState(0);\n const [offset, setOffset] = useState(options.offset ? options.offset : 0);\n const [conditions, setConditions] = useState(\n options.conditions ? options.conditions : undefined\n );\n const requireConditions = options.requireConditions;\n const [sort, setSort] = useState(options.sort ? options.sort : undefined);\n const [groupings, setGroupings] = useState(\n options.groupings ? options.groupings : undefined\n );\n const [schema, setSchema] = useState({});\n // const [joins, setJoins] = useState()\n const [properties, setProperties] = useState(\n options.properties ? options.properties : undefined\n );\n\n // Check drupalSettings for datastore_query_api\n const useDatasetAPI = typeof window !== 'undefined' && window.drupalSettings?.datastore_query_api === true;\n const datasetID = additionalParams.datasetID;\n \n // Remove datasetID from params to avoid sending it to the API\n const { datasetID: _, ...restAdditionalParams } = additionalParams;\n \n let params = {\n keys: keys,\n limit: limit,\n offset: offset,\n conditions: conditions,\n sorts: sort,\n properties: properties,\n groupings: groupings,\n ...restAdditionalParams,\n }\n params = acaToParams(params, ACA);\n const paramsString = Object.keys(params).length ? `${qs.stringify(params)}` : '';\n \n let enabled = false;\n if (id) {\n if (!requireConditions)\n enabled = true;\n if (conditions && conditions.length)\n enabled = true;\n }\n // Change whether distribution API or dataset API is used based on option\n const queryID = useDatasetAPI && datasetID ? `${datasetID}/0` : id;\n\n const {data, isPending, error} = useQuery({\n queryKey: [\"datastore\" + id + paramsString],\n queryFn: () => {\n setCount(null)\n return fetch(`${rootUrl}/datastore/query/${queryID}?${paramsString}`)\n .then(res => res.json())\n },\n enabled: enabled\n })\n\n const{data: unfiltered} = useQuery({\n queryKey: [\"datastore\" + id + \"-unfilteredRowsAndCols\"],\n queryFn: () => {\n const unfilteredParams = {\n results: false,\n count: true,\n schema: true\n }\n return fetch(`${rootUrl}/datastore/query/${queryID}?${qs.stringify(acaToParams(unfilteredParams, ACA))}`)\n .then(res => res.json())\n },\n })\n \n\n useEffect(() => {\n if(data) {\n const propertyKeys =\n data.schema && data.schema[id] && data.schema[id].fields\n ? Object.keys(data.schema[id].fields)\n : [];\n setValues(data.results), setCount(data.count);\n if (propertyKeys.length) {\n setColumns(prepareColumns ? prepareColumns(propertyKeys) : propertyKeys);\n }\n if(data.schema) {\n setSchema(data.schema);\n }\n }\n }, [data])\n useEffect(() => {\n if (unfiltered) {\n if (unfiltered.count) setTotalRows(unfiltered.count);\n if (unfiltered.schema && unfiltered.schema[id] && unfiltered.schema[id].fields) setTotalColumns(Object.keys(unfiltered.schema[id].fields).length);\n }\n }, [unfiltered])\n\n return {\n loading: enabled ? isPending : false,\n values,\n count,\n columns,\n totalRows,\n totalColumns,\n limit,\n offset,\n schema,\n conditions,\n properties,\n setProperties,\n setGroupings,\n setResource,\n setRootUrl,\n setLimit,\n setOffset,\n setConditions,\n setSort,\n };\n};\n\nexport default useDatastore;\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport TransformedDate from '../components/TransformedDate';\nimport { frequencyMap } from './frequencyMap';\n\nexport const defaultMetadataMapping = {\n modified: (data) => {\n return [{ label: 'Modified', value: <TransformedDate date={data} /> }];\n },\n issued: (data) => {\n return [{ label: 'Issued', value: <TransformedDate date={data} /> }];\n },\n accrualPeriodicity: (data) => {\n return [\n {\n label: 'Frequency',\n value: frequencyMap[data].name,\n },\n ];\n },\n publisher: (data) => {\n if (data.data && data.data.name) {\n return [{ label: 'Publisher', value: data.data.name }];\n } else {\n return [];\n }\n },\n identifier: (data) => {\n return [{ label: 'Identifier', value: data }];\n },\n contactPoint: (data) => {\n let rows = [];\n if (data.fn) {\n rows.push({ label: 'Contact', value: data.fn });\n }\n if (data.hasEmail) {\n rows.push({\n label: 'Contact Email',\n value: (\n <a href={data.hasEmail.includes(\"mailto:\") ? data.hasEmail : `mailto:${data.hasEmail}`}>{data.hasEmail.replace(\"mailto:\", \"\")}</a>\n )\n });\n }\n return rows;\n },\n bureauCode: (data) => {\n if (data.length) {\n return [{ label: 'Bureau Code', value: data[0] }];\n }\n },\n programCode: (data) => {\n if (data.length) {\n return [{ label: 'Program Code', value: data[0] }];\n }\n },\n theme: (data) => {\n return [\n {\n label: 'Category',\n value: data\n .map((theme) => (\n <Link key={theme.data} to={`/datasets?theme[]=${theme.data}`}>\n {theme.data}\n </Link>\n ))\n .reduce((prev, curr) => [prev, ', ', curr]),\n },\n ];\n },\n keyword: (data) => {\n return [\n {\n label: 'Tags',\n value: data\n .map((keyword) => (\n <Link key={keyword.data} to={`/datasets?keyword[]=${keyword.data}`}>\n {keyword.data}\n </Link>\n ))\n .reduce((prev, curr) => [prev, ', ', curr]),\n },\n ];\n },\n license: (data) => {\n return [{ label: 'License', value: <a href={data}>{data}</a> }];\n },\n accessLevel: (data) => {\n return [{ label: 'Public Access Level', value: data }];\n },\n\n temporal: (data) => {\n return [\n { label: 'Temporal Coverage', value: <span className=\"dc-c-word-break--all\">{data}</span> },\n ];\n },\n spatial: (data) => {\n return [{ label: 'Spacial/Geographical Coverage', value: data }];\n },\n references: (data) => {\n return [\n {\n label: 'Related Documents',\n value: (\n <ul className=\"ds-u-margin--0 ds-u-padding-y--0 ds-u-padding-left--2 ds-u-padding-right--0\">\n {data.map((item) => (\n <li key={item}>\n <a href={item}>{item}</a>\n </li>\n ))}\n </ul>\n ),\n },\n ];\n },\n};\n","export const frequencyMap = {\n 'R/P10Y': { name: 'Decennial' },\n 'R/P4Y': { name: 'Quadrennial' },\n 'R/P1Y': { name: 'Annual' },\n 'R/P2M': { name: 'Bimonthly' },\n 'R/P3.5D': { name: 'Semiweekly' },\n 'R/P1D': { name: 'Daily' },\n 'R/P2W': { name: 'Biweekly' },\n 'R/P6M': { name: 'Semiannual' },\n 'R/P2Y': { name: 'Biennial' },\n 'R/P3Y': { name: 'Triennial' },\n 'R/P0.33W': { name: 'Three times a week' },\n 'R/P0.33M': { name: 'Three times a month' },\n 'R/PT1S': { name: 'Continuously updated' },\n 'R/P1M': { name: 'Monthly' },\n 'R/P3M': { name: 'Quarterly' },\n 'R/P0.5M': { name: 'Semimonthly' },\n 'R/P4M': { name: 'Three times a year' },\n 'R/P1W': { name: 'Weekly' },\n 'R/PT1H': { name: 'Hourly' },\n irregular: { name: 'Irregular' },\n};\n","import React from 'react';\nimport { useMediaQuery } from 'react-responsive';\nimport { buildRows } from '../DatasetAdditionalInformation';\nimport { Table, TableBody, TableRow, TableCell, Tooltip, TooltipIcon } from '@cmsgov/design-system';\nimport Resource from '../Resource';\nimport { DatasetOverviewPropsType } from '../../types/dataset';\n\nconst DatasetOverview = ({ dataset, resource, distributions, metadataMapping, rootUrl } : DatasetOverviewPropsType) => {\n const md = useMediaQuery({ minWidth: 0, maxWidth: 768 });\n const rows = buildRows(metadataMapping, dataset);\n\n const tooltips = [\n {\n label: \"modified\",\n title: \"The date the dataset was last updated.\"\n },\n {\n label: \"released\",\n title: \"The date the most recent dataset was made available to the public.\"\n },\n {\n label: \"issued\",\n title: \"The date the dataset was first published and made available to the public.\"\n },\n {\n label: \"publisher\",\n title: \"The entity responsible for publishing the dataset.\"\n }\n ]\n\n return (\n <>\n <Resource\n distributions={distributions}\n resource={resource}\n title={dataset.title}\n rootUrl={rootUrl}\n />\n <div className=\"dc-c-additional-info-table ds-u-margin-bottom--6 ds-u-padding-left--0 ds-l-lg-col--7 ds-l-md-col--9 ds-l-col--12\">\n <h2 className=\"ds-text-heading--2xl ds-text-heading--2xl\">Additional Information</h2>\n <Table compact stackable stackableBreakpoint=\"md\" warningDisabled>\n <TableBody>\n {rows.map((r) => {\n const tooltip = tooltips.find((item) => item.label === r.label.toLowerCase())\n return (\n <TableRow key={`${r.label}_${dataset.identifier}`}>\n {md ? (\n ''\n ) : (\n <TableCell component=\"th\" className=\"ds-u-font-weight--bold\">\n {r.label}\n {tooltip && <span className=\"ds-u-font-weight--normal\">\n <Tooltip\n title={tooltip.title}\n ariaLabel={r.label}\n // @ts-ignore\n style={{ border: 'none', background: 'none' }}\n maxWidth=\"400px\"\n placement=\"auto\"\n >\n <TooltipIcon />\n </Tooltip>\n </span>}\n </TableCell>\n )}\n <TableCell stackedTitle={r.label}>{r.value}</TableCell>\n </TableRow>\n )}\n )}\n </TableBody>\n </Table>\n </div>\n </>\n );\n};\n\nexport default DatasetOverview;","import React from 'react';\nimport DOMPurify from 'dompurify';\nimport { useMediaQuery } from 'react-responsive';\nimport ResourceInformation from '../ResourceInformation';\nimport { DistributionType, ResourceType } from '../../types/dataset';\nimport { getFormatType } from '../../utilities/format';\nimport './Resource.scss';\n\ntype ResourcePropsType = {\n distributions: DistributionType[],\n resource: ResourceType,\n title: string\n rootUrl: string\n}\n\nconst Resource = ({ distributions, resource, rootUrl, title } : ResourcePropsType ) => {\n const sm = useMediaQuery({ minWidth: 0, maxWidth: 767 });\n return (\n <div className=\"ds-u-display--flex ds-u-flex-wrap--wrap\">\n <h2 className=\"ds-l-col--12 ds-u-padding-left--0 ds-text-heading--2xl\">Resources</h2>\n {distributions.length ? ( \n <ul className=\"ds-c-list ds-c-list--bare dc-c-resource-full-width\">\n {\n distributions.map((dist) => {\n const fileFormat = getFormatType(dist)\n return (\n <li key={dist.identifier} className={`ds-u-display--flex ds-u-flex-wrap--wrap ${fileFormat !== \"csv\" && \"ds-u-margin-bottom--2\"}`}>\n <div className=\"ds-u-font-weight--bold ds-u-font-size--lg ds-l-col--12 ds-l-md-col--6 ds-u-padding-left--0 ds-u-align-items--center ds-u-display--flex\">\n <i className={'fa ds-u-color--primary ds-u-padding-right--1 ds-u-font-size--3xl ' + 'fa-file-' + (fileFormat == \"xlsx\" ? \"xls\" : fileFormat)}></i>\n <p className=\"ds-u-margin-top--0\">{dist.data.title ? dist.data.title : title}{\" (\" + fileFormat.toUpperCase() + \")\"}</p>\n </div>\n <div className=\"ds-l-col--12 ds-l-md-col--6 ds-u-text-align--center ds-u-md-text-align--right ds-u-margin-top--2 ds-u-md-margin-top--0\">\n <a\n href={dist.data.downloadURL}\n style={{\n order: sm ? '1' : '0',\n width: sm ? '100%' : 'auto'\n }}\n aria-label={`Download ${dist.data.title || title} ${fileFormat}`}\n className=\"ds-c-button\"\n >\n <i className=\"fa fa-file-download ds-u-padding-right--1\"></i>\n Download\n </a>\n </div>\n {dist.data.description && (\n <div className={'ds-u-measure--wide ds-u-margin-bottom--7'}>\n <div className=\"dc-c-metadata-description ds-u-margin--0\" dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(dist.data.description) }}/>\n </div>\n )}\n {fileFormat === \"csv\" && <ResourceInformation rootUrl={rootUrl} distribution={dist} />}\n </li>\n )\n })\n }\n </ul>\n ) : (\n <div className=\"ds-u-margin-bottom--2\">No resources have been added to this dataset.</div>\n )}\n </div>\n );\n};\n\nexport default Resource;","import React, { useContext } from 'react';\nimport { DistributionType } from '../../types/dataset';\nimport { useQuery } from '@tanstack/react-query';\nimport axios from 'axios';\nimport qs from 'qs';\nimport { acaToParams } from '../../utilities/aca';\nimport { ACAContext } from '../../utilities/ACAContext';\n\nconst ResourceInformation = ({ distribution, rootUrl } : {distribution: DistributionType, rootUrl: string}) => {\n const { ACA } = useContext(ACAContext);\n const { data: resource } = useQuery({\n queryKey: ['resource-information', distribution.identifier],\n queryFn: () => axios.get(`${rootUrl}/datastore/query/${distribution.identifier}?${qs.stringify(acaToParams({results: false, schema: false}, ACA))}`).then(res => res.data)\n });\n\n return (\n <div className=\"dc-c-resource-info-table ds-l-col--12 ds-u-padding-left--0 ds-u-margin-y--2\">\n <h3 className=\"ds-u-font-size--base ds-text-heading--xl ds-text-heading--xl\">About this Resource</h3>\n <div className=\"ds-u-display--flex ds-u-text-align--center ds-u-justify-content--center ds-u-md-justify-content--start\">\n <div className=\"ds-u-fill--gray-lightest ds-u-radius ds-u-margin-right--1 ds-u-padding--2\">\n <div className=\"ds-u-padding-top--05\">Rows</div>\n <div className=\"ds-u-font-weight--bold\">{resource?.count ? Number(resource.count).toLocaleString() : ''}</div>\n </div>\n <div className=\"ds-u-fill--gray-lightest ds-u-radius ds-u-margin-right--1 ds-u-padding--2\">\n <div>\n <div className=\"ds-u-padding-top--05\">Columns</div>\n <div className=\"ds-u-font-weight--bold\">{resource?.query?.properties?.length?.toLocaleString()}</div>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default ResourceInformation;\n","import React, { useContext } from 'react';\nimport qs from 'qs';\nimport ApiDocumentation from '../ApiDocumentation';\nimport ApiRowLimitNotice from '../ApiRowLimitNotice';\nimport { ACAContext } from '../../utilities/ACAContext';\nimport { acaToParams } from '../../utilities/aca';\ntype DatasetAPIProps = {\n id: String;\n rootUrl: String;\n apiUrl: string;\n showRowLimitNotice?: boolean;\n};\n\nconst DatasetAPI = ({\n id,\n rootUrl,\n apiUrl,\n showRowLimitNotice = false,\n}: DatasetAPIProps) => {\n const {ACA} = useContext(ACAContext)\n return (\n <>\n <div className=\"ds-u-display--flex ds-u-flex-wrap--wrap\">\n <div className=\"ds-l-col--12 ds-l-md-col--9 ds-u-padding-left--0\">\n <h2 className=\"ds-text-heading--2xl\">Try the API</h2>\n <p>\n The Open Data API (ODA) provides programmatic access to this dataset including the\n ability to filter, query, and aggregate data.\n </p>\n {showRowLimitNotice && <ApiRowLimitNotice />}\n </div>\n <div className=\"ds-l-col--12 ds-l-md-col--3 ds-u-font-weight--bold ds-u-margin-top--2 ds-u-padding-left--0 ds-u-md-padding-left--2\">\n <a href={apiUrl}>\n View API{' '}\n <span style={{ whiteSpace: 'nowrap' }}>\n specification <i className=\"fa fa-arrow-right ds-u-font-weight--bold\"></i>\n </span>\n </a>\n </div>\n </div>\n <ApiDocumentation\n endpoint={`${rootUrl}/metastore/schemas/dataset/items/${id}/docs?${qs.stringify(acaToParams({}, ACA))}`}\n />\n </>\n );\n};\n\nexport default DatasetAPI;\n","import React, { useContext } from 'react';\nimport withQueryProvider from '../../utilities/QueryProvider/QueryProvider';\nimport { useQuery } from '@tanstack/react-query';\nimport qs from 'qs';\nimport axios from 'axios';\n\nimport { DatasetDictionaryItemType } from '../../types/dataset';\nimport SitewideDataDictionaryTable from '../SitewideDataDictionaryTable';\nimport DatasetDictionaryTable from '../DatasetDictionaryTable';\nimport { Button, Spinner } from '@cmsgov/design-system';\nimport { acaToParams } from '../../utilities/aca';\nimport { ACAContext } from '../../utilities/ACAContext';\n\nconst DataDictionary = (\n { datasetDictionaryEndpoint, datasetSitewideDictionary, title, pageSize = 20, csvDownload } : \n { \n datasetDictionaryEndpoint: string,\n datasetSitewideDictionary: DatasetDictionaryItemType[]\n title: string,\n pageSize: number,\n additionalParams: any,\n csvDownload : boolean\n }) => {\n const {ACA} = useContext(ACAContext)\n \n const {data, isPending, error} = useQuery({\n queryKey: [\"dictionary\" + datasetDictionaryEndpoint],\n queryFn: () => {\n return axios.get(`${datasetDictionaryEndpoint}?${qs.stringify(acaToParams({}, ACA))}`)\n .then((res) => res.data)\n .catch((error) => console.error(error))\n },\n enabled: datasetDictionaryEndpoint !== undefined\n });\n\n const datasetDictionary = data && data.data && data.data.fields && data.data.fields.length ? data.data.fields : null;\n \n return (\n <div data-testid=\"dataset-dictionary-tab\">\n <h2 className=\"ds-text-heading--2xl ds-u-margin-y--3\">{title}</h2>\n {datasetDictionary && (\n <>\n <div className=\"ds-u-margin-bottom--1 ds-u-display--flex ds-u-flex-wrap--wrap ds-u-justify-content--end\">\n <Button className=\"ds-l-col--12 ds-l-sm-col--6 ds-l-md-col--4\" onClick={() => window.open(datasetDictionaryEndpoint)} type=\"button\" >\n <i className=\"fa fa-file-download ds-u-color--primary ds-u-padding-right--1\"></i> View Dictionary JSON\n </Button>\n {csvDownload && (\n <div className=\"ds-l-col--12 ds-l-sm-col--6 ds-l-md-col--4 ds-u-margin-top--2 ds-u-sm-margin-top--0 ds-u-padding--0 ds-u-sm-padding-left--2\">\n <a\n href={datasetDictionaryEndpoint + \"/csv\"}\n className=\"ds-c-button\"\n style={{width: '100%'}}\n >\n <i className=\"fa fa-file-download ds-u-color--primary ds-u-padding-right--1\"></i>\n Download Dictionary CSV\n </a>\n </div>\n )}\n </div>\n <DatasetDictionaryTable datasetDictionary={datasetDictionary} pageSize={pageSize}/>\n </>\n )}\n\n {datasetSitewideDictionary && (\n <SitewideDataDictionaryTable datasetDictionary={datasetSitewideDictionary} pageSize={pageSize} />\n )}\n </div>\n )\n}\n\nexport default withQueryProvider(DataDictionary);","import React from 'react';\nimport { createColumnHelper } from '@tanstack/react-table';\nimport { DatasetDictionaryItemType } from '../../types/dataset';\nimport DataDictionaryTable from '../DataDictionaryTable';\n\nconst SitewideDataDictionaryTable = ({ datasetDictionary, pageSize} : {datasetDictionary: DatasetDictionaryItemType[], pageSize: number}) => {\n const columnHelper = createColumnHelper<DatasetDictionaryItemType>()\n const tableColumns = [\n columnHelper.accessor('name', {\n header: 'Name',\n }),\n columnHelper.accessor('title', {\n header: 'Title',\n }),\n columnHelper.accessor('type', {\n header: 'Type',\n }),\n columnHelper.accessor('format', {\n header: 'Format',\n }),\n ];\n\n return ( <DataDictionaryTable tableColumns={tableColumns} tableData={datasetDictionary} pageSize={pageSize} /> )\n}\n\nexport default SitewideDataDictionaryTable;","import React, { useState } from 'react';\nimport { useReactTable, flexRender, getCoreRowModel, getPaginationRowModel, getSortedRowModel, SortingState, getFilteredRowModel, ColumnFiltersState } from '@tanstack/react-table';\nimport { useMediaQuery } from 'react-responsive';\nimport { Table, TableHead, TableRow, TableCell, TableBody, Pagination, Dropdown, DropdownChangeObject, Alert } from '@cmsgov/design-system';\nimport HeaderResizeElement from '../Datatable/HeaderResizeElement';\nimport './dataDictionaryTable.scss';\n\nconst DataDictionaryTable = ({tableColumns, tableData, pageSize, columnFilters} :\n {tableColumns: Array<any>, tableData: Array<any>, pageSize: number, columnFilters?: ColumnFiltersState}\n ) => {\n const [sorting, setSorting] = useState<SortingState>([])\n const [ariaLiveFeedback, setAriaLiveFeedback] = useState('');\n\n const mobile = useMediaQuery({ minWidth: 0, maxWidth: 544 });\n\n const sortElement = (isSorted : string) => {\n if(isSorted === 'asc') {\n return 'dc-c-sort--asc'\n }\n if(isSorted === 'desc') {\n return 'dc-c-sort--desc'\n }\n return 'dc-c-sort--default'\n }\n\n const table = useReactTable({\n data: tableData,\n columns: tableColumns,\n columnResizeMode: 'onChange',\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n onSortingChange: setSorting,\n initialState: {\n pagination: {\n pageSize: pageSize,\n pageIndex: 0\n }\n },\n state: {\n sorting,\n columnFilters\n }\n });\n\n const sortOptions = [\n {value: 'default', label: 'No Sort'},\n {value: 'titleasc', label: 'Title A-Z'},\n {value: 'titledesc', label: 'Title Z-A'},\n {value: 'typeasc', label: 'Type A-Z'},\n {value: 'typedesc', label: 'Type Z-A'},\n ];\n\n const sortStatesLookup : {[key: string] : Array<any>} = {\n default: [],\n titleasc: [{id: 'titleResizable', desc: false}],\n titledesc: [{id: 'titleResizable', desc: true}],\n typeasc: [{id: 'type', desc: false}],\n typedesc: [{id: 'type', desc: true}]\n }\n return (\n <div>\n {mobile && (\n <div className=\"ds-u-margin-bottom--3 ds-l-col--12 ds-l-sm-col--6\">\n <Dropdown\n labelClassName=\"ds-u-margin-top--1 ds-u-sm-margin-top--0\"\n options={sortOptions}\n label=\"Sort\"\n value={Object.keys(sortStatesLookup).find(key => {\n return JSON.stringify(sortStatesLookup[key]) == JSON.stringify(sorting);\n })}\n name=\"dc-data-dictionary-type\"\n onChange={(e: DropdownChangeObject) => {\n setSorting(sortStatesLookup[e.target.value])\n }}\n />\n </div>\n )}\n <div className=\"dc-c-datadictionary-table\">\n <Table className=\"dc-c-datatable\" {...{style:{width: '100%'}}} stackable>\n <TableHead className=\"dc-thead--truncated dc-thead--resizeable\">\n {table.getHeaderGroups().map(headerGroup => (\n <TableRow key={\"header\" + headerGroup.id}>\n {headerGroup.headers.map(header => {\n return (header.id === \"titleResizable\") ? (\n <HeaderResizeElement key={header.id + \"_resize\"} table={table} header={header} setAriaLiveFeedback={setAriaLiveFeedback} sortElement={sortElement} id={'dataDictionary_' + header.id} />\n ) : (\n <TableCell\n {...{\n key: header.id\n }}\n className= {`ds-u-border-y--2 ds-u-border--dark ds-u-border-x--0`}\n id={'dataDictionary_' + header.id}\n >\n {flexRender(header.column.columnDef.header, header.getContext()) as React.ReactNode}\n {header.id === 'type' && (\n <button\n onClick={header.column.getToggleSortingHandler()}\n {...{\n className: header.column.getCanSort()\n ? `cursor-pointer select-none ds-u-focus-visible ${sortElement(header.column.getIsSorted() as string)}`\n : '',\n }}\n aria-label={`${header.column.columnDef.header} sort order`}\n />\n )}\n </TableCell>\n )\n }) }\n </TableRow>\n )\n )}\n </TableHead>\n <TableBody>\n {table.getRowModel().rows.map((row, index) => { \n return (\n <TableRow key={index + JSON.stringify(row)}>\n {row.getVisibleCells().map((cell) => {\n return (\n <TableCell\n {...{\n key: cell.id,\n style: {\n maxWidth: mobile ? '100%' : cell.column.getSize(),\n whiteSpace: cell.column.id === \"description\" ? 'pre-wrap' : 'normal'\n },\n }}\n className={`${cell.column.id === 'titleResizable' ? 'ds-u-word-break' : ''}`}\n headers={'dataDictionary_' + cell.column.id}\n stackedTitle={cell.column.id === 'titleResizable' ? 'Title' : cell.column.columnDef.header as string}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext()) as React.ReactNode}\n </TableCell>\n )\n })}\n </TableRow>\n )\n })}\n </TableBody>\n </Table>\n <div className='sr-only' aria-live='assertive' aria-atomic='true'>{ariaLiveFeedback}</div>\n {table.getRowModel().rows.length === 0 && (\n <Alert variation=\"warn\">No results found for the current filters</Alert>\n )}\n </div>\n {table.getRowCount() > pageSize ? (\n <Pagination\n totalPages={table.getPageCount()}\n currentPage={table.getState().pagination.pageIndex + 1}\n onPageChange={(evt, page) => {\n evt.preventDefault();\n table.setPageIndex(page - 1)\n }}\n renderHref={(page) => `/page=${page}`}\n />\n ): ''}\n </div>\n )\n};\n\nexport default DataDictionaryTable;","import React, { useState, useMemo } from 'react';\nimport { createColumnHelper } from '@tanstack/react-table';\nimport { TextField, Dropdown, AccordionItem, Button, DropdownChangeObject } from '@cmsgov/design-system';\nimport { DatasetDictionaryItemType } from '../../types/dataset';\nimport DataDictionaryTable from '../DataDictionaryTable';\nimport { Tooltip, TooltipIcon } from '@cmsgov/design-system';\nimport \"./dataDictionary.scss\"\nimport ClearFiltersButton from '../QueryBuilder/ClearFiltersButton';\n\nconst DatasetDictionaryTable = ({ datasetDictionary, pageSize} : {datasetDictionary: DatasetDictionaryItemType[], pageSize: number}) => {\n const [titleFilter, setTitleFilter ] = useState(\"\");\n const [typeFilter, setTypeFilter ] = useState(\"all\");\n const columnFilters = useMemo(() => [\n {id: \"titleResizable\", value: titleFilter},\n {id: \"type\", value: typeFilter === \"all\" ? \"\" : typeFilter}\n ], [titleFilter, typeFilter])\n\n const tableData = datasetDictionary.map((item) => {\n return {\n titleResizable: item.title,\n description: item.description,\n type: item.type\n }\n })\n\n const columnHelper = createColumnHelper<DatasetDictionaryItemType>()\n const tableColumns = [\n columnHelper.accessor('titleResizable', {\n header: () => (\n <div className=\"dc-c-tooltip-width-override\">\n Title\n <Tooltip\n title={\"Title represents the column headers of the data file\"}\n // @ts-ignore\n style={{ border: 'none', background: 'none' }}\n maxWidth=\"400px\"\n >\n <TooltipIcon />\n </Tooltip>\n </div>\n ),\n size: 300,\n minSize: 132\n }),\n columnHelper.accessor('description', {\n header: 'Description',\n minSize: 600,\n }),\n columnHelper.accessor('type', {\n header: 'Type',\n size: 150,\n enableResizing: false\n }),\n ];\n\n const typeOptions = [\n {value: 'all', label: 'All Types'},\n {value: 'string', label: 'String'},\n {value: 'date', label: 'Date'},\n {value: 'datetime', label: 'Datetime'},\n {value: 'year', label: 'Year'},\n {value: 'integer', label: 'Integer'},\n {value: 'number', label: 'Number'},\n {value: 'boolean', label: 'Boolean'}\n ];\n\n return ( \n <>\n <div className=\"dc-query-builder ds-u-margin-bottom--3\">\n <div className=\"ds-c-accordion ds-c-accordion--bordered\">\n <AccordionItem\n heading={\"Data Dictionary Filters\"}\n defaultOpen={true}\n >\n <div className=\"ds-u-display--flex ds-u-flex-wrap--wrap\">\n <TextField\n className=\"ds-l-col--12 ds-l-sm-col--6\"\n labelClassName=\"ds-u-margin-top--1 ds-u-sm-margin-top--0\"\n label=\"Title\"\n value={titleFilter}\n name=\"dc-data-dictionary-title\"\n onChange={(e: Event) => setTitleFilter((e.target as HTMLInputElement).value)}\n />\n <div className=\"ds-l-col--12 ds-l-sm-col--6\">\n <Dropdown\n labelClassName=\"ds-u-margin-top--1 ds-u-sm-margin-top--0\"\n options={typeOptions}\n label=\"Type\"\n value={typeFilter}\n name=\"dc-data-dictionary-type\"\n onChange={(e: DropdownChangeObject) => setTypeFilter(e.target.value)}\n />\n </div>\n <div className=\"ds-u-float--right ds-u-padding-y--2 ds-l-col--12 ds-u-display--flex ds-u-flex-wrap--wrap ds-u-justify-content--end\">\n <div className=\"ds-u-display--flex ds-u-justify-content--end ds-l-col--12 ds-l-md-col--6 ds-u-padding-x--0\">\n <ClearFiltersButton\n clearFiltersFn={() => {\n setTitleFilter(\"\");\n setTypeFilter(\"all\");\n }} />\n </div>\n </div>\n </div>\n </AccordionItem>\n </div>\n </div>\n <DataDictionaryTable tableColumns={tableColumns} tableData={tableData} pageSize={pageSize} columnFilters={columnFilters} />\n </>\n )\n}\n\nexport default DatasetDictionaryTable;","import React from 'react';\nimport DatasetTable from '.';\nimport DataTableActionsProvider from './DataTableActionsContext';\n\nconst DataTableStateWrapper = ({\n showCopyLinkButton = true,\n showDataTableToolbar = true,\n showDownloadFilteredDataButton = true,\n showDownloadFullDataButton = true,\n showStoredQueryDownloadButton = false,\n}: {\n showCopyLinkButton?: boolean;\n showDataTableToolbar?: boolean;\n showDownloadFilteredDataButton?: boolean;\n showDownloadFullDataButton?: boolean;\n showStoredQueryDownloadButton?: boolean;\n}) => {\n return (\n <DataTableActionsProvider>\n <DatasetTable\n showCopyLinkButton={showCopyLinkButton}\n showDataTableToolbar={showDataTableToolbar}\n showDownloadFilteredDataButton={showDownloadFilteredDataButton}\n showDownloadFullDataButton={showDownloadFullDataButton}\n showStoredQueryDownloadButton={showStoredQueryDownloadButton}\n />\n </DataTableActionsProvider>\n );\n};\n\nexport default DataTableStateWrapper;\n","import React, { useEffect, useState } from 'react';\nimport DOMPurify from 'dompurify';\nimport { DatasetDescriptionType } from '../../types/dataset';\n\ntype DescriptionContent = string | React.ReactNode;\n\nconst DatasetDescription = (\n {distribution, dataset, resource, customDescription, updateAriaLive} : DatasetDescriptionType\n) => {\n const [description, setDescription] = useState<DescriptionContent>(\"\");\n\n if(!distribution && !dataset?.identifier) {\n return null;\n }\n\n useEffect(() => {\n let newDescription: DescriptionContent = '';\n\n if (customDescription) {\n newDescription = customDescription(dataset, distribution, resource);\n } else {\n if(distribution.data && distribution.data.description) {\n newDescription = distribution.data.description;\n } else if(dataset.description) {\n newDescription = dataset.description;\n }\n }\n\n if (typeof newDescription === \"string\" && description !== newDescription && updateAriaLive) {\n updateAriaLive(newDescription);\n }\n\n setDescription(newDescription);\n }, [resource, distribution, dataset, customDescription]);\n \n return (\n <div className={'ds-u-measure--wide ds-u-margin-bottom--7'}>\n <div className=\"ds-u-margin-top--0 dc-c-metadata-description\">\n {typeof description === \"string\" ? (\n <div\n dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(description) }}\n />\n ) : (\n description\n )}\n </div>\n </div>\n );\n}\n\nexport default DatasetDescription;\n","import React, { useEffect, ReactNode, ReactElement, useRef } from 'react';\nimport { useMediaQuery } from 'react-responsive'\nimport CMSTopNav from '../../components/CMSTopNav';\nimport HeaderContext from './HeaderContext';\n\nimport \"./header.scss\";\n\ntype HeaderProps = {\n topNav?: ReactElement<typeof CMSTopNav>;\n children: ReactNode;\n mobileMaxWidth?: number;\n onDark?: boolean;\n};\n\nexport type NavLinkArray = {\n id: string;\n label: string;\n url: string;\n target?: string;\n submenu?: NavLinkArray[];\n icon?: ReactNode;\n drupalPage?: boolean;\n}\n\nconst Header = (props: HeaderProps) => {\n const { topNav, children, mobileMaxWidth = 768, onDark = false } = props;\n const [mobileMenuOpen, setMobileMenuOpen] = React.useState(false);\n const mobileMax = useMediaQuery({ query: `(max-width: ${mobileMaxWidth}px)` });\n const menu = useRef<HTMLDivElement>(null);\n\n function closeMobileMenu() {\n const mobileMenuButtonElement = document.querySelector('.dkan-c-mobile-menu-button');\n if (!mobileMenuButtonElement) {\n return;\n }\n (mobileMenuButtonElement as HTMLElement).focus();\n }\n\n // Close mobile menu with escape.\n function handleMenuClose(event: KeyboardEvent) {\n if (event.key === 'Escape' && mobileMenuOpen) {\n setMobileMenuOpen(false);\n }\n }\n\n function handleClick(event: MouseEvent) {\n // Links are wrapped in spans, this checks if the parent is an A, also check if in the search modal. \n if (mobileMenuOpen && menu.current && !menu.current.contains(event.target as HTMLElement)) {\n setMobileMenuOpen(false);\n closeMobileMenu()\n }\n }\n\n const getFocusableElements = (container: HTMLElement) => {\n const allSelectors = container.querySelectorAll(\n 'a, button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])'\n );\n\n const visibleSelectors = Array.from(allSelectors).filter((el: any) => {\n return el.offsetWidth > 0 || el.offsetHeight > 0;\n });\n\n return {\n selectors: {\n all: allSelectors,\n visible: visibleSelectors,\n },\n };\n };\n\n function handleFocusIn(){\n if (menu.current) {\n if (!mobileMenuOpen) return;\n const focusableEls = getFocusableElements(menu.current).selectors.visible;\n \n if (focusableEls.length <= 0) return;\n const firstEl = focusableEls[0];\n (firstEl as HTMLElement)?.focus();\n }\n \n }\n\n const trapFocus = (event: KeyboardEvent) => {\n if(menu.current && mobileMenuOpen) {\n const focusableEls = getFocusableElements(menu.current).selectors.visible;\n const firstEl = focusableEls[0];\n const lastEl = focusableEls[focusableEls.length - 1];\n\n if (event.key === 'Tab') {\n if (event.shiftKey && document.activeElement === firstEl) {\n (lastEl as HTMLElement)?.focus();\n event.preventDefault();\n } else if (!event.shiftKey && document.activeElement === lastEl) {\n (firstEl as HTMLElement)?.focus();\n event.preventDefault();\n }\n }\n }\n \n }\n\n useEffect(() => {\n document.addEventListener('keyup', handleMenuClose);\n document.addEventListener('mousedown', handleClick);\n if(mobileMenuOpen) {\n handleFocusIn();\n } else {\n closeMobileMenu()\n }\n \n if (menu.current) {\n menu.current.addEventListener('keydown', (evt) => trapFocus(evt));\n }\n \n return () => {\n document.removeEventListener('keyup', handleMenuClose);\n document.addEventListener('mousedown', handleClick);\n if (menu.current) {\n menu.current.removeEventListener('keydown', trapFocus);\n }\n }\n\n }, [mobileMenuOpen]);\n\n return (\n <HeaderContext.Provider value={{\n mobileMenuOpen,\n setMobileMenuOpen,\n menuRef: menu,\n isMobile: mobileMax,\n onDark: onDark,\n }}>\n <header aria-label=\"Site header\" className={`dkan-c-header dkan-c-header--${mobileMax ? 'mobile' : 'desktop'}`}>\n {topNav && topNav}\n <div className=\"dkan-c-main-navigation print-margin-left--2\">\n <div className=\"ds-l-container\">\n <div className=\"dkan-c-header--wrapper ds-l-row ds-u-align-items--center\">\n { children }\n </div>\n </div>\n </div>\n </header>\n </HeaderContext.Provider>\n );\n};\n\nexport default Header;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, ExternalLinkIcon } from '@cmsgov/design-system';\nimport NavLink from '../../components/NavLink';\n\nconst Footer = ({\n links,\n showEmail = true,\n emailTitle = 'Get Email Updates',\n emailBody = 'Sign up to get the latest information from CMS by choosing the topics and frequency of emails that are best for you.',\n emailLink = '',\n emailButton = 'Sign up for email updates',\n socialMediaLinks = null,\n hhsLogo,\n cmsLogo,\n trademarkContent = (\n <div>\n <p>\n A federal government website managed and paid for by the U.S. Centers for Medicare &\n Medicaid Services.\n </p>\n <p className=\"ds-u-padding-bottom--2\">7500 Security Boulevard, Baltimore, MD 21244</p>\n </div>\n ),\n}) => {\n const { footerOpenDataToolLinks, footerAdditionalResourcesLinks, footerUtilityLinks } = links;\n return (\n <footer className=\"dc-c-footer\">\n {showEmail && (\n <div className=\"dc-c-emailupdates\">\n <div className=\"ds-l-container ds-u-padding-y--5\">\n <div className=\"ds-l-row ds-u-align-items--center\">\n <div className=\"ds-l-md-col--8\">\n <h2 className=\"ds-text-heading--lg\">{emailTitle}</h2>\n <p className=\"ds-u-padding-bottom--2\">{emailBody}</p>\n </div>\n <div className=\"ds-l-md-col--4 ds-u-padding-left--7\">\n <Button onDark variation=\"solid\" href={emailLink}>\n {emailButton}\n </Button>\n </div>\n </div>\n </div>\n </div>\n )}\n <div className=\"dc-c-footer--middle-container\">\n <div className=\"ds-l-container\">\n <div className=\"ds-l-row\">\n <div className=\"dc-c-footer__resources ds-l-md-col--7 ds-l-sm-col--12 ds-u-padding-top--7 ds-u-padding-bottom--3\">\n <div className=\"ds-u-display--flex ds-u-display--flex ds-u-sm-flex-direction--row ds-u-flex-direction--column\">\n <div className=\"ds-u-margin-right--6 ds-u-margin-bottom--3 ds-u-sm-margin-bottom--0\">\n <h2 className=\"ds-text-heading--sm dc-footer--heading ds-u-margin-bottom--2\">\n Open data tools\n </h2>\n <ul className=\"ds-u-font-size--sm\">\n {footerOpenDataToolLinks.map((link) => (\n <li className=\"ds-u-margin-bottom--1\" key={link.id}>\n <NavLink link={link} className=\"dc-menu-item\" />\n </li>\n ))}\n </ul>\n </div>\n <div>\n <h2 className=\"ds-text-heading--sm dc-footer--heading ds-u-margin-bottom--2\">\n Additional resources\n </h2>\n <ul className=\"ds-u-font-size--sm\">\n {footerAdditionalResourcesLinks\n .filter((link) => {\n const noOnClick = Object.keys(link).findIndex((l) => l === 'onClick');\n if (noOnClick === -1 || (link.onClick && link.dataTag)) {\n return link;\n }\n })\n .map((link) => {\n if (link.onClick && link.dataTag) {\n return (\n <li className=\"ds-u-margin-bottom--1\" key={link.id}>\n <a\n href={link.url}\n {...{\n ['data-' + link.dataTag.name]: link.dataTag.value,\n }}\n onClick={link.onClick}\n >\n {link.label}\n </a>\n </li>\n );\n }\n return (\n <li className=\"ds-u-margin-bottom--1\" key={link.id}>\n <NavLink link={link} className=\"dc-menu-item\" />\n </li>\n );\n })}\n </ul>\n </div>\n </div>\n </div>\n <div className=\"dc-c-footer__cms-information ds-l-md-col--5 ds-l-sm-col--12 ds-u-lg-padding-left--7 ds-u-padding-y--7\">\n <div className=\"ds-u-font-size--sm\">\n <div>\n <a\n href=\"https://www.hhs.gov/\"\n target=\"_blank\"\n title=\"U.S. Department of Health & Human Services\"\n >\n <img className=\"dc-c-footer__logo\" src={hhsLogo} alt=\"HHS Logo\" />\n <span className=\"ds-u-visibility--screen-reader\">opens in new window</span>\n </a>\n <a\n className=\"ds-u-margin-left--4\"\n target=\"_blank\"\n href=\"https://www.cms.gov/\"\n title=\"CMS.gov Centers for Medicare & Medicaid Services\"\n >\n <img className=\"dc-c-footer__logo\" src={cmsLogo} alt=\"CMS Logo\" />\n <span className=\"ds-u-visibility--screen-reader\">opens in new window</span>\n </a>\n </div>\n {trademarkContent}\n {socialMediaLinks && (\n <ul className=\"ds-u-display--flex ds-u-flex-direction--row\">\n {socialMediaLinks.facebook && socialMediaLinks.facebook.url && (\n <li className=\"ds-u-margin-right--1\">\n <a href={socialMediaLinks.facebook.url}>\n <span className=\"dc-c-footer--svg-icon\">\n <svg\n className=\"svg-inline--fa fa-circle fa-w-16\"\n aria-hidden=\"true\"\n focusable=\"false\"\n data-prefix=\"fas\"\n data-icon=\"circle\"\n role=\"presentation\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 512 512\"\n data-fa-i2svg=\"\"\n >\n <path d=\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\"></path>\n </svg>\n <svg\n title=\"Facebook Icon\"\n className=\"svg-inline--fa fa-facebook-f fa-w-10 fa-inverse\"\n data-fa-transform=\"shrink-3.5\"\n aria-labelledby=\"svg-inline--fa-title-iRCARP7h6Kp3\"\n data-prefix=\"fab\"\n data-icon=\"facebook-f\"\n role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 320 512\"\n data-fa-i2svg=\"\"\n >\n <title id=\"svg-inline--fa-title-iRCARP7h6Kp3\">\n {socialMediaLinks.facebook.title\n ? socialMediaLinks.facebook.title\n : 'CMS Facebook'}\n </title>\n <g transform=\"translate(160 256)\">\n <g transform=\"translate(0, 0) scale(0.78125, 0.78125) rotate(0 0 0)\">\n <path\n d=\"M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z\"\n transform=\"translate(-160 -256)\"\n ></path>\n </g>\n </g>\n </svg>\n </span>\n </a>\n </li>\n )}\n {socialMediaLinks.twitter && socialMediaLinks.twitter.url && (\n <li className=\"ds-u-margin-right--1\">\n <a href={socialMediaLinks.twitter.url}>\n <span className=\"dc-c-footer--svg-icon\">\n <svg\n className=\"svg-inline--fa fa-circle fa-w-16\"\n aria-hidden=\"true\"\n focusable=\"false\"\n data-prefix=\"fas\"\n data-icon=\"circle\"\n role=\"presentation\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 512 512\"\n data-fa-i2svg=\"\"\n >\n <path d=\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\"></path>\n </svg>\n <svg\n title=\"Twitter Icon\"\n className=\"svg-inline--fa fa-twitter fa-w-16 fa-inverse\"\n data-fa-transform=\"shrink-3.5\"\n aria-labelledby=\"svg-inline--fa-title-4z03ITiPPTVF\"\n data-prefix=\"fab\"\n data-icon=\"twitter\"\n role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 512 512\"\n data-fa-i2svg=\"\"\n >\n <title id=\"svg-inline--fa-title-4z03ITiPPTVF\">\n {socialMediaLinks.twitter.title\n ? socialMediaLinks.twitter.title\n : 'CMS Twitter'}\n </title>\n <g transform=\"translate(256 256)\">\n <g transform=\"translate(0, 0) scale(0.78125, 0.78125) rotate(0 0 0)\">\n <path\n d=\"M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z\"\n transform=\"translate(-256 -256)\"\n ></path>\n </g>\n </g>\n </svg>\n </span>\n </a>\n </li>\n )}\n {socialMediaLinks.linkedin && socialMediaLinks.linkedin.url && (\n <li className=\"ds-u-margin-right--1\">\n <a href={socialMediaLinks.linkedin.url}>\n <span className=\"dc-c-footer--svg-icon\">\n <svg\n className=\"svg-inline--fa fa-circle fa-w-16\"\n aria-hidden=\"true\"\n focusable=\"false\"\n data-prefix=\"fas\"\n data-icon=\"circle\"\n role=\"presentation\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 512 512\"\n data-fa-i2svg=\"\"\n >\n <path d=\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\"></path>\n </svg>\n <svg\n title=\"LinkedIn Icon\"\n className=\"svg-inline--fa fa-linkedin-in fa-w-14 fa-inverse\"\n data-fa-transform=\"shrink-3.5\"\n aria-labelledby=\"svg-inline--fa-title-Nm2qsuSKvuRZ\"\n data-prefix=\"fab\"\n data-icon=\"linkedin-in\"\n role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 448 512\"\n data-fa-i2svg=\"\"\n >\n <title id=\"svg-inline--fa-title-Nm2qsuSKvuRZ\">\n {socialMediaLinks.linkedin.title\n ? socialMediaLinks.linkedin.title\n : 'CMS LinkedIn'}\n </title>\n <g transform=\"translate(224 256)\">\n <g transform=\"translate(0, 0) scale(0.78125, 0.78125) rotate(0 0 0)\">\n <path\n d=\"M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z\"\n transform=\"translate(-224 -256)\"\n ></path>\n </g>\n </g>\n </svg>\n </span>\n </a>\n </li>\n )}\n {socialMediaLinks.youtube && socialMediaLinks.youtube.url && (\n <li>\n <a href={socialMediaLinks.youtube.url}>\n <span className=\"dc-c-footer--svg-icon\">\n <svg\n className=\"svg-inline--fa fa-circle fa-w-16\"\n aria-hidden=\"true\"\n focusable=\"false\"\n data-prefix=\"fas\"\n data-icon=\"circle\"\n role=\"presentation\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 512 512\"\n data-fa-i2svg=\"\"\n >\n <path d=\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\"></path>\n </svg>\n <svg\n title=\"youTube Icon\"\n className=\"svg-inline--fa fa-youtube fa-w-18 fa-inverse\"\n data-fa-transform=\"shrink-3.5\"\n aria-labelledby=\"svg-inline--fa-title-youtube\"\n data-prefix=\"fab\"\n data-icon=\"youtube\"\n role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 576 512\"\n data-fa-i2svg=\"\"\n >\n <title id=\"svg-inline--fa-title-youtube\">\n {socialMediaLinks.youtube.title\n ? socialMediaLinks.youtube.title\n : 'CMS youtube'}\n </title>\n <path\n fill=\"currentColor\"\n d=\"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z\"\n ></path>\n </svg>\n </span>\n </a>\n </li>\n )}\n </ul>\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n <div className=\"dc-c-footer__utility ds-l-container ds-u-padding-y--2 ds-u-font-size--sm\">\n <div className=\"ds-l-row\">\n <div className=\"ds-l-col--12 ds-u-padding-y--3\">\n <ul className=\"ds-u-padding--0 ds-u-display--flex ds-u-lg-flex-direction--row ds-u-flex-direction--column\">\n {footerUtilityLinks.map((link) => (\n <li key={link.id}>\n <a href={link.url} className=\"ds-u-margin-right--2\">\n {link.label}\n {link?.target === '_blank' && (\n <ExternalLinkIcon className=\"ds-u-margin-left--05 ds-c-external-link-icon\" />\n )}\n </a>\n </li>\n ))}\n </ul>\n </div>\n </div>\n </div>\n </footer>\n );\n};\n\nFooter.propTypes = {\n showEmail: PropTypes.bool,\n emailTitle: PropTypes.string,\n emailBody: PropTypes.string,\n emailLink: PropTypes.string,\n emailButton: PropTypes.string,\n links: PropTypes.shape({\n footerOpenDataToolLinks: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n label: PropTypes.string,\n url: PropTypes.string,\n target: PropTypes.string,\n })\n ),\n footerAdditionalResourcesLinks: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n label: PropTypes.string,\n url: PropTypes.string,\n target: PropTypes.string,\n })\n ),\n footerUtilityLinks: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n label: PropTypes.string,\n url: PropTypes.string,\n target: PropTypes.string,\n })\n ),\n }).isRequired,\n socialMediaLinks: PropTypes.shape({\n facebook: PropTypes.shape({\n title: PropTypes.string,\n url: PropTypes.string,\n }),\n twitter: PropTypes.shape({\n title: PropTypes.string,\n url: PropTypes.string,\n }),\n linkedin: PropTypes.shape({\n title: PropTypes.string,\n url: PropTypes.string,\n }),\n }),\n hhsLogo: PropTypes.string.isRequired,\n cmsLogo: PropTypes.string.isRequired,\n};\n\nexport default Footer;\n","import React, { MouseEventHandler } from 'react';\nimport { NavLink as RRDNavLink } from 'react-router-dom';\nimport { ExternalLinkIcon } from '@cmsgov/design-system';\nimport './NavLink.scss';\n\ntype NavLinkPropTypes = {\n link: {\n label: string,\n url: string,\n target?: '_blank' | null\n },\n className: string | null,\n wrapLabel: boolean,\n clickHandler?: null | Function\n}\n\nconst NavLink = ({ link, className = null, wrapLabel = false, clickHandler } : NavLinkPropTypes) => {\n const innerHtml = wrapLabel ? <span>{link.label}</span> : link.label;\n\n return (\n <RRDNavLink\n className={({ isActive }) => (isActive ? `dc-c-active-link ${className}` : `${className}`)}\n to={link.url}\n onClick={clickHandler ? clickHandler as MouseEventHandler : undefined}\n >\n {innerHtml}\n {link?.target === '_blank' &&\n <ExternalLinkIcon className='ds-u-margin-left--05 ds-c-external-link-icon' />\n }\n </RRDNavLink>\n );\n // }\n};\n\nexport default NavLink;\n","import React, { PropsWithChildren } from 'react';\nimport { Alert } from '@cmsgov/design-system';\nimport DocumentationTable from './DocumentationTable.jsx';\nimport { documentation } from './documentationData.js';\n\ntype DocumentationType = {\n id: string,\n application: string,\n notes: string,\n link: string,\n linkText: string,\n screenReaderOnlyText: string\n};\n\ntype SpecsAndLimitsProps = {\n documentationList: Array<DocumentationType>\n}\n\nconst SpecsAndLimits = (props: PropsWithChildren<SpecsAndLimitsProps>) => {\n const {\n documentationList = documentation,\n children\n } = props;\n \n const defaultContent = (\n <p>\n Some datasets are extremely large and may be difficult to download and/or cause\n computer performance issues. The Centers for Medicare and Medicaid Services (CMS)\n recommends using WinZip, WinRAR, or 7-Zip for file decompression.\n </p>\n );\n\n return (\n <section className=\"ds-u-padding-top--3 ds-l-container\">\n <div className=\"ds-l-md-col--12\">\n <h1 className=\"ds-text-heading--5xl ds-u-margin-bottom--4\">Software Specs and Limits</h1>\n <div className=\"dc-page-content about ds-u-measure--wide ds-u-margin-top--6\">\n { children ? children : defaultContent }\n <p>This documentation will assist users in importing the data.</p>\n <Alert heading=\"Notice\" className={'ds-u-margin-top--6'}>\n <p className=\"ds-c-alert__text\">\n Be aware of the file size and row limitations of the software you are attempting to\n import the files into. For information on limitations, look at the software's\n official documentation.\n </p>\n </Alert>\n </div>\n <section className={'ds-u-margin-top--4 ds-l-row'}>\n <div className={'ds-l-col--12'}>\n <h2 className=\"ds-text-heading--2xl ds-text-heading--2xl\">Documentation by Application</h2>\n <div className={'ds-u-margin-top--4'}>\n <DocumentationTable data={documentationList} />\n </div>\n </div>\n </section>\n </div>\n </section>\n)};\n\nexport default SpecsAndLimits;\n","import React from 'react';\nimport { Table, TableHead, TableBody, TableRow, TableCell } from '@cmsgov/design-system';\n\nconst DocumentationTable = (props) => {\n const { data } = props;\n return (\n <>\n <Table stackable className={'ds-c-table'}>\n <TableHead>\n <TableRow>\n <TableCell key={'Application'} id={'application'} headers={'Application'}>\n Application\n </TableCell>\n <TableCell key={'Notes'} id={'notes'} headers={'Notes'}>\n Notes\n </TableCell>\n <TableCell key={'Links'} id={'links'} headers={'Links'}>\n Links\n </TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {data.map((d) => (\n <TableRow key={`${d.id}-row`}>\n <TableCell key={d.id} id={d.id} stackedTitle=\"Application\" headers={'Application'}>\n {d.application}\n </TableCell>\n <TableCell key={`${d.id}-notes`} id={d.id} stackedTitle=\"Notes\" headers={'Notes'}>\n {d.notes}\n </TableCell>\n <TableCell key={`${d.id}-link`} id={d.id} stackedTitle=\"Links\" headers={'Links'}>\n <a className=\"dkan-newtab\" href={d.link}>\n {d.linkText}\n <span className=\"ds-u-visibility--screen-reader\"> {d.screenReaderOnlyText}</span>\n </a>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </>\n );\n};\n\nexport default DocumentationTable;\n","export const documentation = [\n {\n id: 'excel',\n application: 'Microsoft Excel',\n notes: 'Official size limitations for Microsoft Excel',\n link: 'https://support.microsoft.com/en-us/office/excel-specifications-and-limits-1672b34d-7043-467e-8e27-269d656771c3?redirectSourcePath=%252fen-us%252farticle%252fExcel-specifications-and-limits-ca36e2dc-1f09-4620-b726-67c00b05040f',\n linkText: 'Excel Specifications and Limits',\n screenReaderOnlyText:'on microsoft.com',\n },\n {\n id: 'access',\n application: 'Microsoft Access',\n notes: 'Official size limitations for Microsoft Access',\n link: 'https://support.microsoft.com/en-us/office/access-specifications-0cf3c66f-9cf2-4e32-9568-98c1025bb47c?ui=en-us&rs=en-us&ad=us',\n linkText: 'Access 2016 Specifications',\n screenReaderOnlyText:'on microsoft.com',\n },\n {\n id: 'oracle-sql-developer',\n application: 'Oracle SQL Developer',\n notes: 'Oracle SQL Developer tool',\n link: 'https://www.oracle.com/database/sqldeveloper/',\n linkText: 'Oracle SQL Developer Overview',\n screenReaderOnlyText:'on oracle.com',\n },\n {\n id: 'oracle-database',\n application: 'Oracle Database',\n notes: 'Oracle Database official size limitations',\n link: 'https://docs.oracle.com/cd/B28359_01/server.111/b28320/limits002.htm#i287915',\n linkText: 'Oracle Physical Database Limits',\n screenReaderOnlyText:'on oracle.com',\n },\n {\n id: 'oracle-sql-client-tools',\n application: 'Oracle SQL Client Tools',\n notes: 'Oracle SQL Client Tools',\n link: 'https://www.oracle.com/database/technologies/oracle-database-software-downloads.html',\n linkText: 'Oracle SQL Client',\n screenReaderOnlyText:'on oracle.com',\n },\n];\n","import { useEffect } from 'react';\nimport DataTableContext from '../Dataset/DataTableContext';\nimport DataTableStateWrapper from '../../components/DatasetTableTab/DataTableStateWrapper';\nimport qs from 'qs';\nimport '../Dataset/dataset.scss';\nimport useMetastoreDataset from '../../services/useMetastoreDataset';\nimport useDatastore from '../../services/useDatastore';\nimport { getFormatType } from '../../utilities/format';\nimport { ColumnType, DistributionType, ResourceType } from '../../types/dataset';\n\nexport default function StoredQueryPage({\n id,\n rootUrl,\n customColumns,\n query,\n distributionIndex = 0,\n defaultPageSize = 25,\n disableTableControls = false,\n}: {\n id: string;\n rootUrl: string;\n customColumns?: Array<ColumnType>;\n query?: string;\n distributionIndex?: number;\n defaultPageSize?: number;\n disableTableControls?: boolean;\n}) {\n // TODO parse from stored filter\n const options = {\n conditions: query\n ? JSON.parse(query).map(\n ({ column, operator, ...rest }: { column: string; operator: string }) => ({\n property: column,\n operator:\n operator === 'is'\n ? '='\n : operator === 'is not'\n ? '<>'\n : operator === 'or'\n ? 'in'\n : operator,\n ...rest,\n })\n )\n : [],\n };\n\n const { dataset, isPending } = useMetastoreDataset(id, rootUrl);\n\n let distribution = {} as DistributionType;\n let distributions = dataset.distribution ? dataset.distribution : [];\n if (distributions.length) {\n distribution = distributions[distributionIndex];\n }\n\n const resource = useDatastore('', rootUrl, {\n ...options,\n limit: defaultPageSize,\n }) as ResourceType;\n\n useEffect(() => {\n const localFileFormat = getFormatType(distribution);\n if (localFileFormat === 'csv') {\n resource.setResource(distribution.identifier);\n }\n }, [distribution]);\n\n return (\n <DataTableContext.Provider\n value={{\n id: id,\n resource: resource,\n distribution: distribution,\n rootUrl: rootUrl,\n customColumns: customColumns,\n datasetTableControls: !disableTableControls,\n }}\n >\n <DataTableStateWrapper\n showCopyLinkButton={false}\n showDownloadFilteredDataButton={false}\n showDownloadFullDataButton={false}\n showStoredQueryDownloadButton={true}\n />\n </DataTableContext.Provider>\n );\n}\n","import React, { useState, useEffect } from 'react';\nimport useMetastoreDataset from '../../services/useMetastoreDataset';\nimport PageNotFound from '../PageNotFound';\nimport FilteredResourceBody from './FilteredResourceBody';\nimport withQueryProvider from '../../utilities/QueryProvider/QueryProvider';\nimport \"./filtered-resource.scss\";\n\nconst FilteredResource = ({\n id,\n dist_id,\n location,\n apiDocPage,\n customColumns,\n setDatasetTitle,\n columnSettings,\n columnWidths,\n customTitle,\n customDescription,\n rootUrl,\n updateAriaLive\n}) => {\n const [ready, setReady] = useState(false);\n const [error, setError] = useState(false);\n const { dataset } = useMetastoreDataset(id, rootUrl);\n const distIndex = dist_id === 'data' ? 0 : dist_id;\n useEffect(() => {\n if (dataset.error) {\n setError(true);\n }\n if (dataset.distribution && dataset.distribution.length) {\n setReady(true);\n if (setDatasetTitle) {\n setDatasetTitle(dataset.title);\n }\n if (!dataset.distribution[distIndex]) {\n setError(true);\n }\n }\n }, [dataset.distribution, dataset.error, distIndex]);\n const notFoundContent = (\n <div className=\"ds-u-padding-top--3\">\n <h1 className=\"ds-text-heading--4xl\">Error: Dataset not found</h1>\n <p>\n We're sorry, but there is no dataset ID that matches your entry. You may have been directed\n here because:\n </p>\n <ol>\n <li>The address you typed contains a typo;</li>\n <li>The requested dataset no longer exists.</li>\n </ol>\n <p>\n <span className=\"ds-u-font-weight--bold\">Note:</span> If you were using a bookmark, please\n reset it once you find the correct dataset.\n </p>\n </div>\n );\n\n return (\n <>\n {error ? (\n <PageNotFound content={notFoundContent} />\n ) : (\n <>\n {ready && (\n <FilteredResourceBody\n id={id}\n dataset={dataset}\n distIndex={distIndex}\n location={location}\n apiDocPage={apiDocPage}\n \n customColumns={customColumns ? customColumns : []}\n columnSettings={columnSettings}\n columnWidths={columnWidths}\n customTitle={customTitle}\n customDescription={customDescription}\n rootUrl={rootUrl}\n updateAriaLive={updateAriaLive}\n />\n )}\n </>\n )}\n </>\n );\n};\n\nexport default withQueryProvider(FilteredResource);\n","import React, { useContext, useEffect, useRef } from 'react';\nimport qs from 'qs';\nimport { Link } from 'react-router-dom';\nimport SwaggerUI from 'swagger-ui-react';\nimport useDatastore from '../../services/useDatastore';\nimport {Spinner } from '@cmsgov/design-system';\nimport ResourceHeader from '../../components/ResourceHeader';\nimport ResourcePreview from '../../components/ResourcePreview';\nimport ResourceFooter from '../../components/ResourceFooter';\nimport { buildCustomColHeaders } from './functions';\nimport QueryBuilder from './QueryBuilder';\nimport TransformedDate from '../../components/TransformedDate';\nimport DatasetDescription from '../../components/DatasetDescription';\nimport 'swagger-ui-react/swagger-ui.css';\nimport DataTableContext from '../Dataset/DataTableContext';\nimport { acaToParams } from '../../utilities/aca';\nimport { ACAContext } from '../../utilities/ACAContext';\n\nconst FilteredResourceBody = ({\n id,\n dataset,\n distIndex,\n location,\n customColumns,\n columnSettings,\n columnWidths,\n customTitle,\n customDescription,\n rootUrl,\n updateAriaLive\n}) => {\n const [tablePadding, setTablePadding] = React.useState('ds-u-padding-y--1');\n let apiDocs = useRef();\n let distribution = {};\n let distribution_array = dataset.distribution ? dataset.distribution : [];\n if (distribution_array.length) {\n distribution = distribution_array.find(\n (dist) => dist.identifier === distribution_array[distIndex].identifier\n );\n }\n const options = location.search\n ? { ...qs.parse(location.search, { ignoreQueryPrefix: true }) }\n : { conditions: [] };\n const resource = useDatastore(\n '',\n rootUrl,\n {\n ...options,\n limit: 25,\n },\n {\n datasetID: id\n }\n );\n\n useEffect(() => {\n if (distribution.identifier) {\n resource.setResource(distribution.identifier);\n }\n }, [distribution]);\n const downloadUrl = `${\n rootUrl\n }/datastore/query/${id}/${distIndex}/download?${qs.stringify(\n { conditions: resource.conditions },\n { encode: true }\n )}&format=csv`;\n const pageTitle =\n distribution.data.title && distribution.data.title.toLowerCase() !== 'csv'\n ? distribution.data.title\n : dataset.title;\n\n const {ACA} = useContext(ACAContext);\n\n return (\n <section className=\"ds-l-container ds-u-padding-bottom--3 ds-u-margin-bottom--2\">\n <div className=\"ds-l-row\">\n {Object.keys(distribution).length && (\n <>\n <div className={'ds-l-md-col--9'}>\n <Link to={`/dataset/${id}`} className=\"ds-u-padding-y--4 ds-u-display--block\">\n Back to {dataset.title}\n </Link>\n </div>\n <div className={'ds-l-md-col--9'}>\n <h1 className=\"ds-text-heading--3xl\">{customTitle ? customTitle : pageTitle}</h1>\n </div>\n <div className={'ds-l-md-col--12 ds-u-margin-y--1 ds-u-text-align--right'}>\n <p className=\"ds-u-margin--0\">Updated <TransformedDate date={dataset.modified} /></p>\n </div>\n <div className={'ds-l-md-col--9'}>\n <DatasetDescription\n distribution={distribution}\n dataset={dataset}\n resource={resource}\n customDescription={customDescription}\n updateAriaLive={updateAriaLive}\n />\n </div>\n <div className={'ds-l-md-col--12'}>\n {Object.keys(resource).length && resource.columns && Object.keys(resource.schema).length ? (\n <QueryBuilder\n resource={resource}\n id={distribution.identifier}\n customColumns={customColumns}\n setOffset={resource.setOffset}\n />\n ) : ''}\n </div>\n {Object.keys(resource).length && resource.columns && Object.keys(resource.schema).length ? (\n <DataTableContext.Provider value={{\n id: id,\n resource: resource,\n distribution: distribution,\n rootUrl: rootUrl,\n customColumns: buildCustomColHeaders(\n customColumns,\n resource.columns,\n resource.schema[distribution_array[distIndex].identifier]\n ),\n }}>\n <div className={'ds-l-md-col--12'}>\n <ResourceHeader\n includeDensity={true}\n setTablePadding={setTablePadding}\n resource={resource}\n downloadUrl={downloadUrl}\n tablePadding={tablePadding}\n includeDownload\n />\n <ResourcePreview\n id={distribution.identifier}\n tablePadding={tablePadding}\n columnSettings={columnSettings}\n columnWidths={columnWidths}\n />\n <ResourceFooter resource={resource} />\n </div>\n </DataTableContext.Provider>\n ) : (\n <div className={'ds-l-md-col--12'}>\n <Spinner role=\"status\" aria-valuetext=\"Resource loading\" />\n </div>\n )}\n {dataset.identifier && (\n <div className={'ds-l-md-col--12'} ref={apiDocs}>\n <h2 className=\"ds-text-heading--2xl ds-u-margin-y--2\">Try the API</h2>\n <SwaggerUI\n url={`${rootUrl}/metastore/schemas/dataset/items/${\n dataset.identifier\n }/docs?${qs.stringify(acaToParams({}, ACA))}`}\n docExpansion={'list'}\n defaultModelsExpandDepth={-1}\n />\n </div>\n )}\n </>\n )}\n </div>\n </section>\n );\n};\n\nexport default FilteredResourceBody;\n","import React, { useState } from 'react';\nimport qs from 'qs';\nimport { AccordionItem, Button } from '@cmsgov/design-system';\nimport QueryRow from './QueryRow';\nimport QueryTitle from './QueryTitle';\nimport { buildOperatorOptions } from './functions';\nimport \"./query-builder.scss\";\n\nfunction updateQueryForDatastore(condition) {\n let cond = condition;\n delete cond.key;\n if (cond.operator === '=' || cond.operator === '<>') {\n if (Array.isArray(cond.value)) {\n cond.value = cond.value.join();\n }\n cond.value = cond.value.replace(/(^\\%+|\\%+$)/gm, '');\n }\n if (cond.operator.toLowerCase() === 'like') {\n if (Array.isArray(cond.value)) {\n cond.value = cond.value.join();\n }\n const cleanedValue = cond.value.replace(/(^\\%+|\\%+$)/gm, '');\n cond.value = `%${cleanedValue}%`;\n }\n if (cond.operator.toLowerCase() === 'in') {\n if (!Array.isArray(cond.value)) {\n cond.value = cond.value.split(',');\n }\n }\n if (Array.isArray(cond.value)) {\n cond.value = cond.value.map((v) => v.trim().replace(/(^\\%+|\\%+$)/gm, ''));\n }\n return cond;\n}\n\nconst QueryBuilder = ({ resource, id, customColumns, setOffset }) => {\n const { conditions, schema, setConditions } = resource;\n const fields = Object.keys(schema[id].fields);\n\n const [queryConditions, setQueryConditions] = useState([]);\n const [titleConditions, setTitleConditions] = useState([]); // Add use effect to load conditions on first load if needed\n const [conditionsChanged, setConditionsChanged] = useState(false);\n\n const addCondition = (condition) => {\n if (Array.isArray(condition)) {\n const keyedConditions = condition.map((oc) => ({\n ...oc,\n key: Date.now() + oc.value + oc.property,\n }));\n setQueryConditions(keyedConditions);\n } else {\n setQueryConditions([\n ...queryConditions,\n {\n property: fields[0],\n value: '',\n operator: buildOperatorOptions(schema[id].fields[fields[0]].mysql_type)[0].value,\n key: Date.now(),\n },\n ]);\n }\n };\n\n React.useEffect(() => {\n addCondition(conditions);\n setTitleConditions(conditions);\n }, []);\n\n const propertyOptions = fields.map((f) => {\n if (schema[id].fields[f].description) {\n return { label: schema[id].fields[f].description, value: f };\n }\n return { label: f, value: f };\n });\n\n const submitConditions = (e) => {\n e.preventDefault();\n const submitConditions = queryConditions\n .filter((oc) => {\n if (oc.property) {\n return oc;\n }\n return false;\n })\n .map((oc) => {\n let cond = Object.assign({}, oc);\n return updateQueryForDatastore(cond);\n });\n setConditions(submitConditions);\n setTitleConditions(queryConditions.map((oc) => Object.assign({}, oc)));\n setConditionsChanged(false);\n setOffset(0);\n\n const url = new URL(window.location);\n const urlString = qs.stringify(\n { conditions: submitConditions },\n { encodeValuesOnly: true, addQueryPrefix: true }\n );\n window.history.pushState({}, '', `${url.origin}${url.pathname}${urlString}`);\n };\n\n const updateCondition = (index, key, value) => {\n let newConditions = [...queryConditions];\n newConditions[index][key] = value;\n setQueryConditions(newConditions);\n setConditionsChanged(true);\n };\n\n const removeCondition = (index) => {\n let newConditions = queryConditions.map((oc) => Object.assign({}, oc));\n newConditions.splice(index, 1);\n setQueryConditions(newConditions);\n setConditionsChanged(true);\n };\n\n return (\n <div className=\"dc-query-builder ds-u-margin-bottom--3\">\n <div className=\"ds-c-accordion ds-c-accordion--bordered\">\n <AccordionItem\n heading={\n <QueryTitle\n schema={schema[id]}\n conditions={titleConditions}\n customColumns={customColumns}\n />\n }\n defaultOpen={false}\n >\n <form onSubmit={(e) => submitConditions(e)}>\n <div>\n {queryConditions.map((qf, index) => (\n <QueryRow\n key={qf.key}\n id={id}\n schema={schema}\n condition={qf}\n index={index}\n propertyOptions={propertyOptions}\n update={updateCondition}\n remove={removeCondition}\n />\n ))}\n </div>\n\n <div className=\"dc-query-bulder--form-buttons ds-u-padding-y--2\">\n <Button variation=\"transparent\" onClick={() => addCondition(null)}>\n + Add filter\n </Button>\n <Button disabled={!conditionsChanged} className=\"ds-u-float--right\" type=\"submit\">\n Apply filters\n </Button>\n </div>\n </form>\n </AccordionItem>\n </div>\n </div>\n );\n};\n\nexport default QueryBuilder;\n","import React, { useState, useEffect } from 'react';\nimport DatePicker from 'react-datepicker';\nimport { useMediaQuery } from 'react-responsive';\nimport { Button, Dropdown, TextField } from '@cmsgov/design-system';\nimport { buildOperatorOptions, convertUTCToLocalDate, cleanText } from './functions';\nimport 'react-datepicker/dist/react-datepicker.css';\n\nfunction getStartDate(condition, schema, id) {\n if (schema[id].fields[condition.property].mysql_type === 'date') {\n const newDate = new Date(condition.value);\n if (newDate instanceof Date && !isNaN(newDate)) {\n return newDate;\n }\n }\n return new Date();\n}\n\nconst QueryRow = ({ id, condition, index, update, remove, propertyOptions, schema }) => {\n const sm = useMediaQuery({ minWidth: 0, maxWidth: 544 });\n const [operator, setOperator] = useState(condition.operator);\n const [property, setProperty] = useState(condition.property);\n const [value, setValue] = useState(condition.value);\n const [startDate, setStartDate] = React.useState(getStartDate(condition, schema, id));\n useEffect(() => {\n if (property !== condition.property) {\n if (property) {\n update(index, 'property', property);\n } else {\n update(index, 'property', '');\n }\n if (schema[id].fields[condition.property].mysql_type === 'date') {\n if(!value) {\n setValue(startDate.toJSON().slice(0, 10));\n }\n }\n }\n }, [property, value, startDate, schema, id, condition]);\n\n useEffect(() => {\n if (operator !== condition.operator) {\n if (operator) {\n update(index, 'operator', operator);\n } else {\n update(index, 'operator', '');\n }\n }\n }, [operator]);\n\n useEffect(() => {\n if (value !== condition.value) {\n if (value) {\n update(index, 'value', value);\n } else {\n update(index, 'value', '');\n }\n }\n }, [value]);\n\n return (\n <fieldset className=\"ds-u-display--flex ds-u-flex-wrap--wrap ds-u-justify-content--between ds-u-md-justify-content--end ds-u-align-items--center\">\n <Dropdown\n options={propertyOptions}\n value={property}\n label=\"Property\"\n name={`${condition.key}_property`}\n onChange={(e) => setProperty(e.target.value)}\n className={\"ds-l-md-col--5 ds-l-lg-col--4 ds-l-sm-col--8 ds-l-col--12 ds-u-padding--0 ds-u-md-padding-right--2 ds-u-margin-bottom--0 ds-u-md-margin-bottom--2\"}\n />\n <Dropdown\n options={buildOperatorOptions(schema[id].fields[property].mysql_type)}\n value={operator}\n label=\"Operator\"\n name={`${condition.key}_operator`}\n onChange={(e) => setOperator(e.target.value)}\n className={\"ds-l-sm-col--3 ds-l-md-col--2 ds-l-col--12 ds-u-padding--0 ds-u-md-padding-right--2 ds-u-margin-bottom--0 ds-u-md-margin-bottom--2\"}\n />\n {schema[id].fields[property].mysql_type === 'date' ? (\n <div className=\"ds-l-md-col--5 ds-l-lg-col--4 ds-l-sm-col--8 ds-l-col--12 ds-u-padding--0 ds-u-sm-padding-right--2 ds-u-md-padding-right--0 ds-u-lg-padding-right--2 ds-u-margin-bottom--2\">\n <label\n className=\"ds-c-label\"\n htmlFor={`${condition.key}_date_value`}\n id={`${condition.key}_date_value-label`}\n >\n <span>Value</span>\n </label>\n <DatePicker\n name={`${condition.key}_date_value`}\n selected={convertUTCToLocalDate(startDate)}\n onChange={(date) => {\n setStartDate(date);\n setValue(date.toJSON().slice(0, 10));\n }}\n showMonthDropdown\n showYearDropdown\n dropdownMode=\"select\"\n className={\"ds-c-field\"}\n withPortal\n // popperPlacement=\"top-end\"\n // popperModifiers={[\n // {\n // name: 'preventOverflow',\n // options: {\n // rootBoundary: 'viewport',\n // // tether: true,\n // altAxis: true,\n // },\n // },\n // ]}\n />\n </div>\n ) : (\n <TextField\n label=\"Value\"\n name={`${condition.key}_value`}\n value={cleanText(value, operator)}\n onChange={(e) => setValue(e.target.value)}\n className={\"ds-l-md-col--5 ds-l-lg-col--4 ds-l-sm-col--8 ds-l-col--12 ds-u-padding--0 ds-u-sm-padding-right--2 ds-u-md-padding-right--0 ds-u-lg-padding-right--2 ds-u-margin-bottom--2\"}\n />\n )}\n\n <Button\n className=\"ds-u-margin-top--2 ds-u-sm-margin-top--4 ds-u-lg-margin-top--4 ds-u-md-margin-top--2 ds-l-col--12 ds-l-md-col--4 ds-l-lg-col--2 ds-l-sm-col--4\"\n aria-label=\"Delete filter\"\n onClick={() => remove(index)}\n >\n Delete filter\n </Button>\n </fieldset>\n );\n};\n\nexport default QueryRow;\n","import React from 'react';\nimport { Badge } from '@cmsgov/design-system';\nimport { operatorMapping, cleanText } from './functions';\n\nconst QueryTitle = ({ conditions, schema, customColumns }) => {\n const { fields } = schema;\n const prependedMessage = <>Data filters: </>\n if (!conditions || !conditions.length) {\n return <p className=\"ds-u-margin-y--0\">{prependedMessage} none</p>;\n }\n\n function formatValue(text, property) {\n if (customColumns && customColumns.length > 0) {\n let newValue = text;\n let customColumn = customColumns.find((c) => c.accessor === property);\n if (customColumn && customColumn.cell) {\n return customColumn.cell({ value: text });\n }\n return text;\n } else {\n return text;\n }\n }\n\n return (\n <span className=\"dc-querybuilder-title\">\n <p className=\"ds-u-margin-y--0\">{prependedMessage}</p>\n {conditions\n .map((c) => {\n const field = fields[c.property];\n const description = field && field.description ? field.description : c.property;\n const operator = operatorMapping.find((op) => op.value === c.operator);\n const cleanedText = cleanText(c.value);\n const formattedText = formatValue(cleanedText, c.property);\n return (\n <span className=\"ds-u-fill--background ds-u-padding--1 ds-u-margin-y--1 ds-u-display--inline-block ds-u-font-weight--semibold\">\n <span className=\"ds-u-font-weight--bold\">{description}</span>{' '}\n <span className=\"ds-u-font-weight--normal\">{operator.label.toUpperCase()}</span>{' '}\n <span className=\"ds-u-color--success\">{formattedText}</span>\n </span>\n );\n })\n .reduce((prev, curr) => [\n prev,\n <Badge className=\"ds-u-margin-x--1\" variation=\"info\">\n AND\n </Badge>,\n curr,\n ])}\n </span>\n );\n};\n\nexport default QueryTitle;\n","export { default } from './useSearchAPI';\n","import { useState, useEffect, useContext } from \"react\";\nimport { fetchDatasets } from \"./helpers\";\nimport { ACAContext } from \"../../utilities/ACAContext\";\n\nconst useSearchAPI = (\n rootUrl,\n initialSearchParams = {},\n) => {\n const {ACA} = useContext(ACAContext);\n \n const defaultSort = \"\";\n const defaultFulltext = \"\";\n const defaultSelectedFacets = {};\n const defaultSortOrder = \"\";\n const defaultPage = 1;\n const defaultPageSize = 10;\n\n const sortOptions = [\"modified\", \"title\"];\n const sortOrderOptions = [\"asc\", \"desc\"];\n const [items, setItems] = useState([]);\n const [facets, setFacets] = useState([]);\n const [loading, setLoading] = useState(false);\n const [totalItems, setTotalItems] = useState(null);\n const [selectedFacets, setSelectedFacets] = useState(\n initialSearchParams.selectedFacets\n ? initialSearchParams.selectedFacets\n : defaultSelectedFacets\n );\n const [fulltext, setFulltext] = useState(\n initialSearchParams.fulltext\n ? initialSearchParams.fulltext\n : defaultFulltext\n );\n const [sort, setSort] = useState(\n initialSearchParams.sort ? initialSearchParams.sort : defaultSort\n );\n const [sortOrder, setSortOrder] = useState(\n initialSearchParams.sortOrder\n ? initialSearchParams.sortOrder\n : defaultSortOrder\n );\n const [page, setPage] = useState(\n initialSearchParams.page ? initialSearchParams.page : defaultPage\n );\n const [pageSize, setPageSize] = useState(\n initialSearchParams.pageSize\n ? initialSearchParams.pageSize\n : defaultPageSize\n );\n\n async function search(ACA) {\n const options = {\n fulltext: fulltext,\n selectedFacets: selectedFacets,\n sort: sort,\n sortOrder: sortOrder,\n page: Number(page),\n pageSize: pageSize,\n };\n const results = await fetchDatasets(rootUrl, options, ACA);\n const itemKeys = Object.keys(results.data.results);\n const itemsArray = itemKeys.map((key) => {\n return results.data.results[key];\n });\n setFacets(results.data.facets);\n setItems(itemsArray);\n setTotalItems(results.data.total);\n setLoading(false);\n }\n\n function resetFilters() {\n setFulltext(defaultFulltext);\n setSelectedFacets(defaultSelectedFacets);\n setPage(defaultPage);\n }\n\n useEffect(() => {\n if (totalItems !== null) {\n setPage(1);\n }\n }, [fulltext, selectedFacets, pageSize]);\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setLoading(true);\n search(ACA);\n }, 1000);\n return () => clearTimeout(timer);\n }, [fulltext, selectedFacets, sort, sortOrder, page, pageSize]);\n\n return {\n fulltext,\n selectedFacets,\n sortOptions,\n sortOrderOptions,\n items,\n facets,\n loading,\n totalItems,\n sort,\n sortOrder,\n page,\n pageSize,\n setPage,\n setPageSize,\n setSort,\n setSortOrder,\n setFulltext,\n resetFilters,\n };\n};\n\nexport default useSearchAPI;\n","import { useEffect, useState } from 'react';\n\nconst useAddLoginLink = (hosts, menuItems, targetKey, loginLinkObj) => {\n const [linksArray, setLinksArray] = useState({ ...menuItems });\n useEffect(() => {\n let localLinks = { ...menuItems };\n if (hosts.findIndex((host) => host === window.location.host) > -1) {\n if (localLinks[targetKey].findIndex((link) => link.id === loginLinkObj.id) === -1) {\n localLinks[targetKey].unshift(loginLinkObj);\n setLinksArray(localLinks);\n }\n }\n }, [linksArray]);\n return linksArray;\n};\n\nexport default useAddLoginLink;\n","import { useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nconst useScrollToTop = () => {\n const { pathname } = useLocation();\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [pathname])\n}\n\nexport default useScrollToTop;\n"],"names":[],"version":3,"file":"main.js.map"}
|
|
1
|
+
{"mappings":"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","sources":["src/index.ts","src/components/ApiRowLimitNotice/index.tsx","src/components/CMSTopNav/index.tsx","src/components/HeaderTagline/index.tsx","src/components/HeaderNavIconLink/index.tsx","src/components/ErrorBoundary/index.tsx","src/components/FAQAccordion/index.tsx","src/components/HeaderNav/index.tsx","src/templates/Header/HeaderContext.tsx","src/components/SubMenu/index.jsx","src/components/DatasetListSubmenu/index.jsx","src/components/DatasetListSubmenu/DatasetListSubmenu.tsx","src/utilities/QueryProvider/QueryProvider.jsx","src/components/DatasetListSubmenuItem/index.tsx","src/utilities/aca.ts","src/utilities/ACAContext.ts","src/components/SubMenuStaticList/index.jsx","src/components/HeaderSearch/index.tsx","src/components/HeaderSiteTitle/index.tsx","src/components/MobileMenuButton/index.tsx","src/components/NavBar/index.ts","src/components/NavBar/Navbar.tsx","src/components/SidebarNavigation/index.tsx","src/templates/SidebarPage/index.tsx","src/components/Hero/index.jsx","src/components/DatasetListItem/index.tsx","src/components/TransformedDate/index.jsx","src/components/DatasetSearchListItem/index.tsx","src/components/LargeFileDialog/index.tsx","src/assets/icons/searchItem.tsx","src/components/DatasetSearchListItem/truncateText.ts","src/components/DatasetDate/index.tsx","src/components/DatasetDateItem/index.tsx","src/utilities/format.ts","src/components/DatasetSearchFacets/index.tsx","src/components/ApiDocumentation/index.jsx","src/components/ResourceHeader/index.jsx","src/components/DataTablePageResults/index.js","src/components/DataTablePageResults/DataTablePageResults.tsx","src/components/DataTableDensity/index.jsx","src/components/DataTableRowChanger/index.tsx","src/assets/icons/download.jsx","src/assets/icons/copy.jsx","src/assets/icons/settings.jsx","src/components/ResourcePreview/index.jsx","src/services/useDatastore/transformSorts.js","src/templates/FilteredResource/functions.js","src/components/Datatable/index.js","src/components/Datatable/Datatable.jsx","src/components/Datatable/TruncatedResizeableTHead.jsx","src/components/Datatable/HeaderResizeElement.tsx","src/components/Datatable/FixedSizeTHead.jsx","src/templates/Dataset/DataTableContext.tsx","src/components/DatasetTableTab/DataTableActionsContext.tsx","src/components/DataTableToolbar/index.tsx","src/components/ManageColumns/ManageColumns.jsx","src/components/ManageColumns/Card.tsx","src/components/FullScreenDataTable/index.tsx","src/components/DatasetTableTab/index.tsx","src/components/FilterDataset/index.tsx","src/components/FilterDataset/FilterItem.tsx","src/components/QueryBuilder/ClearFiltersButton.tsx","src/components/FilterChip/index.tsx","src/components/DisplaySettings/index.tsx","src/components/ResourceFooter/index.jsx","src/components/Breadcrumb/index.jsx","src/components/Breadcrumb/Breadcrumb.jsx","src/components/SearchInput/index.jsx","src/assets/icons/magnifyingglass.jsx","src/assets/icons/chevronright.jsx","src/components/DatasetAdditionalInformation/index.jsx","src/templates/APIPage/index.jsx","src/templates/APIPage/APIPage.jsx","src/templates/PageNotFound/index.jsx","src/templates/PageNotFound/PageNotFound.jsx","src/templates/DatasetSearch/index.jsx","src/templates/DatasetSearch/DatasetSearch.tsx","src/components/LargeFileInfo/index.tsx","src/components/SearchButton/index.tsx","src/components/PageHeader/index.tsx","src/services/useSearchAPI/helpers.ts","src/templates/DatasetList/index.jsx","src/templates/DatasetList/DatasetList.tsx","src/templates/Dataset/index.tsx","src/services/useMetastoreDataset/index.jsx","src/services/useMetastoreDataset/useMetastoreDataset.tsx","src/services/useDatastore/index.js","src/services/useDatastore/useDatastore.jsx","src/assets/metadataMapping.jsx","src/assets/frequencyMap.js","src/components/DatasetOverviewTab/index.tsx","src/components/Resource/index.tsx","src/components/ResourceInformation/index.tsx","src/components/DatasetAPITab/index.tsx","src/components/DatasetDataDictionaryTab/index.tsx","src/components/SitewideDataDictionaryTable/index.tsx","src/components/DataDictionaryTable/index.tsx","src/components/DatasetDictionaryTable/index.tsx","src/components/DatasetTableTab/DataTableStateWrapper.tsx","src/components/DatasetDescription/index.tsx","src/templates/Header/index.tsx","src/templates/Footer/index.jsx","src/components/NavLink/index.tsx","src/templates/SpecsAndLimits/index.tsx","src/templates/SpecsAndLimits/DocumentationTable.jsx","src/templates/SpecsAndLimits/documentationData.js","src/templates/StoredQueryPage/index.tsx","src/templates/FilteredResource/index.jsx","src/templates/FilteredResource/FilteredResourceBody.jsx","src/templates/FilteredResource/QueryBuilder.jsx","src/templates/FilteredResource/QueryRow.jsx","src/templates/FilteredResource/QueryTitle.jsx","src/services/useSearchAPI/index.jsx","src/services/useSearchAPI/useSearchAPI.jsx","src/components/useAddLoginLink/index.jsx","src/components/useScrollToTop/index.jsx"],"sourcesContent":["// Components\nexport { default as ApiRowLimitNotice } from './components/ApiRowLimitNotice';\nexport { default as CMSTopNav } from './components/CMSTopNav';\nexport { default as ErrorBoundary } from './components/ErrorBoundary';\nexport { default as FAQAccordion } from './components/FAQAccordion';\nexport { default as HeaderNav } from './components/HeaderNav';\nexport { default as HeaderNavIconLink } from './components/HeaderNavIconLink';\nexport { default as HeaderSearch } from './components/HeaderSearch';\nexport { default as HeaderSiteTitle } from './components/HeaderSiteTitle';\nexport { default as HeaderTagline } from './components/HeaderTagline';\nexport { default as MobileMenuButton } from './components/MobileMenuButton';\nexport { default as NavBar } from './components/NavBar';\nexport { default as SidebarNavigation } from './components/SidebarNavigation';\nexport { default as SidebarPage } from './templates/SidebarPage';\nexport { default as SubMenu } from './components/SubMenu';\nexport { default as Hero } from './components/Hero';\nexport { default as DatasetListItem } from './components/DatasetListItem';\nexport { default as DatasetSearchListItem } from './components/DatasetSearchListItem';\nexport { default as DatasetDateItem } from './components/DatasetDateItem';\nexport { default as DatasetDate } from './components/DatasetDate';\nexport { default as DatasetListSubmenu } from './components/DatasetListSubmenu'\nexport { default as DatasetSearchFacets } from './components/DatasetSearchFacets'\nexport { default as ApiDocumentation } from './components/ApiDocumentation';\nexport { default as ResourceHeader } from './components/ResourceHeader';\nexport { default as ResourcePreview } from './components/ResourcePreview';\nexport { default as ResourceFooter } from './components/ResourceFooter';\nexport { default as Breadcrumb } from './components/Breadcrumb';\nexport { default as TransformedDate } from './components/TransformedDate';\nexport { default as DataTable } from './components/Datatable';\nexport { default as SearchInput } from './components/SearchInput';\nexport { buildRows } from './components/DatasetAdditionalInformation';\nexport { default as DataTablePageResults } from './components/DataTablePageResults';\nexport { truncateText } from './components/DatasetSearchListItem/truncateText';\n\n// Templates\nexport { default as APIPage } from './templates/APIPage';\nexport { default as PageNotFound } from './templates/PageNotFound';\nexport { default as DatasetSearch } from './templates/DatasetSearch';\nexport { default as DatasetList } from './templates/DatasetList';\nexport { default as Dataset } from './templates/Dataset';\nexport { default as DatasetTable } from './components/DatasetTableTab';\nexport { default as Header } from './templates/Header';\nexport { default as Footer } from './templates/Footer';\nexport { default as SpecsAndLimits } from './templates/SpecsAndLimits';\nexport { default as StoredQueryPage } from './templates/StoredQueryPage';\nexport { default as FilteredResource } from './templates/FilteredResource';\nexport { default as QueryTitle } from './templates/FilteredResource/QueryTitle';\nexport { buildOperatorOptions, convertUTCToLocalDate, cleanText, buildCustomColHeaders } from './templates/FilteredResource/functions';\n\n// Context\nexport { default as HeaderContext } from './templates/Header/HeaderContext';\nexport { default as DataTableContext } from './templates/Dataset/DataTableContext';\nexport { default as DataTableActionsProvider } from './components/DatasetTableTab/DataTableActionsContext'\nexport { ACAContext } from './utilities/ACAContext';\n\n// Services\nexport { default as useSearchAPI } from './services/useSearchAPI';\nexport { default as useDatastore } from './services/useDatastore';\nexport { transformTableSortToQuerySort } from './services/useDatastore/transformSorts';\n\n// Hooks\nexport { default as useAddLoginLink } from './components/useAddLoginLink';\nexport { default as useScrollToTop } from './components/useScrollToTop';\nexport { default as useMetastoreDataset } from './services/useMetastoreDataset';\nexport { default as withQueryProvider } from './utilities/QueryProvider/QueryProvider'\n\n// Utilities\nexport { acaToParams } from './utilities/aca';\n\n// Assets\n// export { default as frequencyMap } from './assets/frequencyMap';\nexport { defaultMetadataMapping } from './assets/metadataMapping';\n","import { Accordion, AccordionItem } from '@cmsgov/design-system';\n\nexport default function ApiRowLimitNotice() {\n return (\n <div className=\"ds-u-padding-top--3\">\n <Accordion bordered>\n <AccordionItem key=\"1\" heading=\"Row Limit Warning\">\n <p>\n If you receive a 500 response from your API query it is most likely due to memory\n exhaustion. You may see a \"Temporarily Unavailable\" message. Make sure you include a\n limit appropriate to the speed of your connection, HTTP calls will time out if set too\n high and payloads for high limits can be very large. Complex queries should include a\n smaller limit value. Use the <strong>limit</strong> and <strong>offset</strong>{' '}\n parameters to iterate through result sets that are larger than the row limit when\n running queries against the datastore API.\n </p>\n </AccordionItem>\n </Accordion>\n </div>\n );\n}\n","import React from 'react';\nimport { NavLink } from 'react-router-dom';\nimport HeaderTagline from '../HeaderTagline';\nimport HeaderNavIconLink from '../HeaderNavIconLink';\nimport { OrgType, NavLinkArray } from '../../types/misc';\nimport './cms-topnav.scss';\n\nexport type CMSTopNavProps = {\n org: OrgType\n links: NavLinkArray[]\n}\n\nconst CMSTopNav = (props: CMSTopNavProps) => {\n const { links, org } = props;\n const { urlTitle, logoAltText=\"\", logoFilePath=\"\", tagline, url} = org;\n return (\n <div className=\"dkan-c-cms-topnav ds-u-display--flex ds-u-padding-x--5 ds-u-align-items--center ds-u-justify-content--center ds-u-lg-justify-content--start\">\n <div className=\"ds-l-col--12 ds-l-md-col--5 ds-l-lg-col--7 ds-u-display--flex ds-u-align-items--center ds-u-justify-content--center ds-u-md-justify-content--start\">\n <HeaderNavIconLink\n url={url}\n urlTitle={urlTitle}\n logoAltText={logoAltText}\n logoFilePath={logoFilePath}\n />\n <HeaderTagline tagline={tagline} />\n </div>\n <div className=\"ds-l-col--7 ds-l-lg-col--5 ds-u-display--none ds-u-md-display--inline-flex ds-u-align-items--center ds-u-justify-content--end\">\n <nav className=\"dkan-c-cms-topnav--menu\">\n <ul className=\"ds-u-justify-content--end ds-u-md-align-items--center ds-u-flex-direction--column ds-u-md-flex-direction--row\">\n {links.map((link: any) => {\n return(\n <li className=\"ds-u-margin-x--05 ds-u-font-size--sm\">\n <NavLink to={link.url}>\n <span>{link.label}</span>\n </NavLink>\n </li>\n )\n })}\n </ul>\n </nav>\n </div>\n </div>\n );\n}\n\nexport default CMSTopNav;\n","import React from 'react';\nimport './header-tagline.scss';\n\nexport type HeaderTaglineProps = {\n tagline: string;\n \n}\n\nconst HeaderTagline = (props: HeaderTaglineProps) => {\n return (\n <span className=\"dkan-c-cms-topnav--tagline ds-u-valign--middle\tds-u-padding-left--2\">\n {props.tagline}\n </span>\n );\n};\n\nexport default HeaderTagline;\n","import React from 'react';\n\nimport \"./header-nav-icon-link.scss\";\n\nexport type HeaderNavIconLinkProps = {\n url: string;\n urlTitle: string;\n logoFilePath: string;\n logoAltText: string;\n backArrow?: boolean;\n}\n\nconst HeaderNavIconLink = (props: HeaderNavIconLinkProps) => {\n const { url, urlTitle, logoFilePath, logoAltText, backArrow } = props;\n return(\n <div className={`dkan-c-header-nav-icon-link ${backArrow ? 'show-back-arrow' : ''} ds-u-valign--middle\t`}>\n <a href={url} title={urlTitle}>\n <img src={logoFilePath} alt={logoAltText} />\n </a>\n </div>\n );\n}\n\nexport default HeaderNavIconLink;\n","import React from 'react';\n\ntype ErrorBoundaryProps = {\n children: any[] | any;\n component?: boolean;\n Layout?: any;\n}\n\ntype ErrorBoundaryState = {\n hasError: boolean;\n error?: any;\n};\n\nclass ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = { hasError: false, error: undefined };\n }\n\n static getDerivedStateFromError(error: any) {\n // Update state so the next render will show the fallback UI.\n return { hasError: true, error };\n }\n\n componentDidCatch(error: any, info: any) {\n // TODO report to logging solution\n console.error({ error, info });\n }\n\n render() {\n if (this.props.component) {\n if (this.state.hasError) {\n return (\n <>\n <p>We're sorry, the site has encountered an unexpected error.</p>\n </>\n );\n }\n return this.props.children;\n }\n\n return (\n <>\n <div className=\"ds-l-container\">\n <h2 className=\"ds-text-heading--2xl\">Error</h2>\n <p>We're sorry, the site has encountered an unexpected error.</p>\n </div>\n </>\n );\n }\n}\n\nexport default ErrorBoundary;\n","import React from 'react';\nimport { FAQItemType } from '../../types/misc';\nimport { Accordion, AccordionItem, Button } from \"@cmsgov/design-system\";\n\ntype FAQProps = {\n faqs: FAQItemType[]\n}\n\nconst FAQAccordion = (props: FAQProps) => {\n const { faqs } = props;\n const [expanded, setExpanded] = React.useState(false);\n const [faqItems, setFaqItems] = React.useState(faqs);\n\n function toggleAll() {\n if (expanded) {\n const newFaqs = faqItems.map((item) => ({...item, open: false}));\n setFaqItems(newFaqs);\n setExpanded(false);\n } else {\n const newFaqs = faqItems.map((item) => ({...item, open: true}));\n setFaqItems(newFaqs);\n setExpanded(true);\n }\n }\n\n function toggleAccordionItem(id: string) {\n const currentFaqIndex = faqItems.findIndex((item) => item.id === id);\n const updatedFaq = {\n ...faqItems[currentFaqIndex],\n open: !faqItems[currentFaqIndex].open\n }\n\n const newFaqs = [\n ...faqItems.slice(0, currentFaqIndex),\n updatedFaq,\n ...faqItems.slice(currentFaqIndex + 1)\n ]\n setFaqItems(newFaqs);\n\n const openCount = newFaqs.filter((item) => item.open === true).length;\n if (openCount > 0 && openCount == newFaqs.length) {\n setExpanded(true);\n } else {\n setExpanded(false);\n }\n }\n\n return(\n <div>\n <Button className='ds-u-margin-y--2 ds-u-float--right' type=\"button\" variation='ghost' onClick={() => toggleAll()}>\n {`${expanded ? 'Collapse' : 'Expand'} all FAQs`}\n </Button>\n <Accordion>\n {faqItems.map((faq) => (\n <AccordionItem\n key={faq.id}\n heading={faq.title}\n isControlledOpen={faq.open}\n onChange={() => toggleAccordionItem(faq.id)}\n >\n {faq.body}\n </AccordionItem>\n ))}\n </Accordion>\n </div>\n );\n};\n\nexport default FAQAccordion;\n","import React from 'react';\nimport { NavLink } from 'react-router-dom';\nimport { Button, CloseIconThin } from '@cmsgov/design-system';\nimport HeaderContext from '../../templates/Header/HeaderContext';\nimport SubMenu from '../SubMenu';\nimport { NavLinkArray } from '../../templates/Header';\nimport HeaderSearch from '../HeaderSearch';\nimport './header-nav.scss';\n\nexport type HeaderNavProps = {\n links: NavLinkArray[];\n topNavLinks?: NavLinkArray[];\n searchInMobile?: boolean;\n wrapperClasses?: string;\n}\n\nconst HeaderNav = (props: HeaderNavProps) => {\n const headerContext = React.useContext(HeaderContext);\n const { links, topNavLinks, wrapperClasses, searchInMobile } = props;\n const navMenuOpenClass = `dkan-c-nav-menu--${headerContext.mobileMenuOpen ? \"open\" : \"close\"}`;\n const isMobileClass = `dkan-c-nav-menu--${headerContext.isMobile ? 'mobile' : 'desktop'}`;\n const linkClasses = 'dkan-c-header--link ds-c-button ds-c-button--ghost';\n const listClasses = 'dkan-c-header--link-list ';\n return (\n <div\n className={`dkan-c-nav-menu ${wrapperClasses} ${navMenuOpenClass} ${isMobileClass}`}\n ref={headerContext.menuRef}\n >\n <Button\n variation='ghost'\n onDark\n className='dkan-c-nav-menu--mobile-close-button'\n onClick={() => headerContext.setMobileMenuOpen(false)}\n >\n <CloseIconThin />\n <span className=\"ds-u-margin-left--1\">Close</span>\n </Button>\n <nav className='dkan-c-main-nav'>\n <ul className={listClasses}>\n {links.map((link: any) => {\n if (link.submenu) {\n return (\n <SubMenu\n key={link.id}\n link={link}\n wrapLabel={true}\n subLinkClasses={linkClasses}\n linkClasses={linkClasses}\n />\n )\n }\n return (\n <li>\n <NavLink to={link.url} className={linkClasses}>\n <span>{link.label}</span>\n </NavLink>\n </li>\n )\n })}\n </ul>\n </nav>\n {topNavLinks &&\n <nav className='dkan-c-top-nav'>\n <ul className={listClasses}>\n {topNavLinks.map((link: any) => {\n return (\n <li>\n <NavLink to={link.url} className={linkClasses}>\n <span>{link.label}</span>\n </NavLink>\n </li>\n )\n })}\n </ul>\n </nav>\n }\n {searchInMobile &&\n <HeaderSearch />\n }\n </div>\n );\n}\n\nexport default HeaderNav;\n","import { createContext, useRef } from \"react\";\n\nconst HeaderContext = createContext({\n mobileMenuOpen: false, \n setMobileMenuOpen: (el: boolean) => {},\n menuRef: null as any,\n isMobile: false,\n onDark: true,\n});\n\nexport default HeaderContext;\n","import React, { useEffect, useState, useRef } from 'react';\nimport { Button, ArrowIcon } from '@cmsgov/design-system';\nimport HeaderContext from '../../templates/Header/HeaderContext';\nimport DatasetListSubmenu from '../DatasetListSubmenu';\n\nimport './submenu.scss';\nimport SubMenuStaticList from '../SubMenuStaticList';\n\nconst SubMenu = ({ link, linkClasses, subLinkClasses, wrapLabel = true }) => {\n const [isExpanded, setIsExpanded] = useState(false);\n const headerContext = React.useContext(HeaderContext);\n const innerHtml = wrapLabel ? <span>{link.label}</span> : link.label;\n const menu = useRef();\n useEffect(() => {\n let currentMenu = null;\n if (menu.current) {\n currentMenu = menu.current;\n }\n\n function handleClickOutside(event) {\n if (currentMenu && !currentMenu.contains(event.target)) {\n setIsExpanded(false);\n }\n }\n function handleFocusOut(event) {\n if (currentMenu && !currentMenu.contains(event.relatedTarget)) {\n setIsExpanded(false);\n }\n }\n document.addEventListener('mousedown', handleClickOutside);\n currentMenu?.addEventListener('focusout', handleFocusOut);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n if (currentMenu) {\n currentMenu.removeEventListener('focusout', handleFocusOut);\n }\n };\n }, [isExpanded]);\n\n let submenuBlock;\n\n if(link.submenu) {\n if (Array.isArray(link.submenu)) {\n submenuBlock = <SubMenuStaticList\n submenuArray={link.submenu}\n subLinkClasses={subLinkClasses}\n setIsExpanded={setIsExpanded}\n />;\n } else if (React.isValidElement(link.submenu) ) {\n const {rootUrl, location} = link.submenu.props;\n submenuBlock = <DatasetListSubmenu\n location={location}\n rootUrl={rootUrl}\n subLinkClasses={subLinkClasses}\n />\n }\n }\n\n return (\n <li className={`dkan-c-nav-submenu has-submenu${isExpanded ? ' open' : ''}`} ref={menu}>\n <Button\n variation=\"ghost\"\n onDark={headerContext.onDark}\n className={`${linkClasses}`}\n aria-haspopup=\"true\"\n aria-expanded={isExpanded}\n onClick={(e) => {\n e.preventDefault();\n setIsExpanded(!isExpanded);\n }}\n >\n {innerHtml}\n <ArrowIcon className=\"ds-u-margin-left--1\" direction={isExpanded ? \"down\" : \"right\"} />\n </Button>\n {submenuBlock}\n </li>\n );\n};\n\nexport default SubMenu;\n","export { default } from './DatasetListSubmenu'\n","import React, { useContext, useEffect, useState } from 'react';\nimport { Link } from 'react-router-dom';\nimport qs from 'qs';\nimport axios from 'axios';\nimport withQueryProvider from '../../utilities/QueryProvider/QueryProvider';\nimport { Spinner, Alert } from '@cmsgov/design-system';\nimport DatasetListSubmenuItem from '../DatasetListSubmenuItem';\nimport { useQuery } from '@tanstack/react-query';\n\nimport \"./dataset-list-submenu.scss\";\nimport { DatasetSubmenuListProps } from '../../types/search';\nimport { acaToParams } from '../../utilities/aca';\nimport { ACAContext } from '../../utilities/ACAContext';\n\nconst DatasetListSubmenu = ({\n rootUrl,\n enablePagination = true,\n defaultPageSize = 4,\n defaultSort = { defaultSort: 'modified', defaultOrder: 'desc' },\n subLinkClasses\n}: DatasetSubmenuListProps) => {\n const { ACA } = useContext(ACAContext);\n\n const [currentResultNumbers, setCurrentResultNumbers] = useState({ total: 0, startingNumber: 0, endingNumber: 0 });\n const [noResults, setNoResults] = useState(false);\n const [totalItems, setTotalItems] = useState(0);\n\n const pageSize = defaultPageSize;\n\n useEffect(() => {\n if (totalItems <= 0 && currentResultNumbers !== null) {\n setNoResults(true);\n } else {\n setNoResults(false);\n }\n }, [totalItems, pageSize]);\n\n let params = {\n sort: defaultSort.defaultSort,\n ['sort-order']: defaultSort.defaultOrder, // Display the default sort order of newest items first.\n ['page-size']: defaultPageSize, // Only show 4 items in the submenu.\n }\n\n const { data, isPending, error } = useQuery({\n queryKey: [\"datasets\", params],\n queryFn: () => {\n return axios.get(`${rootUrl}/search/?${qs.stringify(acaToParams(params, ACA), { arrayFormat: 'comma', encode: false })}`)\n }\n });\n\n let submenuItemsCount = 0;\n\n if (data) {\n if (data.data.total && totalItems !== data.data.total) setTotalItems(data.data.total);\n let resultsCount = Object.keys(data.data.results).length;\n // For the submenu pager, If there are fewer than 4 dataset items, display the dataset item count, otherwise, show \"Viewing 4..\".\n submenuItemsCount = resultsCount > defaultPageSize ? defaultPageSize : resultsCount\n }\n\n return (\n <>\n <section className=\" dkan-c-site-menu--sub-menu\">\n {isPending ? (\n <Spinner\n className=\"ds-u-valign--middle\"\n aria-valuetext=\"Dataset Search loading\"\n role=\"status\"\n />\n ) : (\n <>\n <ol className=\"dc-dataset-search-list ds-u-padding--0 ds-u-margin-top--0 ds-u-lg-margin-top--2 ds-u-margin-bottom--2 ds-u-display--block\" data-testid=\"submenu-results-list\">\n {noResults && <Alert variation=\"error\" heading=\"No results found.\" />}\n {data && data.data.results ? Object.keys(data.data.results).map((key) => {\n return data.data.results[key];\n }).map((item) => {\n return (\n <DatasetListSubmenuItem\n key={item.identifier}\n title={item.title}\n identifier={item.identifier}\n linkClasses={subLinkClasses}\n />\n )\n }) : (\n <Alert variation=\"error\" heading=\"Could not connect to the API.\" />\n )}\n </ol>\n <div className=\"ds-u-display--flex ds-u-justify-content--between ds-u-align-items--center ds-u-border-top--1 ds-u-padding-top--3 ds-u-padding-bottom--2 ds-u-margin-x--3 ds-u-lg-margin-x--0\">\n {enablePagination && (\n <>\n <div className=\"\">\n <p className=\"ds-u-margin-y--0 ds-u-font-size--sm\" aria-hidden=\"true\">\n {(data) && (\n <>\n Viewing {submenuItemsCount} of {data.data.total}\n </>\n )}\n </p>\n </div>\n <div className=\"\">\n {(data && data.data.total > 0) && (\n <Link className=\"ds-u-padding--0 ds-c-button ds-c-button--ghost dkan-c-header--link\" to={`../whats-new`}>\n <span className=\"ds-text-heading--md\"> {`View all ${data.data.total} entries`} </span>\n </Link>\n )}\n </div>\n </>\n )}\n </div>\n </>\n )}\n </section>\n </>\n );\n};\n\nexport default withQueryProvider(DatasetListSubmenu);\n","import React from 'react';\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n }\n }\n});\n\nconst withQueryProvider = (WrappedComponent) => (props) => {\n return (\n <QueryClientProvider client={queryClient}>\n <WrappedComponent { ...props }/>\n </QueryClientProvider>\n )\n}\n\nexport default withQueryProvider;","import React from 'react';\nimport { NavLink } from 'react-router-dom';\nimport './dataset-list-submenu-item.scss';\n\ntype SearchItemProps = {\n title: string;\n identifier: string;\n linkClasses?: string;\n}\n\nconst DatasetListSubmenuItem = (props: SearchItemProps) => {\n const { title, identifier, linkClasses } = props;\n\n return (\n <li className=\"dc-c-list-item\" key={identifier}>\n <NavLink\n className={`ds-u-display-flex ds-u-align-items--center ds-u-text-align--left ${linkClasses}`}\n to={`/dataset/${identifier}`}\n >\n <span className=\"ds-text-heading--md ds-u-margin-left--0\">{title}</span>\n </NavLink>\n </li>\n );\n};\n\nexport default DatasetListSubmenuItem;\n","export function acaToParams(params: any, ACA : string | undefined) {\n if (ACA) {\n params = Object.assign(params, {\n ACA: ACA,\n redirect: false\n })\n }\n return params;\n}\n","import { createContext } from \"react\";\n\nexport const ACAContext = createContext({ACA: undefined})\n","import { NavLink } from 'react-router-dom';\n\n\nconst SubMenuStaticList = ({submenuArray, subLinkClasses, setIsExpanded}) => {\n // Render a static list of submenu items as listed in the assets/menu.jsx file.\n let submenuItems = submenuArray.map((s) => {\n return (\n <li key={s.id}>\n {s.external || s.drupalPage ? (\n <a href={s.url} className={`ds-u-display-flex ds-u-align-items--center ${subLinkClasses}`}>\n {s.icon ?? null}\n <span>{s.label}</span>\n </a>\n ) : (\n <NavLink\n to={s.url}\n className={`ds-u-display-flex ds-u-align-items--center ${subLinkClasses}`}\n onClick={() => setIsExpanded(prev => !prev)}\n >\n {s.icon ?? null}\n <span>\n {s.label}\n </span>\n </NavLink>\n )}\n </li>\n )\n })\n return (\n <ul className={`dkan-c-site-menu--sub-menu`}>\n {submenuItems}\n </ul>\n );\n}\n\nexport default SubMenuStaticList;\n","import React, { useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Button, Dialog, TextField } from \"@cmsgov/design-system\";\n\nimport \"./header-search.scss\";\n\nexport type HeaderSearchProps = {\n headingText?: string\n};\n\nconst HeaderSearch = (props: HeaderSearchProps) => {\n const { headingText = \"Dataset Search\" } = props;\n const navigate = useNavigate();\n const [modalSearchTerm, setModalSearchTerm] = useState('');\n const [modalSearch, setModalSearch] = useState(false);\n\n function searchForDataset(e: React.SyntheticEvent) {\n e.preventDefault();\n if (window) {\n if (window.location.pathname !== '/datasets') {\n navigate(`/datasets?fulltext=${modalSearchTerm}`);\n } else {\n window.location.search = `fulltext=${modalSearchTerm}`;\n setModalSearch(false);\n }\n }\n }\n\n return (\n <div className=\"dkan-c-main-navigation--search\">\n <Button\n variation=\"ghost\"\n onDark={true}\n className=\"ds-u-border--0 dkan-c-header-search--modal-button\"\n onClick={() => setModalSearch(true)}\n >\n <span>Search</span>\n </Button>\n {modalSearch && (\n <Dialog\n className=\"dc-c-search-dialog\"\n isOpen={modalSearch}\n onExit={() => setModalSearch(false)}\n heading={`${headingText}`}\n actions= {<>\n <form\n className=\"ds-u-display--flex ds-u-align-items--stretch ds-u-flex-wrap--nowrap\"\n onSubmit={(e: React.SyntheticEvent) => {\n searchForDataset(e);\n }}\n >\n <TextField\n value={modalSearchTerm}\n fieldClassName=\"ds-u-display--inline-block\"\n className=\"ds-l-col--9\"\n label=\"Search Term\"\n name=\"search-modal\"\n labelClassName=\"ds-u-visibility--screen-reader\"\n onChange={(e) => setModalSearchTerm(e.target.value)}\n />\n <Button type=\"submit\" className=\"ds-l-col--3\">\n <span className=\"fas fa-search small-text ds-u-sm-display--none\" />\n <span className=\"full-text ds-u-display--none ds-u-sm-display--inline-block\">\n Search\n </span>\n </Button>\n </form>\n </>}\n />\n )}\n </div>\n );\n}\n\nexport default HeaderSearch;\n","import React from 'react';\nimport { NavLink } from 'react-router-dom';\nimport { OrgType } from '../../types/misc';\n\nexport type HeaderSiteTitleProps = {\n inverse?: boolean\n org: OrgType\n}\n\nconst HeaderSiteTitle = (props: HeaderSiteTitleProps) => {\n const inverse = props.inverse;\n const { logoFilePath, logoAltText, urlTitle } = props.org;\n const classList = \"ds-u-padding-y--3 dc-c-site-title print-padding-top--0 print-padding-bottom--0 ds-u-text-align--center ds-u-md-text-align--left\";\n if(logoFilePath) {\n return (\n <div className={classList}>\n <NavLink to=\"/\">\n <img src={logoFilePath} alt={logoAltText} />\n </NavLink>\n </div>\n \n )\n }\n return(\n <div className={classList}>\n <NavLink to=\"/\" className={`${inverse ? \"ds-c-link--inverse \" : \"\"} ds-u-font-size--2xl ds-u-lg-font-size--3xl`}>\n {urlTitle}\n </NavLink>\n </div>\n \n )\n}\n\nexport default HeaderSiteTitle;\n","import React from 'react';\nimport { Button } from '@cmsgov/design-system';\nimport HeaderContext from '../../templates/Header/HeaderContext';\n\nimport \"./mobile-menu-button.scss\";\n\nexport type MobileMenuButtonProps = {\n wrapperClasses?: string\n}\n\nconst MobileMenuButton = (props: MobileMenuButtonProps) => {\n const headerContext = React.useContext(HeaderContext);\n const { wrapperClasses } = props;\n return(\n <Button\n aria-haspopup=\"true\"\n aria-expanded={headerContext.mobileMenuOpen}\n className={`dkan-c-mobile-menu-button ${wrapperClasses} dkan-c-mobile-menu-button--${headerContext.mobileMenuOpen ? \"close\" : \"open\"}`}\n onClick={() => headerContext.setMobileMenuOpen(!headerContext.mobileMenuOpen)}\n >\n <span>Menu</span>\n </Button>\n );\n}\n\nexport default MobileMenuButton;\n","export { default } from './Navbar';\n","import SubMenu from '../SubMenu';\nimport { NavLink } from 'react-router-dom';\nimport { NavbarProps } from './Navbar.types';\nimport './navbar.scss';\n\nconst NavBar = (props: NavbarProps) => {\n const { links, menuName, menuId, menuClasses, linkClasses, subLinkClasses, wrapLabel = false } = props;\n return (\n <nav className={`dkan-c-${menuId}-menu`} aria-labelledby={`dkan-c-${menuId}-menu--heading`}>\n <h2 id={`dkan-c-${menuId}-menu--heading`} className=\"ds-u-visibility--screen-reader\">\n {menuName}\n </h2>\n <ul className={menuClasses}>\n {links.map((link) => {\n if (link.submenu) {\n return (\n <SubMenu\n key={link.id}\n link={link}\n wrapLabel={wrapLabel}\n subLinkClasses={subLinkClasses}\n linkClasses={linkClasses}\n />\n );\n } else {\n return (\n <li key={link.id}>\n <NavLink to={link} className={linkClasses}>\n <span>{link.label}</span>\n </NavLink>\n </li>\n );\n }\n })}\n </ul>\n </nav>\n );\n};\n\nexport default NavBar;\n","import React, { useState } from 'react';\nimport { NavLink, useLocation } from 'react-router-dom';\nimport { Button, ArrowIcon } from '@cmsgov/design-system';\nimport { MenuLinkType } from '../../types/misc';\nimport './sidebar-navigation.scss';\n\ntype SidebarNavigationProps = {\n title: string;\n links: MenuLinkType[];\n mobileMax: boolean;\n}\n\nconst SidebarNavigation = (props: SidebarNavigationProps) => {\n const { title, links, mobileMax } = props;\n const active = useLocation().pathname;\n const [menuOpen, setMenuOpen] = useState(false);\n const styleClasses = 'dkan-c--sidebar-nav-wrapper ds-u-border--1 ds-u-border--color-gray-lightest ds-u-padding--2';\n const mobileClass = `dkan-c-sidebar-nav--${mobileMax ? 'mobile' : 'desktop'}`\n return(\n <div className={`dkan-c-sidebar-nav ${mobileClass}`}>\n <div className='dkan-c-sidebar-nav--mobile-header ds-u-align-items--center ds-u-justify-content--between ds-u-padding-y--2 ds-u-fill--primary-darker ds-u-color--white'>\n <span className=\"ds-u-margin-left--2 ds-u-margin-y--0 ds-text-heading--xl\">Pages in this section</span>\n <Button\n aria-haspopup=\"true\"\n variation='ghost'\n aria-expanded={`${menuOpen ? 'true' : 'false'}`}\n onDark\n onClick={() => setMenuOpen(!menuOpen)}\n >\n <span className=\"ds-u-visibility--screen-reader\">Toggle menu</span>\n <ArrowIcon direction={menuOpen ? 'up' : 'down'} />\n </Button>\n </div>\n <div className={``}>\n <nav className={`${styleClasses} dkan-c-sidebar-nav-menu dkan-c-sidebar-nav-menu--${menuOpen ? 'open' : 'close'}`}>\n <div className=\"ds-u-padding--2 ds-u-border-bottom--1 ds-u-border--color-gray-lightest\">\n <h3 className=\"ds-text-heading--lg\">{ title }</h3>\n </div>\n <ul className=\"ds-u-padding-bottom--2\">\n {links.map(({ url, label }) => (\n <li\n className={`ds-u-padding--1 ds-u-padding-top--2 ds-u-border-bottom--1 ds-u-border--color-gray-lightest ${\n active === url ? 'active' : ''\n }`}\n key={`${url}${label}`}\n >\n <div className=\"ds-u-display--flex ds-u-padding-y--1\">\n <div className=\"dkan-c-sidebar-nav-link-status\"></div>\n <NavLink to={url} className=\"dkan-c-sidebar-nav-link ds-u-margin-left--2\">\n {label}\n </NavLink>\n </div>\n </li>\n ))}\n </ul>\n </nav>\n </div>\n </div>\n );\n\n};\n\nexport default SidebarNavigation;\n","import React, { ReactNode } from 'react';\nimport { useMediaQuery } from 'react-responsive'\nimport SidebarNavigation from '../../components/SidebarNavigation';\nimport { MenuLinkType } from '../../types/misc';\n\ntype SidebarPageProps = {\n links: MenuLinkType[],\n menuTitle: string,\n mobileMaxWidth?: number;\n children: ReactNode\n}\n\nconst SidebarPage = (props: SidebarPageProps) => {\n const {links, menuTitle, mobileMaxWidth = 768, children} = props;\n const mobileMax = useMediaQuery({ query: `(max-width: ${mobileMaxWidth}px)` });\n return(\n <div className={`${mobileMax ? \"a\" : 'ds-l-container'}`}>\n <div className={`${mobileMax ? \"a\" : 'ds-l-row'}`}>\n <div className={`${mobileMax ? 'a' : \"ds-l-col--4\"}`}>\n <SidebarNavigation links={links} title={menuTitle} mobileMax={mobileMax} />\n </div>\n <div className={`${mobileMax ? \"ds-l-container\" : \" ds-l-md-col--8\"}`}>\n { children }\n </div>\n </div>\n\n </div>\n );\n}\n\nexport default SidebarPage;\n","import React from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { Button, TextField } from '@cmsgov/design-system';\n\nconst Hero = ({\n title,\n description,\n searchUrl = 'datasets',\n searchKey = 'fulltext',\n textfieldLabel = 'Search for a dataset',\n searchButtonText = 'Search'\n}) => {\n const navigate = useNavigate();\n const [searchValue, setSearchValue] = React.useState('');\n\n function submitHero(e) {\n e.preventDefault();\n navigate(`/${searchUrl}?${searchKey}=${searchValue}`);\n }\n\n return (\n <section className={`dc-c-hero ds-base ds-u-padding--2`}>\n <div className=\"ds-l-container\">\n <div className=\"ds-l-row\">\n <h1 className=\"ds-text-heading--5xl ds-u-color--white ds-u-margin-y--1\">{title}</h1>\n <p className=\"ds-u-color--white ds-u-measure--wide\">{description}</p>\n </div>\n <form onSubmit={(e) => submitHero(e)}>\n <div\n style={{ position: 'relative' }}\n className=\"ds-l-row ds-u-align-items--stretch ds-u-margin-y--4 ds-u-flex-wrap--nowrap\"\n >\n <div\n className=\"ds-u-padding--0 ds-u-margin-right--1\"\n style={{ flex: '1 1 100%', maxWidth: '100%' }}\n >\n <TextField\n label={textfieldLabel}\n labelClassName=\"ds-u-visibility--screen-reader\"\n name=\"search_text_input\"\n style={{ maxWidth: 'none', height: '61px', margin: '0 20px 0 0' }}\n onChange={(e) => setSearchValue(e.target.value)}\n />\n </div>\n <Button className=\"ds-u-margin-left--auto\" size=\"big\" type=\"submit\" variation=\"solid\" onDark>\n <span className=\"fas fa-search small-text ds-u-sm-display--none\" />\n <span className=\"full-text ds-u-display--none ds-u-sm-display--inline-block\">\n {searchButtonText}\n </span>\n </Button>\n </div>\n </form>\n </div>\n </section>\n );\n};\n\nexport default Hero;\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport { useMediaQuery } from 'react-responsive';\nimport TransformedDate from '../TransformedDate';\nimport './dataset-list-item.scss';\nimport { truncateText } from './truncateText';\n\ntype SearchItemProps = {\n title: string;\n modified: string;\n identifier: string;\n paginationEnabled: boolean;\n dataDictionaryLinks: boolean;\n}\n\nconst DatasetListItem = (props: SearchItemProps) => {\n const desktop = useMediaQuery({ minWidth: 1024 });\n const { title, modified, identifier, paginationEnabled, dataDictionaryLinks } = props;\n\n let linkContainerClasses = 'ds-u-margin-bottom--2';\n if (dataDictionaryLinks) {\n linkContainerClasses += ' ds-l-col--6 ds-u-padding-right--0';\n } else {\n linkContainerClasses += ' ds-l-col--auto ds-u-padding-left--0';\n }\n let linkClasses = 'ds-u-display--block ds-u-text-align--left';\n if (desktop) {\n linkContainerClasses = 'ds-u-padding-x--0';\n linkClasses += ' ds-l-col--4 ds-l-md-col--auto';\n }\n\n return (\n <li className=\"dc-c-list-item ds-u-padding-top--4\">\n <div className={`dc-c-searchlist-item ${paginationEnabled ? 'ds-u-border-top--1' : 'ds-u-border-bottom--1 ds-u-padding-bottom--3'}`}>\n <div className=\"ds-l-row ds-u-align-items--start\">\n <span id={`dataset-${identifier}-updated-date`} className={`ds-l-col--12 ds-u-text-align--left ds-text-heading--sm ${paginationEnabled ? 'ds-u-padding-top--3' : 'ds-u-padding-top--0'}`}>\n Updated <TransformedDate date={modified} />\n </span>\n <h2 className=\"ds-l-col--12 ds-text-heading--2xl\">{title}</h2>\n </div>\n <div className=\"ds-l-row\">\n <div className=\"ds-l-col--12 ds-l-md-col--12 ds-u-margin-top--2\">The {title} dataset was updated.</div>\n </div>\n <div className=\"ds-l-row\">\n <div className=\"ds-l-col--12\">\n <Link aria-describedby={`dataset-${identifier}-updated-date`} to={`/dataset/${identifier}`}>View the Dataset for {title} </Link></div>\n </div>\n </div>\n </li>\n );\n};\n\nexport default DatasetListItem;\n","import React from 'react';\n\nconst TransformedDate = ({\n date,\n options = {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n timeZone: 'UTC',\n }\n}) => {\n const rawDate = new Date(date);\n let modifiedDate = '';\n if (rawDate) {\n modifiedDate = rawDate.toLocaleDateString('en-US', options);\n }\n return <>{modifiedDate}</>;\n};\n\nexport default TransformedDate;\n","import React from 'react';\nimport { Link, useLocation } from 'react-router-dom';\nimport { useMediaQuery } from 'react-responsive';\nimport LargeFileDialog from '../LargeFileDialog';\nimport SearchItemIcon from '../../assets/icons/searchItem';\nimport TransformedDate from '../TransformedDate';\nimport './dataset-search-list-item.scss';\nimport { truncateText } from './truncateText';\nimport { Button, Tooltip } from '@cmsgov/design-system';\nimport DatasetDate from '../DatasetDate';\nimport { getFormatType } from '../../utilities/format';\nimport { DistributionType } from '../../types/dataset';\n\ntype LocationType = {\n pathname: string;\n search?: string;\n hash?: string;\n state?: any;\n};\n\ntype SearchItemProps = {\n title: string;\n modified: string;\n description: string;\n downloadUrl?: string | null;\n identifier: string;\n largeFile: boolean;\n paginationEnabled: boolean;\n dataDictionaryLinks: boolean;\n refresh?: string;\n released?: string;\n showTopics?: boolean;\n showDateDetails?: boolean;\n theme?: string[];\n topicSlugs?: { [key: string]: string }; // Map of topic titles to their slugs\n location: LocationType;\n distribution: DistributionType | {};\n}\n\nconst DatasetSearchListItem = (props: SearchItemProps) => {\n const desktop = useMediaQuery({ minWidth: 1024 });\n const { \n title, \n modified, \n description, \n downloadUrl, \n largeFile = false, \n paginationEnabled, \n dataDictionaryLinks,\n identifier,\n refresh,\n released,\n showDateDetails = false,\n showTopics = false,\n theme,\n topicSlugs,\n distribution,\n } = props;\n\n const location = useLocation();\n\n let linkContainerClasses = 'ds-u-margin-bottom--2';\n if (dataDictionaryLinks) {\n linkContainerClasses += ' ds-l-col--6 ds-u-padding-right--0';\n } else {\n linkContainerClasses += ' ds-l-col--auto ds-u-padding-left--0';\n }\n let linkClasses = 'ds-u-display--block ds-u-text-align--left';\n if (desktop) {\n linkContainerClasses = 'ds-u-padding-x--0';\n linkClasses += ' ds-l-col--4 ds-l-md-col--auto';\n }\n\n let themes\n\n if (theme && showTopics) {\n themes = (\n <ul className='theme-list item-theme'>\n {theme.map((topic: string, index: number) => {\n const title = topic || 'Unknown Topic'\n const prefix = 'topics'\n \n // Use the provided slug or fallback to a simple slug generation\n const slug = topicSlugs?.[title]\n const link = `/${prefix}/${slug}`\n \n return (\n <li className='ds-u-fill--primary ds-u-radius--pill' key={`dist-${title}-${index}`}>\n <Link\n to={link}\n state={{\n fromUrl: location.pathname,\n fromTitle: false,\n fromSearchList: location.pathname.includes('search')\n }}\n >\n {title}\n </Link>\n </li>)\n })}\n </ul>\n )\n }\n\n const date: { modified?: string; released?: string; refresh?: string } = {\n modified,\n released,\n refresh\n };\n\n const url = `/dataset/${identifier}`\n\n const DataTableLink: React.FC = () => {\n if (getFormatType(distribution as DistributionType) === \"csv\") {\n return (\n <Link to={`${url}#data-table`}>\n <SearchItemIcon id=\"data-table\" />\n Data Table\n </Link>\n )\n }\n\n return (\n <Tooltip\n className=\"dkan-disabled-link\"\n component=\"a\"\n offset={[\n 0,\n 5\n ]}\n title=\"There is no Data Table associated with this dataset. Data Tables will only display for CSV files.\"\n aria-disabled=\"true\"\n >\n <SearchItemIcon id=\"data-table\" />\n Data Table\n </Tooltip>\n )\n }\n\n const dataDictionaryExists = (): boolean => {\n if (distribution && \"data\" in distribution) {\n if (\"describedBy\" in distribution.data && \"describedByType\" in distribution.data) {\n return distribution.data.describedByType === 'application/vnd.tableschema+json';\n }\n }\n\n return false;\n }\n\n const DataDictionaryLink: React.FC = () => {\n if (dataDictionaryExists()) {\n return (\n <Link to={`${url}#data-dictionary`}>\n <SearchItemIcon id=\"data-dictionary\" />\n Data Dictionary\n </Link>\n )\n }\n\n return (\n <Tooltip\n className=\"dkan-disabled-link\"\n component=\"a\"\n offset={[\n 0,\n 5\n ]}\n title=\"There is no Data Dictionary associated with this dataset.\"\n aria-disabled=\"true\"\n >\n <SearchItemIcon id=\"data-dictionary\" />\n Data Dictionary\n </Tooltip>\n )\n }\n\n return (\n <li className=\"dc-c-search-list-item ds-u-padding-top--3\">\n <div className={`dc-c-searchlist-item ${paginationEnabled ? 'ds-u-border-top--1' : 'ds-u-border-bottom--1 ds-u-padding-bottom--3'}`}>\n {themes}\n <div className=\"ds-l-row ds-u-align-items--start\">\n {!showDateDetails && <span id={`dataset-${identifier}-updated-date`} className={`ds-l-col--12 ds-u-text-align--right ${paginationEnabled ? 'ds-u-padding-top--2' : 'ds-u-padding-top--0'}`}>\n <span>Updated:</span> <TransformedDate date={modified} />\n </span>}\n <h2 className=\"ds-l-col--12 ds-text-heading--2xl\">\n <Link aria-describedby={`dataset-${identifier}-updated-date`} to={`${url}`}>{title}</Link>\n </h2>\n </div>\n {description && <div className=\"ds-l-row\">\n <div className=\"ds-l-col--12 ds-l-md-col--12 ds-u-margin-top--2\">{truncateText(description)}{description.length > 240 ? (\n <>\n {' '}<Link to={`/dataset/${identifier}`}>See more</Link> \n </>\n ) : ''}</div>\n </div>}\n {showDateDetails && <div className='dataset-dates'>\n <DatasetDate date={date} displayTooltips={false}/>\n </div>}\n {( downloadUrl ) ? (\n <div className={`ds-u-margin-top--3 ds-u-padding-left--0 download-button`}>\n {largeFile ? (\n <span>\n {<LargeFileDialog downloadUrl={downloadUrl} />}\n </span>\n ) : (\n <Button href={downloadUrl} variation=\"solid\" className=\"ds-l-col--12 ds-l-md-col--auto\">\n <SearchItemIcon id=\"download\" />\n Download\n </Button>\n )}\n </div>\n ) : (\n ''\n )}\n <ul className={`ds-l-row ds-u-padding--0 ds-u-flex-direction--row ds-u-justify-content--between ds-u-md-justify-content--start ds-u-margin-top--3 ds-u-margin-x--0 ${!dataDictionaryLinks ? 'ds-u-justify-content--center ds-u-md-justify-content--start' : ''}`}>\n <li className={linkContainerClasses}>\n <span className={`${linkClasses}${getFormatType(distribution as DistributionType) === \"csv\" ? '' : ' dkan-disabled-link-wrapper'}`}>\n <DataTableLink />\n </span>\n </li>\n <li className={linkContainerClasses}>\n <span className={linkClasses}>\n <Link to={`${url}#overview`}>\n <SearchItemIcon id=\"overview\" />\n Overview\n </Link>\n </span>\n </li>\n { dataDictionaryLinks ? (\n <li className={linkContainerClasses}>\n <span className={`${linkClasses}${dataDictionaryExists() ? '' : ' dkan-disabled-link-wrapper'}`}>\n <DataDictionaryLink />\n </span>\n </li>\n ) : ''}\n <li className={linkContainerClasses}>\n <span className={linkClasses}>\n <Link to={`${url}#api`}>\n <SearchItemIcon id=\"api\" />\n API\n </Link>\n </span>\n </li>\n </ul>\n </div>\n </li>\n );\n};\n\nexport default DatasetSearchListItem;","import React from 'react';\nimport { useState } from 'react';\nimport { Dialog, Button } from '@cmsgov/design-system';\nimport SearchItemIcon from '../../assets/icons/searchItem';\n\ntype LargeFileDialogProps = {\n downloadUrl: string;\n};\n\nconst LargeFileDialog = (props: LargeFileDialogProps) => {\n const [modalOpen, setModalOpen] = useState(false);\n const { downloadUrl } = props;\n return (\n <>\n <Button variation=\"solid\" className=\"ds-l-col--12 ds-l-md-col--auto\" onClick={() => setModalOpen(true)}>\n <SearchItemIcon id=\"download\" />\n Download\n </Button>\n {modalOpen && (\n <Dialog\n onExit={() => setModalOpen(false)}\n isOpen={modalOpen}\n heading=\"Notice: Large File Size\"\n actions={\n <>\n <Button href={downloadUrl} className=\"ds-u-margin-right--2 \" variation=\"solid\">\n Yes, download\n </Button>\n <Button variation=\"ghost\" onClick={() => setModalOpen(false)}>\n No, cancel\n </Button>\n </>\n }\n >\n <p>\n This is a very large file and, depending on your network characteristics and software,\n may take a long time to download or fail to download. Additionally, the number of rows\n in the file may larger than the maximum rows your version of Microsoft Excel supports.\n If you can't download the file, we recommend engaging your IT support staff. If you are\n able to download the file but are unable to open it in MS Excel or get a message that\n the data has been truncated, we recommend trying alternative programs such as MS Access,\n Universal Viewer, Editpad or any other software your organization has available for\n large datasets.\n </p>\n <p>Would you like to proceed?</p>\n </Dialog>\n )}\n </>\n );\n};\n\nexport default LargeFileDialog;","import React from 'react'\ntype IconProps = {\n id: string;\n};\n\nconst SearchItemIcon = (props: IconProps) => {\n switch (props.id) {\n case 'overview':\n return (\n <svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n aria-hidden=\"true\"\n >\n <title>Overview Icon</title>\n <g stroke=\"none\" strokeWidth=\"1\" fillRule=\"evenodd\">\n <g transform=\"translate(0.000000, -4.000000)\" fillRule=\"nonzero\">\n <g transform=\"translate(0.000000, -1.000000)\">\n <g transform=\"translate(0.000000, 5.000000)\">\n <g>\n <path d=\"M9.55610973,15.6404494 C9.31670823,15.8801498 9.02743142,16 8.6882793,16 C8.34912718,16 8.05985037,15.8801498 7.82044888,15.6404494 L0.33915212,8.14981273 C0.206151288,8.01664586 0.116375727,7.87682064 0.0698254364,7.73033708 C0.0232751455,7.58385352 0,7.43071161 0,7.27091136 L0,1.19850187 C0,0.852267998 0.113050707,0.565959218 0.33915212,0.339575531 C0.565253533,0.113191844 0.85120532,0 1.19700748,0 L7.26184539,0 C7.42144638,0 7.58104738,0.0233042031 7.74064838,0.0699126092 C7.90024938,0.116521015 8.04655029,0.206408656 8.17955112,0.339575531 L15.6209476,7.79026217 C15.8736492,8.04327923 16,8.33957553 16,8.67915106 C16,9.01872659 15.8736492,9.31502289 15.6209476,9.56803995 L9.55610973,15.6404494 Z M8.75953079,15 L15,8.75953079 L7.24046921,1 L1,1 L1,7.24046921 L8.75953079,15 Z M3,4 C3.26923077,4 3.50320513,3.90064103 3.70192308,3.70192308 C3.90064103,3.50320513 4,3.26923077 4,3 C4,2.73076923 3.90064103,2.49679487 3.70192308,2.29807692 C3.50320513,2.09935897 3.26923077,2 3,2 C2.73076923,2 2.49679487,2.09935897 2.29807692,2.29807692 C2.09935897,2.49679487 2,2.73076923 2,3 C2,3.26923077 2.09935897,3.50320513 2.29807692,3.70192308 C2.49679487,3.90064103 2.73076923,4 3,4 L3,4 Z\"></path>\n </g>\n <g transform=\"translate(7.890470, 8.890470) rotate(45.000000) translate(-7.890470, -8.890470) translate(3.543164, 6.321607)\">\n <path d=\"M6.16557222,4.98656515 C6.09634145,5.05213515 6.01557222,5.08309876 5.92326452,5.07945598 C5.83095683,5.07581321 5.7501876,5.04120682 5.68095683,4.97563682 C5.61172606,4.91006682 5.57711068,4.8317471 5.57711068,4.74067766 C5.57711068,4.64960821 5.61172606,4.57128849 5.68095683,4.50571849 L7.72326452,2.57140353 L5.69249529,0.648016895 C5.62326452,0.582446896 5.59057222,0.504127176 5.59441837,0.413057733 C5.59826452,0.32198829 5.63480299,0.243668569 5.70403375,0.17809857 C5.77326452,0.112528571 5.85595683,0.0797435719 5.95211068,0.0797435719 C6.04826452,0.0797435719 6.13095683,0.112528571 6.2001876,0.17809857 L8.47326452,2.34190853 C8.54249529,2.40747853 8.57711068,2.48397686 8.57711068,2.57140353 C8.57711068,2.65883019 8.54249529,2.73532853 8.47326452,2.80089852 L6.16557222,4.98656515 Z M2.29670341,4.98413866 L0.0208413435,2.82877761 C-0.0481241737,2.7631321 -0.0826069324,2.68654566 -0.0826069324,2.59901831 C-0.0826069324,2.51149096 -0.0481241737,2.43490453 0.0208413435,2.36925901 L2.31969192,0.181075204 C2.38865744,0.115429689 2.47103291,0.0826069324 2.56681835,0.0826069324 C2.6626038,0.0826069324 2.74497927,0.115429689 2.81394479,0.181075204 C2.88291031,0.246720718 2.91739307,0.325130638 2.91739307,0.416304963 C2.91739307,0.507479288 2.88291031,0.585889208 2.81394479,0.651534722 L0.76796778,2.59901831 L2.79095629,4.52462006 C2.8599218,4.59026558 2.89440456,4.66685201 2.89440456,4.75437936 C2.89440456,4.84190671 2.8599218,4.91849315 2.79095629,4.98413866 C2.72199077,5.04978418 2.63961529,5.08260693 2.54382985,5.08260693 C2.44804441,5.08260693 2.36566893,5.04978418 2.29670341,4.98413866 L2.29670341,4.98413866 Z\"></path>\n </g>\n </g>\n </g>\n </g>\n </g>\n </svg>\n );\n case 'data-table':\n return (\n <svg\n width=\"16px\"\n height=\"12px\"\n viewBox=\"0 0 16 12\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n aria-hidden=\"true\"\n >\n <title>Data Table Icon</title>\n <g stroke=\"none\" strokeWidth=\"1\" fillRule=\"evenodd\">\n <g transform=\"translate(-132.000000, -6.000000)\" fillRule=\"nonzero\">\n <g transform=\"translate(132.000000, -1.000000)\">\n <g transform=\"translate(8.000000, 13.000000) scale(1, -1) translate(-8.000000, -13.000000) translate(0.000000, 7.000000)\">\n <path d=\"M0,12 L0,0 L16,0 L16,12 L0,12 Z M1,10 L5,10 L5,1 L1,1 L1,10 Z M6,10 L10,10 L10,1 L6,1 L6,10 Z M11,10 L15,10 L15,1 L11,1 L11,10 Z\"></path>\n </g>\n </g>\n </g>\n </g>\n </svg>\n );\n case 'api':\n return (\n <svg\n width=\"16px\"\n height=\"13px\"\n viewBox=\"0 0 16 13\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n aria-hidden=\"true\"\n >\n <title>API Icon</title>\n <g stroke=\"none\" strokeWidth=\"1\" fillRule=\"evenodd\">\n <g transform=\"translate(-279.000000, -6.000000)\" fillRule=\"nonzero\">\n <g transform=\"translate(279.000000, -1.000000)\">\n <g transform=\"translate(0.000000, 7.000000)\">\n <path d=\"M10.5806452,13 C10.4129032,13 10.2741935,12.9424479 10.1645161,12.8273438 C10.0548387,12.7122396 10,12.5666667 10,12.390625 C10,12.2145833 10.0548387,12.0690104 10.1645161,11.9539062 C10.2741935,11.8388021 10.4129032,11.78125 10.5806452,11.78125 L12.3225806,11.78125 C12.5935484,11.78125 12.8225806,11.6830729 13.0096774,11.4867188 C13.1967742,11.2903646 13.2903226,11.05 13.2903226,10.765625 L13.2903226,8.734375 C13.2903226,8.23333333 13.4354839,7.78645833 13.7258065,7.39375 C14.016129,7.00104167 14.3870968,6.73020833 14.8387097,6.58125 L14.8387097,6.41875 C14.3870968,6.28333333 14.016129,6.01588542 13.7258065,5.61640625 C13.4354839,5.21692708 13.2903226,4.76666667 13.2903226,4.265625 L13.2903226,2.234375 C13.2903226,1.95 13.1967742,1.70963542 13.0096774,1.51328125 C12.8225806,1.31692708 12.5935484,1.21875 12.3225806,1.21875 L10.5806452,1.21875 C10.4129032,1.21875 10.2741935,1.16119792 10.1645161,1.04609375 C10.0548387,0.930989583 10,0.785416667 10,0.609375 C10,0.433333333 10.0548387,0.287760417 10.1645161,0.17265625 C10.2741935,0.0575520833 10.4129032,8.8817842e-16 10.5806452,8.8817842e-16 L12.3225806,8.8817842e-16 C12.916129,8.8817842e-16 13.4193548,0.216666667 13.8322581,0.65 C14.2451613,1.08333333 14.4516129,1.61145833 14.4516129,2.234375 L14.4516129,4.265625 C14.4516129,4.55 14.5451613,4.79036458 14.7322581,4.98671875 C14.9193548,5.18307292 15.1483871,5.28125 15.4193548,5.28125 C15.5870968,5.28125 15.7258065,5.33880208 15.8354839,5.45390625 C15.9451613,5.56901042 16,5.71458333 16,5.890625 L16,7.109375 C16,7.271875 15.9451613,7.4140625 15.8354839,7.5359375 C15.7258065,7.6578125 15.5870968,7.71875 15.4193548,7.71875 C15.1483871,7.71875 14.9193548,7.81692708 14.7322581,8.01328125 C14.5451613,8.20963542 14.4516129,8.45 14.4516129,8.734375 L14.4516129,10.765625 C14.4516129,11.3885417 14.2451613,11.9166667 13.8322581,12.35 C13.4193548,12.7833333 12.916129,13 12.3225806,13 L10.5806452,13 Z M3.67741935,13 C3.08387097,13 2.58064516,12.7833333 2.16774194,12.35 C1.75483871,11.9166667 1.5483871,11.3885417 1.5483871,10.765625 L1.5483871,8.734375 C1.5483871,8.45 1.45483871,8.20963542 1.26774194,8.01328125 C1.08064516,7.81692708 0.851612903,7.71875 0.580645161,7.71875 C0.425806452,7.71875 0.290322581,7.6578125 0.174193548,7.5359375 C0.0580645161,7.4140625 3.52606833e-13,7.271875 3.52606833e-13,7.109375 L3.52606833e-13,5.890625 C3.52606833e-13,5.71458333 0.0580645161,5.56901042 0.174193548,5.45390625 C0.290322581,5.33880208 0.425806452,5.28125 0.580645161,5.28125 C0.851612903,5.28125 1.08064516,5.18307292 1.26774194,4.98671875 C1.45483871,4.79036458 1.5483871,4.55 1.5483871,4.265625 L1.5483871,2.234375 C1.5483871,1.61145833 1.75483871,1.08333333 2.16774194,0.65 C2.58064516,0.216666667 3.08387097,8.8817842e-16 3.67741935,8.8817842e-16 L5.41935484,8.8817842e-16 C5.58709677,8.8817842e-16 5.72580645,0.0575520833 5.83548387,0.17265625 C5.94516129,0.287760417 6,0.433333333 6,0.609375 C6,0.785416667 5.94516129,0.930989583 5.83548387,1.04609375 C5.72580645,1.16119792 5.58709677,1.21875 5.41935484,1.21875 L3.67741935,1.21875 C3.40645161,1.21875 3.17741935,1.31692708 2.99032258,1.51328125 C2.80322581,1.70963542 2.70967742,1.95 2.70967742,2.234375 L2.70967742,4.265625 C2.70967742,4.76666667 2.56451613,5.21692708 2.27419355,5.61640625 C1.98387097,6.01588542 1.61290323,6.28333333 1.16129032,6.41875 L1.16129032,6.58125 C1.61290323,6.73020833 1.98387097,7.00104167 2.27419355,7.39375 C2.56451613,7.78645833 2.70967742,8.23333333 2.70967742,8.734375 L2.70967742,10.765625 C2.70967742,11.05 2.80322581,11.2903646 2.99032258,11.4867188 C3.17741935,11.6830729 3.40645161,11.78125 3.67741935,11.78125 L5.41935484,11.78125 C5.58709677,11.78125 5.72580645,11.8388021 5.83548387,11.9539062 C5.94516129,12.0690104 6,12.2145833 6,12.390625 C6,12.5666667 5.94516129,12.7122396 5.83548387,12.8273438 C5.72580645,12.9424479 5.58709677,13 5.41935484,13 L3.67741935,13 Z\"></path>\n </g>\n </g>\n </g>\n </g>\n </svg>\n );\n case 'download':\n return (\n <svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n aria-hidden=\"true\"\n >\n <title>Download Icon</title>\n <g stroke=\"none\" strokeWidth=\"1\" fillRule=\"evenodd\">\n <g transform=\"translate(-370.000000, -4.000000)\" fillRule=\"nonzero\">\n <g transform=\"translate(370.000000, -1.000000)\">\n <path d=\"M9,6 C9,5.446875 8.553125,5 8,5 C7.446875,5 7,5.446875 7,6 L7,13.584375 L4.70625,11.290625 C4.315625,10.9 3.68125,10.9 3.290625,11.290625 C2.9,11.68125 2.9,12.315625 3.290625,12.70625 L7.290625,16.70625 C7.68125,17.096875 8.315625,17.096875 8.70625,16.70625 L12.70625,12.70625 C13.096875,12.315625 13.096875,11.68125 12.70625,11.290625 C12.315625,10.9 11.68125,10.9 11.290625,11.290625 L9,13.584375 L9,6 Z M2,16 C0.896875,16 0,16.896875 0,18 L0,19 C0,20.103125 0.896875,21 2,21 L14,21 C15.103125,21 16,20.103125 16,19 L16,18 C16,16.896875 15.103125,16 14,16 L10.828125,16 L9.4125,17.415625 C8.63125,18.196875 7.365625,18.196875 6.584375,17.415625 L5.171875,16 L2,16 Z M13.5,19.25 C13.084375,19.25 12.75,18.915625 12.75,18.5 C12.75,18.084375 13.084375,17.75 13.5,17.75 C13.915625,17.75 14.25,18.084375 14.25,18.5 C14.25,18.915625 13.915625,19.25 13.5,19.25 Z\"></path>\n </g>\n </g>\n </g>\n </svg>\n );\n case 'data-dictionary':\n return (\n <svg width=\"14px\" height=\"16px\" viewBox=\"0 0 14 16\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\" aria-hidden=\"true\">\n <title>Data Dictionary Icon</title>\n <g id=\"Dev-Handoff\" stroke=\"none\" strokeWidth=\"1\" fillRule=\"evenodd\">\n <g id=\"Group-15\" transform=\"translate(0, 0)\" fillRule=\"nonzero\">\n <path d=\"M0.0218026938,8.0971396 C0.0218026938,6.24591342 -0.0192244811,4.39368657 0.0358119731,2.54446171 C0.0728364968,1.28162525 1.07950328,0.231929969 2.34434106,0.0678212692 C2.69057039,0.022791443 3.04180304,0.00477951255 3.39003369,0.00477951255 C6.28395052,-0.000223801472 9.17786735,-0.00322578988 12.0717842,0.00578017535 C12.6811878,0.00778150096 13.2435603,0.169888875 13.6428248,0.683228893 C13.9059991,1.02145292 13.9950581,1.42171804 13.9970594,1.83299045 C14.0050647,4.76793446 14.0080667,7.70287846 13.9950581,10.6378225 C13.9920561,11.280248 13.7689083,11.8466231 13.1875232,12.2078624 C13.0464297,12.2959207 12.992394,12.4099963 12.9953959,12.5811096 C13.0054026,13.1394795 13.0064032,13.69885 12.9953959,14.2572198 C12.9913933,14.4473458 13.0364231,14.5173922 13.2425597,14.5243968 C13.6178082,14.5364047 13.8979938,14.7765638 13.9720428,15.0987772 C14.0450912,15.4129854 13.9069998,15.7482074 13.6088022,15.9013088 C13.4827187,15.9663519 13.3226127,15.9933698 13.1775166,15.9933698 C9.62516362,15.9983731 6.07181,16.0053777 2.51945705,15.9933698 C1.09851587,15.9883665 0.0708351712,15.0207255 0.0268060079,13.5997844 C-0.0202251439,12.0507583 0.00979474021,10.4987303 0.00579208899,8.94770299 C0.00579208899,8.66451541 0.00579208899,8.38032718 0.00579208899,8.0971396 C0.010795403,8.0971396 0.015798717,8.0971396 0.0218026938,8.0971396 L0.0218026938,8.0971396 Z M1.49477834,11.1421565 C1.99510974,11.1071333 2.44740933,11.0490949 2.90070958,11.0480942 C5.91970926,11.0400889 8.93870894,11.0440916 11.9577086,11.0430909 C12.4020029,11.0430909 12.5280864,10.9200094 12.5280864,10.4837204 C12.5280864,7.66585394 12.5280864,4.84698682 12.5280864,2.02912036 C12.5280864,1.58382542 12.4430301,1.49976974 12.0057404,1.49976974 C9.7952763,1.49976974 7.58581283,1.49976974 5.37534869,1.49976974 C4.50777404,1.49976974 3.64019939,1.4927651 2.7736254,1.50277173 C2.01712432,1.51177769 1.47576575,2.0711482 1.47576575,2.82664862 C1.47576575,5.50342162 1.47576575,8.17919395 1.47576575,10.855967 C1.47576575,10.9610365 1.48877436,11.0661061 1.49377768,11.1421565 L1.49477834,11.1421565 Z M6.8923535,14.5153908 C8.3263033,14.5153908 9.7602531,14.5093869 11.1932022,14.5203941 C11.4393653,14.5223955 11.5334276,14.467359 11.5224203,14.2041847 C11.5014064,13.7388765 11.5044084,13.2705663 11.5224203,12.8042574 C11.5314263,12.5630977 11.4553759,12.4960533 11.2132155,12.4960533 C8.37933843,12.5040586 5.54446071,12.5010566 2.71058365,12.5020573 C2.5935061,12.5020573 2.47642855,12.4990553 2.36135233,12.5140652 C1.64988108,12.6031242 1.26662722,13.4186644 1.63387047,14.0360733 C1.86102093,14.4173259 2.22426152,14.5083862 2.61652134,14.5113882 C4.04146518,14.5203941 5.46740967,14.5153908 6.8923535,14.5153908 L6.8923535,14.5153908 Z\" id=\"Shape\"></path>\n <path d=\"M7.50976245,7.49574126 C6.62717786,7.49574126 5.7435926,7.49774259 4.86100801,7.49574126 C4.36167727,7.49373993 4.05747578,7.22956495 4.03045788,6.787272 C4.00243933,6.33597307 4.34366534,6.01476031 4.87101464,6.01275899 C5.95373179,6.00775567 7.03644895,6.01175832 8.1191661,6.01175832 C8.79361283,6.01175832 9.46805956,6.00675501 10.143507,6.01375965 C10.7519099,6.01976362 11.0981393,6.45305062 10.9360319,6.99140721 C10.8429703,7.30261334 10.55578,7.4947406 10.1585169,7.49674192 C9.2759323,7.50074457 8.39234705,7.49774259 7.50976245,7.49774259 L7.50976245,7.49574126 Z\" id=\"Path\"></path>\n <path d=\"M7.50776113,5.00108889 C6.61617057,5.00108889 5.72458001,5.0060922 4.83298945,4.99908757 C4.25360569,4.99508491 3.90237305,4.53177804 4.07248572,4.01643669 C4.1565414,3.76226834 4.33365871,3.61517091 4.5868264,3.55913379 C4.6999013,3.53411722 4.81797951,3.52611192 4.9340564,3.52611192 C6.6501931,3.52411059 8.36733048,3.52411059 10.0834672,3.52611192 C10.5577814,3.52611192 10.8299616,3.69022062 10.9340306,4.03044597 C11.090134,4.53778201 10.7439046,4.99408425 10.1825328,4.99908757 C9.29094224,5.00709287 8.39935169,5.00108889 7.50776113,5.00108889 L7.50776113,5.00108889 Z\" id=\"Path\"></path>\n </g>\n </g>\n </svg>\n );\n default:\n return null;\n }\n};\n\nexport default SearchItemIcon;\n","import DOMPurify from 'dompurify';\nimport truncate from 'lodash.truncate';\n\nexport function truncateText(textString: string, textLength: number = 240): string {\n if (!textString) {\n return '';\n }\n\n let cleanedText = textString;\n if(cleanedText.split('</p>').length > 1) {\n cleanedText = cleanedText.split('</p>')[0];\n }\n\n if(cleanedText.split('<br/>').length > 1) {\n cleanedText = cleanedText.split('<br/>')[0];\n }\n\n cleanedText = truncate(cleanedText, {\n 'length': textLength,\n 'separator': ' '}\n );\n\n return DOMPurify.sanitize(cleanedText, {ALLOWED_TAGS: []});\n}","import React from 'react';\nimport DatasetDateItem from '../DatasetDateItem';\n\ntype DateObject = {\n modified?: string;\n released?: string;\n refresh?: string;\n};\n\ntype DatasetDateProps = {\n date: DateObject;\n updatedBoldLabel?: boolean;\n releasedBoldLabel?: boolean;\n refreshBoldLabel?: boolean;\n displayTooltips?: boolean;\n};\n\nconst DatasetDate = (props: DatasetDateProps) => {\n const {\n date,\n updatedBoldLabel = false,\n releasedBoldLabel = false,\n refreshBoldLabel = false,\n displayTooltips = true\n } = props;\n\n const { modified, released, refresh } = date;\n\n // Create an array of date items to render\n const dateItems = [];\n \n if (modified) {\n dateItems.push(\n <DatasetDateItem \n key=\"modified\"\n displayTooltips={displayTooltips} \n type='modified' \n date={modified} \n boldLabel={updatedBoldLabel} \n />\n );\n }\n \n if (released) {\n dateItems.push(\n <DatasetDateItem \n key=\"released\"\n displayTooltips={displayTooltips} \n type='released' \n date={released} \n boldLabel={releasedBoldLabel} \n />\n );\n }\n \n if (refresh) {\n dateItems.push(\n <DatasetDateItem \n key=\"refresh\"\n displayTooltips={displayTooltips} \n type='refresh' \n date={refresh} \n boldLabel={refreshBoldLabel} \n />\n );\n }\n\n return (\n <div className='dataset-date'>\n {dateItems.map((item, index) => (\n <React.Fragment key={index}>\n {item}\n {index < dateItems.length - 1 && (\n <span className='bullet-point'>•</span>\n )}\n </React.Fragment>\n ))}\n </div>\n );\n};\n\nexport default DatasetDate; ","import React from 'react';\nimport { Tooltip, TooltipIcon } from '@cmsgov/design-system';\nimport TransformedDate from '../TransformedDate';\ntype DateType = 'modified' | 'released' | 'refresh';\n\ntype DatasetDateItemProps = {\n type: DateType;\n date: string;\n boldLabel?: boolean;\n displayTooltips?: boolean;\n};\n\nconst DatasetDateItem = (props: DatasetDateItemProps) => {\n const { type, date, boldLabel = false, displayTooltips = true } = props;\n\n const dateText: Record<DateType, string> = {\n modified: 'Last Modified',\n released: 'Released',\n refresh: 'Planned Update'\n };\n\n const tooltipContent = {\n modified: (\n <>\n <strong>Last Modified: </strong> The date the <br/>dataset was last updated.\n </>\n ),\n released: (\n <>\n <strong>Released: </strong> The date the most <br/>recent dataset was made available<br/>to the public.\n </>\n ),\n refresh: (\n <>\n <strong>Planned Update:</strong> The date the <br/>dataset is scheduled to be updated.\n </>\n )\n };\n\n return (\n <div className={`dataset-date-item${boldLabel ? ' bold-label' : ''}`}>\n <span className='dataset-data-item-label'>\n <span>{dateText[type]}</span>: <TransformedDate date={date} />\n </span>\n {displayTooltips === true && (\n <Tooltip\n aria-label={dateText[type]}\n className=\"ds-c-tooltip__trigger-icon ds-u-display--inline ds-u-padding-left--0 ds-uw-padding-right--0\"\n title={tooltipContent[type]}\n placement=\"top\"\n >\n <TooltipIcon />\n </Tooltip>\n )}\n </div>\n );\n};\n\nexport default DatasetDateItem; ","import { DistributionType } from \"../types/dataset\";\n\nexport function getFormatType(dist : DistributionType) {\n if (dist && dist.data) {\n if(dist.data.format) {\n return dist.data.format.toLowerCase()\n }\n if(dist.data.mediaType) {\n const mediaType = dist.data.mediaType.split('/');\n if (mediaType.length && mediaType[1]) {\n return mediaType[1].toLowerCase();\n }\n }\n if(dist.data[\"%Ref:downloadURL\"].length && dist.data[\"%Ref:downloadURL\"][0].data) {\n if(dist.data[\"%Ref:downloadURL\"][0].data.mimeType) {\n const mimeType = dist.data[\"%Ref:downloadURL\"][0].data.mimeType.split(\"/\");\n if (mimeType.length && mimeType[1]) {\n return mimeType[1].toLowerCase();\n }\n }\n }\n }\n return '';\n}","import React from 'react';\nimport { Choice, Accordion, AccordionItem, AddIcon, RemoveIcon } from '@cmsgov/design-system';\nimport { SearchAPIFacetType, SearchFacetsPropTypes } from '../../types/search';\nimport './dataset-search-facets.scss';\n\nconst SearchFacets = (props: SearchFacetsPropTypes) => {\n const { facets, title, onClickFunction, selectedFacets = [] } = props;\n const filteredFacets = facets .filter((f: SearchAPIFacetType) => {\n return Number(f.total) > 0 || selectedFacets.findIndex((i) => i === f.name) !== -1;\n });\n\n return (\n <div className=\"dkan-dataset-search--facet-container ds-u-margin-bottom--4\">\n <Accordion>\n <AccordionItem\n contentClassName=\"ds-u-padding-left--1 ds-u-padding-right--0\"\n heading={title}\n defaultOpen\n >\n {!filteredFacets.length ?\n <p className=\"ds-text-heading--md\">No matching facets found.</p>\n :\n <ul>\n {filteredFacets\n .map((f: SearchAPIFacetType) => {\n return (\n <li key={f.name as React.Key}>\n <Choice\n className=\"ds-u-margin-y--1\"\n checked={selectedFacets.findIndex((s) => s === f.name) > -1 ? true : false}\n name={`facet_theme_${f.name}`}\n type=\"checkbox\"\n label={`${f.name} (${f.total})`}\n value={f.name}\n onClick={() => onClickFunction(f.type, f.name)}\n />\n </li>\n )})\n }\n </ul>\n }\n </AccordionItem>\n </Accordion>\n </div>\n );\n};\n\nexport default SearchFacets;\n","import React from 'react';\nimport SwaggerUI from 'swagger-ui-react';\nimport { SpanOpenAPIVersion, SpanVersionStamp } from '@civicactions/swagger-ui-layout';\nimport 'swagger-ui-react/swagger-ui.css';\nimport '../../templates/APIPage/swagger-ui-overrides.scss';\n\nconst ApiDocumentation = ({ endpoint }) => {\n return (\n <div>\n <SwaggerUI\n url={endpoint}\n plugins={[SpanOpenAPIVersion, SpanVersionStamp]}\n />\n </div>\n );\n};\n\nexport default ApiDocumentation;\n","import React from 'react';\nimport { useMediaQuery } from 'react-responsive';\nimport {\n Button,\n Tooltip,\n} from '@cmsgov/design-system';\nimport DataTablePageResults from '../DataTablePageResults';\nimport DataTableDensity from '../DataTableDensity';\nimport DataTableRowChanger from '../DataTableRowChanger';\nimport DownloadIcon from '../../assets/icons/download';\nimport CopyIcon from '../../assets/icons/copy';\nimport SettingsIcon from '../../assets/icons/settings';\nimport './resource-header.scss';\n\nconst ResourceHeader = ({\n setTablePadding,\n includeDensity,\n includeDownload,\n resource,\n tablePadding,\n downloadUrl,\n}) => {\n const md = useMediaQuery({ minWidth: 0, maxWidth: 768 });\n const { limit, offset, count, setLimit, setOffset } = resource;\n const intCount = count ? parseInt(count) : 0;\n\n return (\n <div className=\"dc-c-resource-header\">\n <div className=\"ds-l-row ds-u-align-items--center\">\n <div className=\"ds-l-col--12 ds-u-display--flex ds-u-justify-content--between ds-u-align-items--center ds-u-margin-bottom--2\">\n <div className=\"ds-u-font-weight--bold\">\n {(!resource.loading && resource.count !== null) && (\n <DataTablePageResults\n totalRows={parseInt(intCount)}\n limit={parseInt(limit)}\n offset={parseInt(offset)}\n />\n )}\n </div>\n <div className=\"dc-c-resource-header--buttons\">\n {includeDownload && (\n <>\n <Button\n size=\"small\"\n className=\"ds-u-text-align--left ds-u-font-weight--normal ds-u-font-size--base ds-u-margin-right--1\"\n href={downloadUrl}\n >\n <DownloadIcon />\n {!md && (\n <span className=\"ds-u-font-weight--semibold ds-u-margin-left--1\">\n Download filtered data (CSV)\n </span>\n )}\n </Button>\n\n <Tooltip\n onOpen={() => {\n navigator.clipboard.writeText(window.location.href);\n }}\n className=\"ds-c-button ds-c-button--small ds-u-text-align--left ds-u-margin-right--1 display-settings-font\"\n placement=\"bottom\"\n dialog\n ariaLabel=\"Copy link to filtered data\"\n title=\"Link copied to clipboard\"\n >\n <CopyIcon />\n {!md && (\n <span className=\"ds-u-font-weight--semibold ds-u-margin-left--1\">\n Copy link to filtered data\n </span>\n )}\n </Tooltip>\n </>\n )}\n <Tooltip\n className=\"ds-c-button ds-c-button--small ds-u-text-align--left display-settings-font\"\n placement=\"bottom\"\n dialog\n ariaLabel=\"Display settings\"\n title={\n <div className=\"dc-c-display-settings\">\n <DataTableRowChanger limit={Number(limit)} setLimit={setLimit} setOffset={setOffset} />\n {includeDensity && (\n <DataTableDensity\n setTablePadding={setTablePadding}\n tablePadding={tablePadding}\n />\n )}\n </div>\n }\n >\n <SettingsIcon />\n {!md && (\n <span className=\"ds-u-font-weight--semibold ds-u-margin-left--1\">\n Display settings\n </span>\n )}\n </Tooltip>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default ResourceHeader;\n","export { default } from './DataTablePageResults';","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport type DataTablePageResultsType = {\n totalRows: number;\n limit: number;\n offset: number;\n className?: string;\n}\n\nconst DataTablePageResults = ({\n totalRows, limit, offset, className = 'data-table-results'\n}: DataTablePageResultsType) => {\n const numTotalRows = totalRows;\n if (numTotalRows === 0) {\n return <p className={className}>{`0 - 0 of 0 rows`}</p>\n }\n const ofTotal = () => {\n if (limit >= numTotalRows) { return numTotalRows; }\n if (limit + offset >= numTotalRows) { return numTotalRows; }\n if (offset === 0) { return limit; }\n return (offset + limit);\n }\n const page = offset / limit;\n const startTotal = () => (page * limit + 1)\n return (\n <p className={className}>\n Displaying{' '}\n <span className=\"ds-u-font-weight--bold\">{`${startTotal().toLocaleString()} - ${ofTotal().toLocaleString()}`}</span>{' '}\n of <span className=\"ds-u-font-weight--bold\">{`${numTotalRows.toLocaleString()}`}</span>{' '}\n rows\n </p>\n );\n};\n\nDataTablePageResults.propTypes = {\n className: PropTypes.string,\n totalRows: PropTypes.number.isRequired,\n limit: PropTypes.number.isRequired,\n offset: PropTypes.number.isRequired,\n};\n\nexport default DataTablePageResults;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Dropdown } from '@cmsgov/design-system';\n\nconst DataTableDensity = ({ setTablePadding, tablePadding }) => {\n return (\n <div className=\"ds-u-display--flex\">\n <Dropdown\n options={[\n { label: 'Tight', value: 'ds-u-padding-y--0' },\n { label: 'Normal', value: 'ds-u-padding-y--1' },\n { label: 'Expanded', value: 'ds-u-padding-y--2' },\n ]}\n label=\"Display density:\"\n labelClassName=\"ds-u-margin-top--0\"\n name=\"datatable_display_density\"\n onChange={(e) => setTablePadding(e.target.value)}\n defaultValue={tablePadding}\n />\n </div>\n );\n};\n\nDataTableDensity.propTypes = {\n setTablePadding: PropTypes.func.isRequired,\n};\n\nexport default DataTableDensity;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Dropdown, DropdownValue, DropdownOption } from '@cmsgov/design-system';\n\ntype DataTableRowChangerProps = {\n limit: DropdownValue,\n rowOptions: Array<Number>,\n setLimit: Function,\n};\n\nconst DataTableRowChanger = ({limit, rowOptions = [10, 25, 50, 100], setLimit} : DataTableRowChangerProps) => {\n const rowOptionsFormatted = rowOptions.map((row: Number) => ({ label: row.toString(), value: row.toString() as DropdownValue } )) as Array<DropdownOption>;\n return (\n <div className=\"ds-u-display--flex\">\n <Dropdown\n options={rowOptionsFormatted}\n label=\"Rows per page:\"\n labelClassName=\"ds-u-margin-top--0\"\n name=\"datatable_rows_per_page\"\n onChange={(e) => setLimit(e.target.value)}\n defaultValue={limit.toString()}\n />\n </div>\n );\n};\n\nDataTableRowChanger.propTypes = {\n rowOptions: PropTypes.arrayOf(PropTypes.number),\n setLimit: PropTypes.func.isRequired,\n limit: PropTypes.number,\n};\n\nexport default DataTableRowChanger;\n","import React from 'react';\n\nconst DownloadIcon = () => (\n <svg\n width=\"15px\"\n height=\"15px\"\n viewBox=\"0 0 384 512\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n >\n <title>Download Icon</title>\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <path\n fill=\"#112E51\"\n fillRule=\"nonzero\"\n d=\"M384 128h-128V0L384 128zM256 160H384v304c0 26.51-21.49 48-48 48h-288C21.49 512 0 490.5 0 464v-416C0 21.49 21.49 0 48 0H224l.0039 128C224 145.7 238.3 160 256 160zM255 295L216 334.1V232c0-13.25-10.75-24-24-24S168 218.8 168 232v102.1L128.1 295C124.3 290.3 118.2 288 112 288S99.72 290.3 95.03 295c-9.375 9.375-9.375 24.56 0 33.94l80 80c9.375 9.375 24.56 9.375 33.94 0l80-80c9.375-9.375 9.375-24.56 0-33.94S264.4 285.7 255 295z\"\n />\n </g>\n </svg>\n);\n\nexport default DownloadIcon;\n","import React from 'react';\n\nconst CopyIcon = () => (\n <svg\n width=\"15px\"\n height=\"15px\"\n viewBox=\"0 0 512 512\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n >\n <title>Copy Icon</title>\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <path\n fill=\"#112E51\"\n fillRule=\"nonzero\"\n d=\"M384 96L384 0h-112c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48H464c26.51 0 48-21.49 48-48V128h-95.1C398.4 128 384 113.6 384 96zM416 0v96h96L416 0zM192 352V128h-144c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h192c26.51 0 48-21.49 48-48L288 416h-32C220.7 416 192 387.3 192 352z\"\n />\n </g>\n </svg>\n);\n\nexport default CopyIcon;\n","import React from 'react';\n\nconst SettingsIcon = () => (\n <svg\n width=\"15px\"\n height=\"15px\"\n // viewBox=\"0 0 15 15\"\n viewBox=\"0 0 512 512\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n >\n <title>Settings Icon</title>\n <g stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <path\n fill=\"#112E51\"\n fillRule=\"nonzero\"\n d=\"M495.9 166.6C499.2 175.2 496.4 184.9 489.6 191.2L446.3 230.6C447.4 238.9 448 247.4 448 256C448 264.6 447.4 273.1 446.3 281.4L489.6 320.8C496.4 327.1 499.2 336.8 495.9 345.4C491.5 357.3 486.2 368.8 480.2 379.7L475.5 387.8C468.9 398.8 461.5 409.2 453.4 419.1C447.4 426.2 437.7 428.7 428.9 425.9L373.2 408.1C359.8 418.4 344.1 427 329.2 433.6L316.7 490.7C314.7 499.7 307.7 506.1 298.5 508.5C284.7 510.8 270.5 512 255.1 512C241.5 512 227.3 510.8 213.5 508.5C204.3 506.1 197.3 499.7 195.3 490.7L182.8 433.6C167 427 152.2 418.4 138.8 408.1L83.14 425.9C74.3 428.7 64.55 426.2 58.63 419.1C50.52 409.2 43.12 398.8 36.52 387.8L31.84 379.7C25.77 368.8 20.49 357.3 16.06 345.4C12.82 336.8 15.55 327.1 22.41 320.8L65.67 281.4C64.57 273.1 64 264.6 64 256C64 247.4 64.57 238.9 65.67 230.6L22.41 191.2C15.55 184.9 12.82 175.3 16.06 166.6C20.49 154.7 25.78 143.2 31.84 132.3L36.51 124.2C43.12 113.2 50.52 102.8 58.63 92.95C64.55 85.8 74.3 83.32 83.14 86.14L138.8 103.9C152.2 93.56 167 84.96 182.8 78.43L195.3 21.33C197.3 12.25 204.3 5.04 213.5 3.51C227.3 1.201 241.5 0 256 0C270.5 0 284.7 1.201 298.5 3.51C307.7 5.04 314.7 12.25 316.7 21.33L329.2 78.43C344.1 84.96 359.8 93.56 373.2 103.9L428.9 86.14C437.7 83.32 447.4 85.8 453.4 92.95C461.5 102.8 468.9 113.2 475.5 124.2L480.2 132.3C486.2 143.2 491.5 154.7 495.9 166.6V166.6zM256 336C300.2 336 336 300.2 336 255.1C336 211.8 300.2 175.1 256 175.1C211.8 175.1 176 211.8 176 255.1C176 300.2 211.8 336 256 336z\"\n />\n </g>\n </svg>\n);\n\nexport default SettingsIcon;\n","import React, { useContext } from 'react';\n\nimport { Spinner, TextField } from '@cmsgov/design-system';\nimport { transformTableSortToQuerySort} from '../../services/useDatastore/transformSorts';\nimport { buildCustomColHeaders } from '../../templates/FilteredResource/functions';\nimport DataTable from '../Datatable';\nimport DataTableContext from \"../../templates/Dataset/DataTableContext\";\n\nexport function prepareColumns(columns, schema) {\n return columns.map((column) => ({\n header:\n schema && schema.fields[column].description ? schema.fields[column].description : column,\n accessor: column,\n }));\n}\n\nfunction DefaultColumnFilter({ column: { Header, accessor, setFilter, filterValue } }) {\n return (\n <TextField\n label={`Filter by ${Header}`}\n onChange={(e) => {\n setFilter(e.target.value) || undefined;\n }}\n labelClassName=\"ds-u-visibility--screen-reader\"\n name={accessor}\n value={filterValue || ''}\n />\n );\n}\n\nconst ResourcePreview = ({\n tablePadding,\n id,\n canResize = true,\n}) => {\n const {resource, customColumns} = useContext(DataTableContext);\n\n const customColumnHeaders = buildCustomColHeaders(\n customColumns,\n resource.columns,\n resource.schema[id]\n );\n\n const columns = customColumnHeaders\n ? customColumnHeaders\n : prepareColumns(resource.columns, resource.schema[id]);\n\n if (\n Object.keys(resource).length &&\n columns.length &&\n resource.schema\n ) {\n return (\n <div\n id=\"resource-preview\"\n className=\"ds-u-overflow--auto ds-u-border-x--1 ds-u-border-bottom--1\"\n >\n <DataTable\n canResize={canResize}\n columns={\n customColumns ? customColumns : prepareColumns(resource.columns, resource.schema[id])\n }\n sortTransform={transformTableSortToQuerySort}\n tablePadding={tablePadding}\n loading={resource.loading}\n className=\"dc-c-datatable\"\n customColumnFilter={DefaultColumnFilter}\n />\n </div>\n )\n} else {\n return (\n <Spinner />\n )\n}\n};\n\nexport default ResourcePreview;\n","export function transformTableSortToQuerySort(sortArray) {\n let newQuery = [];\n sortArray.forEach((s) => {\n return newQuery.push({property: s.id, order: s.desc ? 'desc' : 'asc'})\n })\n return newQuery;\n}","// Example custom column headers, where only effective date has an ! at the end\n// [\n// {schema: 'date', cell: ({ value }) => localeDate(value),},\n// {accessor: 'effective_date',cell: ({ value }) => localeDate(value) + '!',},\n// ]\n\nexport function buildCustomColHeaders(customHeaders, columns, schema) {\n return columns.map((column) => {\n const customAccessorIndex = customHeaders.findIndex((header) => header.accessor === column);\n const customSchemaIndex = customHeaders.findIndex(\n (header) => header.schema === schema.fields[column].mysql_type\n );\n let newColumn = {};\n // If specific accessor is passed, this will override a general mysql_type Cell rewrite.\n if (customAccessorIndex > -1) {\n newColumn.header =\n schema && schema.fields[column].description ? schema.fields[column].description : column;\n newColumn.accessor = column;\n newColumn.cell = customHeaders[customAccessorIndex].cell;\n } else {\n newColumn.header =\n schema && schema.fields[column].description ? schema.fields[column].description : column;\n newColumn.accessor = column;\n if (customSchemaIndex > -1) {\n newColumn.cell = customHeaders[customSchemaIndex].cell;\n }\n }\n return newColumn;\n });\n}\n\nexport function convertUTCToLocalDate(date) {\n if (!date) {\n return date;\n }\n date = new Date(date);\n date = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n return date;\n}\n\nexport function cleanText(value, operator) {\n let newValue = value;\n if (Array.isArray(newValue)) {\n newValue = newValue.join(',');\n }\n // return newValue.replace(/(^\\%+|\\%+$)/gm, '');\n return newValue\n}\n\nexport const operatorMapping = [\n { label: 'Is', value: '=' },\n { label: 'Starts With', value: 'starts with' },\n { label: 'Contains', value: 'contains' },\n { label: 'Is Not', value: '<>' },\n { label: 'Or', value: 'in' },\n { label: 'Is', value: '=' },\n { label: 'Is Not', value: '<>' },\n { label: 'Greater Than', value: '>' },\n { label: 'Less Than', value: '<' },\n];\n\nexport function getOperatorLabel(operatorValue) {\n const operator = operatorMapping.find(op => op.value === operatorValue);\n return operator ? operator.label : operatorValue; // Return original value if not found\n}\n\nexport function buildOperatorOptions(type) {\n switch (type) {\n case 'text': // Will change from text to string in future update\n case 'string':\n return [\n { label: 'Is', value: '=' },\n { label: 'Starts With', value: 'starts with' },\n { label: 'Contains', value: 'contains' },\n { label: 'Is Not', value: '<>' },\n { label: 'Or', value: 'in' },\n ];\n case 'date':\n return [\n { label: 'Is', value: '=' },\n { label: 'Is Not', value: '<>' },\n { label: 'Greater Than', value: '>' },\n { label: 'Less Than', value: '<' },\n ];\n default:\n // These 2 should be safe for all data types\n return [\n { label: 'Is', value: '=' },\n { label: 'Is Not', value: '<>' },\n ];\n }\n}\n","export { default } from './Datatable';","import React, { useState, useMemo, useContext, useRef, useEffect } from \"react\";\nimport {\n useReactTable,\n flexRender,\n getCoreRowModel,\n createColumnHelper,\n getSortedRowModel,\n} from \"@tanstack/react-table\";\nimport { Spinner, Alert, Tooltip, Button } from \"@cmsgov/design-system\";\nimport TruncatedResizeableTHead from \"./TruncatedResizeableTHead\";\nimport FixedSizeTHead from \"./FixedSizeTHead\";\nimport \"./datatable.scss\";\nimport DataTableContext from \"../../templates/Dataset/DataTableContext\";\nimport { DataTableActionsContext } from \"../DatasetTableTab/DataTableActionsContext\";\nimport DataTableToolbar from \"../DataTableToolbar\";\n\nconst DataTable = ({\n columns,\n sortTransform,\n tablePadding,\n canResize,\n loading = false,\n isModal,\n downloadURL,\n unfilteredDownloadURL,\n setPage,\n showCopyLinkButton,\n showDataTableToolbar,\n showDownloadFilteredDataButton,\n showDownloadFullDataButton,\n showStoredQueryDownloadButton,\n}) => {\n const { id, resource, datasetTableControls, dataDictionaryBanner } = useContext(DataTableContext);\n const { columnOrder, setColumnOrder, columnVisibility, setColumnVisibility } = useContext(DataTableActionsContext);\n const { conditions } = resource;\n\n const data = resource.values;\n const [ sorting, setSorting ] = useState([])\n const [ariaLiveFeedback, setAriaLiveFeedback] = useState('')\n const dataTableWrapperElement = useRef(null)\n const columnHelper = createColumnHelper()\n\n const table_columns = columns.map((col) => {\n if (col.cell) {\n return (\n columnHelper.accessor(col.accessor, {\n header: col.header,\n cell: col.cell,\n })\n )\n }\n return (\n columnHelper.accessor(col.accessor, {\n header: col.header,\n })\n )\n })\n\n const [ highlightRow, setHighlightRow ] = useState(null);\n\n useEffect(() => {\n if (columnOrder && !columnOrder.length)\n setColumnOrder(table_columns.map(c => c.accessorKey))\n }, [columnOrder])\n\n const sortElement = (isSorted, onClickFn) => {\n if(isSorted === 'asc') {\n return 'dc-c-sort--asc'\n }\n if(isSorted === 'desc') {\n return 'dc-c-sort--desc'\n }\n return 'dc-c-sort--default'\n }\n const filters = []\n const table = useReactTable({\n data: data,\n columns: table_columns,\n manualSorting: true,\n state: {\n columnOrder,\n columnVisibility,\n sorting,\n },\n columnResizeMode: 'onChange',\n onSortingChange: setSorting,\n onColumnOrderChange: setColumnOrder,\n onColumnVisibilityChange: setColumnVisibility,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n debugTable: false,\n });\n\n useEffect(() => {\n const normalizedSort = sortTransform ? sortTransform(sorting) : filters;\n resource.setSort(normalizedSort);\n }, [sorting]);\n\n const defaultColumnOrder = useMemo(() => table_columns.map(column => column.accessorKey), []);\n const tableWrapperWidth = () => {\n if (dataTableWrapperElement.current) {\n return dataTableWrapperElement.current.offsetWidth;\n }\n\n return 'auto';\n };\n\n useEffect(() => {\n setHighlightRow(null);\n }, [data])\n\n return(\n <>\n {showDataTableToolbar && (\n <>\n <div className=\"ds-u-margin-bottom--3\">\n {showDownloadFullDataButton && (\n <Button\n className=\"ds-c-button ds-c-button--solid ds-l-col--12 ds-l-md-col--auto\"\n href={unfilteredDownloadURL}\n >\n <span className=\"ds-u-font-weight--bold ds-u-font-size--md ds-u-margin-x--0 ds-u-padding--0\">\n <i className=\"fas fa-file-csv\"></i> Download full dataset (CSV)\n </span>\n </Button>\n )}\n </div>\n <DataTableToolbar\n id={id}\n columns={table.getAllLeafColumns()}\n defaultColumnOrder={defaultColumnOrder}\n isModal={isModal}\n resource={resource}\n datasetTableControls={datasetTableControls}\n columnVisibility={columnVisibility}\n setColumnVisibility={setColumnVisibility}\n />\n <div className=\"ds-u-display--flex ds-l-col--12 ds-l-md-col--11 ds-u-justify-content--between ds-u-padding--0 ds-u-margin-y--2 ds-u-md-margin-y--3 ds-u-flex-direction--column ds-u-md-flex-direction--row\">\n <div className=\"dkan-data-table-info-container ds-u-padding-right--0 ds-u-md-padding-right--4\">\n {dataDictionaryBanner && !isModal && (\n <div className=\"ds-u-margin-bottom--3\">\n <Alert>Click on the \"Data Dictionary\" tab above for full column definitions</Alert>\n </div>\n )}\n <p className=\"ds-u-margin--0\">Activate the column resize button and use the right and left arrow keys to resize a column or use your mouse to drag/resize. Press escape to cancel the resizing.</p>\n </div>\n <div className=\"dkan-data-table-share-container ds-l-col--auto ds-u-padding--0 ds-u-margin-bottom--2 ds-u-md-margin-bottom--0\">\n <Tooltip\n className=\"ds-c-button ds-c-button--solid dkan-data-table-share-button ds-u-display--flex ds-u-align-items--center ds-u-padding-x--3 ds-u-padding-y--1 ds-u-font-weight--bold ds-l-col--12 ds-l-md-col--auto ds-u-justify-content--center\"\n activeClassName=\"dkan-data-table-share-tooltip-open\"\n dialog\n offset={[\n 0,\n 5\n ]}\n placement=\"bottom-start\"\n maxWidth=\"320px\"\n title={\n <div className=\"dc-c-resource-header--buttons ds-u-display--flex ds-u-flex-direction--column ds-l-col--12 ds-u-padding-x--0\">\n {showCopyLinkButton && (\n <>\n {conditions && conditions.length ? (\n <Tooltip\n onOpen={() => {\n navigator.clipboard.writeText(window.location.href);\n }}\n className=\"ds-c-button ds-u-text-align--center ds-l-col--12 ds-u-padding-x--2 ds-u-margin-x--0 ds-u-margin-bottom--1\"\n placement=\"bottom\"\n dialog\n ariaLabel=\"Copy link to filtered data\"\n title=\"Link copied to clipboard\"\n aria-disabled={!conditions || conditions.length === 0}\n >\n <span className=\"ds-u-font-weight--normal ds-u-font-size--md ds-u-margin-x--0 ds-u-padding--0\">\n <i className=\"fas fa-copy\"></i> Copy link to filtered data\n </span>\n </Tooltip>\n ) : (\n <Button\n aria-disabled={true}\n aria-label=\"Copy link to filtered data\"\n className=\"ds-c-button ds-u-text-align--center ds-l-col--12 ds-u-padding-x--2 ds-u-margin-x--0 ds-u-margin-bottom--1\"\n >\n <span className=\"ds-u-font-weight--normal ds-u-font-size--md ds-u-padding--0\">\n <i className=\"fas fa-copy\"></i> Copy link to filtered data\n </span>\n </Button>\n )}\n </>\n )}\n {(showDownloadFilteredDataButton || showStoredQueryDownloadButton) && (\n <div className=\"ds-l-col--12 ds-u-padding-x--0 ds-u-margin-x--0\">\n <Button\n className=\"ds-u-text-align--center ds-u-display--inline-block ds-l-col--12 ds-u-padding-x--2 ds-u-margin-x--0 ds-u-margin-bottom--1\"\n href={downloadURL}\n aria-disabled={!conditions || conditions.length === 0}\n >\n <span className=\"ds-u-font-weight--normal ds-u-font-size--md ds-u-padding--0\">\n <i className=\"fas fa-file-csv\"></i> {showDownloadFilteredDataButton ? `Download filtered data (CSV)` : `Download stored query data (CSV)`}\n </span>\n </Button>\n </div>\n )}\n </div>\n }\n >\n <i className=\"far fa-share-alt\"></i>\n <span className=\"ds-u-margin-x--05\">Share</span>\n <i className=\"fa fa-chevron-down\"></i>\n <i className=\"fa fa-chevron-up\"></i>\n </Tooltip>\n </div>\n </div>\n </>\n )}\n <div className=\"dc-c-datatable-wrapper ds-u-border-x--1 ds-u-border-bottom--1\" tabIndex={0} ref={dataTableWrapperElement}>\n <table\n {...{\n style: {\n width: canResize ? table.getCenterTotalSize() : \"100%\",\n minWidth: tableWrapperWidth()\n },\n }}\n className=\"dc-c-datatable\"\n >\n {canResize\n ? <TruncatedResizeableTHead table={table} sortElement={sortElement} setAriaLiveFeedback={setAriaLiveFeedback} />\n : <FixedSizeTHead table={table} sortElement={sortElement} />\n }\n {loading ? (\n <tbody></tbody>\n ) : (\n <tbody>\n {table.getRowModel().rows.map((row, index) => {\n const even = (index + 1) % 2 === 0;\n const highlight = highlightRow === row.id;\n return(\n <tr key={row.id} className={`${highlight ? \"dc-c-datatable--highlight-row\" : (even && \"dc-c-datatable--even-row\")}`} onClick={() => setHighlightRow(row.id)}>\n {row.getVisibleCells().map((cell) => {\n let classList = \"dc-truncate ds-u-padding-x--1\"\n return (\n <td\n {...{\n key: cell.id,\n style: {\n maxWidth: cell.column.getSize(),\n },\n }}\n className={`${classList} ${tablePadding}`}\n title={cell.getValue()}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </td>\n );\n })}\n </tr>\n )\n })\n }\n </tbody>\n )}\n </table>\n <div className='sr-only' aria-live='assertive' aria-atomic='true'>{ariaLiveFeedback}</div>\n </div>\n {loading && (\n <Spinner aria-valuetext=\"Dataset loading\" role=\"status\" className=\"ds-u-margin--3\" />\n )}\n {!loading && table.getRowModel().rows.length === 0 && (\n <Alert variation=\"warn\">No results found for the current filters</Alert>\n )}\n </>\n )\n}\n\nexport default DataTable;\n","import React from 'react';\nimport HeaderResizeElement from './HeaderResizeElement';\n\nconst TruncatedResizeableTHead = ({table, sortElement = null, setAriaLiveFeedback}) => {\n return(\n <thead className=\"dc-thead--truncated dc-thead--resizeable\">\n {table.getHeaderGroups().map(headerGroup => (\n <tr key={headerGroup.id} className=\"dc-c-sticky-header\">\n {headerGroup.headers.map(header => <HeaderResizeElement key={header.id + \"_dataTableResize\"} table={table} header={header} sortElement={sortElement} setAriaLiveFeedback={setAriaLiveFeedback} />)}\n </tr>\n ))}\n </thead>\n );\n}\n\nexport default TruncatedResizeableTHead;\n","import React, {useState} from 'react'\nimport { flexRender } from \"@tanstack/react-table\";\n\nconst HeaderResizeElement = ({table, header, sortElement, setAriaLiveFeedback, id} :\n {table: any, header: any, sortElement?: Function, setAriaLiveFeedback: Function, id?: string }) => {\n const [columnResizing, setColumnResizing] = useState('');\n\n // Fix for JSX in Data Dictionary Title header cell\n const ariaLabel = header.id === \"titleResizable\" ? \"Title\" : header.column.columnDef.header;\n\n return(\n <th {\n ...{\n key: header.id,\n style: {\n width: header.getSize(),\n }\n }\n }\n id={id}\n title={typeof(header.column.columnDef.header) === \"string\" ? header.column.columnDef.header : ''}\n className=\"ds-u-border-y--2 ds-u-padding--2 ds-u-border--dark ds-u-font-weight--bold\"\n aria-sort={\n header.column.getIsSorted() === 'asc'\n ? 'ascending'\n : header.column.getIsSorted() === 'desc'\n ? 'descending'\n : 'none'\n }\n >\n <div className=\"ds-u-display--flex\">\n <div>\n <span>\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext()\n ) as React.ReactNode}\n </span>\n </div>\n {sortElement && (\n <button\n onClick={header.column.getToggleSortingHandler()}\n {...{\n className: header.column.getCanSort()\n ? `cursor-pointer select-none ds-u-focus-visible ${sortElement(header.column.getIsSorted())}`\n : '',\n }}\n aria-label={`${ariaLabel} sort order`}\n />\n )}\n </div>\n <button\n {...{\n onMouseDown: header.getResizeHandler(),\n onTouchStart: header.getResizeHandler(),\n className: `dc-c-resize-handle ds-u-focus-visible ${\n header.column.getIsResizing() || header.column.id == columnResizing ? 'isResizing' : ''\n }`,\n }}\n aria-label={`Resize ${ariaLabel} column`}\n onKeyDown={(e) => {\n const columnSizingObject = table.getState().columnSizing;\n switch (e.key) {\n case 'Enter':\n case ' ':\n e.preventDefault();\n e.stopPropagation();\n if (columnResizing) {\n // end resizing\n setColumnResizing('')\n setAriaLiveFeedback(`${header.column.columnDef.header} dropped.`)\n } else {\n // start resizing\n setColumnResizing(header.column.id)\n setAriaLiveFeedback(`${header.column.columnDef.header} grabbed.`)\n }\n break;\n\n case 'Escape':\n if (columnResizing) {\n setColumnResizing('')\n setAriaLiveFeedback(`${header.column.columnDef.header} dropped.`)\n }\n break;\n case 'ArrowRight':\n e.preventDefault();\n e.stopPropagation();\n if (columnResizing) {\n columnSizingObject[header.column.id] = header.getSize() + 10;\n table.setColumnSizing(columnSizingObject);\n setAriaLiveFeedback(`${header.column.columnDef.header} has been resized. The new width is ${header.getSize()} pixels.`);\n }\n break;\n case 'ArrowLeft':\n e.preventDefault();\n e.stopPropagation();\n if (columnResizing) {\n columnSizingObject[header.column.id] = header.getSize() - 10;\n table.setColumnSizing(columnSizingObject);\n setAriaLiveFeedback(`${header.column.columnDef.header} has been resized. The new width is ${header.getSize()} pixels.`)\n }\n break;\n }\n }}\n onBlur={() => {\n setColumnResizing('')\n }}\n />\n </th>\n )\n}\n\nexport default HeaderResizeElement\n","import React from 'react';\nimport { flexRender } from \"@tanstack/react-table\";\n\nconst FixedSizeTHead = ({table, sortElement}) => {\n return(\n <thead className=\"dc-thead--fixed-size\">\n {table.getHeaderGroups().map(headerGroup => (\n <tr key={headerGroup.id}>\n {headerGroup.headers.map(header => {\n return(\n <th {\n ...{\n key: header.id,\n style: {\n width: header.getSize(),\n },\n title: header.column.columnDef.header\n }\n }\n className=\"ds-u-border-y--2 ds-u-padding--2 ds-u-border--dark ds-u-font-weight--bold\"\n aria-sort={\n header.column.getIsSorted() === 'asc'\n ? 'ascending'\n : header.column.getIsSorted() === 'desc'\n ? 'descending'\n : 'none'\n }\n >\n <div onClick={header.column.getToggleSortingHandler()} className=\"ds-u-display--flex\">\n <span>\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n </span>\n <span\n {...{\n className: header.column.getCanSort()\n ? `cursor-pointer select-none ${sortElement(header.column.getIsSorted())}`\n : '',\n }}\n />\n </div>\n </th>\n );\n })}\n </tr>\n ))}\n </thead>\n );\n}\n\nexport default FixedSizeTHead;\n","import { createContext } from 'react';\nimport { DistributionType, ResourceType, ColumnType } from '../../types/dataset';\n\n// create context\nexport type DataTableContextType = {\n id: string | null,\n resource?: ResourceType,\n distribution?: DistributionType,\n rootUrl?: string,\n customColumns?: Array<ColumnType>,\n dataDictionaryBanner?: boolean,\n datasetTableControls?: boolean\n}\nconst DataTableContext = createContext<DataTableContextType>({ id: null})\n\nexport default DataTableContext;\n","import React, { ReactNode } from 'react';\nimport { createContext, useContext, useState } from 'react';\nimport DataTableContext from '../../templates/Dataset/DataTableContext';\n \n// Define context props\nexport type DataTableActionsContextProps = {\n columnOrder: string[];\n setColumnOrder: React.Dispatch<React.SetStateAction<string[]>>;\n columnVisibility: {\n [key: string]: boolean\n }\n setColumnVisibility: React.Dispatch<React.SetStateAction<{ [key: string]: boolean }>>;\n page: number;\n setPage: React.Dispatch<React.SetStateAction<number>>;\n tableDensity: 'compact' | 'normal' | 'expanded';\n setTableDensity: React.Dispatch<React.SetStateAction<'compact' | 'normal' | 'expanded'>>;\n}\n\n// Create a defaults object for reusability\nconst DataTableActionsContextDefaults: DataTableActionsContextProps = {\n columnOrder: [],\n setColumnOrder: () => {},\n columnVisibility: {},\n setColumnVisibility: () => {},\n page: 1,\n setPage: () => {},\n tableDensity: 'normal' as const,\n setTableDensity: () => {}\n}\n\n// Create the context instance\nexport const DataTableActionsContext = createContext<DataTableActionsContextProps>(DataTableActionsContextDefaults);\n\n// Define our reusable provider component\nconst DataTableActionsProvider: React.FC<{ children: ReactNode }> = ({ children }) => {\n // Set up all of the state\n const { id, datasetTableControls } = useContext(DataTableContext);\n // a wrapper component to keep column state synced between full screen and regular modes\n const localStorageData = id ? JSON.parse(localStorage.getItem(id) as string) : null;\n\n const [page, setPage] = useState<DataTableActionsContextProps['page']>(1);\n const [columnOrder, setColumnOrder] = useState<DataTableActionsContextProps['columnOrder']>(() => {\n if (datasetTableControls && localStorageData) return localStorageData.tableColumnOrder;\n else return [];\n });\n const [columnVisibility, setColumnVisibility] = useState<DataTableActionsContextProps['columnVisibility']>(() => {\n if (datasetTableControls && localStorageData) return localStorageData.tableColumnVisibility;\n else return {};\n });\n const [tableDensity, setTableDensity] = useState<DataTableActionsContextProps['tableDensity']>('normal');\n\n const providerValue: DataTableActionsContextProps = {\n columnOrder,\n setColumnOrder,\n columnVisibility,\n setColumnVisibility,\n page,\n setPage,\n tableDensity,\n setTableDensity\n }\n\n return (\n <DataTableActionsContext.Provider value={providerValue}>\n {children}\n </DataTableActionsContext.Provider>\n )\n}\n\n// For easy mocking in unit tests\ntype MockDataTableActionsProviderProps = {\n children: ReactNode;\n value: DataTableActionsContextProps\n}\n\nexport const MockDataTableActionsProvider: React.FC<MockDataTableActionsProviderProps> = ({\n children,\n value = DataTableActionsContextDefaults\n}) => (\n <DataTableActionsContext.Provider value={value}>\n {children}\n </DataTableActionsContext.Provider>\n);\n\nexport default DataTableActionsProvider;\n","import React, { ReactNode } from \"react\";\nimport qs from 'qs';\nimport DataTablePageResults from '../DataTablePageResults';\nimport { Button, Tooltip, Dropdown } from '@cmsgov/design-system';\nimport { ResourceType, ConditionType } from '../../types/dataset';\nimport ManageColumns from \"../ManageColumns/ManageColumns\";\nimport FullScreenDataTable from \"../FullScreenDataTable\";\nimport FilterDataset from \"../FilterDataset\";\nimport FilterChip from \"../FilterChip\"\nimport DisplaySettings from \"../DisplaySettings\";\nimport { getOperatorLabel } from \"../../templates/FilteredResource/functions\";\n\nimport \"./DataTableToolbar.scss\";\n\ntype DataTableToolbarProps = {\n resource: ResourceType;\n id: string;\n columns: Array<any>;\n defaultColumnOrder: Array<string>;\n isModal: boolean;\n datasetTableControls: boolean;\n columnVisibility: {\n [key: string]: boolean\n };\n setColumnVisibility: React.Dispatch<React.SetStateAction<{ [key: string]: boolean }>>;\n}\n\nconst updateBrowserURL = (newConditions: Array<ConditionType>) => {\n const url = new URL(window.location.href);\n const urlString = qs.stringify(\n { conditions: newConditions },\n { encodeValuesOnly: true, addQueryPrefix: true }\n );\n window.history.pushState({}, '', `${url.origin}${url.pathname}${urlString}`);\n}\n\n\n\nconst DataTableToolbar: React.FC<DataTableToolbarProps> = ({\n resource,\n id,\n columns,\n defaultColumnOrder,\n isModal,\n datasetTableControls,\n columnVisibility,\n setColumnVisibility,\n}) => {\n const { limit, offset, count, conditions, setConditions } = resource;\n const intCount = count ? count : 0;\n const hiddenColumns = Object.keys(columnVisibility).filter(key => columnVisibility[key] === false).length;\n\n const resetColumnVisibility = () => {\n const columns = { ...columnVisibility };\n\n for (let key in columns) {\n if (columns[key] === false) {\n columns[key] = true;\n }\n }\n\n setColumnVisibility(columns);\n\n // save to localStorage\n const currentLocalStorage = JSON.parse(localStorage.getItem(id) as string);\n const updatedLocalStorageData = {\n ...currentLocalStorage,\n tableColumnVisibility: columns\n }\n\n localStorage.setItem(id, JSON.stringify(updatedLocalStorageData));\n }\n\n const removeCondition = (index: number) => {\n // just removes the condition from the UI - \"Apply Filters\" must be clicked to change the data model\n let updatedConditions: ConditionType[] = JSON.parse(JSON.stringify(conditions))\n updatedConditions.splice(index, 1);\n\n setConditions(updatedConditions);\n updateBrowserURL(updatedConditions);\n };\n\n return (\n <div className=\"ds-u-margin-top--2\">\n <div className=\"dkan-filter-dataset-toolbar ds-u-fill--white ds-u-border--1\" role=\"region\" aria-label=\"toolbar\">\n <div className=\"ds-l-col--12 ds-u-display--flex ds-u-justify-content--between ds-u-align-items--center ds-u-flex-wrap--wrap ds-u-padding-x--0 ds-u-padding-y--2\">\n <div className=\"ds-u-padding-x--2\">\n {!resource.loading && resource.count !== null && (\n <DataTablePageResults\n totalRows={intCount}\n limit={limit}\n offset={offset}\n className=\"data-table-results ds-u-margin--0 ds-u-font-size--sm ds-u-padding-y--0 ds-u-md-padding-y--1 ds-u-padding-bottom--2 ds-u-md-padding-bottom--0\"\n />\n )}\n </div>\n {datasetTableControls && (\n <div className=\"dkan-data-table-toolbar-controls ds-u-display--flex ds-u-flex-wrap--wrap ds-u-align-items--center ds-l-md-col--auto ds-l-col--12 ds-u-padding-x--2 ds-u-padding-top--2 ds-u-md-padding-top--0\">\n <FilterDataset />\n <ManageColumns id={id} columns={columns} defaultColumnOrder={defaultColumnOrder} />\n <DisplaySettings />\n <FullScreenDataTable isModal={isModal} />\n </div>\n )}\n </div>\n </div>\n {Array.isArray(conditions) && (conditions.length > 0 || hiddenColumns > 0) && (\n <div className=\"ds-u-fill--white ds-u-padding-x--0 ds-u-md-padding-x--2 ds-u-padding-top--2\">\n <h2 className=\"ds-u-margin--0 ds-u-margin-bottom--2 ds-u-font-size--lg ds-u-font-weight--bold\">Selected filters</h2>\n <div className=\"ds-u-display--flex ds-u-justify-content--between ds-u-md-align-items--end ds-u-flex-direction--column ds-u-md-flex-direction--row\">\n <div className=\"ds-u-display--flex ds-u-padding-right--0 ds-u-md-padding-right--4 ds-u-flex-wrap--wrap\">\n {conditions.length > 0\n ? conditions.map((condition, index) => (\n <FilterChip\n key={index}\n iconClass=\"far fa-filter\"\n text={`\"${condition.property}\" ${getOperatorLabel(condition.operator).toLowerCase()} ${condition.value}`}\n onClick={() => {\n removeCondition(index);\n }}\n />\n ))\n : null}\n {hiddenColumns > 0\n ? <FilterChip\n iconClass=\"fa fa-columns\"\n text={`${hiddenColumns} Column${hiddenColumns === 1 ? '' : 's'} Hidden`}\n onClick={() => {\n resetColumnVisibility();\n }}\n />\n : null\n }\n </div>\n <div className=\"ds-l-col--auto ds-u-padding--0 ds-u-display--flex ds-u-justify-content--end\">\n <button\n className=\"dkan-clear-all-filters-button ds-u-color--primary ds-u-font-size--md ds-u-font-weight--bold ds-u-border--0 ds-u-padding--0 ds-u-margin--0 ds-u-fill--transparent ds-u-text-decoration--underline ds-u-margin-bottom--1\"\n onClick={() => {\n setConditions([]);\n updateBrowserURL([]);\n resetColumnVisibility();\n }}\n >\n Clear all filters\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n )\n}\n\nexport default DataTableToolbar;\n","import React, { useCallback, useContext, useEffect, useMemo, useState } from 'react'\nimport { DndContext, closestCenter, KeyboardSensor, PointerSensor, useSensor, useSensors } from '@dnd-kit/core'\nimport { SortableContext, verticalListSortingStrategy, sortableKeyboardCoordinates, arrayMove } from '@dnd-kit/sortable'\nimport { restrictToVerticalAxis } from '@dnd-kit/modifiers'\nimport { Button, Choice, Dialog } from '@cmsgov/design-system'\nimport Card from './Card'\nimport { DataTableActionsContext } from '../DatasetTableTab/DataTableActionsContext'\nimport './ManageColumns.scss'\n\nclass ExcludeCheckboxKeyboardSensor extends KeyboardSensor {\n // Custom function to exclude checkbox from keyboard dragging\n static activators = [\n {\n eventName: 'onKeyDown',\n handler: ({nativeEvent: event}) => {\n // prevent scrolling the list\n const isCheckbox = [\"input\", \"checkbox\"].indexOf(event.target.tagName.toLowerCase()) !== -1;\n if(event.key === \" \" && !isCheckbox){ \n event.preventDefault();\n } \n\n // only activate on a space or return press\n if ([\" \", \"Enter\"].indexOf(event.key) === -1) return false;\n if (!isCheckbox)\n {\n return true;\n }\n return false;\n },\n },\n ];\n}\n\nclass ExcludeCheckboxPointerSensor extends PointerSensor {\n // Custom function to stop accidental checkbox clicks on pointer activation\n static activators = [\n {\n eventName: 'onPointerDown',\n handler: ({nativeEvent: event}) => {\n if (event.target.tagName.toLowerCase() === \"input\") return false;\n if (event.target.tagName.toLowerCase() === \"label\") {\n event.target.blur();\n }\n return true;\n }\n }\n ]\n}\n\nconst ManageColumns = ({\n id,\n columns,\n defaultColumnOrder\n}) => {\n const {columnOrder, setColumnOrder, setColumnVisibility, columnVisibility: contextColumnVisibility} = useContext(DataTableActionsContext);\n const columnVisibility = contextColumnVisibility || {};\n const [modalOpen, setModalOpen] = useState(false);\n // maintain card state separately from table state - only sync states when the Save button is pressed\n const [cards, setCards] = useState(columns.map(c => {\n return {id: c.id, visible: c.getIsVisible()}\n }));\n const cardOrder = useMemo(() => \n cards.map(({id}) => id),\n [cards]\n );\n\n // keep state in sync\n useEffect(() => {\n if (columnOrder.length)\n setCards(columnOrder.map(c => {\n const column = columns.filter(col => col.id === c)[0];\n return {id: column.id, visible: column.getIsVisible()}\n }))\n }, [columnOrder])\n\n // Update cards state when columnVisibility changes\n useEffect(() => {\n setCards(prevCards => \n prevCards.map(card => ({\n ...card,\n visible: columnVisibility[card.id] !== false\n }))\n );\n }, [columnVisibility]);\n \n\n const sensors = useSensors(\n useSensor(ExcludeCheckboxPointerSensor, {\n activationConstraint: {\n distance: 5\n }\n }),\n useSensor(ExcludeCheckboxKeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n const cardHiddenColumns = cards.filter(c => c.visible === false).length\n\n const updateVisibility = useCallback((id, newVisibility) => {\n setCards(cards.map(card => {\n if (card.id === id) {\n return {...card, visible: newVisibility}\n }\n return card;\n }))\n });\n\n function handleDragEnd(e) {\n const { active, over } = e;\n if (active.id !== over.id) {\n const oldIndex = cardOrder.indexOf(active.id);\n const newIndex = cardOrder.indexOf(over.id);\n let newCards = arrayMove(cards, oldIndex, newIndex);\n setCards(newCards);\n }\n }\n\n const resetCards = () => {\n setCards(columns.map(c => {\n return {id: c.id, visible: c.getIsVisible()}\n }));\n }\n\n const hiddenColumns = Object.keys(columnVisibility).filter(key => columnVisibility[key] === false).length;\n return (\n <div className=\"dkan-manage-columns-wrapper\">\n <button\n aria-haspopup=\"dialog\"\n className=\"dkan-filter-dataset-toolbar-button ds-u-color--primary ds-u-text-decoration--underline ds-u-font-size--sm ds-u-padding-x--2 ds-u-margin--0 ds-u-border--0 ds-u-fill--transparent\"\n onClick={() => {\n setModalOpen(true)\n }}\n >\n <i className=\"fa fa-columns ds-u-margin-right--1\"></i>\n <span>\n <span className=\"dkan-dataset-toolbar-button-label\">Manage Columns</span>\n {hiddenColumns ? ` (${hiddenColumns})` : ''}\n </span>\n </button>\n <div className={`ds-c-dialog-wrap${modalOpen ? ' open' : ''}`}>\n <Dialog\n heading='Manage columns'\n isOpen={modalOpen}\n ariaCloseLabel=\"Close dialog\"\n onExit={() => {\n setModalOpen(false);\n resetCards();\n }}\n className=\"dkan-manage-columns-dialog\"\n actions={(\n <div className='ds-u-display--flex ds-u-justify-content--between ds-u-flex-wrap--wrap ds-u-padding-x--3 ds-u-padding-bottom--1 ds-u-sm-padding-bottom--3'>\n <div className=\"ds-l-col--12 ds-l-sm-col--auto ds-u-padding-x--0\">\n <Button\n variation=\"solid\"\n className=\"ds-l-col--6 ds-l-sm-col--auto\"\n onClick={() => {\n setModalOpen(false);\n // update table state\n\n // Visibility\n // This code is building a new columnVisibility state object from the card state and doing a single setState on the table\n // vs doing a setState on every changed column individually\n const newColumnVisibility = Object.fromEntries(cards.map(c => Object.values(c)));\n setColumnVisibility(newColumnVisibility);\n\n // Card order\n const newCardOrder = cards.map(c => {\n return c.id;\n });\n setColumnOrder(newCardOrder);\n\n // save to localStorage\n const localStorageData = {\n tableColumnOrder: newCardOrder,\n tableColumnVisibility: newColumnVisibility\n }\n localStorage.setItem(id, JSON.stringify(localStorageData))\n }}\n >\n Save\n </Button>\n <Button\n variation=\"ghost\"\n className=\"ds-l-col--6 ds-l-sm-col--auto\"\n onClick={() => {\n setModalOpen(false)\n resetCards();\n }}\n >\n Cancel\n </Button>\n </div>\n <div className=\"ds-l-col--12 ds-l-sm-col--auto ds-u-padding-x--0 ds-u-padding-top--1 ds-u-sm-padding-y--0\">\n <Button\n variation=\"ghost\"\n className=\"ds-l-col--6 ds-l-sm-col--auto\"\n onClick={() => {\n // reset to default column order and set all cards to visible\n // do not save this to the table state until the \"Save\" button is clicked\n setCards(defaultColumnOrder.map(column => {\n const card = cards.filter(c => c.id === column)[0]\n return {...card, visible: true }\n }));\n }}\n >\n Reset Columns\n </Button>\n </div>\n </div>\n )}\n >\n <p id='reorder-help' className='ds-u-padding-x--3'>Activate the reorder button and use the arrow keys to reorder the list or use your mouse to drag/reorder. Press escape to cancel the reordering.</p>\n <Choice\n checked={cardHiddenColumns === 0}\n type='checkbox'\n onChange={() => {\n setCards(cards.map(c => {\n return {...c, visible: cardHiddenColumns !== 0}\n }))\n }}\n className='ds-u-padding-x--3'\n name=''\n value=''\n label='Select all'\n hint={cardHiddenColumns && cardHiddenColumns + \" columns hidden\"}\n />\n <div className='ds-u-display--flex ds-u-justify-content--between ds-u-font-weight--bold ds-u-padding-y--2 ds-u-padding-x--3 ds-u-border-y--1 ds-u-margin-top--2'>\n <span>Display column</span>\n <span>Reorder</span>\n </div>\n <DndContext\n collisionDetection={closestCenter}\n modifiers={[restrictToVerticalAxis]}\n sensors={sensors}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={cardOrder} strategy={verticalListSortingStrategy}>\n <ul className=\"dkan-manage-columns-list\">\n {cards.map((card) => {\n return (\n <Card id={card.id} visible={card.visible} key={card.id} updateVisibility={updateVisibility} />\n )\n })}\n </ul>\n </SortableContext>\n </DndContext>\n </Dialog>\n </div>\n </div>\n )\n};\n\nexport default ManageColumns;\n","import React from \"react\";\nimport { CSSProperties } from \"react\";\nimport { Choice } from \"@cmsgov/design-system\";\nimport { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\n\nconst Card = ({id, visible, updateVisibility}: {id: string, visible: boolean, updateVisibility: Function}) => {\n const {attributes, listeners, setNodeRef, transform, transition, isDragging} = useSortable({\n id: id,\n });\n\n const style: CSSProperties = {\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.7 : 1,\n zIndex: isDragging ? 1 : 0,\n position: 'relative',\n background: 'white',\n touchAction: 'none'\n };\n\n return (\n <li\n className=\"ds-u-display--flex ds-u-justify-content--between ds-u-border-bottom--1\"\n ref={setNodeRef}\n style={style}\n {...listeners}\n {...attributes}\n tabIndex={-1}\n onPointerUp={(e) => {\n // Small hack to get around a chrome / webkit rendering bug = force chrome to repaint the checkbox\n // For whatever reason the way dnd-kit handles events doesn't work well with chrome\n // Without this code checkboxes can end up visually out of sync with app state until a repaint is forced\n // this code forces the repaint without user interaction\n const target = e.target as HTMLElement;\n if (isDragging && target.tagName.toLowerCase() === \"label\") {\n setTimeout(() => {\n target.parentNode!.querySelector('input')!.checked = visible\n }, 1)\n }\n }} \n >\n <Choice\n type=\"checkbox\"\n label={id}\n name={id + \"_visibility\"}\n checked={visible}\n className=\"ds-l-col--10 ds-u-margin-top--0 ds-u-margin-y--1 ds-u-padding-x--3\"\n labelClassName=\"dc-truncate\"\n value=\"\"\n onChange={() => {\n updateVisibility(id, !visible)\n }}\n />\n <button className={`ds-l-col--2 dkan-manage-columns-reorder-button ${isDragging && 'grabbed'}`} aria-label={`Reorder ${id} column`}>\n <span className=\"fa fa-sort\"></span>\n </button>\n </li>\n )\n}\n\nexport default Card;","import React, { useState } from \"react\";\nimport { Dialog } from \"@cmsgov/design-system\";\nimport './FullScreenDataTable.scss';\nimport DatasetTable from \"../DatasetTableTab\";\n\nexport type FullScreenDataTableProps = { \n isModal: boolean;\n}\n\nconst FullScreenDataTable: React.FC<FullScreenDataTableProps> = ({ isModal }) => {\n const [modalOpen, setModalOpen] = useState(isModal);\n if (isModal) return null;\n \n return (\n <div className=\"dkan-fullscreen-data-table-wrapper\">\n <button\n aria-haspopup=\"dialog\"\n className=\"dkan-filter-dataset-toolbar-button ds-u-color--primary ds-u-text-decoration--underline ds-u-font-size--sm ds-u-padding-x--2 ds-u-margin--0 ds-u-border--0 ds-u-fill--transparent\"\n onClick={() => {\n if (modalOpen) {\n setModalOpen(false);\n } else {\n setModalOpen(true)\n }\n }}\n >\n <i className={`far ${modalOpen ? 'fa-compress' : 'fa-expand'} ds-u-margin-right--1`}></i>\n <span className=\"dkan-dataset-toolbar-button-label\">\n {modalOpen ? \"Exit Full Screen\" : \"Full Screen\"}\n </span>\n </button>\n <div className={`ds-c-dialog-wrap${modalOpen ? ' open' : ''}`}>\n <Dialog\n heading='Dataset Explorer'\n isOpen={modalOpen}\n onExit={() => setModalOpen(false)}\n ariaCloseLabel=\"Close dialog\"\n className=\"dkan-full-screen-dataset-dialog\"\n >\n <DatasetTable isModal={true} />\n </Dialog>\n </div>\n </div>\n )\n}\nexport default FullScreenDataTable;","import React, { useContext } from 'react';\nimport qs from 'qs';\nimport DataTable from '../Datatable/Datatable';\nimport { transformTableSortToQuerySort } from '../../services/useDatastore/transformSorts';\nimport { buildCustomColHeaders } from '../../templates/FilteredResource/functions';\nimport { Pagination, Spinner, Alert } from '@cmsgov/design-system';\nimport QueryBuilder from '../QueryBuilder';\nimport { DistributionType, ColumnType, ResourceType } from '../../types/dataset';\nimport DataTableContext from '../../templates/Dataset/DataTableContext';\nimport { DataTableActionsContext } from './DataTableActionsContext';\n\nexport function prepareColumns(columns: any, schema: any) {\n return columns.map((column: any) => ({\n header:\n schema && schema.fields[column].description ? schema.fields[column].description : column,\n accessor: column,\n }));\n}\n\nexport type DatasetTableTabProps = {\n id: string;\n distribution: DistributionType;\n resource: ResourceType;\n rootUrl: string;\n customColumns: Array<ColumnType>;\n dataDictionaryBanner: boolean;\n datasetTableControls: boolean;\n};\n\nconst DatasetTable = ({\n isModal = false,\n showCopyLinkButton = true,\n showDataTableToolbar = true,\n showDownloadFilteredDataButton = true,\n showDownloadFullDataButton = true,\n showStoredQueryDownloadButton = false,\n}: {\n isModal?: boolean;\n showCopyLinkButton?: boolean;\n showDataTableToolbar?: boolean;\n showDownloadFilteredDataButton?: boolean;\n showDownloadFullDataButton?: boolean;\n showStoredQueryDownloadButton?: boolean;\n}) => {\n const {\n id,\n distribution,\n resource,\n rootUrl,\n customColumns = [],\n dataDictionaryBanner,\n } = useContext(DataTableContext) as DatasetTableTabProps;\n const { page, setPage, tableDensity } = useContext(DataTableActionsContext);\n\n const defaultPageSize = 10;\n\n const customColumnHeaders = buildCustomColHeaders(\n customColumns,\n resource.columns,\n resource.schema[distribution.identifier]\n );\n\n const columns = customColumnHeaders\n ? customColumnHeaders\n : prepareColumns(resource.columns, resource.schema[id]);\n\n const { limit, setOffset } = resource;\n const pageSize = limit ? limit : defaultPageSize;\n\n const downloadURL = `${rootUrl}/datastore/query/${id}/0/download?${qs.stringify(\n { conditions: resource.conditions },\n { encode: true }\n )}&format=csv`;\n\n if (\n Object.keys(resource).length &&\n columns.length &&\n resource.schema &&\n Object.keys(distribution).length\n ) {\n return (\n <>\n <div\n className={isModal ? 'dkan-datatable-fullscreen-mode' : ''}\n >\n <DataTable\n canResize={true}\n columns={columns}\n sortTransform={transformTableSortToQuerySort}\n tablePadding={\n tableDensity === 'normal'\n ? 'ds-u-padding-y--2'\n : tableDensity === 'compact'\n ? 'ds-u-padding-y--1'\n : 'ds-u-padding-y--3'\n }\n loading={resource.loading}\n isModal={isModal}\n downloadURL={downloadURL}\n unfilteredDownloadURL={distribution.data.downloadURL}\n setPage={setPage}\n showCopyLinkButton={showCopyLinkButton}\n showDataTableToolbar={showDataTableToolbar}\n showDownloadFilteredDataButton={showDownloadFilteredDataButton}\n showDownloadFullDataButton={showDownloadFullDataButton}\n showStoredQueryDownloadButton={showStoredQueryDownloadButton}\n />\n </div>\n {!resource.loading && resource.count !== null && (\n <div\n className={[\n 'ds-u-display--flex',\n 'ds-u-flex-wrap--wrap',\n 'ds-u-justify-content--end',\n 'ds-u-md-justify-content--between',\n 'ds-u-margin-top--2',\n 'ds-u-align-items--center',\n isModal && 'ds-u-margin-bottom--2',\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <Pagination\n totalPages={Math.ceil(resource.count ? resource.count / pageSize : 1)}\n currentPage={Number(page)}\n onPageChange={(evt, page) => {\n evt.preventDefault();\n setOffset((page - 1) * limit);\n setPage(page);\n }}\n renderHref={(p) => `?page=${p}`}\n className=\"ds-l-col--12 ds-u-padding-x--0\"\n />\n </div>\n )}\n </>\n );\n } else\n return <Spinner aria-valuetext=\"Dataset loading\" role=\"status\" className=\"ds-u-margin--3\" />;\n};\n\nexport default DatasetTable;\n","import React, { useEffect, useState, useContext } from \"react\";\nimport qs from 'qs';\nimport { buildOperatorOptions, buildCustomColHeaders } from \"../../templates/FilteredResource/functions\";\nimport { Dialog, Button } from \"@cmsgov/design-system\";\nimport { ConditionType } from \"../../types/dataset\";\nimport DataTableContext from \"../../templates/Dataset/DataTableContext\";\nimport { DataTableActionsContext } from \"../DatasetTableTab/DataTableActionsContext\";\nimport { DatasetTableTabProps, prepareColumns } from \"../DatasetTableTab\";\nimport FilterItem from \"./FilterItem\";\nimport ClearFiltersButton from \"../QueryBuilder/ClearFiltersButton\";\n\nimport './FilterDataset.scss'\n\nfunction updateQueryForDatastore(condition: ConditionType) {\n let cond = condition;\n delete cond.key;\n if (cond.operator === '=' || cond.operator === '<>') {\n if (Array.isArray(cond.value)) {\n cond.value = cond.value.join();\n }\n cond.value = cond.value.replace(/(^\\%+|\\%+$)/gm, '');\n }\n if (cond.operator.toLowerCase() === 'like') {\n if (Array.isArray(cond.value)) {\n cond.value = cond.value.join();\n }\n const cleanedValue = cond.value.replace(/(^\\%+|\\%+$)/gm, '');\n cond.value = `%${cleanedValue}%`;\n }\n if (cond.operator.toLowerCase() === 'in') {\n if (!Array.isArray(cond.value)) {\n cond.value = cond.value.split(',');\n }\n }\n if (Array.isArray(cond.value)) {\n cond.value = cond.value.map((v) => v.trim().replace(/(^\\%+|\\%+$)/gm, ''));\n }\n return cond;\n}\n\nconst FilterDataset: React.FC = () => {\n const {\n distribution,\n resource,\n customColumns = [],\n } = useContext(DataTableContext) as DatasetTableTabProps;\n\n const { setPage } = useContext(DataTableActionsContext);\n\n if (!resource) return null;\n\n const customColumnHeaders = buildCustomColHeaders(\n customColumns,\n resource.columns,\n resource.schema[distribution.identifier]\n );\n\n const id = distribution.identifier;\n const columns = customColumnHeaders\n ? customColumnHeaders\n : prepareColumns(resource.columns, resource.schema[id]);\n\n const { conditions, schema, setConditions, setOffset } = resource;\n const fields = Object.keys(schema[id].fields);\n\n const [queryConditions, setQueryConditions] = useState<Array<ConditionType>>([]);\n const [titleConditions, setTitleConditions] = useState<Array<ConditionType>>([]);\n const [conditionsChanged, setConditionsChanged] = useState(false);\n const [modalOpen, setModalOpen] = useState(false);\n\n const syncConditions = () => {\n if (conditions && conditions.length) {\n const keyedConditions = conditions.map((oc) => ({\n ...oc,\n key: Date.now().toString() + oc.value + oc.property,\n }));\n setQueryConditions(keyedConditions);\n } else {\n setQueryConditions([\n {\n property: fields[0],\n value: '',\n operator: buildOperatorOptions(schema[id].fields[fields[0]].mysql_type)[0].value,\n key: Date.now().toString(),\n },\n ])\n }\n }\n\n const addCondition = (condition: Array<ConditionType> | ConditionType | null) => {\n if (Array.isArray(condition)) {\n const keyedConditions = condition.map((oc) => ({\n ...oc,\n key: Date.now().toString() + oc.value + oc.property,\n }));\n setQueryConditions(keyedConditions);\n } else {\n setQueryConditions([\n ...queryConditions,\n {\n property: fields[0],\n value: '',\n operator: buildOperatorOptions(schema[id].fields[fields[0]].mysql_type)[0].value,\n key: Date.now().toString(),\n },\n ]);\n }\n };\n\n // Sync the UI with the actual data conditions whenever those change\n useEffect(() => {\n syncConditions();\n setTitleConditions(conditions);\n }, [conditions]);\n\n const propertyOptions = fields.map((f) => {\n if (schema[id].fields[f].description) {\n return { label: schema[id].fields[f].description, value: f };\n }\n return { label: f, value: f };\n });\n\n const updateBrowserURL = (newConditions: Array<ConditionType>) => {\n const url = new URL(window.location.href);\n const urlString = qs.stringify(\n { conditions: newConditions },\n { encodeValuesOnly: true, addQueryPrefix: true }\n );\n window.history.pushState({}, '', `${url.origin}${url.pathname}${urlString}`);\n }\n\n const submitConditions = () => {\n // only update the data conditions when \"Apply filters\" is pressed\n const submitConditions = queryConditions\n .filter((oc: ConditionType) => {\n if (oc.property) {\n return oc;\n }\n return false;\n })\n .map((oc) => {\n let cond = Object.assign({}, oc);\n return updateQueryForDatastore(cond);\n });\n \n const completeConditions = conditionsReadyToSubmit(submitConditions);\n \n if (completeConditions.length) { // Safeguard but there should always be at least one \n setConditions(completeConditions);\n setPage(1);\n setOffset(0);\n setConditionsChanged(false);\n updateBrowserURL(completeConditions as ConditionType[]);\n setModalOpen(false);\n }\n };\n\n const conditionsReadyToSubmit = (conditions: ConditionType[]) => {\n const isEmpty = (val: string | string[] | undefined) => {\n if (typeof val === \"string\") {\n return val.trim() === \"\";\n }\n\n if (Array.isArray(val)) {\n return val.length === 0;\n }\n\n return true;\n };\n\n const completeConditions = conditions.filter(condition => {\n if (condition) {\n if (!isEmpty(condition.property) && !isEmpty(condition.operator) && !isEmpty(condition.value)) {\n return condition;\n }\n }\n });\n\n return completeConditions;\n }\n\n const updateCondition = (index: number, key: string, value: string) => {\n let newConditions = [...queryConditions];\n newConditions[index][key] = value;\n setQueryConditions(newConditions);\n setConditionsChanged(true);\n };\n\n const removeCondition = (index: number) => {\n // just removes the condition from the UI - \"Apply Filters\" must be clicked to change the data model\n let newConditions = queryConditions.map((oc) => Object.assign({}, oc));\n newConditions.splice(index, 1);\n setQueryConditions(newConditions);\n setConditionsChanged(true);\n\n if (newConditions.length === 0) {\n setConditions([]);\n updateBrowserURL([]);\n }\n };\n\n const disableFilterSubmitButton = () => {\n return !conditionsChanged || queryConditions.length === 0 || conditionsReadyToSubmit(queryConditions).length === 0;\n }\n\n return (\n <>\n {(Object.keys(resource).length && columns.length && resource.schema && Object.keys(distribution).length) ? (\n <div className=\"dkan-filter-dataset-wrapper\">\n <button\n aria-haspopup=\"dialog\"\n className=\"dkan-filter-dataset-toolbar-button ds-u-color--primary ds-u-text-decoration--underline ds-u-font-size--sm ds-u-padding-x--2 ds-u-margin--0 ds-u-border--0 ds-u-fill--transparent\"\n onClick={() => {\n setModalOpen(true)\n }}\n >\n <i className=\"fa fa-filter ds-u-margin-right--1\"></i>\n <span>\n <span className=\"dkan-dataset-toolbar-button-label\">\n {conditions.length > 0\n ? `Edit Filters`\n : 'Filter Dataset'\n }\n </span>\n {conditions.length > 0 && ` (${conditions.length})`}\n </span>\n </button>\n <div className={`ds-c-dialog-wrap${modalOpen ? ' open' : ''}`}>\n <Dialog\n heading=\"Filter Dataset\"\n isOpen={modalOpen}\n onExit={() => setModalOpen(false)}\n className=\"dkan-filter-dataset-dialog\"\n ariaCloseLabel=\"Close dialog\"\n actions={(\n <div className=\"ds-u-display--flex ds-u-justify-content--end ds-u-padding-x--2 ds-u-md-padding-x--3 ds-u-padding-y--2\">\n <div className=\"ds-u-display--flex \">\n <ClearFiltersButton\n disabled={queryConditions.length === 0}\n clearFiltersFn={() => {\n setConditions([]);\n updateBrowserURL([]);\n }}\n disableDefaultClasses\n className=\"ds-l-md-col--auto ds-l-col--auto ds-u-margin--right--0 ds-u-sm-margin-right--2\"\n />\n <Button\n disabled={disableFilterSubmitButton()}\n className=\"dkan-apply-dataset-filters-button ds-u-float--right ds-l-md-col--auto ds-l-col--auto\"\n onClick={submitConditions}\n variation=\"solid\"\n >\n {`Apply ${conditionsReadyToSubmit(queryConditions).length || ''} filter${conditionsReadyToSubmit(queryConditions).length === 1 ? '' : 's'}`}\n </Button>\n </div>\n </div>\n )}\n >\n <div>\n <p className=\"ds-u-margin--0 ds-u-margin-top--1 ds-u-margin-bottom--2 ds-u-padding-x--2 ds-u-md-padding-x--3\">\n Add filters to only display data that meets your criteria. Filtered results can be downloaded.\n </p>\n\n <div className=\"dkan-filter-dataset-controls-header ds-u-padding-x--2 ds-u-md-padding-x--3 ds-u-padding-y--1 ds-u-margin-top--05 ds-u-fill--gray-lightest\">\n <h3 className=\"ds-u-margin--0 ds-u-font-weight--bold ds-u-padding--0\">Column Name</h3>\n <h3 className=\"ds-u-margin--0 ds-u-font-weight--bold ds-u-padding--0\">Condition</h3>\n <h3 className=\"ds-u-margin--0 ds-u-font-weight--bold ds-u-padding--0\">Value</h3>\n <div className=\"dkan-filter-dataset-controls-header-gutter\"></div>\n </div>\n\n <div className=\"dkan-filter-dataset-form-container ds-u-display--flex ds-u-flex-direction--column ds-u-border-bottom--1\">\n <div className=\"ds-u-padding-bottom--05\">\n <div className=\"dkan-filter-dataset-controls\">\n {queryConditions.map((qf, index) => (\n <FilterItem\n key={qf.key}\n id={id}\n schema={schema}\n condition={qf}\n index={index}\n propertyOptions={propertyOptions}\n update={updateCondition}\n remove={removeCondition}\n className={index !== 0 ? \"ds-u-border-top--1\" : \"ds-u-border--0\"}\n />\n ))}\n </div>\n <div className=\"ds-u-padding-x--2 ds-u-md-padding-x--3 ds-u-padding-y--1 ds-u-border-top--1 ds-u-margin-top--05\">\n <Button\n onClick={() => addCondition(null)}\n className=\"dkan-add-dataset-filter-button ds-l-col--12 ds-u-radius--pill ds-u-margin-top--05 ds-u-font-weight--normal\"\n >\n + Add filter\n </Button>\n </div>\n </div>\n </div>\n </div>\n </Dialog>\n </div>\n </div>\n ) : null}\n </>\n )\n}\nexport default FilterDataset;","import React, { useState, useEffect } from 'react';\nimport DatePicker from 'react-datepicker';\nimport { useMediaQuery } from 'react-responsive';\nimport { Button, Dropdown, TextField } from '@cmsgov/design-system';\nimport { buildOperatorOptions, convertUTCToLocalDate, cleanText } from '../../templates/FilteredResource/functions';\nimport 'react-datepicker/dist/react-datepicker.css';\nimport { FilterItemType, ConditionType } from '../../types/dataset';\n\nimport './FilterItem.scss';\n\nfunction getStartDate(condition : ConditionType, schema : any, id : string) {\n if (schema[id].fields[condition.property].mysql_type === 'date') {\n const newDate = new Date(condition.value.toString());\n if (newDate instanceof Date && !isNaN(newDate.getTime())) {\n return newDate;\n }\n }\n return new Date();\n}\n\nconst FilterItem = ({ id, condition, index, update, remove, propertyOptions, schema, className = '' } : FilterItemType) => {\n const [operator, setOperator] = useState(condition.operator);\n const [property, setProperty] = useState(condition.property);\n const [value, setValue] = useState(condition.value);\n const [startDate, setStartDate] = React.useState(getStartDate(condition, schema, id));\n const [previousType, setPreviousType] = useState(schema[id].fields[property]?.mysql_type);\n\n const xl = useMediaQuery({minWidth: 1280})\n\n // Reset value when mysql_type changes from date to another type\n useEffect(() => {\n const currentType = schema[id].fields[property]?.mysql_type;\n if (previousType === 'date' && currentType !== 'date') {\n setValue('');\n update(index, 'value', '');\n }\n setPreviousType(currentType);\n }, [schema, id, property, previousType, index, update]);\n\n useEffect(() => {\n if (property !== condition.property) {\n if (property) {\n update(index, 'property', property);\n } else {\n update(index, 'property', '');\n }\n if (schema[id].fields[condition.property].mysql_type === 'date') {\n if (!value) {\n setValue(startDate.toJSON().slice(0, 10));\n }\n }\n }\n }, [property, value, startDate, schema, id, condition]);\n\n useEffect(() => {\n if (operator !== condition.operator) {\n if (operator) {\n update(index, 'operator', operator);\n } else {\n update(index, 'operator', '');\n }\n }\n }, [operator]);\n\n useEffect(() => {\n if (value !== condition.value) {\n if (value) {\n update(index, 'value', value);\n } else {\n update(index, 'value', '');\n }\n }\n }, [value]);\n\n return (\n <fieldset className={`dkan-filter-dataset-control ds-u-padding-x--2 ds-u-md-padding-x--3 ds-u-padding-y--1 ds-u-margin-top--05${className !== '' ? ` ${className}` : ''}`}>\n <Dropdown\n options={propertyOptions}\n className=\"ds-u-padding-x--0\"\n value={property}\n label=\"Column Name\"\n name={`${condition.key}_property`}\n onChange={(e) => setProperty(e.target.value)}\n />\n <Dropdown\n options={buildOperatorOptions(schema[id].fields[property].mysql_type)}\n className=\"ds-u-padding-x--0\"\n value={operator}\n label=\"Condition\"\n name={`${condition.key}_operator`}\n onChange={(e) => setOperator(e.target.value)}\n />\n {schema[id].fields[property].mysql_type === 'date' ? (\n <div>\n <label\n className=\"ds-c-label\"\n htmlFor={`${condition.key}_date_value`}\n id={`${condition.key}_date_value-label`}\n >\n <span>Value</span>\n </label>\n <DatePicker\n name={`${condition.key}_date_value`}\n selected={convertUTCToLocalDate(startDate)}\n onChange={(date : Date) => {\n setStartDate(date);\n setValue(date.toJSON().slice(0, 10));\n }}\n showMonthDropdown\n showYearDropdown\n dropdownMode=\"select\"\n className=\"ds-c-field\"\n withPortal\n />\n </div>\n ) : (\n <TextField\n className=\"ds-u-padding-x--0\"\n label=\"Value\"\n name={`${condition.key}_value`}\n value={cleanText(value, operator)}\n onChange={(e) => setValue(e.target.value)}\n placeholder='Enter value'\n />\n )}\n\n <Button\n variation=\"ghost\"\n size=\"small\"\n className=\"dkan-delete-dataset-filter-button ds-u-padding-x--0 ds-u-margin-left--05 ds-u-md-margin-top--0 ds-u-border--1 ds-u-border--dark ds-u-color--black\"\n aria-label=\"Delete filter\"\n onClick={() => remove(index)}\n >\n <span className=\"far fa-trash\"></span>\n </Button>\n </fieldset>\n );\n};\n\nexport default FilterItem;","import React from \"react\";\nimport { Button } from \"@cmsgov/design-system\";\nimport { useMediaQuery } from \"react-responsive\";\n\nimport \"./ClearFiltersButton.scss\";\n\nconst ClearFiltersButton = ({\n disabled = false,\n clearFiltersFn,\n disableDefaultClasses = false,\n className = ''\n} : { \n disabled?: boolean,\n clearFiltersFn: Function,\n disableDefaultClasses?: boolean,\n className?: string\n}) => {\n const small = useMediaQuery({ minWidth: 0, maxWidth: 544 });\n return (\n <Button\n disabled={disabled}\n className={`dkan-clear-dataset-filters-button ${disableDefaultClasses ? '' : ' ds-u-float--right ds-l-md-col--6 ds-l-col--5'}${className !== '' ? ` ${className}` : ''}`}\n variation={small ? 'ghost' : undefined}\n onClick={() => clearFiltersFn()}\n >\n Reset\n </Button>\n )\n}\n\nexport default ClearFiltersButton;","import React from \"react\";\n\nimport \"./FilterChip.scss\";\n\nexport type FilterChipProps = {\n iconClass: string;\n text: string;\n onClick: React.MouseEventHandler<HTMLButtonElement>\n}\n\nconst FliterChip: React.FC<FilterChipProps> = ({ iconClass, text, onClick }) => {\n return (\n <button className=\"dkan-filter-chip ds-u-display--flex ds-u-font-size--sm ds-u-align-items--center ds-u-padding-x--1 ds-u-padding-y--05 ds-u-margin--0 ds-u-margin-right--1 ds-u-margin-bottom--1\" onClick={onClick}>\n <i className={`${iconClass} ds-u-color--primary ds-u-margin-right--1`} />\n {text}\n <i className=\"fa fa-xmark ds-u-font-size--sm ds-u-margin-left--1\" />\n </button>\n )\n}\n\nexport default FliterChip;","import React, { useContext } from \"react\";\nimport { Tooltip, Dropdown } from \"@cmsgov/design-system\";\nimport DataTableContext from \"../../templates/Dataset/DataTableContext\";\nimport { DataTableActionsContext } from \"../DatasetTableTab/DataTableActionsContext\";\nimport { ResourceType } from \"../../types/dataset\";\n\nimport \"./DisplaySettings.scss\";\n\nconst DisplaySettings: React.FC = () => {\n const { resource } = useContext(DataTableContext);\n const { setPage, tableDensity, setTableDensity } = useContext(DataTableActionsContext);\n const rowOptions = [10, 25, 50, 100];\n\n if (!resource) return null;\n\n const { limit, setLimit, setOffset } = resource as ResourceType;\n\n return (\n <div className=\"dkan-display-settings-wrapper\">\n <Tooltip\n className=\"dkan-filter-dataset-toolbar-button ds-u-display--flex ds-u-align-items--center ds-u-color--primary ds-u-border--0 ds-u-padding--0 ds-u-padding-x--2 ds-u-margin--0 ds-u-fill--transparent ds-u-font-size--sm\"\n activeClassName=\"dkan-data-table-display-settings-tooltip-open\"\n dialog\n offset={[\n 0,\n 5\n ]}\n placement=\"bottom-start\"\n maxWidth=\"350px\"\n aria-haspopup=\"dialog\" \n title={\n <div className=\"ds-u-display--flex ds-u-flex-direction--column\">\n <div className=\"dkan-data-table-display-settings-row ds-u-padding-bottom--1\">\n <div className=\"\">\n <span className=\"ds-u-font-size--md ds-u-font-weight--normal\">Row height</span>\n </div>\n <div className=\"ds-u-display--flex ds-u-align-items--start\">\n <button\n onClick={() => setTableDensity('expanded')}\n aria-label=\"Row height, Expanded\"\n className={`dkan-table-density-button ds-u-leading--reset ds-u-padding--1 ds-u-margin--0 ${tableDensity === 'expanded' ? 'active ds-u-fill--primary-lightest' : ''}`}\n >\n <i className=\"ds-u-display--block\">\n <svg className=\"ds-u-display--block\"viewBox=\"0 0 512 512\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" focusable=\"false\" height=\"16\" role=\"img\" width=\"16\">\n <path d=\"M496,384 C504.836556,384 512,391.163444 512,400 L512,496 C512,504.836556 504.836556,512 496,512 L16,512 C7.163444,512 1.082166e-15,504.836556 0,496 L0,400 C-1.082166e-15,391.163444 7.163444,384 16,384 L496,384 Z M496,192 C504.836556,192 512,199.163444 512,208 L512,304 C512,312.836556 504.836556,320 496,320 L16,320 C7.163444,320 1.082166e-15,312.836556 0,304 L0,208 C-1.082166e-15,199.163444 7.163444,192 16,192 L496,192 Z M496,0 C504.836556,-1.623249e-15 512,7.163444 512,16 L512,112 C512,120.836556 504.836556,128 496,128 L16,128 C7.163444,128 1.082166e-15,120.836556 0,112 L0,16 C-1.082166e-15,7.163444 7.163444,1.623249e-15 16,0 L496,0 Z\"></path>\n </svg>\n </i>\n </button>\n <button\n onClick={() => setTableDensity('normal')}\n aria-label=\"Row height, Normal\"\n className={`dkan-table-density-button ds-u-leading--reset ds-u-padding--1 ds-u-margin--0 ${tableDensity === 'normal' ? 'active ds-u-fill--primary-lightest' : ''}`}\n >\n <i className=\"ds-u-display--block\">\n <svg className=\"ds-u-display--block\" viewBox=\"0 0 512 512\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" focusable=\"false\" height=\"16\" role=\"img\" width=\"16\">\n <path d=\"M496,416 C504.836556,416 512,423.163444 512,432 L512,496 C512,504.836556 504.836556,512 496,512 L16,512 C7.163444,512 1.082166e-15,504.836556 0,496 L0,432 C-1.082166e-15,423.163444 7.163444,416 16,416 L496,416 Z M496,277 C504.836556,277 512,284.163444 512,293 L512,357 C512,365.836556 504.836556,373 496,373 L16,373 C7.163444,373 1.082166e-15,365.836556 0,357 L0,293 C-1.082166e-15,284.163444 7.163444,277 16,277 L496,277 Z M496,139 C504.836556,139 512,146.163444 512,155 L512,219 C512,227.836556 504.836556,235 496,235 L16,235 C7.163444,235 1.082166e-15,227.836556 0,219 L0,155 C-1.082166e-15,146.163444 7.163444,139 16,139 L496,139 Z M496,0 C504.836556,-1.623249e-15 512,7.163444 512,16 L512,80 C512,88.836556 504.836556,96 496,96 L16,96 C7.163444,96 1.082166e-15,88.836556 0,80 L0,16 C-1.082166e-15,7.163444 7.163444,1.623249e-15 16,0 L496,0 Z\"></path>\n </svg>\n </i>\n </button>\n <button\n onClick={() => setTableDensity('compact')}\n aria-label=\"Row height, Compact\"\n className={`dkan-table-density-button ds-u-leading--reset ds-u-padding--1 ds-u-margin--0 ${tableDensity === 'compact' ? 'active ds-u-fill--primary-lightest ' : ''}`}\n >\n <i className=\"ds-u-display--block\">\n <svg className=\"ds-u-display--block\" viewBox=\"0 0 512 512\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" focusable=\"false\" height=\"16\" role=\"img\" width=\"16\">\n <path d=\"M496,448 C504.836556,448 512,455.163444 512,464 L512,496 C512,504.836556 504.836556,512 496,512 L16,512 C7.163444,512 1.082166e-15,504.836556 0,496 L0,464 C-1.082166e-15,455.163444 7.163444,448 16,448 L496,448 Z M496,336 C504.836556,336 512,343.163444 512,352 L512,384 C512,392.836556 504.836556,400 496,400 L16,400 C7.163444,400 1.082166e-15,392.836556 0,384 L0,352 C-1.082166e-15,343.163444 7.163444,336 16,336 L496,336 Z M496,224 C504.836556,224 512,231.163444 512,240 L512,272 C512,280.836556 504.836556,288 496,288 L16,288 C7.163444,288 1.082166e-15,280.836556 0,272 L0,240 C-1.082166e-15,231.163444 7.163444,224 16,224 L496,224 Z M496,112 C504.836556,112 512,119.163444 512,128 L512,160 C512,168.836556 504.836556,176 496,176 L16,176 C7.163444,176 1.082166e-15,168.836556 0,160 L0,128 C-1.082166e-15,119.163444 7.163444,112 16,112 L496,112 Z M496,0 C504.836556,-1.623249e-15 512,7.163444 512,16 L512,48 C512,56.836556 504.836556,64 496,64 L16,64 C7.163444,64 1.082166e-15,56.836556 0,48 L0,16 C-1.082166e-15,7.163444 7.163444,1.623249e-15 16,0 L496,0 Z\"></path>\n </svg>\n </i>\n </button>\n </div>\n </div>\n <div className=\"dkan-data-table-display-settings-row ds-u-border-top--1 ds-u-padding-top--1\">\n <div className=\"\">\n <span className=\"ds-u-font-size--md ds-u-font-weight--normal\">Rows per page</span>\n </div>\n <Dropdown\n className=\"\"\n options={rowOptions.map((row) => ({ label: row.toString(), value: row }))}\n size=\"medium\"\n label=\"Rows per page:\"\n labelClassName=\"ds-u-margin-top--0 ds-u-font-size--md ds-u-font-weight--normal\"\n name=\"datatable_rows_per_page\"\n onChange={(e) => {\n setLimit(parseInt(e.target.value));\n setPage(1);\n setOffset(0);\n }}\n value={limit.toString()}\n defaultValue={limit.toString()}\n />\n </div>\n </div>\n }\n >\n <i className=\"far fa-sliders-h ds-u-margin-right--1\"></i>\n <span className=\"dkan-dataset-toolbar-button-label\">Display Settings</span>\n <i className=\"fa fa-chevron-down ds-u-margin-left--1 ds-u-font-weight--bold\"></i>\n <i className=\"fa fa-chevron-up ds-u-margin-left--1 ds-u-font-weight--bold\"></i>\n </Tooltip>\n </div>\n )\n}\n\nexport default DisplaySettings;","import React from 'react';\nimport { Pagination } from '@cmsgov/design-system';\n\nconst ResourceFooter = ({ resource }) => {\n const { limit, values, offset, count, setOffset } = resource;\n\n return (\n <div>\n {values && values.length > 0 && (\n <Pagination\n currentPage={Number(offset) / limit + 1}\n totalPages={Math.ceil(Number(count) / limit)}\n onPageChange={(evt, page) => {\n evt.preventDefault();\n setOffset((page - 1) * limit);\n }}\n renderHref={(page) => {\n return \"\";\n }}\n />\n )}\n </div>\n );\n};\n\nexport default ResourceFooter;\n","export { default } from './Breadcrumb';\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom';\nimport './breadcrumb.scss';\n\nconst Breadcrumb = ({ currentPage, pageTrail = [] }) => {\n const pageTrailContent = pageTrail.map((page) => (\n <li class=\"dc-c-breadcrumb__list-item\">\n <Link to={page.path} class=\"dc-c-breadcrumb__link\">\n <span>{page.title}</span>\n </Link>\n </li>\n ));\n\n return (\n <nav class=\"dc-c-breadcrumb ds-u-margin-top--6\" aria-label=\"Breadcrumbs\">\n <ol class=\"dc-c-breadcrumb__list\">\n {pageTrailContent}\n {currentPage ? (\n <li class=\"dc-c-breadcrumb__list-item dc-c-current\" aria-current=\"page\">\n <span>{currentPage}</span>\n </li>\n ) : (\n ''\n )}\n </ol>\n </nav>\n );\n};\n\nBreadcrumb.propTypes = {\n currentPage: PropTypes.string.isRequired,\n pageTrail: PropTypes.arrayOf(\n PropTypes.shape({\n path: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n })\n ),\n};\n\nexport default Breadcrumb;\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Button, TextField } from '@cmsgov/design-system'\nimport MagnifyingGlassIcon from '../../assets/icons/magnifyingglass'\nimport ChevronRightIcon from '../../assets/icons/chevronright'\nimport './search-input.scss'\n\nconst SearchInput = ({\n placeholder = 'Search the Data',\n showMagnifyingGlass,\n showSearchButton,\n onDark,\n onChange,\n onSubmit,\n onKeyDown,\n defaultValue = ''\n}) => (\n <div className=\"search-input-container\">\n <TextField\n className={`${showMagnifyingGlass ? 'left-padding' : ''} ${showSearchButton ? 'right-padding' : ''}`}\n label={placeholder}\n labelClassName=\"ds-u-visibility--screen-reader\"\n placeholder={placeholder}\n onBlur={() => {}}\n onChange={onChange}\n onKeyDown={onKeyDown}\n defaultValue={defaultValue}\n />\n {showMagnifyingGlass && (\n <div className=\"magnifying-glass-icon ds-u-visibility--hidden ds-u-sm-visibility--visible\">\n <MagnifyingGlassIcon />\n </div>\n )}\n {showSearchButton && (\n <Button\n variation=\"solid\"\n className={onDark && 'on-dark'}\n onClick={onSubmit}\n >\n <span className=\"magnifying-glass-icon\" aria-label=\"Search the Data\">\n <MagnifyingGlassIcon />\n </span>\n <span className=\"sm-label\">\n Search the Data <ChevronRightIcon />\n </span>\n </Button>\n )}\n <div className=\"rounded-border\" />\n </div>\n)\n\nSearchInput.propTypes = {\n placeholder: PropTypes.string,\n showMagnifyingGlass: PropTypes.bool,\n showSearchButton: PropTypes.bool,\n onDark: PropTypes.bool,\n onChange: PropTypes.func,\n onSubmit: PropTypes.func,\n onKeyDown: PropTypes.func,\n defaultValue: PropTypes.string\n}\n\nexport default SearchInput\n","import * as React from \"react\";\nconst MagnifyingGlassIcon = (props) => (\n <svg\n fill=\"#000000\"\n width=\"24px\"\n height=\"24px\"\n viewBox=\"0 0 250 250\"\n id=\"Flat\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M232.47656,215.51563l-40.67773-40.67774a96.10791,96.10791,0,1,0-16.97168,16.96973l40.67871,40.67871a12.0001,12.0001,0,1,0,16.9707-16.9707ZM43.99707,116a72,72,0,1,1,72,72A72.08124,72.08124,0,0,1,43.99707,116Z\" />\n </svg>\n);\nexport default MagnifyingGlassIcon;\n","import * as React from \"react\";\nconst ChevronRightIcon = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={16}\n height={28}\n fill=\"currentColor\"\n className=\"mi-solid mi-chevron-right\"\n viewBox=\"10.125 3.25 9.5 19.5\"\n {...props}\n >\n <path d=\"M10.064 7.269a1.08 1.08 0 0 0 0 1.527L14.267 13l-4.203 4.203a1.079 1.079 0 1 0 1.527 1.527l4.973 -4.973a1.08 1.08 0 0 0 0 -1.527l-4.973 -4.973a1.087 1.087 0 0 0 -1.527 0.011\" />\n </svg>\n);\nexport default ChevronRightIcon;\n","import React, { useState } from 'react';\nimport { Table, TableHead, TableRow, TableCell, TableBody } from '@cmsgov/design-system';\nimport './additional-information-table.scss';\n\nexport function buildRows(metadataMapping, datasetInfo) {\n const rows = [];\n Object.keys(metadataMapping).forEach((d) => {\n if (!datasetInfo[d]) {\n return null;\n } else {\n rows.push(...metadataMapping[d](datasetInfo[d]));\n }\n });\n return rows;\n}\n\nconst DatasetAdditionalInformation = ({ datasetInfo, id, metadataMapping}) => {\n const rows = buildRows(metadataMapping, datasetInfo);\n return (\n <div className=\"dc-c-additional-info-table ds-u-margin-bottom--6\">\n <h2 className=\"ds-text-heading--2xl ds-u-margin-y--3\">Additional Information</h2>\n <Table compact striped>\n <TableHead>\n <TableRow>\n <TableCell>Field</TableCell>\n <TableCell>Value</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {rows.map((r) => (\n <TableRow key={`${r.label}_${id}`}>\n <TableCell>{r.label}</TableCell>\n <TableCell className=\"ds-u-word-break-anywhere\">{r.value}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n );\n};\n\nexport default DatasetAdditionalInformation;\n","export { default } from './APIPage';\n","import React, { useContext } from 'react';\nimport qs from 'qs';\nimport SwaggerUI from 'swagger-ui-react';\nimport { SpanOpenAPIVersion, SpanVersionStamp } from '@civicactions/swagger-ui-layout';\nimport ApiRowLimitNotice from '../../components/ApiRowLimitNotice';\nimport 'swagger-ui-react/swagger-ui.css';\nimport './swagger-ui-overrides.scss';\nimport { acaToParams } from '../../utilities/aca';\nimport { ACAContext } from '../../utilities/ACAContext';\n\nconst APIPage = ({ hideAuth = true, rootUrl, showRowLimitNotice = false }) => {\n let params = {\n authentication: hideAuth ? false : undefined,\n };\n const {ACA} = useContext(ACAContext);\n return (\n <>\n {showRowLimitNotice && <ApiRowLimitNotice />}\n <section className=\"ds-l-container\">\n <SwaggerUI\n url={`${rootUrl}${qs.stringify(acaToParams(params, ACA), { addQueryPrefix: true })}`}\n docExpansion={'list'}\n defaultModelsExpandDepth={-1}\n plugins={[SpanOpenAPIVersion, SpanVersionStamp]}\n />\n </section>\n </>\n );\n};\n\nexport default APIPage;\n","export { default } from './PageNotFound';\n","import React from 'react';\n\nconst PageNotFound = ({ siteUrl, content }) => {\n return (\n <section className=\"ds-l-container ds-u-padding-top--3\">\n {content ? (\n content\n ) : (\n <>\n <h1 className=\"ds-text-heading--4xl\">Error: Page not found</h1>\n <p>\n We're sorry, but there is no {siteUrl} web page that matches your entry. You may have\n been directed here because:\n </p>\n <ol>\n <li>The address you typed contains a typo;</li>\n <li>The requested page may have expired or;</li>\n <li>The requested page may have been moved.</li>\n </ol>\n <p>\n <span className=\"ds-u-font-weight--bold\">Note:</span> If you were using a bookmark,\n please reset it once you find the correct page.\n </p>\n </>\n )}\n </section>\n );\n};\n\nexport default PageNotFound;\n","export { default } from './DatasetSearch';\n","import React, { useContext, useEffect, useState } from 'react';\nimport { useSearchParams, useLocation } from 'react-router-dom';\nimport qs from 'qs';\nimport axios from 'axios';\nimport withQueryProvider from '../../utilities/QueryProvider/QueryProvider';\nimport { Accordion, AccordionItem, TextField, Dropdown, Spinner, Button, Alert, Pagination } from '@cmsgov/design-system';\nimport DatasetSearchListItem from '../../components/DatasetSearchListItem';\nimport DatasetSearchFacets from '../../components/DatasetSearchFacets';\nimport LargeFileInfo from '../../components/LargeFileInfo';\nimport SearchButton from '../../components/SearchButton';\nimport PageHeader from '../../components/PageHeader';\nimport { useQuery } from '@tanstack/react-query';\nimport { separateFacets, transformUrlParamsToSearchObject } from '../../services/useSearchAPI/helpers';\n\nimport './dataset-search.scss';\nimport { DatasetSearchPageProps, SelectedFacetsType, SidebarFacetTypes, DistributionItemType } from '../../types/search';\nimport { TextFieldValue } from '@cmsgov/design-system/dist/react-components/types/TextField/TextField';\nimport { acaToParams } from '../../utilities/aca';\nimport { ACAContext } from '../../utilities/ACAContext';\n\nconst DatasetSearch = (props: DatasetSearchPageProps) => {\n const {\n rootUrl,\n enableSort = true,\n enablePagination = true,\n defaultPageSize = 10,\n defaultSort = { defaultSort: 'modified', defaultOrder: 'desc' },\n pageTitle = 'Dataset Explorer',\n filterTitle = 'Tags',\n showLargeFileWarning = false,\n largeFileThemes,\n introText = '',\n showDownloadIcon = false,\n altMobileSearchButton,\n dataDictionaryLinks = false,\n } = props;\n const { ACA } = useContext(ACAContext);\n\n const sortOptions = [\n { label: 'Newest', value: 'newest' },\n { label: 'Oldest', value: 'oldest' },\n { label: 'Title A-Z', value: 'titleAZ' },\n { label: 'Title Z-A', value: 'titleZA' }\n ];\n\n const defaultSortBy = \"\";\n const defaultFulltext = \"\";\n const defaultSelectedFacets = { theme: [], keyword: [] };\n const defaultSortOrder = \"\";\n const defaultPage = 1;\n\n const location = useLocation();\n const transformedParams = transformUrlParamsToSearchObject(location.search, defaultSort);\n\n const [currentResultNumbers, setCurrentResultNumbers] = useState({ total: 0, startingNumber: 0, endingNumber: 0 });\n const [noResults, setNoResults] = useState(false);\n const [announcementText, setAnnouncementText] = useState('');\n let [searchParams, setSearchParams] = useSearchParams();\n const [fulltext, setFullText] = useState(transformedParams.fulltext);\n const [filterText, setFilterText] = useState(transformedParams.fulltext);\n const [totalItems, setTotalItems] = useState(0);\n const [page, setPage] = useState(transformedParams.page ? transformedParams.page : defaultPage);\n const [sort, setSort] = useState(\n transformedParams.sort ? transformedParams.sort : defaultSort ? defaultSort.defaultSort : defaultSortBy\n );\n const [sortOrder, setSortOrder] = useState(\n transformedParams.sortOrder\n ? transformedParams.sortOrder\n : defaultSort ? defaultSort.defaultOrder : defaultSortOrder\n );\n const [sortDisplay, setSortDisplay] = useState(() => {\n return sort === 'modified' ? (sortOrder === 'desc' ? 'newest' : 'oldest') : (sortOrder === 'desc' ? 'titleZA' : 'titleAZ');\n })\n const [selectedFacets, setSelectedFacets] = useState<SelectedFacetsType>(\n transformedParams.selectedFacets\n ? transformedParams.selectedFacets\n : {\n theme: [],\n keyword: [],\n }\n )\n\n const setSortOptions = (value: string) => {\n setSortDisplay(value)\n switch (value) {\n case 'newest':\n setSort('modified');\n setSortOrder('desc');\n break;\n case 'oldest':\n setSort('modified');\n setSortOrder('asc');\n break;\n case 'titleAZ':\n setSort('title');\n setSortOrder('asc');\n break;\n case 'titleZA':\n setSort('title');\n setSortOrder('desc');\n break;\n }\n }\n\n function updateSelectedFacets(key: string, value: string) {\n const newFacets: SelectedFacetsType = { ...selectedFacets };\n if (key === 'theme') {\n const existingFacet = newFacets.theme.findIndex((s) => s === value);\n if (existingFacet > -1) {\n newFacets.theme.splice(existingFacet, 1);\n } else {\n newFacets.theme.push(value);\n }\n }\n if (key === 'keyword') {\n const existingFacet = newFacets.keyword.findIndex((s) => s === value);\n if (existingFacet > -1) {\n newFacets.keyword.splice(existingFacet, 1);\n } else {\n newFacets.keyword.push(value);\n }\n }\n const urlString = qs.stringify(\n { theme: newFacets.theme, keyword: newFacets.keyword },\n { encodeValuesOnly: true, addQueryPrefix: true }\n );\n setSelectedFacets(newFacets);\n const url = new URL(window.location.href);\n window.history.pushState({}, '', `${url.origin}${url.pathname}${urlString}`);\n }\n\n const pageSize = defaultPageSize;\n\n function resetFilters() {\n setFullText(defaultFulltext);\n setFilterText(defaultFulltext);\n setSelectedFacets(defaultSelectedFacets);\n setPage(defaultPage);\n const url = new URL(window.location.href);\n window.history.pushState({}, '', `${url.origin}${url.pathname}`);\n }\n\n function buildSearchParams(includePage: boolean) {\n let newParams: any = {};\n if (Number(page) !== 1 && includePage) {\n newParams.page = page;\n }\n if (sort !== defaultSort.defaultSort) {\n newParams.sort = sort;\n }\n if (sortOrder !== defaultSort.defaultOrder) {\n newParams.sortOrder = sortOrder;\n }\n if (fulltext !== '') {\n newParams.fulltext = fulltext;\n }\n if (Object.keys(selectedFacets).length) {\n Object.keys(selectedFacets).forEach((key) => {\n newParams[key] = selectedFacets[key];\n });\n }\n return qs.stringify(newParams, { addQueryPrefix: includePage, encode: true });\n }\n\n let params = {\n fulltext: fulltext ? fulltext : undefined,\n ...selectedFacets,\n sort: sort ? sort : undefined,\n ['sort-order']: sortOrder ? sortOrder : undefined,\n page: page !== 1 ? page : undefined, //use index except for when submitting to Search API\n ['page-size']: pageSize !== 10 ? pageSize : undefined,\n }\n const { data, isPending, error } = useQuery({\n queryKey: [\"datasets\", params],\n queryFn: () => {\n return axios.get(`${rootUrl}/search/?${qs.stringify(acaToParams(params, ACA), { arrayFormat: 'comma', encode: false })}`)\n }\n });\n\n if ((data && data.data.total) && totalItems != data.data.total) setTotalItems(data.data.total);\n\n const facets: SidebarFacetTypes = (data && data.data.facets) ? separateFacets(data ? data.data.facets : []) : { theme: null, keyword: null };\n\n useEffect(() => {\n const baseNumber = Number(totalItems) > 0 ? 1 : 0;\n const startingNumber = baseNumber + (Number(pageSize) * Number(page) - Number(pageSize));\n const endingNumber = Number(pageSize) * Number(page);\n\n setCurrentResultNumbers({\n total: Number(totalItems),\n startingNumber: Number(totalItems) >= startingNumber ? startingNumber : 0,\n endingNumber: Number(totalItems) < endingNumber ? Number(totalItems) : endingNumber,\n });\n\n if (totalItems <= 0 && currentResultNumbers !== null) {\n setNoResults(true);\n } else {\n setNoResults(false);\n }\n }, [totalItems, pageSize, page]);\n\n useEffect(() => {\n if (page !== 1 && (transformedParams.fulltext !== fulltext || transformedParams.selectedFacets !== selectedFacets))\n setPage(1)\n }, [fulltext, selectedFacets]);\n\n useEffect(() => {\n if (totalItems !== null && totalItems !== undefined && totalItems > 0) {\n var params = buildSearchParams(true);\n if (params !== location.search) {\n setSearchParams(params);\n }\n }\n }, [page, sort, sortOrder, totalItems]);\n\n useEffect(() => {\n // No results found\n if (noResults) {\n setAnnouncementText('No results found.');\n }\n\n // Could not connect to the API\n else if (!isPending && (!data || !data.data.results)) {\n setAnnouncementText('Could not connect to the API.');\n }\n\n // Show results as normal\n else {\n setAnnouncementText(`Showing ${currentResultNumbers.startingNumber} to ${currentResultNumbers.endingNumber} of ${currentResultNumbers.total} datasets`);\n }\n }, [data, isPending, noResults, currentResultNumbers]);\n\n return (\n <>\n <PageHeader headerText={pageTitle} />\n <section className=\"ds-l-container\">\n <div>\n <p\n className=\"ds-u-visibility--screen-reader\"\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n data-testid=\"currentResults\"\n >\n {announcementText}\n </p>\n </div>\n <div className=\"ds-l-row\">\n <div className=\"ds-l-col--12\">\n {introText ? introText : null}\n {showLargeFileWarning && (\n <div className=\"ds-l-row ds-u-margin-bottom--2 ds-u-margin-top--4\">\n <div className=\"ds-l-md-col--12\">\n <Accordion bordered>\n <AccordionItem\n contentClassName=\"downloading-datasets\"\n heading=\"Please read before downloading datasets\"\n >\n <LargeFileInfo />\n </AccordionItem>\n </Accordion>\n </div>\n </div>\n )}\n <form\n onSubmit={(e) => {\n e.preventDefault();\n setFullText(filterText);\n }}\n className=\"dkan-dataset-search ds-l-form-row ds-u-padding-bottom--4 ds-u-border-bottom--1\"\n >\n <span className=\"ds-c-field__before fas fa-search ds-u-display--none ds-u-sm-display--inline-block\" />\n <TextField\n fieldClassName=\"ds-u-margin--0\"\n value={filterText as TextFieldValue}\n className={`ds-u-padding-right--2 ${altMobileSearchButton ? 'ds-l-col--12 ds-l-md-col--10 --alt-style' : 'ds-l-col--10'}`}\n label=\"Search datasets\"\n labelClassName=\"ds-u-visibility--screen-reader\"\n placeholder=\"Search datasets\"\n name=\"dataset_fulltext_search\"\n onChange={(e) => setFilterText(e.target.value)}\n />\n <SearchButton altMobileStyle={altMobileSearchButton} />\n </form>\n </div>\n </div>\n <div className=\"ds-l-row ds-u-padding-top--4\">\n <div className=\"ds-l-col--12 ds-l-sm-col--4\">\n <Button\n className=\"dc-dataset-search--clear-all-filters ds-u-margin-bottom--2\"\n onClick={() => resetFilters()}\n >\n Clear all filters\n </Button>\n {facets.theme && (\n <DatasetSearchFacets\n facets={facets.theme}\n title=\"Categories\"\n onClickFunction={updateSelectedFacets}\n selectedFacets={selectedFacets.theme}\n />\n )}\n {facets.keyword && (\n <DatasetSearchFacets\n facets={facets.keyword}\n title={filterTitle}\n onClickFunction={updateSelectedFacets}\n selectedFacets={selectedFacets.keyword}\n />\n )}\n </div>\n <div className=\"ds-l-col--12 ds-l-sm-col--8\">\n {isPending ? (\n <Spinner\n className=\"ds-u-valign--middle\"\n aria-valuetext=\"Dataset Search loading\"\n role=\"status\"\n />\n ) : (\n <>\n <div 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\">\n {enablePagination && (\n <div className=\"ds-l-col--12 ds-l-sm-col--6 ds-l-md-col--8 ds-u-sm-padding-left--0\">\n <p className=\"ds-u-margin-y--0\">\n {(currentResultNumbers && data) && (\n <>\n Showing {currentResultNumbers.startingNumber} -{' '}\n {currentResultNumbers.endingNumber} of {data.data.total} datasets\n </>\n )}\n </p>\n </div>\n )}\n {enableSort && (\n <div className=\"ds-l-col--12 ds-l-sm-col--6 ds-l-md-col--4 ds-u-sm-padding-right--0\">\n <Dropdown\n options={sortOptions}\n value={sortDisplay}\n label=\"Sort\"\n labelClassName=\"ds-u-margin-top--0\"\n name=\"dataset_search_sort\"\n onChange={(e) => setSortOptions(e.target.value)}\n />\n </div>\n )}\n </div>\n <ol className=\"dc-dataset-search-list ds-u-padding--0 ds-u-margin-top--0 ds-u-margin-bottom--4 ds-u-display--block\" data-testid=\"results-list\">\n {noResults && <Alert variation=\"error\" role=\"region\" heading=\"No results found.\" />}\n {data && data.data.results ? Object.keys(data.data.results).map((key) => {\n return data.data.results[key];\n }).map((item) => {\n function getDownloadUrl(item: DistributionItemType) {\n let distribution_array = item.distribution ? item.distribution : [];\n return distribution_array.length ? item.distribution[0].downloadURL : null;\n }\n let showLargeFile = false;\n if (largeFileThemes && item.theme)\n largeFileThemes.forEach(theme => {\n if (item.theme.includes(theme))\n showLargeFile = true;\n });\n \n return (\n <DatasetSearchListItem\n key={item.identifier}\n location={location}\n title={item.title}\n modified={item.modified}\n description={item.description}\n identifier={item.identifier}\n downloadUrl={showDownloadIcon ? getDownloadUrl(item) : null}\n largeFile={showLargeFile}\n paginationEnabled={enablePagination}\n dataDictionaryLinks={dataDictionaryLinks}\n distribution={\"%Ref:distribution\" in item ? item[\"%Ref:distribution\"][0] : {}}\n />\n )\n }) : (\n <Alert variation=\"error\" role=\"region\" heading=\"Could not connect to the API.\" />\n )}\n </ol>\n {enablePagination && (data && data.data.total) && data.data.total != 0 && (\n <Pagination\n currentPage={Number(page)}\n totalPages={Math.ceil(Number(data.data.total) / pageSize)}\n onPageChange={(evt, page) => {\n evt.preventDefault();\n window.scroll(0, 0);\n setPage(page);\n }}\n renderHref={(page) => {\n const searchParams = buildSearchParams(false);\n const includeAnd = searchParams ? '&' : '';\n return `/datasets?page=${page}${includeAnd}${searchParams}`;\n }}\n />\n )}\n\n </>\n )}\n </div>\n </div>\n </section>\n </>\n );\n};\n\nexport default withQueryProvider(DatasetSearch);","import { Link } from 'react-router-dom';\n\ntype LargeFileInfoProps = {\n className?: string;\n};\n\nconst LargeFileInfo = (props: LargeFileInfoProps) => (\n <div className={props.className}>\n <p>\n Some datasets contain very large files and, depending on your network characteristics and\n software, may take a long time to download or fail to download. Additionally, the number of\n rows in the file may be larger than the maximum rows your version of Microsoft Excel supports.\n If you can't download the file, we recommend engaging your IT support staff. If you are able\n to download the file but are unable to open it in MS Excel or get a message that the data has\n been truncated, we recommend trying alternative programs such as MS Access, Universal Viewer,\n Editpad or any other software your organization has available for large datasets.\n </p>\n <p>\n <Link to=\"/about/software-specs-and-limits\">\n Click here to learn more about software specifications and limits.\n </Link>\n </p>\n </div>\n);\n\nexport default LargeFileInfo;\n","import React from 'react';\nimport { useMediaQuery } from 'react-responsive';\nimport { Button } from '@cmsgov/design-system';\n\ntype SearchButtonProps = {\n text?: string;\n altMobileStyle?: boolean;\n};\n\nconst SearchButton = (props: SearchButtonProps) => {\n const { text, altMobileStyle } = props;\n const sm = useMediaQuery({ minWidth: 0, maxWidth: 768 });\n return (altMobileStyle && sm) ? (\n <Button\n className=\"ds-u-margin-left--auto ds-u-padding-x--0 ds-c-button--solid dc-c-search-button-mobile\"\n size=\"big\"\n type=\"submit\"\n style={{ width: '70px' }}\n >\n <span className=\"fas fa-search small-text\" />\n </Button>\n ) : (\n <Button type=\"submit\" variation=\"solid\" className=\"ds-l-col--2\">\n <span className=\"fas fa-search small-text ds-u-sm-display--none\" />\n <div className=\"full-text ds-u-display--none ds-u-sm-display--inline-block ds-u-display--flex ds-u-align-items--center\">\n <span>{text ? text : 'Search'}</span>\n {` `}\n <span className=\"fas fa-arrow-right\" />\n </div>\n </Button>\n );\n};\n\nexport default SearchButton;\n","import React from 'react';\ntype pageHeaderProps = {\n headerText: string;\n};\n\nconst PageHeader = (props: pageHeaderProps) => {\n const { headerText } = props;\n return (\n <div className=\"ds-l-container\">\n <div className=\"ds-l-row\">\n <div className=\"ds-l-md-col--8\">\n <h1 className=\"dc-c-entity__name ds-text-heading--3xl ds-u-margin-bottom--4\">\n <span className=\"ds-u-margin-right--2\" data-testid=\"profile-full-name\">\n {headerText}\n </span>\n </h1>\n </div>\n </div>\n </div>\n );\n};\n\nexport default PageHeader;\n","import axios from 'axios';\nimport qs from 'qs';\nimport { SearchAPIFacetType, SortType } from '../../types/search';\nimport { acaToParams } from '../../utilities/aca';\nimport { useContext } from 'react';\nimport { ACAContext } from '../../utilities/ACAContext';\n\nexport function separateFacets(facets: SearchAPIFacetType[]) {\n let facetObj: any = {};\n if (facets) {\n facets.forEach((f) => {\n if(facetObj[f.type]) {\n facetObj[f.type] = [...facetObj[f.type], f]\n } else {\n facetObj[f.type] = [f]\n }\n })\n // sort facets descending by int value, put non int last\n if (facetObj.keyword) {\n facetObj.keyword.sort((a: {name: string}, b: {name:string}) => {\n if (Number(a.name) && Number(b.name)) {\n return Number(b.name) - Number(a.name);\n }\n });\n }\n return facetObj;\n }\n}\n\nexport function transformUrlParamsToSearchObject(searchParams: string, defaultSortOptions: SortType) {\n const params = qs.parse(searchParams, { ignoreQueryPrefix: true });\n let themes = params.theme as string[];\n let keywords = params.keyword as string[];\n return {\n page: params.page,\n sort: !params.sort ? defaultSortOptions.defaultSort : params.sort,\n sortOrder: !params.sortOrder ? defaultSortOptions.defaultOrder : params.sortOrder,\n fulltext: params.fulltext,\n selectedFacets: {\n theme: themes ? themes : [],\n keyword: keywords ? keywords : [],\n },\n };\n}\n\nexport async function fetchDatasets(rootUrl: string, options: any, ACA?: string) {\n const { fulltext, selectedFacets, sort, sortOrder, page, pageSize } = options;\n\n let params = {\n fulltext: fulltext ? fulltext : undefined,\n ...selectedFacets,\n sort: sort ? sort : undefined,\n ['sort-order']: sortOrder ? sortOrder : undefined,\n page: page !== 1 ? page : undefined, //use index except for when submitting to Search API\n ['page-size']: pageSize !== 10 ? pageSize : undefined,\n }\n return await axios.get(`${rootUrl}/search/?${qs.stringify(acaToParams(params, ACA), {arrayFormat: 'comma',encode: false})}`)\n}\n","export { default } from './DatasetList';\n","import React, { useContext, useEffect, useState } from 'react';\nimport { useSearchParams, useLocation } from 'react-router-dom';\nimport qs from 'qs';\nimport axios from 'axios';\nimport withQueryProvider from '../../utilities/QueryProvider/QueryProvider';\nimport { Accordion, AccordionItem, Dropdown, Spinner, Alert, Pagination } from '@cmsgov/design-system';\nimport DatasetListItem from '../../components/DatasetListItem';\nimport LargeFileInfo from '../../components/LargeFileInfo';\nimport PageHeader from '../../components/PageHeader';\nimport { useQuery } from '@tanstack/react-query';\nimport { transformUrlParamsToSearchObject } from '../../services/useSearchAPI/helpers';\n\n// import '../DatasetSearch/dataset-search.scss';\nimport { DatasetSearchPageProps } from '../../types/search';\nimport { acaToParams } from '../../utilities/aca';\nimport { ACAContext } from '../../utilities/ACAContext';\n\nconst DatasetList = ({\n rootUrl,\n enableSort = true,\n enablePagination = true,\n defaultPageSize = 10,\n defaultSort = { defaultSort: 'modified', defaultOrder: 'desc' },\n pageTitle = 'What\\'s New ',\n showLargeFileWarning = false,\n introText = '',\n dataDictionaryLinks = false,\n}: DatasetSearchPageProps) => {\n\n const { ACA } = useContext(ACAContext);\n\n const sortOptions = [\n { label: 'Newest', value: 'newest' },\n { label: 'Oldest', value: 'oldest' },\n { label: 'Title A-Z', value: 'titleAZ' },\n { label: 'Title Z-A', value: 'titleZA' }\n ];\n\n const defaultSortBy = \"\";\n const defaultSortOrder = \"\";\n const defaultPage = 1;\n\n const location = useLocation();\n const transformedParams = transformUrlParamsToSearchObject(location.search, defaultSort);\n\n const [currentResultNumbers, setCurrentResultNumbers] = useState({ total: 0, startingNumber: 0, endingNumber: 0 });\n const [noResults, setNoResults] = useState(false);\n const [announcementText, setAnnouncementText] = useState('');\n let [searchParams, setSearchParams] = useSearchParams();\n const [totalItems, setTotalItems] = useState(0);\n const [page, setPage] = useState(transformedParams.page ? transformedParams.page : defaultPage);\n const [sort, setSort] = useState(\n transformedParams.sort ? transformedParams.sort : defaultSort ? defaultSort.defaultSort : defaultSortBy\n );\n const [sortOrder, setSortOrder] = useState(\n transformedParams.sortOrder\n ? transformedParams.sortOrder\n : defaultSort ? defaultSort.defaultOrder : defaultSortOrder\n );\n const [sortDisplay, setSortDisplay] = useState(() => {\n return sort === 'modified' ? (sortOrder === 'desc' ? 'newest' : 'oldest') : (sortOrder === 'desc' ? 'titleZA' : 'titleAZ');\n })\n\n const setSortOptions = (value: string) => {\n setSortDisplay(value)\n switch (value) {\n case 'newest':\n setSort('modified');\n setSortOrder('desc');\n break;\n case 'oldest':\n setSort('modified');\n setSortOrder('asc');\n break;\n case 'titleAZ':\n setSort('title');\n setSortOrder('asc');\n break;\n case 'titleZA':\n setSort('title');\n setSortOrder('desc');\n break;\n }\n }\n\n const pageSize = defaultPageSize;\n\n function buildSearchParams(includePage: boolean) {\n let newParams: any = {};\n if (Number(page) !== 1 && includePage) {\n newParams.page = page;\n }\n if (sort !== defaultSort.defaultSort) {\n newParams.sort = sort;\n }\n if (sortOrder !== defaultSort.defaultOrder) {\n newParams.sortOrder = sortOrder;\n }\n return qs.stringify(newParams, { addQueryPrefix: includePage, encode: true });\n }\n\n let params = {\n sort: sort ? sort : undefined,\n ['sort-order']: sortOrder ? sortOrder : undefined,\n page: page !== 1 ? page : undefined, //use index except for when submitting to Search API\n ['page-size']: pageSize !== 10 ? pageSize : undefined,\n }\n const { data, isPending, error } = useQuery({\n queryKey: [\"datasets\", params],\n queryFn: () => {\n return axios.get(`${rootUrl}/search/?${qs.stringify(acaToParams(params, ACA), { arrayFormat: 'comma', encode: false })}`)\n }\n });\n\n if ((data && data.data.total) && totalItems != data.data.total) setTotalItems(data.data.total);\n\n useEffect(() => {\n // Update browser URL with current search params\n const params = buildSearchParams(true);\n const url = new URL(window.location.href);\n window.history.pushState({}, '', `${url.origin}${url.pathname}${params}`);\n\n const baseNumber = Number(totalItems) > 0 ? 1 : 0;\n const startingNumber = baseNumber + (Number(pageSize) * Number(page) - Number(pageSize));\n const endingNumber = Number(pageSize) * Number(page);\n\n setCurrentResultNumbers({\n total: Number(totalItems),\n startingNumber: Number(totalItems) >= startingNumber ? startingNumber : 0,\n endingNumber: Number(totalItems) < endingNumber ? Number(totalItems) : endingNumber,\n });\n\n if (totalItems <= 0 && currentResultNumbers !== null) {\n setNoResults(true);\n } else {\n setNoResults(false);\n }\n }, [totalItems, pageSize, page]);\n\n useEffect(() => {\n var params = buildSearchParams(true);\n if (params !== location.search) {\n setSearchParams(params);\n }\n }, [page, sort, sortOrder]);\n\n useEffect(() => {\n // No results found\n if (noResults) {\n setAnnouncementText('No results found.');\n }\n\n // Could not connect to the API\n else if (!isPending && (!data || !data.data.results)) {\n setAnnouncementText('Could not connect to the API.');\n }\n\n // Show results as normal\n else {\n setAnnouncementText(`Showing ${currentResultNumbers.startingNumber} to ${currentResultNumbers.endingNumber} of ${currentResultNumbers.total} datasets`);\n }\n }, [data, isPending, noResults, currentResultNumbers]);\n\n return (\n <>\n <PageHeader headerText={pageTitle} />\n <section className=\"ds-l-container\">\n <div>\n <p\n className=\"ds-u-visibility--screen-reader\"\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n data-testid=\"currentResults\"\n >\n {announcementText}\n </p>\n </div>\n <div className=\"ds-l-row\">\n <div className=\"ds-l-col--12\">\n {showLargeFileWarning && (\n <div className=\"ds-l-row ds-u-margin-bottom--2 ds-u-margin-top--4\">\n <div className=\"ds-l-md-col--12\">\n <Accordion bordered>\n <AccordionItem\n contentClassName=\"downloading-datasets\"\n heading=\"Please read before downloading datasets\"\n >\n <LargeFileInfo />\n </AccordionItem>\n </Accordion>\n </div>\n </div>\n )}\n </div>\n </div>\n <div className=\"ds-l-row\">\n <div className=\"ds-l-col--12\">\n {isPending ? (\n <Spinner\n className=\"ds-u-valign--middle\"\n aria-valuetext=\"Dataset Search loading\"\n role=\"status\"\n />\n ) : (\n <>\n <div 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\">\n <div className=\"ds-l-col--12 ds-l-sm-col--6 ds-l-md-col--8 ds-u-sm-padding-left--0\">\n <div className=\"ds-u-margin-bottom--3\">{introText ? introText : null}</div>\n {enablePagination && (\n <div>\n <p className=\"ds-u-margin-y--0\">\n {(currentResultNumbers && data) && (\n <>\n Showing {currentResultNumbers.startingNumber} -{' '}\n {currentResultNumbers.endingNumber} of {data.data.total} datasets\n </>\n )}\n </p>\n </div>\n )}\n </div>\n {enableSort && (\n <div className=\"ds-l-col--12 ds-l-sm-col--6 ds-l-md-col--4 ds-u-sm-padding-right--0\">\n <Dropdown\n options={sortOptions}\n value={sortDisplay}\n label=\"Sort\"\n labelClassName=\"ds-u-margin-top--0\"\n name=\"dataset_search_sort\"\n onChange={(e) => setSortOptions(e.target.value)}\n />\n </div>\n )}\n </div>\n <ol className=\"dc-dataset-search-list ds-u-padding--0 ds-u-margin-top--0 ds-u-margin-bottom--4 ds-u-display--block\" data-testid=\"datasetlist-results-list\">\n {noResults && <Alert variation=\"error\" role=\"region\" heading=\"No results found.\" />}\n {data && data.data.results ? Object.keys(data.data.results).map((key) => {\n return data.data.results[key];\n }).map((item) => {\n return (\n <DatasetListItem\n key={item.identifier}\n title={item.title}\n modified={item.modified}\n identifier={item.identifier}\n paginationEnabled={enablePagination}\n dataDictionaryLinks={dataDictionaryLinks}\n />\n )\n }) : (\n <Alert variation=\"error\" role=\"region\" heading=\"Could not connect to the API.\" />\n )}\n </ol>\n {enablePagination && (data && data.data.total) && data.data.total != 0 && (\n <Pagination\n currentPage={Number(page)}\n totalPages={Math.ceil(Number(data.data.total) / pageSize)}\n onPageChange={(evt, page) => {\n evt.preventDefault();\n window.scroll(0, 0);\n setPage(page);\n }}\n renderHref={(page) => {\n const searchParams = buildSearchParams(false);\n const includeAnd = searchParams ? '&' : '';\n return `/datasets?page=${page}${includeAnd}${searchParams}`;\n }}\n />\n )}\n\n </>\n )}\n </div>\n </div>\n </section>\n </>\n );\n};\n\nexport default withQueryProvider(DatasetList);\n","import React, { useContext, useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport qs from 'qs';\nimport { useQuery } from '@tanstack/react-query';\nimport withQueryProvider from '../../utilities/QueryProvider/QueryProvider';\nimport useMetastoreDataset from '../../services/useMetastoreDataset';\nimport useDatastore from '../../services/useDatastore';\nimport PageNotFound from '../PageNotFound';\nimport { defaultMetadataMapping } from '../../assets/metadataMapping';\nimport { Tabs, TabPanel } from '@cmsgov/design-system';\nimport SearchItemIcon from '../../assets/icons/searchItem';\nimport DatasetOverview from '../../components/DatasetOverviewTab';\nimport DatasetAPI from '../../components/DatasetAPITab';\nimport DataDictionary from '../../components/DatasetDataDictionaryTab';\nimport { DatasetDictionaryItemType, DatasetPageType, DatasetDictionaryType, DistributionType, ResourceType, ColumnType } from '../../types/dataset';\nimport TransformedDate from '../../components/TransformedDate';\nimport { getFormatType } from '../../utilities/format';\nimport './dataset.scss';\nimport DataTableStateWrapper from '../../components/DatasetTableTab/DataTableStateWrapper';\nimport DataTableContext from './DataTableContext';\nimport DatasetDescription from '../../components/DatasetDescription';\nimport { acaToParams } from '../../utilities/aca';\nimport { ACAContext } from '../../utilities/ACAContext';\n\nconst getDataDictionary = (dataDictionaryUrl: string) => {\n const { ACA } = useContext(ACAContext);\n const { data, isPending, error } = useQuery({\n queryKey: [\"dictionary\" + dataDictionaryUrl],\n queryFn: () => {\n return fetch(`${dataDictionaryUrl}?${qs.stringify(acaToParams({}, ACA), { arrayFormat: 'comma', encode: false })}`).then(\n (res) => res.json(),\n )\n }\n });\n\n return {\n dataDictionary: data as DatasetDictionaryType,\n dataDictionaryLoading: isPending\n }\n}\n\nconst Dataset = ({\n id,\n rootUrl,\n customColumns,\n setDatasetTitle,\n customMetadataMapping,\n apiPageUrl = \"/api\",\n dataDictionaryUrl,\n borderlessTabs = false,\n defaultPageSize = 25,\n dataDictionaryCSV = false,\n dataDictionaryBanner = false,\n disableTableControls = false,\n hideDataDictionary = false,\n customDescription,\n updateAriaLive,\n showRowLimitNotice = false,\n}: DatasetPageType) => {\n const options = location.search\n ? { ...qs.parse(location.search, { ignoreQueryPrefix: true }) }\n : { conditions: [] };\n\n const { dataset, isPending } = useMetastoreDataset(id, rootUrl);\n const title = dataset.title ? dataset.title : '';\n const metadataMapping = {\n ...defaultMetadataMapping,\n ...customMetadataMapping,\n };\n\n let distribution = {} as DistributionType;\n let distributions = dataset.distribution ? dataset.distribution : [];\n if (distributions.length) {\n distribution = distributions[0];\n }\n\n const resource = useDatastore(\n '',\n rootUrl,\n {\n ...options,\n limit: defaultPageSize,\n },\n {\n datasetID: id // pass datasetID into additional params to enable dataset API option in useDatastore\n }\n ) as ResourceType;\n\n const siteWideDataDictionary = dataDictionaryUrl ? getDataDictionary(rootUrl + dataDictionaryUrl).dataDictionary : null;\n\n // compare schema fields with siteWideDataDictionary to display commonalities for now\n // until dataset level data dictionaries are implemented\n const datasetSitewideDictionary = (siteWideDataDictionary && siteWideDataDictionary.data && siteWideDataDictionary.data.fields && resource && resource.schema[distribution.identifier]) ?\n siteWideDataDictionary.data.fields.filter((field: DatasetDictionaryItemType) => {\n return Object.keys(resource.schema[distribution.identifier].fields).indexOf(field.name) !== -1;\n }) : null;\n\n useEffect(() => {\n const localFileFormat = getFormatType(distribution);\n if (localFileFormat === 'csv') {\n resource.setResource(distribution.identifier);\n }\n }, [distribution]);\n\n useEffect(() => {\n if (title) {\n if (setDatasetTitle) {\n setDatasetTitle(title);\n }\n }\n }, [title]);\n\n const notFoundContent = (\n <div className=\"ds-u-padding-top--3\">\n <h1 className=\"ds-text-heading--4xl\">Error: Dataset not found</h1>\n <p>\n We're sorry, but there is no dataset ID that matches your entry. You may have been directed\n here because:\n </p>\n <ol>\n <li>The address you typed contains a typo;</li>\n <li>The requested dataset no longer exists.</li>\n </ol>\n <p>\n <span className=\"ds-u-font-weight--bold\">Note:</span> If you were using a bookmark, please\n reset it once you find the correct dataset.\n </p>\n </div>\n );\n\n\n // The below code manages the selected tab in the Design System tab group manually to ensure we can still use the\n // Data Table tab as the default since it no longer exists on initial render (By default, Overview will appear as default)\n const getDefaultTab = () => {\n return (getFormatType(distribution) === \"csv\") ? \"data-table\" : \"overview\";\n }\n const [selectedTab, setSelectedTab] = useState(\n window.location.hash.substring(1) ? window.location.hash.substring(1) : getDefaultTab())\n\n useEffect(() => {\n if (!window.location.hash.substring(1))\n setSelectedTab(getDefaultTab())\n else if (window.location.hash.substring(1) != selectedTab)\n setSelectedTab(window.location.hash.substring(1))\n }, [distribution, window.location.hash])\n\n const displayDataDictionaryTab = ((distribution.data && distribution.data.describedBy && distribution.data.describedByType === 'application/vnd.tableschema+json') || (datasetSitewideDictionary && datasetSitewideDictionary.length > 0)) as boolean;\n\n return (\n <>\n {dataset.error ? (\n <PageNotFound content={notFoundContent} siteUrl={rootUrl} />\n ) : (\n <div className={'ds-l-container'}>\n <div className={'ds-l-row'}>\n <div className={'ds-l-md-col--9'}>\n <h1 className=\"ds-text-heading--3xl\">{title}</h1>\n </div>\n <div className={'ds-l-md-col--12 ds-u-margin-y--1 ds-u-text-align--right'}>\n <p className=\"ds-u-margin--0\">Updated <TransformedDate date={dataset.modified} /></p>\n </div>\n <div className={'ds-l-md-col--9'}>\n <DatasetDescription\n distribution={distribution}\n dataset={dataset}\n resource={resource}\n customDescription={customDescription}\n updateAriaLive={updateAriaLive}\n />\n </div>\n </div>\n <div className={'ds-l-row'}>\n <div className={'ds-l-md-col--12 dc-dataset'}>\n {!isPending && (\n <Tabs\n onChange={(selectedId, prevSelectedId) => {\n setSelectedTab(selectedId)\n }}\n selectedId={selectedTab}\n >\n <TabPanel\n id={'data-table'}\n tab={\n <span className=\"ds-u-color--primary\">\n <SearchItemIcon id=\"data-table\" />\n Data Table\n </span>\n }\n className={borderlessTabs ? 'ds-u-border--0 ds-u-padding-x--0' : ''}\n >\n {getFormatType(distribution) === \"csv\"\n ? (\n <DataTableContext.Provider value={{\n id: id,\n resource: resource,\n distribution: distribution,\n rootUrl: rootUrl,\n customColumns: customColumns,\n dataDictionaryBanner: (dataDictionaryBanner && displayDataDictionaryTab),\n datasetTableControls: !disableTableControls\n }}>\n <DataTableStateWrapper />\n </DataTableContext.Provider>\n ) : (\n <p>There is no Data Table associated with this dataset. Data Tables will only display for CSV files.</p>\n )\n }\n </TabPanel>\n <TabPanel\n id={'overview'}\n tab={\n <span className=\"ds-u-color--primary\">\n <SearchItemIcon id=\"overview\" />\n Overview\n </span>\n }\n className={borderlessTabs ? 'ds-u-border--0 ds-u-padding-x--0' : ''}\n >\n <DatasetOverview resource={resource} dataset={dataset} distributions={distributions} metadataMapping={metadataMapping} rootUrl={rootUrl} />\n </TabPanel>\n {!hideDataDictionary && (\n <TabPanel\n id={'data-dictionary'}\n tab={\n <span className=\"ds-u-color--primary\">\n <SearchItemIcon id=\"data-dictionary\" />\n Data Dictionary\n </span>\n }\n className={borderlessTabs ? 'ds-u-border--0 ds-u-padding-x--0' : ''}\n >\n {displayDataDictionaryTab\n ? (\n <DataDictionary\n datasetSitewideDictionary={datasetSitewideDictionary}\n datasetDictionaryEndpoint={distribution.data.describedBy}\n title={\"Data Dictionary\"}\n csvDownload={dataDictionaryCSV}\n />\n ) : (\n <p>There is no Data Dictionary associated with this dataset.</p>\n )}\n </TabPanel>\n )}\n {distribution && distribution.data && (\n <TabPanel\n id={'api'}\n tab={\n <span className=\"ds-u-color--primary\">\n <SearchItemIcon id=\"api\" />\n API\n </span>\n }\n className={borderlessTabs ? 'ds-u-border--0 ds-u-padding-x--0' : ''}\n >\n <DatasetAPI id={id} rootUrl={rootUrl} apiUrl={apiPageUrl} showRowLimitNotice={showRowLimitNotice} />\n </TabPanel>\n )}\n </Tabs>\n )}\n </div>\n </div>\n </div>\n )}\n </>\n );\n};\n\nDataset.propTypes = {\n id: PropTypes.string.isRequired,\n rootUrl: PropTypes.string.isRequired,\n};\n\nexport default withQueryProvider(Dataset);\n","export { default } from './useMetastoreDataset';","import { useState, useEffect, useContext } from 'react';\nimport qs from 'qs';\nimport { DatasetType } from '../../types/dataset';\nimport { useQuery } from '@tanstack/react-query';\nimport axios from 'axios';\nimport { acaToParams } from '../../utilities/aca';\nimport { ACAContext } from '../../utilities/ACAContext';\n\nconst useMetastoreDataset = (datasetId : string, rootAPIUrl : string) => {\n const [dataset, setDataset] = useState({\n title: '',\n distribution: [],\n error: '',\n description: '',\n identifier: '',\n modified: '',\n } as DatasetType);\n const [id, setId] = useState(datasetId)\n const [rootUrl, setRootUrl] = useState(rootAPIUrl)\n const {ACA} = useContext(ACAContext);\n\n const { data, isPending } = useQuery({\n queryKey: [\"metastore\" + id],\n queryFn: () => {\n return axios.get(`${rootUrl}/metastore/schemas/dataset/items/${id}?show-reference-ids${ACA ? '&' : ''}${qs.stringify(acaToParams({}, ACA))}`)\n .then((res) => res.data)\n .catch((error) => {return {title: dataset.title, distribution: dataset.distribution, error: error, description: dataset.description, identifier: dataset.identifier, modified: dataset.modified}});\n }\n })\n useEffect(() => {\n if (!isPending && data && data != dataset)\n setDataset(data)\n }, [data])\n\n return {dataset, isPending, setId, setRootUrl};\n}\n\nexport default useMetastoreDataset;\n","export { default } from './useDatastore';","import { useState, useEffect, useContext } from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport qs from 'qs';\nimport { acaToParams } from \"../../utilities/aca\";\nimport { ACAContext } from \"../../utilities/ACAContext\";\n\nconst useDatastore = (\n resourceId,\n rootAPIUrl,\n options,\n additionalParams = {}\n) => {\n const keys = options.keys ? options.keys : true;\n const { prepareColumns } = options;\n\n const {ACA} = useContext(ACAContext);\n\n const [values, setValues] = useState([]);\n const [id, setResource] = useState(resourceId);\n const [rootUrl, setRootUrl] = useState(rootAPIUrl);\n const [limit, setLimit] = useState(options.limit ? options.limit : 20);\n const [count, setCount] = useState(null);\n const [columns, setColumns] = useState([]);\n // unfiltered row / column count for overview tab\n const [totalRows, setTotalRows] = useState(0);\n const [totalColumns, setTotalColumns] = useState(0);\n const [offset, setOffset] = useState(options.offset ? options.offset : 0);\n const [conditions, setConditions] = useState(\n options.conditions ? options.conditions : undefined\n );\n const requireConditions = options.requireConditions;\n const [sort, setSort] = useState(options.sort ? options.sort : undefined);\n const [groupings, setGroupings] = useState(\n options.groupings ? options.groupings : undefined\n );\n const [schema, setSchema] = useState({});\n // const [joins, setJoins] = useState()\n const [properties, setProperties] = useState(\n options.properties ? options.properties : undefined\n );\n\n // Check drupalSettings for datastore_query_api\n const useDatasetAPI = typeof window !== 'undefined' && window.drupalSettings?.datastore_query_api === true;\n const datasetID = additionalParams.datasetID;\n \n // Remove datasetID from params to avoid sending it to the API\n const { datasetID: _, ...restAdditionalParams } = additionalParams;\n \n let params = {\n keys: keys,\n limit: limit,\n offset: offset,\n conditions: conditions,\n sorts: sort,\n properties: properties,\n groupings: groupings,\n ...restAdditionalParams,\n }\n params = acaToParams(params, ACA);\n const paramsString = Object.keys(params).length ? `${qs.stringify(params)}` : '';\n \n let enabled = false;\n if (id) {\n if (!requireConditions)\n enabled = true;\n if (conditions && conditions.length)\n enabled = true;\n }\n // Change whether distribution API or dataset API is used based on option\n const queryID = useDatasetAPI && datasetID ? `${datasetID}/0` : id;\n\n const {data, isPending, error} = useQuery({\n queryKey: [\"datastore\" + id + paramsString],\n queryFn: () => {\n setCount(null)\n return fetch(`${rootUrl}/datastore/query/${queryID}?${paramsString}`)\n .then(res => res.json())\n },\n enabled: enabled\n })\n\n const{data: unfiltered} = useQuery({\n queryKey: [\"datastore\" + id + \"-unfilteredRowsAndCols\"],\n queryFn: () => {\n const unfilteredParams = {\n results: false,\n count: true,\n schema: true\n }\n return fetch(`${rootUrl}/datastore/query/${queryID}?${qs.stringify(acaToParams(unfilteredParams, ACA))}`)\n .then(res => res.json())\n },\n })\n \n\n useEffect(() => {\n if(data) {\n const propertyKeys =\n data.schema && data.schema[id] && data.schema[id].fields\n ? Object.keys(data.schema[id].fields)\n : [];\n setValues(data.results), setCount(data.count);\n if (propertyKeys.length) {\n setColumns(prepareColumns ? prepareColumns(propertyKeys) : propertyKeys);\n }\n if(data.schema) {\n setSchema(data.schema);\n }\n }\n }, [data])\n useEffect(() => {\n if (unfiltered) {\n if (unfiltered.count) setTotalRows(unfiltered.count);\n if (unfiltered.schema && unfiltered.schema[id] && unfiltered.schema[id].fields) setTotalColumns(Object.keys(unfiltered.schema[id].fields).length);\n }\n }, [unfiltered])\n\n return {\n loading: enabled ? isPending : false,\n values,\n count,\n columns,\n totalRows,\n totalColumns,\n limit,\n offset,\n schema,\n conditions,\n properties,\n setProperties,\n setGroupings,\n setResource,\n setRootUrl,\n setLimit,\n setOffset,\n setConditions,\n setSort,\n };\n};\n\nexport default useDatastore;\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport TransformedDate from '../components/TransformedDate';\nimport { frequencyMap } from './frequencyMap';\n\nexport const defaultMetadataMapping = {\n modified: (data) => {\n return [{ label: 'Modified', value: <TransformedDate date={data} /> }];\n },\n issued: (data) => {\n return [{ label: 'Issued', value: <TransformedDate date={data} /> }];\n },\n accrualPeriodicity: (data) => {\n return [\n {\n label: 'Frequency',\n value: frequencyMap[data].name,\n },\n ];\n },\n publisher: (data) => {\n if (data.data && data.data.name) {\n return [{ label: 'Publisher', value: data.data.name }];\n } else {\n return [];\n }\n },\n identifier: (data) => {\n return [{ label: 'Identifier', value: data }];\n },\n contactPoint: (data) => {\n let rows = [];\n if (data.fn) {\n rows.push({ label: 'Contact', value: data.fn });\n }\n if (data.hasEmail) {\n rows.push({\n label: 'Contact Email',\n value: (\n <a href={data.hasEmail.includes(\"mailto:\") ? data.hasEmail : `mailto:${data.hasEmail}`}>{data.hasEmail.replace(\"mailto:\", \"\")}</a>\n )\n });\n }\n return rows;\n },\n bureauCode: (data) => {\n if (data.length) {\n return [{ label: 'Bureau Code', value: data[0] }];\n }\n },\n programCode: (data) => {\n if (data.length) {\n return [{ label: 'Program Code', value: data[0] }];\n }\n },\n theme: (data) => {\n return [\n {\n label: 'Category',\n value: data\n .map((theme) => (\n <Link key={theme.data} to={`/datasets?theme[]=${theme.data}`}>\n {theme.data}\n </Link>\n ))\n .reduce((prev, curr) => [prev, ', ', curr]),\n },\n ];\n },\n keyword: (data) => {\n return [\n {\n label: 'Tags',\n value: data\n .map((keyword) => (\n <Link key={keyword.data} to={`/datasets?keyword[]=${keyword.data}`}>\n {keyword.data}\n </Link>\n ))\n .reduce((prev, curr) => [prev, ', ', curr]),\n },\n ];\n },\n license: (data) => {\n return [{ label: 'License', value: <a href={data}>{data}</a> }];\n },\n accessLevel: (data) => {\n return [{ label: 'Public Access Level', value: data }];\n },\n\n temporal: (data) => {\n return [\n { label: 'Temporal Coverage', value: <span className=\"dc-c-word-break--all\">{data}</span> },\n ];\n },\n spatial: (data) => {\n return [{ label: 'Spacial/Geographical Coverage', value: data }];\n },\n references: (data) => {\n return [\n {\n label: 'Related Documents',\n value: (\n <ul className=\"ds-u-margin--0 ds-u-padding-y--0 ds-u-padding-left--2 ds-u-padding-right--0\">\n {data.map((item) => (\n <li key={item}>\n <a href={item}>{item}</a>\n </li>\n ))}\n </ul>\n ),\n },\n ];\n },\n};\n","export const frequencyMap = {\n 'R/P10Y': { name: 'Decennial' },\n 'R/P4Y': { name: 'Quadrennial' },\n 'R/P1Y': { name: 'Annual' },\n 'R/P2M': { name: 'Bimonthly' },\n 'R/P3.5D': { name: 'Semiweekly' },\n 'R/P1D': { name: 'Daily' },\n 'R/P2W': { name: 'Biweekly' },\n 'R/P6M': { name: 'Semiannual' },\n 'R/P2Y': { name: 'Biennial' },\n 'R/P3Y': { name: 'Triennial' },\n 'R/P0.33W': { name: 'Three times a week' },\n 'R/P0.33M': { name: 'Three times a month' },\n 'R/PT1S': { name: 'Continuously updated' },\n 'R/P1M': { name: 'Monthly' },\n 'R/P3M': { name: 'Quarterly' },\n 'R/P0.5M': { name: 'Semimonthly' },\n 'R/P4M': { name: 'Three times a year' },\n 'R/P1W': { name: 'Weekly' },\n 'R/PT1H': { name: 'Hourly' },\n irregular: { name: 'Irregular' },\n};\n","import React from 'react';\nimport { useMediaQuery } from 'react-responsive';\nimport { buildRows } from '../DatasetAdditionalInformation';\nimport { Table, TableBody, TableRow, TableCell, Tooltip, TooltipIcon } from '@cmsgov/design-system';\nimport Resource from '../Resource';\nimport { DatasetOverviewPropsType } from '../../types/dataset';\n\nconst DatasetOverview = ({ dataset, resource, distributions, metadataMapping, rootUrl } : DatasetOverviewPropsType) => {\n const md = useMediaQuery({ minWidth: 0, maxWidth: 768 });\n const rows = buildRows(metadataMapping, dataset);\n\n const tooltips = [\n {\n label: \"modified\",\n title: \"The date the dataset was last updated.\"\n },\n {\n label: \"released\",\n title: \"The date the most recent dataset was made available to the public.\"\n },\n {\n label: \"issued\",\n title: \"The date the dataset was first published and made available to the public.\"\n },\n {\n label: \"publisher\",\n title: \"The entity responsible for publishing the dataset.\"\n }\n ]\n\n return (\n <>\n <Resource\n distributions={distributions}\n resource={resource}\n title={dataset.title}\n rootUrl={rootUrl}\n />\n <div className=\"dc-c-additional-info-table ds-u-margin-bottom--6 ds-u-padding-left--0 ds-l-lg-col--7 ds-l-md-col--9 ds-l-col--12\">\n <h2 className=\"ds-text-heading--2xl ds-text-heading--2xl\">Additional Information</h2>\n <Table compact stackable stackableBreakpoint=\"md\" warningDisabled>\n <TableBody>\n {rows.map((r) => {\n const tooltip = tooltips.find((item) => item.label === r.label.toLowerCase())\n return (\n <TableRow key={`${r.label}_${dataset.identifier}`}>\n {md ? (\n ''\n ) : (\n <TableCell component=\"th\" className=\"ds-u-font-weight--bold\">\n {r.label}\n {tooltip && <span className=\"ds-u-font-weight--normal\">\n <Tooltip\n title={tooltip.title}\n ariaLabel={r.label}\n // @ts-ignore\n style={{ border: 'none', background: 'none' }}\n maxWidth=\"400px\"\n placement=\"auto\"\n >\n <TooltipIcon />\n </Tooltip>\n </span>}\n </TableCell>\n )}\n <TableCell stackedTitle={r.label}>{r.value}</TableCell>\n </TableRow>\n )}\n )}\n </TableBody>\n </Table>\n </div>\n </>\n );\n};\n\nexport default DatasetOverview;","import React from 'react';\nimport DOMPurify from 'dompurify';\nimport { useMediaQuery } from 'react-responsive';\nimport ResourceInformation from '../ResourceInformation';\nimport { DistributionType, ResourceType } from '../../types/dataset';\nimport { getFormatType } from '../../utilities/format';\nimport './Resource.scss';\n\ntype ResourcePropsType = {\n distributions: DistributionType[],\n resource: ResourceType,\n title: string\n rootUrl: string\n}\n\nconst Resource = ({ distributions, resource, rootUrl, title } : ResourcePropsType ) => {\n const sm = useMediaQuery({ minWidth: 0, maxWidth: 767 });\n return (\n <div className=\"ds-u-display--flex ds-u-flex-wrap--wrap\">\n <h2 className=\"ds-l-col--12 ds-u-padding-left--0 ds-text-heading--2xl\">Resources</h2>\n {distributions.length ? ( \n <ul className=\"ds-c-list ds-c-list--bare dc-c-resource-full-width\">\n {\n distributions.map((dist) => {\n const fileFormat = getFormatType(dist)\n return (\n <li key={dist.identifier} className={`ds-u-display--flex ds-u-flex-wrap--wrap ${fileFormat !== \"csv\" && \"ds-u-margin-bottom--2\"}`}>\n <div className=\"ds-u-font-weight--bold ds-u-font-size--lg ds-l-col--12 ds-l-md-col--6 ds-u-padding-left--0 ds-u-align-items--center ds-u-display--flex\">\n <i className={'fa ds-u-color--primary ds-u-padding-right--1 ds-u-font-size--3xl ' + 'fa-file-' + (fileFormat == \"xlsx\" ? \"xls\" : fileFormat)}></i>\n <p className=\"ds-u-margin-top--0\">{dist.data.title ? dist.data.title : title}{\" (\" + fileFormat.toUpperCase() + \")\"}</p>\n </div>\n <div className=\"ds-l-col--12 ds-l-md-col--6 ds-u-text-align--center ds-u-md-text-align--right ds-u-margin-top--2 ds-u-md-margin-top--0\">\n <a\n href={dist.data.downloadURL}\n style={{\n order: sm ? '1' : '0',\n width: sm ? '100%' : 'auto'\n }}\n aria-label={`Download ${dist.data.title || title} ${fileFormat}`}\n className=\"ds-c-button\"\n >\n <i className=\"fa fa-file-download ds-u-padding-right--1\"></i>\n Download\n </a>\n </div>\n {dist.data.description && (\n <div className={'ds-u-measure--wide ds-u-margin-bottom--7'}>\n <div className=\"dc-c-metadata-description ds-u-margin--0\" dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(dist.data.description) }}/>\n </div>\n )}\n {fileFormat === \"csv\" && <ResourceInformation rootUrl={rootUrl} distribution={dist} />}\n </li>\n )\n })\n }\n </ul>\n ) : (\n <div className=\"ds-u-margin-bottom--2\">No resources have been added to this dataset.</div>\n )}\n </div>\n );\n};\n\nexport default Resource;","import React, { useContext } from 'react';\nimport { DistributionType } from '../../types/dataset';\nimport { useQuery } from '@tanstack/react-query';\nimport axios from 'axios';\nimport qs from 'qs';\nimport { acaToParams } from '../../utilities/aca';\nimport { ACAContext } from '../../utilities/ACAContext';\n\nconst ResourceInformation = ({ distribution, rootUrl } : {distribution: DistributionType, rootUrl: string}) => {\n const { ACA } = useContext(ACAContext);\n const { data: resource } = useQuery({\n queryKey: ['resource-information', distribution.identifier],\n queryFn: () => axios.get(`${rootUrl}/datastore/query/${distribution.identifier}?${qs.stringify(acaToParams({results: false, schema: false}, ACA))}`).then(res => res.data)\n });\n\n return (\n <div className=\"dc-c-resource-info-table ds-l-col--12 ds-u-padding-left--0 ds-u-margin-y--2\">\n <h3 className=\"ds-u-font-size--base ds-text-heading--xl ds-text-heading--xl\">About this Resource</h3>\n <div className=\"ds-u-display--flex ds-u-text-align--center ds-u-justify-content--center ds-u-md-justify-content--start\">\n <div className=\"ds-u-fill--gray-lightest ds-u-radius ds-u-margin-right--1 ds-u-padding--2\">\n <div className=\"ds-u-padding-top--05\">Rows</div>\n <div className=\"ds-u-font-weight--bold\">{resource?.count ? Number(resource.count).toLocaleString() : ''}</div>\n </div>\n <div className=\"ds-u-fill--gray-lightest ds-u-radius ds-u-margin-right--1 ds-u-padding--2\">\n <div>\n <div className=\"ds-u-padding-top--05\">Columns</div>\n <div className=\"ds-u-font-weight--bold\">{resource?.query?.properties?.length?.toLocaleString()}</div>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default ResourceInformation;\n","import React, { useContext } from 'react';\nimport qs from 'qs';\nimport ApiDocumentation from '../ApiDocumentation';\nimport ApiRowLimitNotice from '../ApiRowLimitNotice';\nimport { ACAContext } from '../../utilities/ACAContext';\nimport { acaToParams } from '../../utilities/aca';\ntype DatasetAPIProps = {\n id: String;\n rootUrl: String;\n apiUrl: string;\n showRowLimitNotice?: boolean;\n};\n\nconst DatasetAPI = ({\n id,\n rootUrl,\n apiUrl,\n showRowLimitNotice = false,\n}: DatasetAPIProps) => {\n const {ACA} = useContext(ACAContext)\n return (\n <>\n <div className=\"ds-u-display--flex ds-u-flex-wrap--wrap\">\n <div className=\"ds-l-col--12 ds-l-md-col--9 ds-u-padding-left--0\">\n <h2 className=\"ds-text-heading--2xl\">Try the API</h2>\n <p>\n The Open Data API (ODA) provides programmatic access to this dataset including the\n ability to filter, query, and aggregate data.\n </p>\n {showRowLimitNotice && <ApiRowLimitNotice />}\n </div>\n <div className=\"ds-l-col--12 ds-l-md-col--3 ds-u-font-weight--bold ds-u-margin-top--2 ds-u-padding-left--0 ds-u-md-padding-left--2\">\n <a href={apiUrl}>\n View API{' '}\n <span style={{ whiteSpace: 'nowrap' }}>\n specification <i className=\"fa fa-arrow-right ds-u-font-weight--bold\"></i>\n </span>\n </a>\n </div>\n </div>\n <ApiDocumentation\n endpoint={`${rootUrl}/metastore/schemas/dataset/items/${id}/docs?${qs.stringify(acaToParams({}, ACA))}`}\n />\n </>\n );\n};\n\nexport default DatasetAPI;\n","import React, { useContext } from 'react';\nimport withQueryProvider from '../../utilities/QueryProvider/QueryProvider';\nimport { useQuery } from '@tanstack/react-query';\nimport qs from 'qs';\nimport axios from 'axios';\n\nimport { DatasetDictionaryItemType } from '../../types/dataset';\nimport SitewideDataDictionaryTable from '../SitewideDataDictionaryTable';\nimport DatasetDictionaryTable from '../DatasetDictionaryTable';\nimport { Button, Spinner } from '@cmsgov/design-system';\nimport { acaToParams } from '../../utilities/aca';\nimport { ACAContext } from '../../utilities/ACAContext';\n\nconst DataDictionary = (\n { datasetDictionaryEndpoint, datasetSitewideDictionary, title, pageSize = 20, csvDownload } : \n { \n datasetDictionaryEndpoint: string,\n datasetSitewideDictionary: DatasetDictionaryItemType[]\n title: string,\n pageSize: number,\n additionalParams: any,\n csvDownload : boolean\n }) => {\n const {ACA} = useContext(ACAContext)\n \n const {data, isPending, error} = useQuery({\n queryKey: [\"dictionary\" + datasetDictionaryEndpoint],\n queryFn: () => {\n return axios.get(`${datasetDictionaryEndpoint}?${qs.stringify(acaToParams({}, ACA))}`)\n .then((res) => res.data)\n .catch((error) => console.error(error))\n },\n enabled: datasetDictionaryEndpoint !== undefined\n });\n\n const datasetDictionary = data && data.data && data.data.fields && data.data.fields.length ? data.data.fields : null;\n \n return (\n <div data-testid=\"dataset-dictionary-tab\">\n <h2 className=\"ds-text-heading--2xl ds-u-margin-y--3\">{title}</h2>\n {datasetDictionary && (\n <>\n <div className=\"ds-u-margin-bottom--1 ds-u-display--flex ds-u-flex-wrap--wrap ds-u-justify-content--end\">\n <Button className=\"ds-l-col--12 ds-l-sm-col--6 ds-l-md-col--4\" onClick={() => window.open(datasetDictionaryEndpoint)} type=\"button\" >\n <i className=\"fa fa-file-download ds-u-color--primary ds-u-padding-right--1\"></i> View Dictionary JSON\n </Button>\n {csvDownload && (\n <div className=\"ds-l-col--12 ds-l-sm-col--6 ds-l-md-col--4 ds-u-margin-top--2 ds-u-sm-margin-top--0 ds-u-padding--0 ds-u-sm-padding-left--2\">\n <a\n href={datasetDictionaryEndpoint + \"/csv\"}\n className=\"ds-c-button\"\n style={{width: '100%'}}\n >\n <i className=\"fa fa-file-download ds-u-color--primary ds-u-padding-right--1\"></i>\n Download Dictionary CSV\n </a>\n </div>\n )}\n </div>\n <DatasetDictionaryTable datasetDictionary={datasetDictionary} pageSize={pageSize}/>\n </>\n )}\n\n {datasetSitewideDictionary && (\n <SitewideDataDictionaryTable datasetDictionary={datasetSitewideDictionary} pageSize={pageSize} />\n )}\n </div>\n )\n}\n\nexport default withQueryProvider(DataDictionary);","import React from 'react';\nimport { createColumnHelper } from '@tanstack/react-table';\nimport { DatasetDictionaryItemType } from '../../types/dataset';\nimport DataDictionaryTable from '../DataDictionaryTable';\n\nconst SitewideDataDictionaryTable = ({ datasetDictionary, pageSize} : {datasetDictionary: DatasetDictionaryItemType[], pageSize: number}) => {\n const columnHelper = createColumnHelper<DatasetDictionaryItemType>()\n const tableColumns = [\n columnHelper.accessor('name', {\n header: 'Name',\n }),\n columnHelper.accessor('title', {\n header: 'Title',\n }),\n columnHelper.accessor('type', {\n header: 'Type',\n }),\n columnHelper.accessor('format', {\n header: 'Format',\n }),\n ];\n\n return ( <DataDictionaryTable tableColumns={tableColumns} tableData={datasetDictionary} pageSize={pageSize} /> )\n}\n\nexport default SitewideDataDictionaryTable;","import React, { useState } from 'react';\nimport { useReactTable, flexRender, getCoreRowModel, getPaginationRowModel, getSortedRowModel, SortingState, getFilteredRowModel, ColumnFiltersState } from '@tanstack/react-table';\nimport { useMediaQuery } from 'react-responsive';\nimport { Table, TableHead, TableRow, TableCell, TableBody, Pagination, Dropdown, DropdownChangeObject, Alert } from '@cmsgov/design-system';\nimport HeaderResizeElement from '../Datatable/HeaderResizeElement';\nimport './dataDictionaryTable.scss';\n\nconst DataDictionaryTable = ({tableColumns, tableData, pageSize, columnFilters} :\n {tableColumns: Array<any>, tableData: Array<any>, pageSize: number, columnFilters?: ColumnFiltersState}\n ) => {\n const [sorting, setSorting] = useState<SortingState>([])\n const [ariaLiveFeedback, setAriaLiveFeedback] = useState('');\n\n const mobile = useMediaQuery({ minWidth: 0, maxWidth: 544 });\n\n const sortElement = (isSorted : string) => {\n if(isSorted === 'asc') {\n return 'dc-c-sort--asc'\n }\n if(isSorted === 'desc') {\n return 'dc-c-sort--desc'\n }\n return 'dc-c-sort--default'\n }\n\n const table = useReactTable({\n data: tableData,\n columns: tableColumns,\n columnResizeMode: 'onChange',\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n onSortingChange: setSorting,\n initialState: {\n pagination: {\n pageSize: pageSize,\n pageIndex: 0\n }\n },\n state: {\n sorting,\n columnFilters\n }\n });\n\n const sortOptions = [\n {value: 'default', label: 'No Sort'},\n {value: 'titleasc', label: 'Title A-Z'},\n {value: 'titledesc', label: 'Title Z-A'},\n {value: 'typeasc', label: 'Type A-Z'},\n {value: 'typedesc', label: 'Type Z-A'},\n ];\n\n const sortStatesLookup : {[key: string] : Array<any>} = {\n default: [],\n titleasc: [{id: 'titleResizable', desc: false}],\n titledesc: [{id: 'titleResizable', desc: true}],\n typeasc: [{id: 'type', desc: false}],\n typedesc: [{id: 'type', desc: true}]\n }\n return (\n <div>\n {mobile && (\n <div className=\"ds-u-margin-bottom--3 ds-l-col--12 ds-l-sm-col--6\">\n <Dropdown\n labelClassName=\"ds-u-margin-top--1 ds-u-sm-margin-top--0\"\n options={sortOptions}\n label=\"Sort\"\n value={Object.keys(sortStatesLookup).find(key => {\n return JSON.stringify(sortStatesLookup[key]) == JSON.stringify(sorting);\n })}\n name=\"dc-data-dictionary-type\"\n onChange={(e: DropdownChangeObject) => {\n setSorting(sortStatesLookup[e.target.value])\n }}\n />\n </div>\n )}\n <div className=\"dc-c-datadictionary-table\">\n <Table className=\"dc-c-datatable\" {...{style:{width: '100%'}}} stackable>\n <TableHead className=\"dc-thead--truncated dc-thead--resizeable\">\n {table.getHeaderGroups().map(headerGroup => (\n <TableRow key={\"header\" + headerGroup.id}>\n {headerGroup.headers.map(header => {\n return (header.id === \"titleResizable\") ? (\n <HeaderResizeElement key={header.id + \"_resize\"} table={table} header={header} setAriaLiveFeedback={setAriaLiveFeedback} sortElement={sortElement} id={'dataDictionary_' + header.id} />\n ) : (\n <TableCell\n {...{\n key: header.id\n }}\n className= {`ds-u-border-y--2 ds-u-border--dark ds-u-border-x--0`}\n id={'dataDictionary_' + header.id}\n >\n {flexRender(header.column.columnDef.header, header.getContext()) as React.ReactNode}\n {header.id === 'type' && (\n <button\n onClick={header.column.getToggleSortingHandler()}\n {...{\n className: header.column.getCanSort()\n ? `cursor-pointer select-none ds-u-focus-visible ${sortElement(header.column.getIsSorted() as string)}`\n : '',\n }}\n aria-label={`${header.column.columnDef.header} sort order`}\n />\n )}\n </TableCell>\n )\n }) }\n </TableRow>\n )\n )}\n </TableHead>\n <TableBody>\n {table.getRowModel().rows.map((row, index) => { \n return (\n <TableRow key={index + JSON.stringify(row)}>\n {row.getVisibleCells().map((cell) => {\n return (\n <TableCell\n {...{\n key: cell.id,\n style: {\n maxWidth: mobile ? '100%' : cell.column.getSize(),\n whiteSpace: cell.column.id === \"description\" ? 'pre-wrap' : 'normal'\n },\n }}\n className={`${cell.column.id === 'titleResizable' ? 'ds-u-word-break' : ''}`}\n headers={'dataDictionary_' + cell.column.id}\n stackedTitle={cell.column.id === 'titleResizable' ? 'Title' : cell.column.columnDef.header as string}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext()) as React.ReactNode}\n </TableCell>\n )\n })}\n </TableRow>\n )\n })}\n </TableBody>\n </Table>\n <div className='sr-only' aria-live='assertive' aria-atomic='true'>{ariaLiveFeedback}</div>\n {table.getRowModel().rows.length === 0 && (\n <Alert variation=\"warn\">No results found for the current filters</Alert>\n )}\n </div>\n {table.getRowCount() > pageSize ? (\n <Pagination\n totalPages={table.getPageCount()}\n currentPage={table.getState().pagination.pageIndex + 1}\n onPageChange={(evt, page) => {\n evt.preventDefault();\n table.setPageIndex(page - 1)\n }}\n renderHref={(page) => `/page=${page}`}\n />\n ): ''}\n </div>\n )\n};\n\nexport default DataDictionaryTable;","import React, { useState, useMemo } from 'react';\nimport { createColumnHelper } from '@tanstack/react-table';\nimport { TextField, Dropdown, AccordionItem, Button, DropdownChangeObject } from '@cmsgov/design-system';\nimport { DatasetDictionaryItemType } from '../../types/dataset';\nimport DataDictionaryTable from '../DataDictionaryTable';\nimport { Tooltip, TooltipIcon } from '@cmsgov/design-system';\nimport \"./dataDictionary.scss\"\nimport ClearFiltersButton from '../QueryBuilder/ClearFiltersButton';\n\nconst DatasetDictionaryTable = ({ datasetDictionary, pageSize} : {datasetDictionary: DatasetDictionaryItemType[], pageSize: number}) => {\n const [titleFilter, setTitleFilter ] = useState(\"\");\n const [typeFilter, setTypeFilter ] = useState(\"all\");\n const columnFilters = useMemo(() => [\n {id: \"titleResizable\", value: titleFilter},\n {id: \"type\", value: typeFilter === \"all\" ? \"\" : typeFilter}\n ], [titleFilter, typeFilter])\n\n const tableData = datasetDictionary.map((item) => {\n return {\n titleResizable: item.title,\n description: item.description,\n type: item.type\n }\n })\n\n const columnHelper = createColumnHelper<DatasetDictionaryItemType>()\n const tableColumns = [\n columnHelper.accessor('titleResizable', {\n header: () => (\n <div className=\"dc-c-tooltip-width-override\">\n Title\n <Tooltip\n title={\"Title represents the column headers of the data file\"}\n // @ts-ignore\n style={{ border: 'none', background: 'none' }}\n maxWidth=\"400px\"\n >\n <TooltipIcon />\n </Tooltip>\n </div>\n ),\n size: 300,\n minSize: 132\n }),\n columnHelper.accessor('description', {\n header: 'Description',\n minSize: 600,\n }),\n columnHelper.accessor('type', {\n header: 'Type',\n size: 150,\n enableResizing: false\n }),\n ];\n\n const typeOptions = [\n {value: 'all', label: 'All Types'},\n {value: 'string', label: 'String'},\n {value: 'date', label: 'Date'},\n {value: 'datetime', label: 'Datetime'},\n {value: 'year', label: 'Year'},\n {value: 'integer', label: 'Integer'},\n {value: 'number', label: 'Number'},\n {value: 'boolean', label: 'Boolean'}\n ];\n\n return ( \n <>\n <div className=\"dc-query-builder ds-u-margin-bottom--3\">\n <div className=\"ds-c-accordion ds-c-accordion--bordered\">\n <AccordionItem\n heading={\"Data Dictionary Filters\"}\n defaultOpen={true}\n >\n <div className=\"ds-u-display--flex ds-u-flex-wrap--wrap\">\n <TextField\n className=\"ds-l-col--12 ds-l-sm-col--6\"\n labelClassName=\"ds-u-margin-top--1 ds-u-sm-margin-top--0\"\n label=\"Title\"\n value={titleFilter}\n name=\"dc-data-dictionary-title\"\n onChange={(e: Event) => setTitleFilter((e.target as HTMLInputElement).value)}\n />\n <div className=\"ds-l-col--12 ds-l-sm-col--6\">\n <Dropdown\n labelClassName=\"ds-u-margin-top--1 ds-u-sm-margin-top--0\"\n options={typeOptions}\n label=\"Type\"\n value={typeFilter}\n name=\"dc-data-dictionary-type\"\n onChange={(e: DropdownChangeObject) => setTypeFilter(e.target.value)}\n />\n </div>\n <div className=\"ds-u-float--right ds-u-padding-y--2 ds-l-col--12 ds-u-display--flex ds-u-flex-wrap--wrap ds-u-justify-content--end\">\n <div className=\"ds-u-display--flex ds-u-justify-content--end ds-l-col--12 ds-l-md-col--6 ds-u-padding-x--0\">\n <ClearFiltersButton\n clearFiltersFn={() => {\n setTitleFilter(\"\");\n setTypeFilter(\"all\");\n }} />\n </div>\n </div>\n </div>\n </AccordionItem>\n </div>\n </div>\n <DataDictionaryTable tableColumns={tableColumns} tableData={tableData} pageSize={pageSize} columnFilters={columnFilters} />\n </>\n )\n}\n\nexport default DatasetDictionaryTable;","import React from 'react';\nimport DatasetTable from '.';\nimport DataTableActionsProvider from './DataTableActionsContext';\n\nconst DataTableStateWrapper = ({\n showCopyLinkButton = true,\n showDataTableToolbar = true,\n showDownloadFilteredDataButton = true,\n showDownloadFullDataButton = true,\n showStoredQueryDownloadButton = false,\n}: {\n showCopyLinkButton?: boolean;\n showDataTableToolbar?: boolean;\n showDownloadFilteredDataButton?: boolean;\n showDownloadFullDataButton?: boolean;\n showStoredQueryDownloadButton?: boolean;\n}) => {\n return (\n <DataTableActionsProvider>\n <DatasetTable\n showCopyLinkButton={showCopyLinkButton}\n showDataTableToolbar={showDataTableToolbar}\n showDownloadFilteredDataButton={showDownloadFilteredDataButton}\n showDownloadFullDataButton={showDownloadFullDataButton}\n showStoredQueryDownloadButton={showStoredQueryDownloadButton}\n />\n </DataTableActionsProvider>\n );\n};\n\nexport default DataTableStateWrapper;\n","import React, { useEffect, useState } from 'react';\nimport DOMPurify from 'dompurify';\nimport { DatasetDescriptionType } from '../../types/dataset';\n\ntype DescriptionContent = string | React.ReactNode;\n\nconst DatasetDescription = (\n {distribution, dataset, resource, customDescription, updateAriaLive} : DatasetDescriptionType\n) => {\n const [description, setDescription] = useState<DescriptionContent>(\"\");\n\n if(!distribution && !dataset?.identifier) {\n return null;\n }\n\n useEffect(() => {\n let newDescription: DescriptionContent = '';\n\n if (customDescription) {\n newDescription = customDescription(dataset, distribution, resource);\n } else {\n if(distribution.data && distribution.data.description) {\n newDescription = distribution.data.description;\n } else if(dataset.description) {\n newDescription = dataset.description;\n }\n }\n\n if (typeof newDescription === \"string\" && description !== newDescription && updateAriaLive) {\n updateAriaLive(newDescription);\n }\n\n setDescription(newDescription);\n }, [resource, distribution, dataset, customDescription]);\n \n return (\n <div className={'ds-u-measure--wide ds-u-margin-bottom--7'}>\n <div className=\"ds-u-margin-top--0 dc-c-metadata-description\">\n {typeof description === \"string\" ? (\n <div\n dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(description) }}\n />\n ) : (\n description\n )}\n </div>\n </div>\n );\n}\n\nexport default DatasetDescription;\n","import React, { useEffect, ReactNode, ReactElement, useRef } from 'react';\nimport { useMediaQuery } from 'react-responsive'\nimport CMSTopNav from '../../components/CMSTopNav';\nimport HeaderContext from './HeaderContext';\n\nimport \"./header.scss\";\n\ntype HeaderProps = {\n topNav?: ReactElement<typeof CMSTopNav>;\n children: ReactNode;\n mobileMaxWidth?: number;\n onDark?: boolean;\n};\n\nexport type NavLinkArray = {\n id: string;\n label: string;\n url: string;\n target?: string;\n submenu?: NavLinkArray[];\n icon?: ReactNode;\n drupalPage?: boolean;\n}\n\nconst Header = (props: HeaderProps) => {\n const { topNav, children, mobileMaxWidth = 768, onDark = false } = props;\n const [mobileMenuOpen, setMobileMenuOpen] = React.useState(false);\n const mobileMax = useMediaQuery({ query: `(max-width: ${mobileMaxWidth}px)` });\n const menu = useRef<HTMLDivElement>(null);\n\n function closeMobileMenu() {\n const mobileMenuButtonElement = document.querySelector('.dkan-c-mobile-menu-button');\n if (!mobileMenuButtonElement) {\n return;\n }\n (mobileMenuButtonElement as HTMLElement).focus();\n }\n\n // Close mobile menu with escape.\n function handleMenuClose(event: KeyboardEvent) {\n if (event.key === 'Escape' && mobileMenuOpen) {\n setMobileMenuOpen(false);\n }\n }\n\n function handleClick(event: MouseEvent) {\n // Links are wrapped in spans, this checks if the parent is an A, also check if in the search modal. \n if (mobileMenuOpen && menu.current && !menu.current.contains(event.target as HTMLElement)) {\n setMobileMenuOpen(false);\n closeMobileMenu()\n }\n }\n\n const getFocusableElements = (container: HTMLElement) => {\n const allSelectors = container.querySelectorAll(\n 'a, button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])'\n );\n\n const visibleSelectors = Array.from(allSelectors).filter((el: any) => {\n return el.offsetWidth > 0 || el.offsetHeight > 0;\n });\n\n return {\n selectors: {\n all: allSelectors,\n visible: visibleSelectors,\n },\n };\n };\n\n function handleFocusIn(){\n if (menu.current) {\n if (!mobileMenuOpen) return;\n const focusableEls = getFocusableElements(menu.current).selectors.visible;\n \n if (focusableEls.length <= 0) return;\n const firstEl = focusableEls[0];\n (firstEl as HTMLElement)?.focus();\n }\n \n }\n\n const trapFocus = (event: KeyboardEvent) => {\n if(menu.current && mobileMenuOpen) {\n const focusableEls = getFocusableElements(menu.current).selectors.visible;\n const firstEl = focusableEls[0];\n const lastEl = focusableEls[focusableEls.length - 1];\n\n if (event.key === 'Tab') {\n if (event.shiftKey && document.activeElement === firstEl) {\n (lastEl as HTMLElement)?.focus();\n event.preventDefault();\n } else if (!event.shiftKey && document.activeElement === lastEl) {\n (firstEl as HTMLElement)?.focus();\n event.preventDefault();\n }\n }\n }\n \n }\n\n useEffect(() => {\n document.addEventListener('keyup', handleMenuClose);\n document.addEventListener('mousedown', handleClick);\n if(mobileMenuOpen) {\n handleFocusIn();\n } else {\n closeMobileMenu()\n }\n \n if (menu.current) {\n menu.current.addEventListener('keydown', (evt) => trapFocus(evt));\n }\n \n return () => {\n document.removeEventListener('keyup', handleMenuClose);\n document.addEventListener('mousedown', handleClick);\n if (menu.current) {\n menu.current.removeEventListener('keydown', trapFocus);\n }\n }\n\n }, [mobileMenuOpen]);\n\n return (\n <HeaderContext.Provider value={{\n mobileMenuOpen,\n setMobileMenuOpen,\n menuRef: menu,\n isMobile: mobileMax,\n onDark: onDark,\n }}>\n <header aria-label=\"Site header\" className={`dkan-c-header dkan-c-header--${mobileMax ? 'mobile' : 'desktop'}`}>\n {topNav && topNav}\n <div className=\"dkan-c-main-navigation print-margin-left--2\">\n <div className=\"ds-l-container\">\n <div className=\"dkan-c-header--wrapper ds-l-row ds-u-align-items--center\">\n { children }\n </div>\n </div>\n </div>\n </header>\n </HeaderContext.Provider>\n );\n};\n\nexport default Header;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, ExternalLinkIcon } from '@cmsgov/design-system';\nimport NavLink from '../../components/NavLink';\n\nconst Footer = ({\n links,\n showEmail = true,\n emailTitle = 'Get Email Updates',\n emailBody = 'Sign up to get the latest information from CMS by choosing the topics and frequency of emails that are best for you.',\n emailLink = '',\n emailButton = 'Sign up for email updates',\n socialMediaLinks = null,\n hhsLogo,\n cmsLogo,\n trademarkContent = (\n <div>\n <p>\n A federal government website managed and paid for by the U.S. Centers for Medicare &\n Medicaid Services.\n </p>\n <p className=\"ds-u-padding-bottom--2\">7500 Security Boulevard, Baltimore, MD 21244</p>\n </div>\n ),\n}) => {\n const { footerOpenDataToolLinks, footerAdditionalResourcesLinks, footerUtilityLinks } = links;\n return (\n <footer className=\"dc-c-footer\">\n {showEmail && (\n <div className=\"dc-c-emailupdates\">\n <div className=\"ds-l-container ds-u-padding-y--5\">\n <div className=\"ds-l-row ds-u-align-items--center\">\n <div className=\"ds-l-md-col--8\">\n <h2 className=\"ds-text-heading--lg\">{emailTitle}</h2>\n <p className=\"ds-u-padding-bottom--2\">{emailBody}</p>\n </div>\n <div className=\"ds-l-md-col--4 ds-u-padding-left--7\">\n <Button onDark variation=\"solid\" href={emailLink}>\n {emailButton}\n </Button>\n </div>\n </div>\n </div>\n </div>\n )}\n <div className=\"dc-c-footer--middle-container\">\n <div className=\"ds-l-container\">\n <div className=\"ds-l-row\">\n <div className=\"dc-c-footer__resources ds-l-md-col--7 ds-l-sm-col--12 ds-u-padding-top--7 ds-u-padding-bottom--3\">\n <div className=\"ds-u-display--flex ds-u-display--flex ds-u-sm-flex-direction--row ds-u-flex-direction--column\">\n <div className=\"ds-u-margin-right--6 ds-u-margin-bottom--3 ds-u-sm-margin-bottom--0\">\n <h2 className=\"ds-text-heading--sm dc-footer--heading ds-u-margin-bottom--2\">\n Open data tools\n </h2>\n <ul className=\"ds-u-font-size--sm\">\n {footerOpenDataToolLinks.map((link) => (\n <li className=\"ds-u-margin-bottom--1\" key={link.id}>\n <NavLink link={link} className=\"dc-menu-item\" />\n </li>\n ))}\n </ul>\n </div>\n <div>\n <h2 className=\"ds-text-heading--sm dc-footer--heading ds-u-margin-bottom--2\">\n Additional resources\n </h2>\n <ul className=\"ds-u-font-size--sm\">\n {footerAdditionalResourcesLinks\n .filter((link) => {\n const noOnClick = Object.keys(link).findIndex((l) => l === 'onClick');\n if (noOnClick === -1 || (link.onClick && link.dataTag)) {\n return link;\n }\n })\n .map((link) => {\n if (link.onClick && link.dataTag) {\n return (\n <li className=\"ds-u-margin-bottom--1\" key={link.id}>\n <a\n href={link.url}\n {...{\n ['data-' + link.dataTag.name]: link.dataTag.value,\n }}\n onClick={link.onClick}\n >\n {link.label}\n </a>\n </li>\n );\n }\n return (\n <li className=\"ds-u-margin-bottom--1\" key={link.id}>\n <NavLink link={link} className=\"dc-menu-item\" />\n </li>\n );\n })}\n </ul>\n </div>\n </div>\n </div>\n <div className=\"dc-c-footer__cms-information ds-l-md-col--5 ds-l-sm-col--12 ds-u-lg-padding-left--7 ds-u-padding-y--7\">\n <div className=\"ds-u-font-size--sm\">\n <div>\n <a\n href=\"https://www.hhs.gov/\"\n target=\"_blank\"\n title=\"U.S. Department of Health & Human Services\"\n >\n <img className=\"dc-c-footer__logo\" src={hhsLogo} alt=\"HHS Logo\" />\n <span className=\"ds-u-visibility--screen-reader\">opens in new window</span>\n </a>\n <a\n className=\"ds-u-margin-left--4\"\n target=\"_blank\"\n href=\"https://www.cms.gov/\"\n title=\"CMS.gov Centers for Medicare & Medicaid Services\"\n >\n <img className=\"dc-c-footer__logo\" src={cmsLogo} alt=\"CMS Logo\" />\n <span className=\"ds-u-visibility--screen-reader\">opens in new window</span>\n </a>\n </div>\n {trademarkContent}\n {socialMediaLinks && (\n <ul className=\"ds-u-display--flex ds-u-flex-direction--row\">\n {socialMediaLinks.facebook && socialMediaLinks.facebook.url && (\n <li className=\"ds-u-margin-right--1\">\n <a href={socialMediaLinks.facebook.url}>\n <span className=\"dc-c-footer--svg-icon\">\n <svg\n className=\"svg-inline--fa fa-circle fa-w-16\"\n aria-hidden=\"true\"\n focusable=\"false\"\n data-prefix=\"fas\"\n data-icon=\"circle\"\n role=\"presentation\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 512 512\"\n data-fa-i2svg=\"\"\n >\n <path d=\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\"></path>\n </svg>\n <svg\n title=\"Facebook Icon\"\n className=\"svg-inline--fa fa-facebook-f fa-w-10 fa-inverse\"\n data-fa-transform=\"shrink-3.5\"\n aria-labelledby=\"svg-inline--fa-title-iRCARP7h6Kp3\"\n data-prefix=\"fab\"\n data-icon=\"facebook-f\"\n role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 320 512\"\n data-fa-i2svg=\"\"\n >\n <title id=\"svg-inline--fa-title-iRCARP7h6Kp3\">\n {socialMediaLinks.facebook.title\n ? socialMediaLinks.facebook.title\n : 'CMS Facebook'}\n </title>\n <g transform=\"translate(160 256)\">\n <g transform=\"translate(0, 0) scale(0.78125, 0.78125) rotate(0 0 0)\">\n <path\n d=\"M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z\"\n transform=\"translate(-160 -256)\"\n ></path>\n </g>\n </g>\n </svg>\n </span>\n </a>\n </li>\n )}\n {socialMediaLinks.twitter && socialMediaLinks.twitter.url && (\n <li className=\"ds-u-margin-right--1\">\n <a href={socialMediaLinks.twitter.url}>\n <span className=\"dc-c-footer--svg-icon\">\n <svg\n className=\"svg-inline--fa fa-circle fa-w-16\"\n aria-hidden=\"true\"\n focusable=\"false\"\n data-prefix=\"fas\"\n data-icon=\"circle\"\n role=\"presentation\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 512 512\"\n data-fa-i2svg=\"\"\n >\n <path d=\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\"></path>\n </svg>\n <svg\n title=\"Twitter Icon\"\n className=\"svg-inline--fa fa-twitter fa-w-16 fa-inverse\"\n data-fa-transform=\"shrink-3.5\"\n aria-labelledby=\"svg-inline--fa-title-4z03ITiPPTVF\"\n data-prefix=\"fab\"\n data-icon=\"twitter\"\n role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 512 512\"\n data-fa-i2svg=\"\"\n >\n <title id=\"svg-inline--fa-title-4z03ITiPPTVF\">\n {socialMediaLinks.twitter.title\n ? socialMediaLinks.twitter.title\n : 'CMS Twitter'}\n </title>\n <g transform=\"translate(256 256)\">\n <g transform=\"translate(0, 0) scale(0.78125, 0.78125) rotate(0 0 0)\">\n <path\n d=\"M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z\"\n transform=\"translate(-256 -256)\"\n ></path>\n </g>\n </g>\n </svg>\n </span>\n </a>\n </li>\n )}\n {socialMediaLinks.linkedin && socialMediaLinks.linkedin.url && (\n <li className=\"ds-u-margin-right--1\">\n <a href={socialMediaLinks.linkedin.url}>\n <span className=\"dc-c-footer--svg-icon\">\n <svg\n className=\"svg-inline--fa fa-circle fa-w-16\"\n aria-hidden=\"true\"\n focusable=\"false\"\n data-prefix=\"fas\"\n data-icon=\"circle\"\n role=\"presentation\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 512 512\"\n data-fa-i2svg=\"\"\n >\n <path d=\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\"></path>\n </svg>\n <svg\n title=\"LinkedIn Icon\"\n className=\"svg-inline--fa fa-linkedin-in fa-w-14 fa-inverse\"\n data-fa-transform=\"shrink-3.5\"\n aria-labelledby=\"svg-inline--fa-title-Nm2qsuSKvuRZ\"\n data-prefix=\"fab\"\n data-icon=\"linkedin-in\"\n role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 448 512\"\n data-fa-i2svg=\"\"\n >\n <title id=\"svg-inline--fa-title-Nm2qsuSKvuRZ\">\n {socialMediaLinks.linkedin.title\n ? socialMediaLinks.linkedin.title\n : 'CMS LinkedIn'}\n </title>\n <g transform=\"translate(224 256)\">\n <g transform=\"translate(0, 0) scale(0.78125, 0.78125) rotate(0 0 0)\">\n <path\n d=\"M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z\"\n transform=\"translate(-224 -256)\"\n ></path>\n </g>\n </g>\n </svg>\n </span>\n </a>\n </li>\n )}\n {socialMediaLinks.youtube && socialMediaLinks.youtube.url && (\n <li>\n <a href={socialMediaLinks.youtube.url}>\n <span className=\"dc-c-footer--svg-icon\">\n <svg\n className=\"svg-inline--fa fa-circle fa-w-16\"\n aria-hidden=\"true\"\n focusable=\"false\"\n data-prefix=\"fas\"\n data-icon=\"circle\"\n role=\"presentation\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 512 512\"\n data-fa-i2svg=\"\"\n >\n <path d=\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\"></path>\n </svg>\n <svg\n title=\"youTube Icon\"\n className=\"svg-inline--fa fa-youtube fa-w-18 fa-inverse\"\n data-fa-transform=\"shrink-3.5\"\n aria-labelledby=\"svg-inline--fa-title-youtube\"\n data-prefix=\"fab\"\n data-icon=\"youtube\"\n role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 576 512\"\n data-fa-i2svg=\"\"\n >\n <title id=\"svg-inline--fa-title-youtube\">\n {socialMediaLinks.youtube.title\n ? socialMediaLinks.youtube.title\n : 'CMS youtube'}\n </title>\n <path\n fill=\"currentColor\"\n d=\"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z\"\n ></path>\n </svg>\n </span>\n </a>\n </li>\n )}\n </ul>\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n <div className=\"dc-c-footer__utility ds-l-container ds-u-padding-y--2 ds-u-font-size--sm\">\n <div className=\"ds-l-row\">\n <div className=\"ds-l-col--12 ds-u-padding-y--3\">\n <ul className=\"ds-u-padding--0 ds-u-display--flex ds-u-lg-flex-direction--row ds-u-flex-direction--column\">\n {footerUtilityLinks.map((link) => (\n <li key={link.id}>\n <a href={link.url} className=\"ds-u-margin-right--2\">\n {link.label}\n {link?.target === '_blank' && (\n <ExternalLinkIcon className=\"ds-u-margin-left--05 ds-c-external-link-icon\" />\n )}\n </a>\n </li>\n ))}\n </ul>\n </div>\n </div>\n </div>\n </footer>\n );\n};\n\nFooter.propTypes = {\n showEmail: PropTypes.bool,\n emailTitle: PropTypes.string,\n emailBody: PropTypes.string,\n emailLink: PropTypes.string,\n emailButton: PropTypes.string,\n links: PropTypes.shape({\n footerOpenDataToolLinks: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n label: PropTypes.string,\n url: PropTypes.string,\n target: PropTypes.string,\n })\n ),\n footerAdditionalResourcesLinks: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n label: PropTypes.string,\n url: PropTypes.string,\n target: PropTypes.string,\n })\n ),\n footerUtilityLinks: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n label: PropTypes.string,\n url: PropTypes.string,\n target: PropTypes.string,\n })\n ),\n }).isRequired,\n socialMediaLinks: PropTypes.shape({\n facebook: PropTypes.shape({\n title: PropTypes.string,\n url: PropTypes.string,\n }),\n twitter: PropTypes.shape({\n title: PropTypes.string,\n url: PropTypes.string,\n }),\n linkedin: PropTypes.shape({\n title: PropTypes.string,\n url: PropTypes.string,\n }),\n }),\n hhsLogo: PropTypes.string.isRequired,\n cmsLogo: PropTypes.string.isRequired,\n};\n\nexport default Footer;\n","import React, { MouseEventHandler } from 'react';\nimport { NavLink as RRDNavLink } from 'react-router-dom';\nimport { ExternalLinkIcon } from '@cmsgov/design-system';\nimport './NavLink.scss';\n\ntype NavLinkPropTypes = {\n link: {\n label: string,\n url: string,\n target?: '_blank' | null\n },\n className: string | null,\n wrapLabel: boolean,\n clickHandler?: null | Function\n}\n\nconst NavLink = ({ link, className = null, wrapLabel = false, clickHandler } : NavLinkPropTypes) => {\n const innerHtml = wrapLabel ? <span>{link.label}</span> : link.label;\n\n return (\n <RRDNavLink\n className={({ isActive }) => (isActive ? `dc-c-active-link ${className}` : `${className}`)}\n to={link.url}\n onClick={clickHandler ? clickHandler as MouseEventHandler : undefined}\n >\n {innerHtml}\n {link?.target === '_blank' &&\n <ExternalLinkIcon className='ds-u-margin-left--05 ds-c-external-link-icon' />\n }\n </RRDNavLink>\n );\n // }\n};\n\nexport default NavLink;\n","import React, { PropsWithChildren } from 'react';\nimport { Alert } from '@cmsgov/design-system';\nimport DocumentationTable from './DocumentationTable.jsx';\nimport { documentation } from './documentationData.js';\n\ntype DocumentationType = {\n id: string,\n application: string,\n notes: string,\n link: string,\n linkText: string,\n screenReaderOnlyText: string\n};\n\ntype SpecsAndLimitsProps = {\n documentationList: Array<DocumentationType>\n}\n\nconst SpecsAndLimits = (props: PropsWithChildren<SpecsAndLimitsProps>) => {\n const {\n documentationList = documentation,\n children\n } = props;\n \n const defaultContent = (\n <p>\n Some datasets are extremely large and may be difficult to download and/or cause\n computer performance issues. The Centers for Medicare and Medicaid Services (CMS)\n recommends using WinZip, WinRAR, or 7-Zip for file decompression.\n </p>\n );\n\n return (\n <section className=\"ds-u-padding-top--3 ds-l-container\">\n <div className=\"ds-l-md-col--12\">\n <h1 className=\"ds-text-heading--5xl ds-u-margin-bottom--4\">Software Specs and Limits</h1>\n <div className=\"dc-page-content about ds-u-measure--wide ds-u-margin-top--6\">\n { children ? children : defaultContent }\n <p>This documentation will assist users in importing the data.</p>\n <Alert heading=\"Notice\" className={'ds-u-margin-top--6'}>\n <p className=\"ds-c-alert__text\">\n Be aware of the file size and row limitations of the software you are attempting to\n import the files into. For information on limitations, look at the software's\n official documentation.\n </p>\n </Alert>\n </div>\n <section className={'ds-u-margin-top--4 ds-l-row'}>\n <div className={'ds-l-col--12'}>\n <h2 className=\"ds-text-heading--2xl ds-text-heading--2xl\">Documentation by Application</h2>\n <div className={'ds-u-margin-top--4'}>\n <DocumentationTable data={documentationList} />\n </div>\n </div>\n </section>\n </div>\n </section>\n)};\n\nexport default SpecsAndLimits;\n","import React from 'react';\nimport { Table, TableHead, TableBody, TableRow, TableCell } from '@cmsgov/design-system';\n\nconst DocumentationTable = (props) => {\n const { data } = props;\n return (\n <>\n <Table stackable className={'ds-c-table'}>\n <TableHead>\n <TableRow>\n <TableCell key={'Application'} id={'application'} headers={'Application'}>\n Application\n </TableCell>\n <TableCell key={'Notes'} id={'notes'} headers={'Notes'}>\n Notes\n </TableCell>\n <TableCell key={'Links'} id={'links'} headers={'Links'}>\n Links\n </TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {data.map((d) => (\n <TableRow key={`${d.id}-row`}>\n <TableCell key={d.id} id={d.id} stackedTitle=\"Application\" headers={'Application'}>\n {d.application}\n </TableCell>\n <TableCell key={`${d.id}-notes`} id={d.id} stackedTitle=\"Notes\" headers={'Notes'}>\n {d.notes}\n </TableCell>\n <TableCell key={`${d.id}-link`} id={d.id} stackedTitle=\"Links\" headers={'Links'}>\n <a className=\"dkan-newtab\" href={d.link}>\n {d.linkText}\n <span className=\"ds-u-visibility--screen-reader\"> {d.screenReaderOnlyText}</span>\n </a>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </>\n );\n};\n\nexport default DocumentationTable;\n","export const documentation = [\n {\n id: 'excel',\n application: 'Microsoft Excel',\n notes: 'Official size limitations for Microsoft Excel',\n link: 'https://support.microsoft.com/en-us/office/excel-specifications-and-limits-1672b34d-7043-467e-8e27-269d656771c3?redirectSourcePath=%252fen-us%252farticle%252fExcel-specifications-and-limits-ca36e2dc-1f09-4620-b726-67c00b05040f',\n linkText: 'Excel Specifications and Limits',\n screenReaderOnlyText:'on microsoft.com',\n },\n {\n id: 'access',\n application: 'Microsoft Access',\n notes: 'Official size limitations for Microsoft Access',\n link: 'https://support.microsoft.com/en-us/office/access-specifications-0cf3c66f-9cf2-4e32-9568-98c1025bb47c?ui=en-us&rs=en-us&ad=us',\n linkText: 'Access 2016 Specifications',\n screenReaderOnlyText:'on microsoft.com',\n },\n {\n id: 'oracle-sql-developer',\n application: 'Oracle SQL Developer',\n notes: 'Oracle SQL Developer tool',\n link: 'https://www.oracle.com/database/sqldeveloper/',\n linkText: 'Oracle SQL Developer Overview',\n screenReaderOnlyText:'on oracle.com',\n },\n {\n id: 'oracle-database',\n application: 'Oracle Database',\n notes: 'Oracle Database official size limitations',\n link: 'https://docs.oracle.com/cd/B28359_01/server.111/b28320/limits002.htm#i287915',\n linkText: 'Oracle Physical Database Limits',\n screenReaderOnlyText:'on oracle.com',\n },\n {\n id: 'oracle-sql-client-tools',\n application: 'Oracle SQL Client Tools',\n notes: 'Oracle SQL Client Tools',\n link: 'https://www.oracle.com/database/technologies/oracle-database-software-downloads.html',\n linkText: 'Oracle SQL Client',\n screenReaderOnlyText:'on oracle.com',\n },\n];\n","import { useEffect } from 'react';\nimport DataTableContext from '../Dataset/DataTableContext';\nimport DataTableStateWrapper from '../../components/DatasetTableTab/DataTableStateWrapper';\nimport qs from 'qs';\nimport '../Dataset/dataset.scss';\nimport useMetastoreDataset from '../../services/useMetastoreDataset';\nimport useDatastore from '../../services/useDatastore';\nimport { getFormatType } from '../../utilities/format';\nimport { ColumnType, DistributionType, ResourceType } from '../../types/dataset';\n\nexport default function StoredQueryPage({\n id,\n rootUrl,\n customColumns,\n query,\n distributionIndex = 0,\n defaultPageSize = 25,\n disableTableControls = false,\n}: {\n id: string;\n rootUrl: string;\n customColumns?: Array<ColumnType>;\n query?: string;\n distributionIndex?: number;\n defaultPageSize?: number;\n disableTableControls?: boolean;\n}) {\n // TODO parse from stored filter\n const options = {\n conditions: query\n ? JSON.parse(query).map(\n ({ column, operator, ...rest }: { column: string; operator: string }) => ({\n property: column,\n operator:\n operator === 'is'\n ? '='\n : operator === 'is not'\n ? '<>'\n : operator === 'or'\n ? 'in'\n : operator,\n ...rest,\n })\n )\n : [],\n };\n\n const { dataset, isPending } = useMetastoreDataset(id, rootUrl);\n\n let distribution = {} as DistributionType;\n let distributions = dataset.distribution ? dataset.distribution : [];\n if (distributions.length) {\n distribution = distributions[distributionIndex];\n }\n\n const resource = useDatastore('', rootUrl, {\n ...options,\n limit: defaultPageSize,\n }) as ResourceType;\n\n useEffect(() => {\n const localFileFormat = getFormatType(distribution);\n if (localFileFormat === 'csv') {\n resource.setResource(distribution.identifier);\n }\n }, [distribution]);\n\n return (\n <DataTableContext.Provider\n value={{\n id: id,\n resource: resource,\n distribution: distribution,\n rootUrl: rootUrl,\n customColumns: customColumns,\n datasetTableControls: !disableTableControls,\n }}\n >\n <DataTableStateWrapper\n showCopyLinkButton={false}\n showDownloadFilteredDataButton={false}\n showDownloadFullDataButton={false}\n showStoredQueryDownloadButton={true}\n />\n </DataTableContext.Provider>\n );\n}\n","import React, { useState, useEffect } from 'react';\nimport useMetastoreDataset from '../../services/useMetastoreDataset';\nimport PageNotFound from '../PageNotFound';\nimport FilteredResourceBody from './FilteredResourceBody';\nimport withQueryProvider from '../../utilities/QueryProvider/QueryProvider';\nimport \"./filtered-resource.scss\";\n\nconst FilteredResource = ({\n id,\n dist_id,\n location,\n apiDocPage,\n customColumns,\n setDatasetTitle,\n columnSettings,\n columnWidths,\n customTitle,\n customDescription,\n rootUrl,\n updateAriaLive\n}) => {\n const [ready, setReady] = useState(false);\n const [error, setError] = useState(false);\n const { dataset } = useMetastoreDataset(id, rootUrl);\n const distIndex = dist_id === 'data' ? 0 : dist_id;\n useEffect(() => {\n if (dataset.error) {\n setError(true);\n }\n if (dataset.distribution && dataset.distribution.length) {\n setReady(true);\n if (setDatasetTitle) {\n setDatasetTitle(dataset.title);\n }\n if (!dataset.distribution[distIndex]) {\n setError(true);\n }\n }\n }, [dataset.distribution, dataset.error, distIndex]);\n const notFoundContent = (\n <div className=\"ds-u-padding-top--3\">\n <h1 className=\"ds-text-heading--4xl\">Error: Dataset not found</h1>\n <p>\n We're sorry, but there is no dataset ID that matches your entry. You may have been directed\n here because:\n </p>\n <ol>\n <li>The address you typed contains a typo;</li>\n <li>The requested dataset no longer exists.</li>\n </ol>\n <p>\n <span className=\"ds-u-font-weight--bold\">Note:</span> If you were using a bookmark, please\n reset it once you find the correct dataset.\n </p>\n </div>\n );\n\n return (\n <>\n {error ? (\n <PageNotFound content={notFoundContent} />\n ) : (\n <>\n {ready && (\n <FilteredResourceBody\n id={id}\n dataset={dataset}\n distIndex={distIndex}\n location={location}\n apiDocPage={apiDocPage}\n \n customColumns={customColumns ? customColumns : []}\n columnSettings={columnSettings}\n columnWidths={columnWidths}\n customTitle={customTitle}\n customDescription={customDescription}\n rootUrl={rootUrl}\n updateAriaLive={updateAriaLive}\n />\n )}\n </>\n )}\n </>\n );\n};\n\nexport default withQueryProvider(FilteredResource);\n","import React, { useContext, useEffect, useRef } from 'react';\nimport qs from 'qs';\nimport { Link } from 'react-router-dom';\nimport SwaggerUI from 'swagger-ui-react';\nimport useDatastore from '../../services/useDatastore';\nimport {Spinner } from '@cmsgov/design-system';\nimport ResourceHeader from '../../components/ResourceHeader';\nimport ResourcePreview from '../../components/ResourcePreview';\nimport ResourceFooter from '../../components/ResourceFooter';\nimport { buildCustomColHeaders } from './functions';\nimport QueryBuilder from './QueryBuilder';\nimport TransformedDate from '../../components/TransformedDate';\nimport DatasetDescription from '../../components/DatasetDescription';\nimport 'swagger-ui-react/swagger-ui.css';\nimport DataTableContext from '../Dataset/DataTableContext';\nimport { acaToParams } from '../../utilities/aca';\nimport { ACAContext } from '../../utilities/ACAContext';\n\nconst FilteredResourceBody = ({\n id,\n dataset,\n distIndex,\n location,\n customColumns,\n columnSettings,\n columnWidths,\n customTitle,\n customDescription,\n rootUrl,\n updateAriaLive\n}) => {\n const [tablePadding, setTablePadding] = React.useState('ds-u-padding-y--1');\n let apiDocs = useRef();\n let distribution = {};\n let distribution_array = dataset.distribution ? dataset.distribution : [];\n if (distribution_array.length) {\n distribution = distribution_array.find(\n (dist) => dist.identifier === distribution_array[distIndex].identifier\n );\n }\n const options = location.search\n ? { ...qs.parse(location.search, { ignoreQueryPrefix: true }) }\n : { conditions: [] };\n const resource = useDatastore(\n '',\n rootUrl,\n {\n ...options,\n limit: 25,\n },\n {\n datasetID: id\n }\n );\n\n useEffect(() => {\n if (distribution.identifier) {\n resource.setResource(distribution.identifier);\n }\n }, [distribution]);\n const downloadUrl = `${\n rootUrl\n }/datastore/query/${id}/${distIndex}/download?${qs.stringify(\n { conditions: resource.conditions },\n { encode: true }\n )}&format=csv`;\n const pageTitle =\n distribution.data.title && distribution.data.title.toLowerCase() !== 'csv'\n ? distribution.data.title\n : dataset.title;\n\n const {ACA} = useContext(ACAContext);\n\n return (\n <section className=\"ds-l-container ds-u-padding-bottom--3 ds-u-margin-bottom--2\">\n <div className=\"ds-l-row\">\n {Object.keys(distribution).length && (\n <>\n <div className={'ds-l-md-col--9'}>\n <Link to={`/dataset/${id}`} className=\"ds-u-padding-y--4 ds-u-display--block\">\n Back to {dataset.title}\n </Link>\n </div>\n <div className={'ds-l-md-col--9'}>\n <h1 className=\"ds-text-heading--3xl\">{customTitle ? customTitle : pageTitle}</h1>\n </div>\n <div className={'ds-l-md-col--12 ds-u-margin-y--1 ds-u-text-align--right'}>\n <p className=\"ds-u-margin--0\">Updated <TransformedDate date={dataset.modified} /></p>\n </div>\n <div className={'ds-l-md-col--9'}>\n <DatasetDescription\n distribution={distribution}\n dataset={dataset}\n resource={resource}\n customDescription={customDescription}\n updateAriaLive={updateAriaLive}\n />\n </div>\n <div className={'ds-l-md-col--12'}>\n {Object.keys(resource).length && resource.columns && Object.keys(resource.schema).length ? (\n <QueryBuilder\n resource={resource}\n id={distribution.identifier}\n customColumns={customColumns}\n setOffset={resource.setOffset}\n />\n ) : ''}\n </div>\n {Object.keys(resource).length && resource.columns && Object.keys(resource.schema).length ? (\n <DataTableContext.Provider value={{\n id: id,\n resource: resource,\n distribution: distribution,\n rootUrl: rootUrl,\n customColumns: buildCustomColHeaders(\n customColumns,\n resource.columns,\n resource.schema[distribution_array[distIndex].identifier]\n ),\n }}>\n <div className={'ds-l-md-col--12'}>\n <ResourceHeader\n includeDensity={true}\n setTablePadding={setTablePadding}\n resource={resource}\n downloadUrl={downloadUrl}\n tablePadding={tablePadding}\n includeDownload\n />\n <ResourcePreview\n id={distribution.identifier}\n tablePadding={tablePadding}\n columnSettings={columnSettings}\n columnWidths={columnWidths}\n />\n <ResourceFooter resource={resource} />\n </div>\n </DataTableContext.Provider>\n ) : (\n <div className={'ds-l-md-col--12'}>\n <Spinner role=\"status\" aria-valuetext=\"Resource loading\" />\n </div>\n )}\n {dataset.identifier && (\n <div className={'ds-l-md-col--12'} ref={apiDocs}>\n <h2 className=\"ds-text-heading--2xl ds-u-margin-y--2\">Try the API</h2>\n <SwaggerUI\n url={`${rootUrl}/metastore/schemas/dataset/items/${\n dataset.identifier\n }/docs?${qs.stringify(acaToParams({}, ACA))}`}\n docExpansion={'list'}\n defaultModelsExpandDepth={-1}\n />\n </div>\n )}\n </>\n )}\n </div>\n </section>\n );\n};\n\nexport default FilteredResourceBody;\n","import React, { useState } from 'react';\nimport qs from 'qs';\nimport { AccordionItem, Button } from '@cmsgov/design-system';\nimport QueryRow from './QueryRow';\nimport QueryTitle from './QueryTitle';\nimport { buildOperatorOptions } from './functions';\nimport \"./query-builder.scss\";\n\nfunction updateQueryForDatastore(condition) {\n let cond = condition;\n delete cond.key;\n if (cond.operator === '=' || cond.operator === '<>') {\n if (Array.isArray(cond.value)) {\n cond.value = cond.value.join();\n }\n cond.value = cond.value.replace(/(^\\%+|\\%+$)/gm, '');\n }\n if (cond.operator.toLowerCase() === 'like') {\n if (Array.isArray(cond.value)) {\n cond.value = cond.value.join();\n }\n const cleanedValue = cond.value.replace(/(^\\%+|\\%+$)/gm, '');\n cond.value = `%${cleanedValue}%`;\n }\n if (cond.operator.toLowerCase() === 'in') {\n if (!Array.isArray(cond.value)) {\n cond.value = cond.value.split(',');\n }\n }\n if (Array.isArray(cond.value)) {\n cond.value = cond.value.map((v) => v.trim().replace(/(^\\%+|\\%+$)/gm, ''));\n }\n return cond;\n}\n\nconst QueryBuilder = ({ resource, id, customColumns, setOffset }) => {\n const { conditions, schema, setConditions } = resource;\n const fields = Object.keys(schema[id].fields);\n\n const [queryConditions, setQueryConditions] = useState([]);\n const [titleConditions, setTitleConditions] = useState([]); // Add use effect to load conditions on first load if needed\n const [conditionsChanged, setConditionsChanged] = useState(false);\n\n const addCondition = (condition) => {\n if (Array.isArray(condition)) {\n const keyedConditions = condition.map((oc) => ({\n ...oc,\n key: Date.now() + oc.value + oc.property,\n }));\n setQueryConditions(keyedConditions);\n } else {\n setQueryConditions([\n ...queryConditions,\n {\n property: fields[0],\n value: '',\n operator: buildOperatorOptions(schema[id].fields[fields[0]].mysql_type)[0].value,\n key: Date.now(),\n },\n ]);\n }\n };\n\n React.useEffect(() => {\n addCondition(conditions);\n setTitleConditions(conditions);\n }, []);\n\n const propertyOptions = fields.map((f) => {\n if (schema[id].fields[f].description) {\n return { label: schema[id].fields[f].description, value: f };\n }\n return { label: f, value: f };\n });\n\n const submitConditions = (e) => {\n e.preventDefault();\n const submitConditions = queryConditions\n .filter((oc) => {\n if (oc.property) {\n return oc;\n }\n return false;\n })\n .map((oc) => {\n let cond = Object.assign({}, oc);\n return updateQueryForDatastore(cond);\n });\n setConditions(submitConditions);\n setTitleConditions(queryConditions.map((oc) => Object.assign({}, oc)));\n setConditionsChanged(false);\n setOffset(0);\n\n const url = new URL(window.location);\n const urlString = qs.stringify(\n { conditions: submitConditions },\n { encodeValuesOnly: true, addQueryPrefix: true }\n );\n window.history.pushState({}, '', `${url.origin}${url.pathname}${urlString}`);\n };\n\n const updateCondition = (index, key, value) => {\n let newConditions = [...queryConditions];\n newConditions[index][key] = value;\n setQueryConditions(newConditions);\n setConditionsChanged(true);\n };\n\n const removeCondition = (index) => {\n let newConditions = queryConditions.map((oc) => Object.assign({}, oc));\n newConditions.splice(index, 1);\n setQueryConditions(newConditions);\n setConditionsChanged(true);\n };\n\n return (\n <div className=\"dc-query-builder ds-u-margin-bottom--3\">\n <div className=\"ds-c-accordion ds-c-accordion--bordered\">\n <AccordionItem\n heading={\n <QueryTitle\n schema={schema[id]}\n conditions={titleConditions}\n customColumns={customColumns}\n />\n }\n defaultOpen={false}\n >\n <form onSubmit={(e) => submitConditions(e)}>\n <div>\n {queryConditions.map((qf, index) => (\n <QueryRow\n key={qf.key}\n id={id}\n schema={schema}\n condition={qf}\n index={index}\n propertyOptions={propertyOptions}\n update={updateCondition}\n remove={removeCondition}\n />\n ))}\n </div>\n\n <div className=\"dc-query-bulder--form-buttons ds-u-padding-y--2\">\n <Button variation=\"transparent\" onClick={() => addCondition(null)}>\n + Add filter\n </Button>\n <Button disabled={!conditionsChanged} className=\"ds-u-float--right\" type=\"submit\">\n Apply filters\n </Button>\n </div>\n </form>\n </AccordionItem>\n </div>\n </div>\n );\n};\n\nexport default QueryBuilder;\n","import React, { useState, useEffect } from 'react';\nimport DatePicker from 'react-datepicker';\nimport { useMediaQuery } from 'react-responsive';\nimport { Button, Dropdown, TextField } from '@cmsgov/design-system';\nimport { buildOperatorOptions, convertUTCToLocalDate, cleanText } from './functions';\nimport 'react-datepicker/dist/react-datepicker.css';\n\nfunction getStartDate(condition, schema, id) {\n if (schema[id].fields[condition.property].mysql_type === 'date') {\n const newDate = new Date(condition.value);\n if (newDate instanceof Date && !isNaN(newDate)) {\n return newDate;\n }\n }\n return new Date();\n}\n\nconst QueryRow = ({ id, condition, index, update, remove, propertyOptions, schema }) => {\n const sm = useMediaQuery({ minWidth: 0, maxWidth: 544 });\n const [operator, setOperator] = useState(condition.operator);\n const [property, setProperty] = useState(condition.property);\n const [value, setValue] = useState(condition.value);\n const [startDate, setStartDate] = React.useState(getStartDate(condition, schema, id));\n useEffect(() => {\n if (property !== condition.property) {\n if (property) {\n update(index, 'property', property);\n } else {\n update(index, 'property', '');\n }\n if (schema[id].fields[condition.property].mysql_type === 'date') {\n if(!value) {\n setValue(startDate.toJSON().slice(0, 10));\n }\n }\n }\n }, [property, value, startDate, schema, id, condition]);\n\n useEffect(() => {\n if (operator !== condition.operator) {\n if (operator) {\n update(index, 'operator', operator);\n } else {\n update(index, 'operator', '');\n }\n }\n }, [operator]);\n\n useEffect(() => {\n if (value !== condition.value) {\n if (value) {\n update(index, 'value', value);\n } else {\n update(index, 'value', '');\n }\n }\n }, [value]);\n\n return (\n <fieldset className=\"ds-u-display--flex ds-u-flex-wrap--wrap ds-u-justify-content--between ds-u-md-justify-content--end ds-u-align-items--center\">\n <Dropdown\n options={propertyOptions}\n value={property}\n label=\"Property\"\n name={`${condition.key}_property`}\n onChange={(e) => setProperty(e.target.value)}\n className={\"ds-l-md-col--5 ds-l-lg-col--4 ds-l-sm-col--8 ds-l-col--12 ds-u-padding--0 ds-u-md-padding-right--2 ds-u-margin-bottom--0 ds-u-md-margin-bottom--2\"}\n />\n <Dropdown\n options={buildOperatorOptions(schema[id].fields[property].mysql_type)}\n value={operator}\n label=\"Operator\"\n name={`${condition.key}_operator`}\n onChange={(e) => setOperator(e.target.value)}\n className={\"ds-l-sm-col--3 ds-l-md-col--2 ds-l-col--12 ds-u-padding--0 ds-u-md-padding-right--2 ds-u-margin-bottom--0 ds-u-md-margin-bottom--2\"}\n />\n {schema[id].fields[property].mysql_type === 'date' ? (\n <div className=\"ds-l-md-col--5 ds-l-lg-col--4 ds-l-sm-col--8 ds-l-col--12 ds-u-padding--0 ds-u-sm-padding-right--2 ds-u-md-padding-right--0 ds-u-lg-padding-right--2 ds-u-margin-bottom--2\">\n <label\n className=\"ds-c-label\"\n htmlFor={`${condition.key}_date_value`}\n id={`${condition.key}_date_value-label`}\n >\n <span>Value</span>\n </label>\n <DatePicker\n name={`${condition.key}_date_value`}\n selected={convertUTCToLocalDate(startDate)}\n onChange={(date) => {\n setStartDate(date);\n setValue(date.toJSON().slice(0, 10));\n }}\n showMonthDropdown\n showYearDropdown\n dropdownMode=\"select\"\n className={\"ds-c-field\"}\n withPortal\n // popperPlacement=\"top-end\"\n // popperModifiers={[\n // {\n // name: 'preventOverflow',\n // options: {\n // rootBoundary: 'viewport',\n // // tether: true,\n // altAxis: true,\n // },\n // },\n // ]}\n />\n </div>\n ) : (\n <TextField\n label=\"Value\"\n name={`${condition.key}_value`}\n value={cleanText(value, operator)}\n onChange={(e) => setValue(e.target.value)}\n className={\"ds-l-md-col--5 ds-l-lg-col--4 ds-l-sm-col--8 ds-l-col--12 ds-u-padding--0 ds-u-sm-padding-right--2 ds-u-md-padding-right--0 ds-u-lg-padding-right--2 ds-u-margin-bottom--2\"}\n />\n )}\n\n <Button\n className=\"ds-u-margin-top--2 ds-u-sm-margin-top--4 ds-u-lg-margin-top--4 ds-u-md-margin-top--2 ds-l-col--12 ds-l-md-col--4 ds-l-lg-col--2 ds-l-sm-col--4\"\n aria-label=\"Delete filter\"\n onClick={() => remove(index)}\n >\n Delete filter\n </Button>\n </fieldset>\n );\n};\n\nexport default QueryRow;\n","import React from 'react';\nimport { Badge } from '@cmsgov/design-system';\nimport { operatorMapping, cleanText } from './functions';\n\nconst QueryTitle = ({ conditions, schema, customColumns }) => {\n const { fields } = schema;\n const prependedMessage = <>Data filters: </>\n if (!conditions || !conditions.length) {\n return <p className=\"ds-u-margin-y--0\">{prependedMessage} none</p>;\n }\n\n function formatValue(text, property) {\n if (customColumns && customColumns.length > 0) {\n let newValue = text;\n let customColumn = customColumns.find((c) => c.accessor === property);\n if (customColumn && customColumn.cell) {\n return customColumn.cell({ value: text });\n }\n return text;\n } else {\n return text;\n }\n }\n\n return (\n <span className=\"dc-querybuilder-title\">\n <p className=\"ds-u-margin-y--0\">{prependedMessage}</p>\n {conditions\n .map((c) => {\n const field = fields[c.property];\n const description = field && field.description ? field.description : c.property;\n const operator = operatorMapping.find((op) => op.value === c.operator);\n const cleanedText = cleanText(c.value);\n const formattedText = formatValue(cleanedText, c.property);\n return (\n <span className=\"ds-u-fill--background ds-u-padding--1 ds-u-margin-y--1 ds-u-display--inline-block ds-u-font-weight--semibold\">\n <span className=\"ds-u-font-weight--bold\">{description}</span>{' '}\n <span className=\"ds-u-font-weight--normal\">{operator.label.toUpperCase()}</span>{' '}\n <span className=\"ds-u-color--success\">{formattedText}</span>\n </span>\n );\n })\n .reduce((prev, curr) => [\n prev,\n <Badge className=\"ds-u-margin-x--1\" variation=\"info\">\n AND\n </Badge>,\n curr,\n ])}\n </span>\n );\n};\n\nexport default QueryTitle;\n","export { default } from './useSearchAPI';\n","import { useState, useEffect, useContext } from \"react\";\nimport { fetchDatasets } from \"./helpers\";\nimport { ACAContext } from \"../../utilities/ACAContext\";\n\nconst useSearchAPI = (\n rootUrl,\n initialSearchParams = {},\n) => {\n const {ACA} = useContext(ACAContext);\n \n const defaultSort = \"\";\n const defaultFulltext = \"\";\n const defaultSelectedFacets = {};\n const defaultSortOrder = \"\";\n const defaultPage = 1;\n const defaultPageSize = 10;\n\n const sortOptions = [\"modified\", \"title\"];\n const sortOrderOptions = [\"asc\", \"desc\"];\n const [items, setItems] = useState([]);\n const [facets, setFacets] = useState([]);\n const [loading, setLoading] = useState(false);\n const [totalItems, setTotalItems] = useState(null);\n const [selectedFacets, setSelectedFacets] = useState(\n initialSearchParams.selectedFacets\n ? initialSearchParams.selectedFacets\n : defaultSelectedFacets\n );\n const [fulltext, setFulltext] = useState(\n initialSearchParams.fulltext\n ? initialSearchParams.fulltext\n : defaultFulltext\n );\n const [sort, setSort] = useState(\n initialSearchParams.sort ? initialSearchParams.sort : defaultSort\n );\n const [sortOrder, setSortOrder] = useState(\n initialSearchParams.sortOrder\n ? initialSearchParams.sortOrder\n : defaultSortOrder\n );\n const [page, setPage] = useState(\n initialSearchParams.page ? initialSearchParams.page : defaultPage\n );\n const [pageSize, setPageSize] = useState(\n initialSearchParams.pageSize\n ? initialSearchParams.pageSize\n : defaultPageSize\n );\n\n async function search(ACA) {\n const options = {\n fulltext: fulltext,\n selectedFacets: selectedFacets,\n sort: sort,\n sortOrder: sortOrder,\n page: Number(page),\n pageSize: pageSize,\n };\n const results = await fetchDatasets(rootUrl, options, ACA);\n const itemKeys = Object.keys(results.data.results);\n const itemsArray = itemKeys.map((key) => {\n return results.data.results[key];\n });\n setFacets(results.data.facets);\n setItems(itemsArray);\n setTotalItems(results.data.total);\n setLoading(false);\n }\n\n function resetFilters() {\n setFulltext(defaultFulltext);\n setSelectedFacets(defaultSelectedFacets);\n setPage(defaultPage);\n }\n\n useEffect(() => {\n if (totalItems !== null) {\n setPage(1);\n }\n }, [fulltext, selectedFacets, pageSize]);\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setLoading(true);\n search(ACA);\n }, 1000);\n return () => clearTimeout(timer);\n }, [fulltext, selectedFacets, sort, sortOrder, page, pageSize]);\n\n return {\n fulltext,\n selectedFacets,\n sortOptions,\n sortOrderOptions,\n items,\n facets,\n loading,\n totalItems,\n sort,\n sortOrder,\n page,\n pageSize,\n setPage,\n setPageSize,\n setSort,\n setSortOrder,\n setFulltext,\n resetFilters,\n };\n};\n\nexport default useSearchAPI;\n","import { useEffect, useState } from 'react';\n\nconst useAddLoginLink = (hosts, menuItems, targetKey, loginLinkObj) => {\n const [linksArray, setLinksArray] = useState({ ...menuItems });\n useEffect(() => {\n let localLinks = { ...menuItems };\n if (hosts.findIndex((host) => host === window.location.host) > -1) {\n if (localLinks[targetKey].findIndex((link) => link.id === loginLinkObj.id) === -1) {\n localLinks[targetKey].unshift(loginLinkObj);\n setLinksArray(localLinks);\n }\n }\n }, [linksArray]);\n return linksArray;\n};\n\nexport default useAddLoginLink;\n","import { useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nconst useScrollToTop = () => {\n const { pathname } = useLocation();\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [pathname])\n}\n\nexport default useScrollToTop;\n"],"names":[],"version":3,"file":"main.js.map"}
|