@economic/taco 2.7.3 → 2.7.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -139,14 +139,14 @@ function PrintIFrame({
139
139
  };
140
140
  }, [mountNode, stylesReady]);
141
141
  React__default.useEffect(() => {
142
- var _iframeWindow$parent$, _iframeWindow$parent$2;
143
- if (!iframeWindow || !stylesReady) {
142
+ var _contentRef$closest, _parentElement$innerH;
143
+ if (!contentRef || !iframeWindow || !stylesReady) {
144
144
  return;
145
145
  }
146
+ // get the closest parent/container of the table, and the table itself
147
+ const parentElement = (_contentRef$closest = contentRef === null || contentRef === void 0 ? void 0 : contentRef.closest('[role=dialog], [data-taco=drawer], main')) !== null && _contentRef$closest !== void 0 ? _contentRef$closest : iframeWindow.parent.document.body;
146
148
  const iframeDocument = iframeWindow.document;
147
- // Only the content inside the main element will get printed along with the table.
148
- const parentDocumentContent = ((_iframeWindow$parent$ = iframeWindow.parent.document.querySelector('main')) === null || _iframeWindow$parent$ === void 0 ? void 0 : _iframeWindow$parent$.innerHTML) || ((_iframeWindow$parent$2 = iframeWindow.parent.document.body) === null || _iframeWindow$parent$2 === void 0 ? void 0 : _iframeWindow$parent$2.innerHTML) || '';
149
- iframeDocument.body.innerHTML = parentDocumentContent;
149
+ iframeDocument.body.innerHTML = (_parentElement$innerH = parentElement === null || parentElement === void 0 ? void 0 : parentElement.innerHTML) !== null && _parentElement$innerH !== void 0 ? _parentElement$innerH : '';
150
150
  const tableElement = iframeDocument.querySelector('[role="table"]');
151
151
  const tableColumnFreezingStyles = iframeDocument.querySelector('[data-taco="table3-column-freezing-styles"]');
152
152
  const tableWrapper = iframeDocument.createElement('div');
@@ -1 +1 @@
1
- {"version":3,"file":"PrintIFrame.js","sources":["../../../../../../../../../../src/components/Table3/components/toolbar/PrintButton/PrintIFrame.tsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { Table3 } from '../../../../..';\nimport { Table3Props } from '../../../types';\nimport { useParentStylesheets } from './hooks/useParentStylesheets';\n\nexport type PrintIFrameProps<TType = unknown> = {\n onAfterPrint?: () => void;\n onBeforePrint?: () => void;\n tableProps: Table3Props<TType>;\n};\n\nexport function PrintIFrame<TType = unknown>({ onAfterPrint, onBeforePrint, tableProps }: PrintIFrameProps<TType>) {\n const [contentRef, setContentRef] = React.useState<HTMLIFrameElement | null>(null);\n const [mountNode, setMountNode] = React.useState<HTMLElement | null>(null);\n\n const isFirefoxBrowser = React.useMemo(() => navigator.userAgent.toLowerCase().includes('firefox'), []);\n\n const iframeWindow = contentRef?.contentWindow;\n\n const stylesReady = useParentStylesheets(iframeWindow);\n\n // Calls print method when table has loaded in the iframe.\n React.useEffect(() => {\n let intervalId: NodeJS.Timer;\n let timeoutId: NodeJS.Timer;\n\n // Invoke the print functionality on the window once the table has finished rendering and all print styles are\n // added.\n if (mountNode && stylesReady) {\n intervalId = setInterval(async () => {\n const tableWrapper = mountNode;\n const table = tableWrapper.querySelector('[role=\"table\"]') as HTMLElement;\n const hasTableRendered = !!table;\n\n if (hasTableRendered && intervalId) {\n clearInterval(intervalId);\n\n // Calling the onBeforePrint method here as a fallback because certain browsers, like Safari,\n // do not call the beforeprint event.\n // Bug - Even though onBeforePrint is called before printing, the execution doesn't finish before\n // the print dialog shows up, which results into having a visible loading toast.\n onBeforePrint?.();\n\n // By adding height to the tableWrapper, we make sure the content below absolutely positioned table\n // doesn't hide\n if (isFirefoxBrowser) {\n const tableHeight = `${table.offsetHeight}px`;\n tableWrapper.style.height = tableHeight;\n }\n\n contentRef?.contentWindow?.print();\n\n // Calling the onAfterPrint method here as a fallback to do the cleanup, as certain browsers,\n // like Safari, do not trigger the beforeprint or afterprint events when a confirmation dialog\n // asking if the user wants to print the document, is cancelled.\n\n // Added a setTimeout to prevent calling onAfterPrint immediately after the print function\n // to ensure that the print dialog doesn't close abruptly. Although this behavior is uncommon,\n // there are cases where the print function may not run synchronously, causing onAfterPrint to be\n // invoked right after it.\n timeoutId = setTimeout(() => {\n onAfterPrint?.();\n }, 0);\n }\n }, 1000);\n }\n\n return () => {\n clearInterval(intervalId);\n clearTimeout(timeoutId);\n };\n }, [mountNode, stylesReady]);\n\n React.useEffect(() => {\n if (!iframeWindow || !stylesReady) {\n return;\n }\n\n const iframeDocument = iframeWindow.document;\n // Only the content inside the main element will get printed along with the table.\n const parentDocumentContent =\n iframeWindow.parent.document.querySelector('main')?.innerHTML || iframeWindow.parent.document.body?.innerHTML || '';\n\n iframeDocument.body.innerHTML = parentDocumentContent;\n\n const tableElement = iframeDocument.querySelector('[role=\"table\"]');\n const tableColumnFreezingStyles = iframeDocument.querySelector('[data-taco=\"table3-column-freezing-styles\"]');\n const tableWrapper = iframeDocument.createElement('div');\n\n tableWrapper.setAttribute('data-role', 'table-wrapper');\n // Adding h-fit class makes sure that table is rendered with the whole content.\n tableWrapper.classList.add('h-fit');\n tableWrapper.classList.add('[&>[role=\"table\"]]:!h-fit');\n\n if (isFirefoxBrowser) {\n // Fix for firefox bug which adds page-long whitespace between page's top content and table\n tableWrapper.classList.add('[&>[role=\"table\"]]:!absolute');\n }\n\n // Safari print preview assigns no width to the table when w-screen class is used.\n // By assigning table a big static width and hiding the horizontal scrollbar, the table on chrome\n // and safari will always take full page width.\n tableWrapper.classList.add('w-[10000px]');\n\n if (tableElement) {\n tableElement.parentNode?.insertBefore(tableWrapper, tableElement);\n tableElement.remove();\n } else {\n iframeDocument.body.append(tableWrapper);\n }\n\n // Remove the already existing column freezing styles.\n if (tableColumnFreezingStyles) {\n tableColumnFreezingStyles.remove();\n }\n\n let currentNode = tableWrapper.parentNode as HTMLElement | null;\n\n while (currentNode !== null && currentNode !== iframeDocument.body) {\n // Add the 'h-fit' class to the 'table-wrapper' element's parent chain.\n // This ensures that the table is not cropped and fits within its container.\n currentNode?.classList.add('!h-fit');\n currentNode = currentNode.parentNode as HTMLElement | null;\n }\n\n setMountNode(tableWrapper);\n }, [iframeWindow, stylesReady]);\n\n const printTableProps: Table3Props<TType> = {\n ...tableProps,\n actionsForRow: undefined,\n // Not the best way to remove the active/current row styles, but a temporary solution for now\n defaultCurrentRowIndex: -1,\n defaultSettings: {\n ...tableProps?.defaultSettings,\n rowHeight: 'short',\n },\n enableColumnFreezing: false,\n enableRowHeight: true,\n enableRowSelection: false,\n enableEditing: false,\n enablePrinting: false,\n enableRowDrag: false,\n enableRowDrop: false,\n enableRowSelectionSingle: false,\n preset: undefined,\n // The presence of the onChangeSettings prop ensures that settings won't be stored in local storage.\n onChangeSettings: () => undefined,\n };\n\n // -top-60 -left-60 styles make sure that iframe is added outside of the viewport\n return (\n <iframe\n className=\"fixed -left-60 -top-60 !h-0 !w-0\"\n ref={setContentRef}\n // Temporary fix to support printing in firefox: Find another solution while upgrading React\n src=\"javascript:void(0);\">\n {mountNode && stylesReady ? ReactDOM.createPortal(<Table3 {...printTableProps} />, mountNode) : null}\n </iframe>\n );\n}\n"],"names":["PrintIFrame","onAfterPrint","onBeforePrint","tableProps","contentRef","setContentRef","React","useState","mountNode","setMountNode","isFirefoxBrowser","useMemo","navigator","userAgent","toLowerCase","includes","iframeWindow","contentWindow","stylesReady","useParentStylesheets","useEffect","intervalId","timeoutId","setInterval","tableWrapper","table","querySelector","hasTableRendered","_contentRef$contentWi","clearInterval","tableHeight","offsetHeight","style","height","print","setTimeout","Promise","resolve","e","reject","clearTimeout","iframeDocument","document","parentDocumentContent","_iframeWindow$parent$","parent","innerHTML","_iframeWindow$parent$2","body","tableElement","tableColumnFreezingStyles","createElement","setAttribute","classList","add","_tableElement$parentN","parentNode","insertBefore","remove","append","currentNode","_currentNode","printTableProps","actionsForRow","undefined","defaultCurrentRowIndex","defaultSettings","rowHeight","enableColumnFreezing","enableRowHeight","enableRowSelection","enableEditing","enablePrinting","enableRowDrag","enableRowDrop","enableRowSelectionSingle","preset","onChangeSettings","className","ref","src","ReactDOM","createPortal","Table3"],"mappings":"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"}
1
+ {"version":3,"file":"PrintIFrame.js","sources":["../../../../../../../../../../src/components/Table3/components/toolbar/PrintButton/PrintIFrame.tsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { Table3 } from '../../../../..';\nimport { Table3Props } from '../../../types';\nimport { useParentStylesheets } from './hooks/useParentStylesheets';\n\nexport type PrintIFrameProps<TType = unknown> = {\n onAfterPrint?: () => void;\n onBeforePrint?: () => void;\n tableProps: Table3Props<TType>;\n};\n\nexport function PrintIFrame<TType = unknown>({ onAfterPrint, onBeforePrint, tableProps }: PrintIFrameProps<TType>) {\n const [contentRef, setContentRef] = React.useState<HTMLIFrameElement | null>(null);\n const [mountNode, setMountNode] = React.useState<HTMLElement | null>(null);\n\n const isFirefoxBrowser = React.useMemo(() => navigator.userAgent.toLowerCase().includes('firefox'), []);\n\n const iframeWindow = contentRef?.contentWindow;\n\n const stylesReady = useParentStylesheets(iframeWindow);\n\n // Calls print method when table has loaded in the iframe.\n React.useEffect(() => {\n let intervalId: NodeJS.Timer;\n let timeoutId: NodeJS.Timer;\n\n // Invoke the print functionality on the window once the table has finished rendering and all print styles are\n // added.\n if (mountNode && stylesReady) {\n intervalId = setInterval(async () => {\n const tableWrapper = mountNode;\n const table = tableWrapper.querySelector('[role=\"table\"]') as HTMLElement;\n const hasTableRendered = !!table;\n\n if (hasTableRendered && intervalId) {\n clearInterval(intervalId);\n\n // Calling the onBeforePrint method here as a fallback because certain browsers, like Safari,\n // do not call the beforeprint event.\n // Bug - Even though onBeforePrint is called before printing, the execution doesn't finish before\n // the print dialog shows up, which results into having a visible loading toast.\n onBeforePrint?.();\n\n // By adding height to the tableWrapper, we make sure the content below absolutely positioned table\n // doesn't hide\n if (isFirefoxBrowser) {\n const tableHeight = `${table.offsetHeight}px`;\n tableWrapper.style.height = tableHeight;\n }\n\n contentRef?.contentWindow?.print();\n\n // Calling the onAfterPrint method here as a fallback to do the cleanup, as certain browsers,\n // like Safari, do not trigger the beforeprint or afterprint events when a confirmation dialog\n // asking if the user wants to print the document, is cancelled.\n\n // Added a setTimeout to prevent calling onAfterPrint immediately after the print function\n // to ensure that the print dialog doesn't close abruptly. Although this behavior is uncommon,\n // there are cases where the print function may not run synchronously, causing onAfterPrint to be\n // invoked right after it.\n timeoutId = setTimeout(() => {\n onAfterPrint?.();\n }, 0);\n }\n }, 1000);\n }\n\n return () => {\n clearInterval(intervalId);\n clearTimeout(timeoutId);\n };\n }, [mountNode, stylesReady]);\n\n React.useEffect(() => {\n if (!contentRef || !iframeWindow || !stylesReady) {\n return;\n }\n\n // get the closest parent/container of the table, and the table itself\n const parentElement = contentRef?.closest('[role=dialog], [data-taco=drawer], main') ?? iframeWindow.parent.document.body;\n\n const iframeDocument = iframeWindow.document;\n iframeDocument.body.innerHTML = parentElement?.innerHTML ?? '';\n\n const tableElement = iframeDocument.querySelector('[role=\"table\"]');\n const tableColumnFreezingStyles = iframeDocument.querySelector('[data-taco=\"table3-column-freezing-styles\"]');\n const tableWrapper = iframeDocument.createElement('div');\n\n tableWrapper.setAttribute('data-role', 'table-wrapper');\n // Adding h-fit class makes sure that table is rendered with the whole content.\n tableWrapper.classList.add('h-fit');\n tableWrapper.classList.add('[&>[role=\"table\"]]:!h-fit');\n\n if (isFirefoxBrowser) {\n // Fix for firefox bug which adds page-long whitespace between page's top content and table\n tableWrapper.classList.add('[&>[role=\"table\"]]:!absolute');\n }\n\n // Safari print preview assigns no width to the table when w-screen class is used.\n // By assigning table a big static width and hiding the horizontal scrollbar, the table on chrome\n // and safari will always take full page width.\n tableWrapper.classList.add('w-[10000px]');\n\n if (tableElement) {\n tableElement.parentNode?.insertBefore(tableWrapper, tableElement);\n tableElement.remove();\n } else {\n iframeDocument.body.append(tableWrapper);\n }\n\n // Remove the already existing column freezing styles.\n if (tableColumnFreezingStyles) {\n tableColumnFreezingStyles.remove();\n }\n\n let currentNode = tableWrapper.parentNode as HTMLElement | null;\n\n while (currentNode !== null && currentNode !== iframeDocument.body) {\n // Add the 'h-fit' class to the 'table-wrapper' element's parent chain.\n // This ensures that the table is not cropped and fits within its container.\n currentNode?.classList.add('!h-fit');\n currentNode = currentNode.parentNode as HTMLElement | null;\n }\n\n setMountNode(tableWrapper);\n }, [iframeWindow, stylesReady]);\n\n const printTableProps: Table3Props<TType> = {\n ...tableProps,\n actionsForRow: undefined,\n // Not the best way to remove the active/current row styles, but a temporary solution for now\n defaultCurrentRowIndex: -1,\n defaultSettings: {\n ...tableProps?.defaultSettings,\n rowHeight: 'short',\n },\n enableColumnFreezing: false,\n enableRowHeight: true,\n enableRowSelection: false,\n enableEditing: false,\n enablePrinting: false,\n enableRowDrag: false,\n enableRowDrop: false,\n enableRowSelectionSingle: false,\n preset: undefined,\n // The presence of the onChangeSettings prop ensures that settings won't be stored in local storage.\n onChangeSettings: () => undefined,\n };\n\n // -top-60 -left-60 styles make sure that iframe is added outside of the viewport\n return (\n <iframe\n className=\"fixed -left-60 -top-60 !h-0 !w-0\"\n ref={setContentRef}\n // Temporary fix to support printing in firefox: Find another solution while upgrading React\n src=\"javascript:void(0);\">\n {mountNode && stylesReady ? ReactDOM.createPortal(<Table3 {...printTableProps} />, mountNode) : null}\n </iframe>\n );\n}\n"],"names":["PrintIFrame","onAfterPrint","onBeforePrint","tableProps","contentRef","setContentRef","React","useState","mountNode","setMountNode","isFirefoxBrowser","useMemo","navigator","userAgent","toLowerCase","includes","iframeWindow","contentWindow","stylesReady","useParentStylesheets","useEffect","intervalId","timeoutId","setInterval","tableWrapper","table","querySelector","hasTableRendered","_contentRef$contentWi","clearInterval","tableHeight","offsetHeight","style","height","print","setTimeout","Promise","resolve","e","reject","clearTimeout","parentElement","_contentRef$closest","closest","parent","document","body","iframeDocument","innerHTML","_parentElement$innerH","tableElement","tableColumnFreezingStyles","createElement","setAttribute","classList","add","_tableElement$parentN","parentNode","insertBefore","remove","append","currentNode","_currentNode","printTableProps","actionsForRow","undefined","defaultCurrentRowIndex","defaultSettings","rowHeight","enableColumnFreezing","enableRowHeight","enableRowSelection","enableEditing","enablePrinting","enableRowDrag","enableRowDrop","enableRowSelectionSingle","preset","onChangeSettings","className","ref","src","ReactDOM","createPortal","Table3"],"mappings":"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"}
@@ -135,10 +135,13 @@ function resetHighlightedColumnIndexes(enabled, value, table) {
135
135
  table.getRowModel().rows.forEach((row, rowIndex) => {
136
136
  columns.forEach((column, columnIndex) => {
137
137
  try {
138
- var _row$original, _column$columnDef$met;
139
- const cellValue = getCellValueAsString((_row$original = row.original) === null || _row$original === void 0 ? void 0 : _row$original[column.id], (_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.dataType);
140
- if (cellValue && globalFilterFn(cellValue, value)) {
141
- indexes.push([rowIndex, columnIndex]);
138
+ var _column$columnDef$met;
139
+ if ((_column$columnDef$met = column.columnDef.meta) !== null && _column$columnDef$met !== void 0 && _column$columnDef$met.enableSearch) {
140
+ var _row$original, _column$columnDef$met2;
141
+ const cellValue = getCellValueAsString((_row$original = row.original) === null || _row$original === void 0 ? void 0 : _row$original[column.id], (_column$columnDef$met2 = column.columnDef.meta) === null || _column$columnDef$met2 === void 0 ? void 0 : _column$columnDef$met2.dataType);
142
+ if (cellValue && globalFilterFn(cellValue, value)) {
143
+ indexes.push([rowIndex, columnIndex]);
144
+ }
142
145
  }
143
146
  } catch (e) {
144
147
  //
@@ -1 +1 @@
1
- {"version":3,"file":"Search.js","sources":["../../../../../../../../../src/components/Table3/components/toolbar/Search.tsx"],"sourcesContent":["import React from 'react';\nimport { Table as RTable, TableMeta } from '@tanstack/react-table';\nimport { useLocalization } from '../../../Provider/Localization';\nimport { Switch } from '../../../Switch/Switch';\nimport { globalFilterFn } from '../../util/filtering';\nimport { SearchInput2 } from '../../../SearchInput2/SearchInput2';\nimport { useDebouncedEffect } from '../../../../hooks/useDebouncedEffect';\nimport { getCellValueAsString } from '../../util/columns';\n\ntype SearchProps<TType = unknown> = {\n scrollToIndex: any;\n table: RTable<TType>;\n};\n\nenum LoadingState {\n Incomplete,\n Loading,\n Completed,\n}\n\nexport function Search<TType = unknown>(props: SearchProps<TType>) {\n const { scrollToIndex, table } = props;\n const { texts } = useLocalization();\n const ref = React.useRef<HTMLInputElement>(null);\n const tableMeta = table.options.meta as TableMeta<TType>;\n const [query, setQuery] = React.useState(tableMeta.search.query);\n const [loading, setLoading] = React.useState<LoadingState>(LoadingState.Incomplete);\n\n const scrollTo = (rowIndex: number) => scrollToIndex(rowIndex, { align: 'center' });\n\n // update the indexes if the row length changes (e.g. when filtering)\n React.useEffect(() => {\n const firstRowIndex = resetHighlightedColumnIndexes(tableMeta.search.isHighlightingEnabled, ref.current?.value, table);\n\n if (firstRowIndex) {\n scrollTo(firstRowIndex);\n }\n }, [\n tableMeta.search.query,\n tableMeta.search.excludeUnmatchedResults,\n table.getRowModel().rows.length,\n JSON.stringify(table.getState().sorting),\n JSON.stringify(table.getState().columnVisibility),\n loading,\n ]);\n\n // update the table search and filtering on a debounce\n useDebouncedEffect(() => {\n tableMeta.search.setQuery(query);\n\n if (tableMeta.search.excludeUnmatchedResults) {\n if (query?.length) {\n table.setGlobalFilter(query);\n } else {\n table.resetGlobalFilter();\n }\n }\n }, [query]);\n\n const handleFocus = async () => {\n // load all data if that is possible\n if (tableMeta.search.loadAll && loading === LoadingState.Incomplete) {\n setLoading(LoadingState.Loading);\n // don't pass the search query because we need all data - not filtered data\n await tableMeta.search.loadAll(table.getState().sorting, table.getState().columnFilters, undefined);\n setLoading(LoadingState.Completed);\n }\n };\n\n const handleChange = (query: any) => {\n setQuery(String(query ?? ''));\n };\n\n const handleToggleExcludeUnmatchedResults = (enabled: boolean) => {\n tableMeta.search.toggleExcludeUnmatchedResults(enabled);\n\n if (enabled) {\n if (ref.current?.value) {\n table.setGlobalFilter(ref.current?.value);\n } else {\n table.resetGlobalFilter();\n }\n } else {\n table.resetGlobalFilter();\n }\n\n requestAnimationFrame(() => ref.current?.focus());\n };\n\n const handleNextResult = () => {\n if (!tableMeta.search.highlightedColumnIndexes.length) {\n return;\n }\n\n const nextIndex =\n tableMeta.search.currentHighlightColumnIndex === undefined ||\n tableMeta.search.currentHighlightColumnIndex === tableMeta.search.highlightedColumnIndexes.length - 1\n ? 0\n : tableMeta.search.currentHighlightColumnIndex + 1;\n\n tableMeta.search.setCurrentHighlightColumnIndex(nextIndex);\n // we scroll to the row here, the cell scrolls itself into view\n scrollTo(tableMeta.search.highlightedColumnIndexes[nextIndex][0]);\n };\n\n const handlePreviousResult = () => {\n if (!tableMeta.search.highlightedColumnIndexes.length) {\n return;\n }\n\n const nextIndex =\n tableMeta.search.currentHighlightColumnIndex === undefined\n ? 0\n : tableMeta.search.currentHighlightColumnIndex === 0\n ? tableMeta.search.highlightedColumnIndexes.length - 1\n : tableMeta.search.currentHighlightColumnIndex - 1;\n\n tableMeta.search.setCurrentHighlightColumnIndex(nextIndex);\n // we scroll to the row here, the cell scrolls itself into view\n scrollTo(tableMeta.search.highlightedColumnIndexes[nextIndex][0]);\n };\n\n const settings = (\n <Switch\n label={texts.table3.search.excludeUnmatchedResults}\n checked={tableMeta.search.excludeUnmatchedResults}\n onChange={handleToggleExcludeUnmatchedResults}\n />\n );\n\n return (\n <>\n <SearchInput2\n findCurrent={\n tableMeta.search.currentHighlightColumnIndex !== undefined\n ? tableMeta.search.currentHighlightColumnIndex + 1\n : null\n }\n findTotal={tableMeta.search.highlightedColumnIndexes ? tableMeta.search.highlightedColumnIndexes.length : null}\n loading={loading === LoadingState.Loading}\n onClickFindPrevious={handlePreviousResult}\n onClickFindNext={handleNextResult}\n onChange={handleChange}\n onFocus={handleFocus}\n placeholder={texts.table3.search.placeholder}\n settingsContent={settings}\n ref={ref}\n shortcut={{ key: 'f', meta: true, shift: false }}\n value={query}\n />\n </>\n );\n}\n\nfunction resetHighlightedColumnIndexes<TType = unknown>(enabled: boolean, value: string | undefined, table: RTable<TType>) {\n const tableMeta = table.options.meta as TableMeta<TType>;\n let firstRowIndex: undefined | number;\n\n if (enabled && value) {\n const rowIndexes: number[] = [];\n const indexes: number[][] = [];\n const columns = table.getVisibleLeafColumns();\n\n table.getRowModel().rows.forEach((row, rowIndex) => {\n columns.forEach((column, columnIndex) => {\n try {\n const cellValue = getCellValueAsString(row.original?.[column.id], column.columnDef.meta?.dataType);\n\n if (cellValue && globalFilterFn(cellValue, value)) {\n indexes.push([rowIndex, columnIndex]);\n }\n } catch (e) {\n //\n }\n });\n\n if (indexes.length) {\n rowIndexes.push(rowIndex);\n }\n });\n\n tableMeta.search.setHighlightedColumnIndexes(indexes);\n\n if (indexes.length) {\n firstRowIndex = indexes[0][0];\n tableMeta.search.setCurrentHighlightColumnIndex(0);\n } else {\n tableMeta.search.setCurrentHighlightColumnIndex(undefined);\n }\n } else {\n tableMeta.search.setHighlightedColumnIndexes([]);\n tableMeta.search.setCurrentHighlightColumnIndex(undefined);\n }\n\n if (firstRowIndex !== undefined) {\n tableMeta.currentRow.setCurrentRowIndex(firstRowIndex);\n }\n\n return firstRowIndex;\n}\n"],"names":["LoadingState","Search","props","scrollToIndex","table","texts","useLocalization","ref","React","useRef","tableMeta","options","meta","query","setQuery","useState","search","loading","setLoading","Incomplete","scrollTo","rowIndex","align","useEffect","firstRowIndex","resetHighlightedColumnIndexes","isHighlightingEnabled","_ref$current","current","value","excludeUnmatchedResults","getRowModel","rows","length","JSON","stringify","getState","sorting","columnVisibility","useDebouncedEffect","setGlobalFilter","resetGlobalFilter","handleFocus","loadAll","Loading","Promise","resolve","columnFilters","undefined","then","Completed","_temp","e","reject","handleChange","String","handleToggleExcludeUnmatchedResults","enabled","toggleExcludeUnmatchedResults","_ref$current2","_ref$current3","requestAnimationFrame","_ref$current4","focus","handleNextResult","highlightedColumnIndexes","nextIndex","currentHighlightColumnIndex","setCurrentHighlightColumnIndex","handlePreviousResult","settings","Switch","label","table3","checked","onChange","SearchInput2","findCurrent","findTotal","onClickFindPrevious","onClickFindNext","onFocus","placeholder","settingsContent","shortcut","key","shift","indexes","columns","getVisibleLeafColumns","forEach","row","column","columnIndex","_row$original","_column$columnDef$met","cellValue","getCellValueAsString","original","id","columnDef","dataType","globalFilterFn","push","setHighlightedColumnIndexes","currentRow","setCurrentRowIndex"],"mappings":"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"}
1
+ {"version":3,"file":"Search.js","sources":["../../../../../../../../../src/components/Table3/components/toolbar/Search.tsx"],"sourcesContent":["import React from 'react';\nimport { Table as RTable, TableMeta } from '@tanstack/react-table';\nimport { useLocalization } from '../../../Provider/Localization';\nimport { Switch } from '../../../Switch/Switch';\nimport { globalFilterFn } from '../../util/filtering';\nimport { SearchInput2 } from '../../../SearchInput2/SearchInput2';\nimport { useDebouncedEffect } from '../../../../hooks/useDebouncedEffect';\nimport { getCellValueAsString } from '../../util/columns';\n\ntype SearchProps<TType = unknown> = {\n scrollToIndex: any;\n table: RTable<TType>;\n};\n\nenum LoadingState {\n Incomplete,\n Loading,\n Completed,\n}\n\nexport function Search<TType = unknown>(props: SearchProps<TType>) {\n const { scrollToIndex, table } = props;\n const { texts } = useLocalization();\n const ref = React.useRef<HTMLInputElement>(null);\n const tableMeta = table.options.meta as TableMeta<TType>;\n const [query, setQuery] = React.useState(tableMeta.search.query);\n const [loading, setLoading] = React.useState<LoadingState>(LoadingState.Incomplete);\n\n const scrollTo = (rowIndex: number) => scrollToIndex(rowIndex, { align: 'center' });\n\n // update the indexes if the row length changes (e.g. when filtering)\n React.useEffect(() => {\n const firstRowIndex = resetHighlightedColumnIndexes(tableMeta.search.isHighlightingEnabled, ref.current?.value, table);\n\n if (firstRowIndex) {\n scrollTo(firstRowIndex);\n }\n }, [\n tableMeta.search.query,\n tableMeta.search.excludeUnmatchedResults,\n table.getRowModel().rows.length,\n JSON.stringify(table.getState().sorting),\n JSON.stringify(table.getState().columnVisibility),\n loading,\n ]);\n\n // update the table search and filtering on a debounce\n useDebouncedEffect(() => {\n tableMeta.search.setQuery(query);\n\n if (tableMeta.search.excludeUnmatchedResults) {\n if (query?.length) {\n table.setGlobalFilter(query);\n } else {\n table.resetGlobalFilter();\n }\n }\n }, [query]);\n\n const handleFocus = async () => {\n // load all data if that is possible\n if (tableMeta.search.loadAll && loading === LoadingState.Incomplete) {\n setLoading(LoadingState.Loading);\n // don't pass the search query because we need all data - not filtered data\n await tableMeta.search.loadAll(table.getState().sorting, table.getState().columnFilters, undefined);\n setLoading(LoadingState.Completed);\n }\n };\n\n const handleChange = (query: any) => {\n setQuery(String(query ?? ''));\n };\n\n const handleToggleExcludeUnmatchedResults = (enabled: boolean) => {\n tableMeta.search.toggleExcludeUnmatchedResults(enabled);\n\n if (enabled) {\n if (ref.current?.value) {\n table.setGlobalFilter(ref.current?.value);\n } else {\n table.resetGlobalFilter();\n }\n } else {\n table.resetGlobalFilter();\n }\n\n requestAnimationFrame(() => ref.current?.focus());\n };\n\n const handleNextResult = () => {\n if (!tableMeta.search.highlightedColumnIndexes.length) {\n return;\n }\n\n const nextIndex =\n tableMeta.search.currentHighlightColumnIndex === undefined ||\n tableMeta.search.currentHighlightColumnIndex === tableMeta.search.highlightedColumnIndexes.length - 1\n ? 0\n : tableMeta.search.currentHighlightColumnIndex + 1;\n\n tableMeta.search.setCurrentHighlightColumnIndex(nextIndex);\n // we scroll to the row here, the cell scrolls itself into view\n scrollTo(tableMeta.search.highlightedColumnIndexes[nextIndex][0]);\n };\n\n const handlePreviousResult = () => {\n if (!tableMeta.search.highlightedColumnIndexes.length) {\n return;\n }\n\n const nextIndex =\n tableMeta.search.currentHighlightColumnIndex === undefined\n ? 0\n : tableMeta.search.currentHighlightColumnIndex === 0\n ? tableMeta.search.highlightedColumnIndexes.length - 1\n : tableMeta.search.currentHighlightColumnIndex - 1;\n\n tableMeta.search.setCurrentHighlightColumnIndex(nextIndex);\n // we scroll to the row here, the cell scrolls itself into view\n scrollTo(tableMeta.search.highlightedColumnIndexes[nextIndex][0]);\n };\n\n const settings = (\n <Switch\n label={texts.table3.search.excludeUnmatchedResults}\n checked={tableMeta.search.excludeUnmatchedResults}\n onChange={handleToggleExcludeUnmatchedResults}\n />\n );\n\n return (\n <>\n <SearchInput2\n findCurrent={\n tableMeta.search.currentHighlightColumnIndex !== undefined\n ? tableMeta.search.currentHighlightColumnIndex + 1\n : null\n }\n findTotal={tableMeta.search.highlightedColumnIndexes ? tableMeta.search.highlightedColumnIndexes.length : null}\n loading={loading === LoadingState.Loading}\n onClickFindPrevious={handlePreviousResult}\n onClickFindNext={handleNextResult}\n onChange={handleChange}\n onFocus={handleFocus}\n placeholder={texts.table3.search.placeholder}\n settingsContent={settings}\n ref={ref}\n shortcut={{ key: 'f', meta: true, shift: false }}\n value={query}\n />\n </>\n );\n}\n\nfunction resetHighlightedColumnIndexes<TType = unknown>(enabled: boolean, value: string | undefined, table: RTable<TType>) {\n const tableMeta = table.options.meta as TableMeta<TType>;\n let firstRowIndex: undefined | number;\n\n if (enabled && value) {\n const rowIndexes: number[] = [];\n const indexes: number[][] = [];\n const columns = table.getVisibleLeafColumns();\n\n table.getRowModel().rows.forEach((row, rowIndex) => {\n columns.forEach((column, columnIndex) => {\n try {\n if (column.columnDef.meta?.enableSearch) {\n const cellValue = getCellValueAsString(row.original?.[column.id], column.columnDef.meta?.dataType);\n\n if (cellValue && globalFilterFn(cellValue, value)) {\n indexes.push([rowIndex, columnIndex]);\n }\n }\n } catch (e) {\n //\n }\n });\n\n if (indexes.length) {\n rowIndexes.push(rowIndex);\n }\n });\n\n tableMeta.search.setHighlightedColumnIndexes(indexes);\n\n if (indexes.length) {\n firstRowIndex = indexes[0][0];\n tableMeta.search.setCurrentHighlightColumnIndex(0);\n } else {\n tableMeta.search.setCurrentHighlightColumnIndex(undefined);\n }\n } else {\n tableMeta.search.setHighlightedColumnIndexes([]);\n tableMeta.search.setCurrentHighlightColumnIndex(undefined);\n }\n\n if (firstRowIndex !== undefined) {\n tableMeta.currentRow.setCurrentRowIndex(firstRowIndex);\n }\n\n return firstRowIndex;\n}\n"],"names":["LoadingState","Search","props","scrollToIndex","table","texts","useLocalization","ref","React","useRef","tableMeta","options","meta","query","setQuery","useState","search","loading","setLoading","Incomplete","scrollTo","rowIndex","align","useEffect","firstRowIndex","resetHighlightedColumnIndexes","isHighlightingEnabled","_ref$current","current","value","excludeUnmatchedResults","getRowModel","rows","length","JSON","stringify","getState","sorting","columnVisibility","useDebouncedEffect","setGlobalFilter","resetGlobalFilter","handleFocus","loadAll","Loading","Promise","resolve","columnFilters","undefined","then","Completed","_temp","e","reject","handleChange","String","handleToggleExcludeUnmatchedResults","enabled","toggleExcludeUnmatchedResults","_ref$current2","_ref$current3","requestAnimationFrame","_ref$current4","focus","handleNextResult","highlightedColumnIndexes","nextIndex","currentHighlightColumnIndex","setCurrentHighlightColumnIndex","handlePreviousResult","settings","Switch","label","table3","checked","onChange","SearchInput2","findCurrent","findTotal","onClickFindPrevious","onClickFindNext","onFocus","placeholder","settingsContent","shortcut","key","shift","indexes","columns","getVisibleLeafColumns","forEach","row","column","columnIndex","_column$columnDef$met","columnDef","enableSearch","_row$original","_column$columnDef$met2","cellValue","getCellValueAsString","original","id","dataType","globalFilterFn","push","setHighlightedColumnIndexes","currentRow","setCurrentRowIndex"],"mappings":";;;;;;;;AAcA,IAAKA,YAIJ;AAJD,WAAKA,YAAY;EACbA,2DAAU;EACVA,qDAAO;EACPA,yDAAS;AACb,CAAC,EAJIA,YAAY,KAAZA,YAAY;SAMDC,MAAMA,CAAkBC,KAAyB;EAC7D,MAAM;IAAEC,aAAa;IAAEC;GAAO,GAAGF,KAAK;EACtC,MAAM;IAAEG;GAAO,GAAGC,eAAe,EAAE;EACnC,MAAMC,GAAG,GAAGC,cAAK,CAACC,MAAM,CAAmB,IAAI,CAAC;EAChD,MAAMC,SAAS,GAAGN,KAAK,CAACO,OAAO,CAACC,IAAwB;EACxD,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAGN,cAAK,CAACO,QAAQ,CAACL,SAAS,CAACM,MAAM,CAACH,KAAK,CAAC;EAChE,MAAM,CAACI,OAAO,EAAEC,UAAU,CAAC,GAAGV,cAAK,CAACO,QAAQ,CAAef,YAAY,CAACmB,UAAU,CAAC;EAEnF,MAAMC,QAAQ,GAAIC,QAAgB,IAAKlB,aAAa,CAACkB,QAAQ,EAAE;IAAEC,KAAK,EAAE;GAAU,CAAC;;EAGnFd,cAAK,CAACe,SAAS,CAAC;;IACZ,MAAMC,aAAa,GAAGC,6BAA6B,CAACf,SAAS,CAACM,MAAM,CAACU,qBAAqB,GAAAC,YAAA,GAAEpB,GAAG,CAACqB,OAAO,cAAAD,YAAA,uBAAXA,YAAA,CAAaE,KAAK,EAAEzB,KAAK,CAAC;IAEtH,IAAIoB,aAAa,EAAE;MACfJ,QAAQ,CAACI,aAAa,CAAC;;GAE9B,EAAE,CACCd,SAAS,CAACM,MAAM,CAACH,KAAK,EACtBH,SAAS,CAACM,MAAM,CAACc,uBAAuB,EACxC1B,KAAK,CAAC2B,WAAW,EAAE,CAACC,IAAI,CAACC,MAAM,EAC/BC,IAAI,CAACC,SAAS,CAAC/B,KAAK,CAACgC,QAAQ,EAAE,CAACC,OAAO,CAAC,EACxCH,IAAI,CAACC,SAAS,CAAC/B,KAAK,CAACgC,QAAQ,EAAE,CAACE,gBAAgB,CAAC,EACjDrB,OAAO,CACV,CAAC;;EAGFsB,kBAAkB,CAAC;IACf7B,SAAS,CAACM,MAAM,CAACF,QAAQ,CAACD,KAAK,CAAC;IAEhC,IAAIH,SAAS,CAACM,MAAM,CAACc,uBAAuB,EAAE;MAC1C,IAAIjB,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEoB,MAAM,EAAE;QACf7B,KAAK,CAACoC,eAAe,CAAC3B,KAAK,CAAC;OAC/B,MAAM;QACHT,KAAK,CAACqC,iBAAiB,EAAE;;;GAGpC,EAAE,CAAC5B,KAAK,CAAC,CAAC;EAEX,MAAM6B,WAAW;IAAA;;YAEThC,SAAS,CAACM,MAAM,CAAC2B,OAAO,IAAI1B,OAAO,KAAKjB,YAAY,CAACmB,UAAU;UAC/DD,UAAU,CAAClB,YAAY,CAAC4C,OAAO,CAAC;;UAChC,OAAAC,OAAA,CAAAC,OAAA,CACMpC,SAAS,CAACM,MAAM,CAAC2B,OAAO,CAACvC,KAAK,CAACgC,QAAQ,EAAE,CAACC,OAAO,EAAEjC,KAAK,CAACgC,QAAQ,EAAE,CAACW,aAAa,EAAEC,SAAS,CAAC,EAAAC,IAAA;YACnG/B,UAAU,CAAClB,YAAY,CAACkD,SAAS,CAAC;;;;;MALtC,OAAAL,OAAA,CAAAC,OAAA,CAAAK,KAAA,IAAAA,KAAA,CAAAF,IAAA,GAAAE,KAAA,CAAAF,IAAA;KAOH,QAAAG,CAAA;MAAA,OAAAP,OAAA,CAAAQ,MAAA,CAAAD,CAAA;;;EAED,MAAME,YAAY,GAAIzC,KAAU;IAC5BC,QAAQ,CAACyC,MAAM,CAAC1C,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,EAAE,CAAC,CAAC;GAChC;EAED,MAAM2C,mCAAmC,GAAIC,OAAgB;IACzD/C,SAAS,CAACM,MAAM,CAAC0C,6BAA6B,CAACD,OAAO,CAAC;IAEvD,IAAIA,OAAO,EAAE;MAAA,IAAAE,aAAA;MACT,KAAAA,aAAA,GAAIpD,GAAG,CAACqB,OAAO,cAAA+B,aAAA,eAAXA,aAAA,CAAa9B,KAAK,EAAE;QAAA,IAAA+B,aAAA;QACpBxD,KAAK,CAACoC,eAAe,EAAAoB,aAAA,GAACrD,GAAG,CAACqB,OAAO,cAAAgC,aAAA,uBAAXA,aAAA,CAAa/B,KAAK,CAAC;OAC5C,MAAM;QACHzB,KAAK,CAACqC,iBAAiB,EAAE;;KAEhC,MAAM;MACHrC,KAAK,CAACqC,iBAAiB,EAAE;;IAG7BoB,qBAAqB,CAAC;MAAA,IAAAC,aAAA;MAAA,QAAAA,aAAA,GAAMvD,GAAG,CAACqB,OAAO,cAAAkC,aAAA,uBAAXA,aAAA,CAAaC,KAAK,EAAE;MAAC;GACpD;EAED,MAAMC,gBAAgB,GAAGA;IACrB,IAAI,CAACtD,SAAS,CAACM,MAAM,CAACiD,wBAAwB,CAAChC,MAAM,EAAE;MACnD;;IAGJ,MAAMiC,SAAS,GACXxD,SAAS,CAACM,MAAM,CAACmD,2BAA2B,KAAKnB,SAAS,IAC1DtC,SAAS,CAACM,MAAM,CAACmD,2BAA2B,KAAKzD,SAAS,CAACM,MAAM,CAACiD,wBAAwB,CAAChC,MAAM,GAAG,CAAC,GAC/F,CAAC,GACDvB,SAAS,CAACM,MAAM,CAACmD,2BAA2B,GAAG,CAAC;IAE1DzD,SAAS,CAACM,MAAM,CAACoD,8BAA8B,CAACF,SAAS,CAAC;;IAE1D9C,QAAQ,CAACV,SAAS,CAACM,MAAM,CAACiD,wBAAwB,CAACC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;GACpE;EAED,MAAMG,oBAAoB,GAAGA;IACzB,IAAI,CAAC3D,SAAS,CAACM,MAAM,CAACiD,wBAAwB,CAAChC,MAAM,EAAE;MACnD;;IAGJ,MAAMiC,SAAS,GACXxD,SAAS,CAACM,MAAM,CAACmD,2BAA2B,KAAKnB,SAAS,GACpD,CAAC,GACDtC,SAAS,CAACM,MAAM,CAACmD,2BAA2B,KAAK,CAAC,GAClDzD,SAAS,CAACM,MAAM,CAACiD,wBAAwB,CAAChC,MAAM,GAAG,CAAC,GACpDvB,SAAS,CAACM,MAAM,CAACmD,2BAA2B,GAAG,CAAC;IAE1DzD,SAAS,CAACM,MAAM,CAACoD,8BAA8B,CAACF,SAAS,CAAC;;IAE1D9C,QAAQ,CAACV,SAAS,CAACM,MAAM,CAACiD,wBAAwB,CAACC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;GACpE;EAED,MAAMI,QAAQ,gBACV9D,6BAAC+D,MAAM;IACHC,KAAK,EAAEnE,KAAK,CAACoE,MAAM,CAACzD,MAAM,CAACc,uBAAuB;IAClD4C,OAAO,EAAEhE,SAAS,CAACM,MAAM,CAACc,uBAAuB;IACjD6C,QAAQ,EAAEnB;IAEjB;EAED,oBACIhD,yEACIA,6BAACoE,YAAY;IACTC,WAAW,EACPnE,SAAS,CAACM,MAAM,CAACmD,2BAA2B,KAAKnB,SAAS,GACpDtC,SAAS,CAACM,MAAM,CAACmD,2BAA2B,GAAG,CAAC,GAChD,IAAI;IAEdW,SAAS,EAAEpE,SAAS,CAACM,MAAM,CAACiD,wBAAwB,GAAGvD,SAAS,CAACM,MAAM,CAACiD,wBAAwB,CAAChC,MAAM,GAAG,IAAI;IAC9GhB,OAAO,EAAEA,OAAO,KAAKjB,YAAY,CAAC4C,OAAO;IACzCmC,mBAAmB,EAAEV,oBAAoB;IACzCW,eAAe,EAAEhB,gBAAgB;IACjCW,QAAQ,EAAErB,YAAY;IACtB2B,OAAO,EAAEvC,WAAW;IACpBwC,WAAW,EAAE7E,KAAK,CAACoE,MAAM,CAACzD,MAAM,CAACkE,WAAW;IAC5CC,eAAe,EAAEb,QAAQ;IACzB/D,GAAG,EAAEA,GAAG;IACR6E,QAAQ,EAAE;MAAEC,GAAG,EAAE,GAAG;MAAEzE,IAAI,EAAE,IAAI;MAAE0E,KAAK,EAAE;KAAO;IAChDzD,KAAK,EAAEhB;IACT,CACH;AAEX;AAEA,SAASY,6BAA6BA,CAAkBgC,OAAgB,EAAE5B,KAAyB,EAAEzB,KAAoB;EACrH,MAAMM,SAAS,GAAGN,KAAK,CAACO,OAAO,CAACC,IAAwB;EACxD,IAAIY,aAAiC;EAErC,IAAIiC,OAAO,IAAI5B,KAAK,EAAE;IAElB,MAAM0D,OAAO,GAAe,EAAE;IAC9B,MAAMC,OAAO,GAAGpF,KAAK,CAACqF,qBAAqB,EAAE;IAE7CrF,KAAK,CAAC2B,WAAW,EAAE,CAACC,IAAI,CAAC0D,OAAO,CAAC,CAACC,GAAG,EAAEtE,QAAQ;MAC3CmE,OAAO,CAACE,OAAO,CAAC,CAACE,MAAM,EAAEC,WAAW;QAChC,IAAI;UAAA,IAAAC,qBAAA;UACA,KAAAA,qBAAA,GAAIF,MAAM,CAACG,SAAS,CAACnF,IAAI,cAAAkF,qBAAA,eAArBA,qBAAA,CAAuBE,YAAY,EAAE;YAAA,IAAAC,aAAA,EAAAC,sBAAA;YACrC,MAAMC,SAAS,GAAGC,oBAAoB,EAAAH,aAAA,GAACN,GAAG,CAACU,QAAQ,cAAAJ,aAAA,uBAAZA,aAAA,CAAeL,MAAM,CAACU,EAAE,CAAC,GAAAJ,sBAAA,GAAEN,MAAM,CAACG,SAAS,CAACnF,IAAI,cAAAsF,sBAAA,uBAArBA,sBAAA,CAAuBK,QAAQ,CAAC;YAElG,IAAIJ,SAAS,IAAIK,cAAc,CAACL,SAAS,EAAEtE,KAAK,CAAC,EAAE;cAC/C0D,OAAO,CAACkB,IAAI,CAAC,CAACpF,QAAQ,EAAEwE,WAAW,CAAC,CAAC;;;SAGhD,CAAC,OAAOzC,CAAC,EAAE;;;OAGf,CAAC;KAKL,CAAC;IAEF1C,SAAS,CAACM,MAAM,CAAC0F,2BAA2B,CAACnB,OAAO,CAAC;IAErD,IAAIA,OAAO,CAACtD,MAAM,EAAE;MAChBT,aAAa,GAAG+D,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC7B7E,SAAS,CAACM,MAAM,CAACoD,8BAA8B,CAAC,CAAC,CAAC;KACrD,MAAM;MACH1D,SAAS,CAACM,MAAM,CAACoD,8BAA8B,CAACpB,SAAS,CAAC;;GAEjE,MAAM;IACHtC,SAAS,CAACM,MAAM,CAAC0F,2BAA2B,CAAC,EAAE,CAAC;IAChDhG,SAAS,CAACM,MAAM,CAACoD,8BAA8B,CAACpB,SAAS,CAAC;;EAG9D,IAAIxB,aAAa,KAAKwB,SAAS,EAAE;IAC7BtC,SAAS,CAACiG,UAAU,CAACC,kBAAkB,CAACpF,aAAa,CAAC;;EAG1D,OAAOA,aAAa;AACxB;;;;"}
@@ -19348,10 +19348,13 @@ function resetHighlightedColumnIndexes(enabled, value, table) {
19348
19348
  table.getRowModel().rows.forEach((row, rowIndex) => {
19349
19349
  columns.forEach((column, columnIndex) => {
19350
19350
  try {
19351
- var _row$original, _column$columnDef$met;
19352
- const cellValue = getCellValueAsString((_row$original = row.original) === null || _row$original === void 0 ? void 0 : _row$original[column.id], (_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.dataType);
19353
- if (cellValue && globalFilterFn$1(cellValue, value)) {
19354
- indexes.push([rowIndex, columnIndex]);
19351
+ var _column$columnDef$met;
19352
+ if ((_column$columnDef$met = column.columnDef.meta) !== null && _column$columnDef$met !== void 0 && _column$columnDef$met.enableSearch) {
19353
+ var _row$original, _column$columnDef$met2;
19354
+ const cellValue = getCellValueAsString((_row$original = row.original) === null || _row$original === void 0 ? void 0 : _row$original[column.id], (_column$columnDef$met2 = column.columnDef.meta) === null || _column$columnDef$met2 === void 0 ? void 0 : _column$columnDef$met2.dataType);
19355
+ if (cellValue && globalFilterFn$1(cellValue, value)) {
19356
+ indexes.push([rowIndex, columnIndex]);
19357
+ }
19355
19358
  }
19356
19359
  } catch (e) {
19357
19360
  //
@@ -20125,14 +20128,14 @@ function PrintIFrame({
20125
20128
  };
20126
20129
  }, [mountNode, stylesReady]);
20127
20130
  React__default.useEffect(() => {
20128
- var _iframeWindow$parent$, _iframeWindow$parent$2;
20129
- if (!iframeWindow || !stylesReady) {
20131
+ var _contentRef$closest, _parentElement$innerH;
20132
+ if (!contentRef || !iframeWindow || !stylesReady) {
20130
20133
  return;
20131
20134
  }
20135
+ // get the closest parent/container of the table, and the table itself
20136
+ const parentElement = (_contentRef$closest = contentRef === null || contentRef === void 0 ? void 0 : contentRef.closest('[role=dialog], [data-taco=drawer], main')) !== null && _contentRef$closest !== void 0 ? _contentRef$closest : iframeWindow.parent.document.body;
20132
20137
  const iframeDocument = iframeWindow.document;
20133
- // Only the content inside the main element will get printed along with the table.
20134
- const parentDocumentContent = ((_iframeWindow$parent$ = iframeWindow.parent.document.querySelector('main')) === null || _iframeWindow$parent$ === void 0 ? void 0 : _iframeWindow$parent$.innerHTML) || ((_iframeWindow$parent$2 = iframeWindow.parent.document.body) === null || _iframeWindow$parent$2 === void 0 ? void 0 : _iframeWindow$parent$2.innerHTML) || '';
20135
- iframeDocument.body.innerHTML = parentDocumentContent;
20138
+ iframeDocument.body.innerHTML = (_parentElement$innerH = parentElement === null || parentElement === void 0 ? void 0 : parentElement.innerHTML) !== null && _parentElement$innerH !== void 0 ? _parentElement$innerH : '';
20136
20139
  const tableElement = iframeDocument.querySelector('[role="table"]');
20137
20140
  const tableColumnFreezingStyles = iframeDocument.querySelector('[data-taco="table3-column-freezing-styles"]');
20138
20141
  const tableWrapper = iframeDocument.createElement('div');