@economic/taco 2.47.0-server.6 → 2.47.0-server.8

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.
Files changed (55) hide show
  1. package/dist/components/Calendar/Calendar.d.ts +1 -0
  2. package/dist/components/Table3/features/useEditingState.d.ts +1 -1
  3. package/dist/components/Table3/features/useTableEditing.d.ts +2 -2
  4. package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +32 -1
  5. package/dist/esm/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
  6. package/dist/esm/index.css +10 -2
  7. package/dist/esm/packages/taco/src/components/Calendar/Calendar.js +12 -11
  8. package/dist/esm/packages/taco/src/components/Calendar/Calendar.js.map +1 -1
  9. package/dist/esm/packages/taco/src/components/Datepicker/useDatepicker.js +15 -6
  10. package/dist/esm/packages/taco/src/components/Datepicker/useDatepicker.js.map +1 -1
  11. package/dist/esm/packages/taco/src/components/Menu/components/Content.js +1 -1
  12. package/dist/esm/packages/taco/src/components/Menu/components/Content.js.map +1 -1
  13. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js +2 -2
  14. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js.map +1 -1
  15. package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js +5 -1
  16. package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js.map +1 -1
  17. package/dist/esm/packages/taco/src/components/Table3/features/useEditingState.js +11 -6
  18. package/dist/esm/packages/taco/src/components/Table3/features/useEditingState.js.map +1 -1
  19. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js +44 -27
  20. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js.map +1 -1
  21. package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js +5 -8
  22. package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js.map +1 -1
  23. package/dist/esm/packages/taco/src/hooks/useGlobalKeyDown.js +2 -2
  24. package/dist/esm/packages/taco/src/hooks/useGlobalKeyDown.js.map +1 -1
  25. package/dist/esm/packages/taco/src/hooks/useLazyEffect.js +1 -1
  26. package/dist/esm/packages/taco/src/hooks/useLazyEffect.js.map +1 -1
  27. package/dist/esm/packages/taco/src/primitives/BubbleSelect.js +1 -1
  28. package/dist/esm/packages/taco/src/primitives/BubbleSelect.js.map +1 -1
  29. package/dist/esm/packages/taco/src/primitives/Button.js +1 -6
  30. package/dist/esm/packages/taco/src/primitives/Button.js.map +1 -1
  31. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/EmptyStateBody.js +9 -2
  32. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/EmptyStateBody.js.map +1 -1
  33. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.js +4 -4
  34. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.js.map +1 -1
  35. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFontSizeListener.js +4 -1
  36. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFontSizeListener.js.map +1 -1
  37. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/dataTypes.js +6 -2
  38. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/dataTypes.js.map +1 -1
  39. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/search.js +9 -1
  40. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/search.js.map +1 -1
  41. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js +8 -3
  42. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js.map +1 -1
  43. package/dist/esm/packages/taco/src/utils/dom.js +9 -1
  44. package/dist/esm/packages/taco/src/utils/dom.js.map +1 -1
  45. package/dist/esm/packages/taco/src/utils/keyboard.js +5 -2
  46. package/dist/esm/packages/taco/src/utils/keyboard.js.map +1 -1
  47. package/dist/hooks/useGlobalKeyDown.d.ts +1 -1
  48. package/dist/index.css +10 -2
  49. package/dist/primitives/Table/useTableManager/util/dataTypes.d.ts +1 -1
  50. package/dist/taco.cjs.development.js +184 -88
  51. package/dist/taco.cjs.development.js.map +1 -1
  52. package/dist/taco.cjs.production.min.js +1 -1
  53. package/dist/taco.cjs.production.min.js.map +1 -1
  54. package/dist/utils/keyboard.d.ts +1 -1
  55. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"dom.js","sources":["../../../../../../src/utils/dom.ts"],"sourcesContent":["// taken from react-aria\nconst FOCUSABLE_ELEMENTS = [\n '[tabindex]:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'button:not([disabled])',\n 'a[href]',\n 'area[href]',\n 'summary',\n 'iframe',\n 'object',\n 'embed',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]',\n 'details:not([disabled])',\n 'summary:not(:disabled)',\n];\n\nexport const hasFocusableElement = (element: HTMLElement | null) => {\n if (!element) {\n return null;\n }\n\n return !!element.querySelector(FOCUSABLE_ELEMENTS.join(','));\n};\n\nexport const isOverflowing = (element: HTMLElement | null) =>\n element !== null ? element.scrollWidth > element.offsetWidth : false;\n\nexport const getIndexOfFirstChildOverflowingParent = (element: HTMLElement, overscan = 0) => {\n let index = 0;\n let boundaryChildIndex: number | null = null;\n const clientRect = element.getBoundingClientRect();\n\n for (const child of Array.from(element.children)) {\n const right = child.getBoundingClientRect().right - clientRect.left;\n const width = clientRect.width - overscan;\n\n if (right > width) {\n boundaryChildIndex = index;\n break;\n }\n index++;\n }\n\n return boundaryChildIndex;\n};\n\nexport const getNextFocussableElement = (currentElement: HTMLElement | null) => {\n if (!currentElement) {\n return null;\n }\n\n let focussableElements = [...document.querySelectorAll<HTMLElement>(FOCUSABLE_ELEMENTS.join(','))];\n const currentElementIndex = focussableElements.indexOf(currentElement);\n\n if (currentElementIndex > -1) {\n focussableElements = focussableElements\n .slice(currentElementIndex + 1)\n .filter(element => element.getAttribute('tabindex') !== '-1');\n\n if (focussableElements.length) {\n focussableElements = focussableElements.filter(element => (element as any).checkVisibility?.() ?? true);\n return focussableElements[0] ?? null;\n }\n }\n\n return null;\n};\n\nconst getOverlaySelector = (element: Element | null) => {\n switch (element?.getAttribute('role')) {\n case 'dialog':\n return `[aria-controls='${element.id}']`;\n\n case 'menu':\n return `#${element.getAttribute('aria-labelledby')}`;\n\n default:\n return undefined;\n }\n};\n\nexport function isElementTriggeredFromContainer(element: Element | null, container: Element | null) {\n const selector = getOverlaySelector(element) ?? getOverlaySelector(element?.closest('[role=dialog],[role=menu]') ?? null);\n\n if (selector) {\n if (container?.querySelector(selector)) {\n return true;\n }\n\n const elementInDocument = document.querySelector(selector);\n\n // if the element does exist, see if it is itself connected to somethng that was triggered from the container\n if (elementInDocument) {\n return isElementTriggeredFromContainer(elementInDocument, container);\n }\n\n return false;\n }\n\n return false;\n}\n\nexport function isElementInsideOrTriggeredFromContainer(element: Element | null, container: Element | null) {\n return isElementTriggeredFromContainer(element, container) || !!container?.contains(element);\n}\n\nexport function isElementInsideOverlay(element: Element | null) {\n return !!element?.closest('[role=dialog],[role=menu]');\n}\n\nexport function isSiblingElementInsideSameParentOverlay(element: Element | null, sibling: Element | null) {\n return !!element?.closest('[role=dialog],[role=menu]')?.contains(sibling);\n}\n\nexport function isElementInteractive(element: Element | null) {\n if (!element) {\n return false;\n }\n\n return (\n ['A', 'BUTTON', 'INPUT', 'TEXTAREA', 'SELECT', 'LABEL', 'OPTION'].includes(element.tagName) &&\n !(element as HTMLElement).hidden &&\n !(element as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement | HTMLButtonElement).disabled &&\n !(element as HTMLInputElement | HTMLTextAreaElement).readOnly\n );\n}\n\nexport function isElementInsideTable3OrReport(element: Element | null) {\n return !!element?.closest('[data-taco^=table]');\n}\n\nexport function setDataFocusAttribute(target: Element) {\n target.setAttribute('data-focus', 'programmatic');\n\n const cleanup = () => {\n target.removeAttribute('data-focus');\n target.removeEventListener('blur', cleanup);\n };\n\n target.addEventListener('blur', cleanup);\n}\n"],"names":["FOCUSABLE_ELEMENTS","hasFocusableElement","element","querySelector","join","getIndexOfFirstChildOverflowingParent","overscan","index","boundaryChildIndex","clientRect","getBoundingClientRect","_i","_Array$from","Array","from","children","length","child","right","left","width","getNextFocussableElement","currentElement","focussableElements","concat","document","querySelectorAll","currentElementIndex","indexOf","slice","filter","getAttribute","_focussableElements$","_element$checkVisibil","_element$checkVisibil2","checkVisibility","call","getOverlaySelector","id","undefined","isElementTriggeredFromContainer","container","selector","_getOverlaySelector","_element$closest","closest","elementInDocument","isElementInsideOrTriggeredFromContainer","contains","isElementInsideOverlay","isSiblingElementInsideSameParentOverlay","sibling","_element$closest2","isElementInteractive","includes","tagName","hidden","disabled","readOnly","isElementInsideTable3OrReport","setDataFocusAttribute","target","setAttribute","cleanup","removeAttribute","removeEventListener","addEventListener"],"mappings":"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"}
1
+ {"version":3,"file":"dom.js","sources":["../../../../../../src/utils/dom.ts"],"sourcesContent":["// taken from react-aria\nconst FOCUSABLE_ELEMENTS = [\n '[tabindex]:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'button:not([disabled])',\n 'a[href]',\n 'area[href]',\n 'summary',\n 'iframe',\n 'object',\n 'embed',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]',\n 'details:not([disabled])',\n 'summary:not(:disabled)',\n];\n\nexport const hasFocusableElement = (element: HTMLElement | null) => {\n if (!element) {\n return null;\n }\n\n return !!element.querySelector(FOCUSABLE_ELEMENTS.join(','));\n};\n\nexport const isOverflowing = (element: HTMLElement | null) =>\n element !== null ? element.scrollWidth > element.offsetWidth : false;\n\nexport const getIndexOfFirstChildOverflowingParent = (element: HTMLElement, overscan = 0) => {\n let index = 0;\n let boundaryChildIndex: number | null = null;\n const clientRect = element.getBoundingClientRect();\n\n for (const child of Array.from(element.children)) {\n const right = child.getBoundingClientRect().right - clientRect.left;\n const width = clientRect.width - overscan;\n\n if (right > width) {\n boundaryChildIndex = index;\n break;\n }\n index++;\n }\n\n return boundaryChildIndex;\n};\n\nexport const getNextFocussableElement = (currentElement: HTMLElement | null) => {\n if (!currentElement) {\n return null;\n }\n\n let focussableElements = [...document.querySelectorAll<HTMLElement>(FOCUSABLE_ELEMENTS.join(','))];\n const currentElementIndex = focussableElements.indexOf(currentElement);\n\n if (currentElementIndex > -1) {\n focussableElements = focussableElements\n .slice(currentElementIndex + 1)\n .filter(element => element.getAttribute('tabindex') !== '-1');\n\n if (focussableElements.length) {\n focussableElements = focussableElements.filter(element => (element as any).checkVisibility?.() ?? true);\n return focussableElements[0] ?? null;\n }\n }\n\n return null;\n};\n\nconst getOverlaySelector = (element: Element | null) => {\n switch (element?.getAttribute('role')) {\n case 'dialog':\n return `[aria-controls='${element.id}']`;\n\n case 'menu':\n return `#${element.getAttribute('aria-labelledby')}`;\n\n default:\n return undefined;\n }\n};\n\nexport function isElementTriggeredFromContainer(element: Element | null, container: Element | null) {\n const selector = getOverlaySelector(element) ?? getOverlaySelector(element?.closest('[role=dialog],[role=menu]') ?? null);\n\n if (selector) {\n if (container?.querySelector(selector)) {\n return true;\n }\n\n const elementInDocument = document.querySelector(selector);\n\n // if the element does exist, see if it is itself connected to somethng that was triggered from the container\n if (elementInDocument) {\n return isElementTriggeredFromContainer(elementInDocument, container);\n }\n\n return false;\n }\n\n return false;\n}\n\nexport function isElementInsideOrTriggeredFromContainer(element: Element | null, container: Element | null) {\n return isElementTriggeredFromContainer(element, container) || !!container?.contains(element);\n}\n\nexport function isElementInsideOverlay(element: Element | null) {\n return !!element?.closest('[role=dialog],[role=menu]');\n}\n\nexport function isSiblingElementInsideSameParentOverlay(element: Element | null, sibling: Element | null) {\n return !!element?.closest('[role=dialog],[role=menu]')?.contains(sibling);\n}\n\nexport function isElementInteractive(element: Element | null) {\n if (!element) {\n return false;\n }\n\n const interactiveElements = ['A', 'BUTTON', 'INPUT', 'TEXTAREA', 'SELECT', 'LABEL', 'OPTION'];\n\n const isInteractive =\n interactiveElements.includes(element.tagName) &&\n !(element as HTMLElement).hidden &&\n !(element as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement | HTMLButtonElement).disabled &&\n !(element as HTMLInputElement | HTMLTextAreaElement).readOnly;\n\n // sometimes buttons contain content like an icon, and we can't rely on pointer events being disabled\n // so search for a focusable parent\n if (!isInteractive) {\n const focusableParent = element.closest(FOCUSABLE_ELEMENTS.join(','));\n return focusableParent ? interactiveElements.includes(focusableParent.tagName) : false;\n }\n\n return isInteractive;\n}\n\nexport function isElementInsideTable3OrReport(element: Element | null) {\n return !!element?.closest('[data-taco^=table]');\n}\n\nexport function setDataFocusAttribute(target: Element) {\n target.setAttribute('data-focus', 'programmatic');\n\n const cleanup = () => {\n target.removeAttribute('data-focus');\n target.removeEventListener('blur', cleanup);\n };\n\n target.addEventListener('blur', cleanup);\n}\n"],"names":["FOCUSABLE_ELEMENTS","hasFocusableElement","element","querySelector","join","getIndexOfFirstChildOverflowingParent","overscan","index","boundaryChildIndex","clientRect","getBoundingClientRect","_i","_Array$from","Array","from","children","length","child","right","left","width","getNextFocussableElement","currentElement","focussableElements","concat","document","querySelectorAll","currentElementIndex","indexOf","slice","filter","getAttribute","_focussableElements$","_element$checkVisibil","_element$checkVisibil2","checkVisibility","call","getOverlaySelector","id","undefined","isElementTriggeredFromContainer","container","selector","_getOverlaySelector","_element$closest","closest","elementInDocument","isElementInsideOrTriggeredFromContainer","contains","isElementInsideOverlay","isSiblingElementInsideSameParentOverlay","sibling","_element$closest2","isElementInteractive","interactiveElements","isInteractive","includes","tagName","hidden","disabled","readOnly","focusableParent","isElementInsideTable3OrReport","setDataFocusAttribute","target","setAttribute","cleanup","removeAttribute","removeEventListener","addEventListener"],"mappings":"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"}
@@ -17,12 +17,15 @@ function shouldTriggerShortcut(event, key) {
17
17
  }
18
18
  return event.key.toLowerCase() === keyOptions.key.toLowerCase();
19
19
  }
20
- function createShortcutKeyDownHandler(key, handler, stopPropagation) {
20
+ function createShortcutKeyDownHandler(key, handler, stopPropagation, element) {
21
21
  if (stopPropagation === void 0) {
22
22
  stopPropagation = true;
23
23
  }
24
24
  return function (event) {
25
- if (event.target !== event.currentTarget && isElementInteractive(event.target) && !isPressingMetaKey(event)) {
25
+ var dialog = document.querySelector('[role="dialog"]');
26
+ var isOutsideDialog = element && dialog && !dialog.contains(element);
27
+ if (event.target !== event.currentTarget && isElementInteractive(event.target) && !isPressingMetaKey(event) || isOutsideDialog // Avoid triggering shortcut if dialog is open and element is outside the dialog
28
+ ) {
26
29
  return;
27
30
  }
28
31
  var condition = shouldTriggerShortcut(event, key);
@@ -1 +1 @@
1
- {"version":3,"file":"keyboard.js","sources":["../../../../../../src/utils/keyboard.ts"],"sourcesContent":["import React from 'react';\nimport { isElementInteractive } from './dom';\n\nexport type KeyDownHandlerOptions = { key: string; meta?: boolean; shift?: boolean };\n\nexport function isPressingMetaKey<T = Element>(event: KeyboardEvent | React.KeyboardEvent<T>) {\n return isMacOs() ? event.metaKey : event.ctrlKey;\n}\n\nexport function shouldTriggerShortcut<T = Element>(\n event: KeyboardEvent | React.KeyboardEvent<T>,\n key: string | KeyDownHandlerOptions\n) {\n const keyOptions: KeyDownHandlerOptions = typeof key === 'string' ? { key, meta: false, shift: false } : key;\n\n if (\n (keyOptions.meta && (isMacOs() ? !event.metaKey : !event.ctrlKey)) ||\n (!keyOptions.meta && (isMacOs() ? event.metaKey : event.ctrlKey))\n ) {\n return false;\n }\n\n if ((keyOptions.shift && !event.shiftKey) || (keyOptions.shift === false && event.shiftKey)) {\n return false;\n }\n\n return event.key.toLowerCase() === keyOptions.key.toLowerCase();\n}\n\nexport function createShortcutKeyDownHandler<T = Element>(\n key: string | KeyDownHandlerOptions,\n handler: (event: KeyboardEvent | React.KeyboardEvent<T>) => void,\n stopPropagation = true\n) {\n return function (event: KeyboardEvent | React.KeyboardEvent<T>) {\n if (\n event.target !== event.currentTarget &&\n isElementInteractive(event.target as HTMLElement) &&\n !isPressingMetaKey(event)\n ) {\n return;\n }\n\n const condition = shouldTriggerShortcut(event, key);\n\n if (condition) {\n if (stopPropagation) {\n // stops react handlers bubbling up to global\n event.stopPropagation();\n // stops global handlers bubbling up to other global\n (event as KeyboardEvent).stopImmediatePropagation?.();\n }\n\n handler(event);\n }\n };\n}\n\nexport const isMacOs = () => window?.navigator.userAgent.includes('Mac');\n"],"names":["isPressingMetaKey","event","isMacOs","metaKey","ctrlKey","shouldTriggerShortcut","key","keyOptions","meta","shift","shiftKey","toLowerCase","createShortcutKeyDownHandler","handler","stopPropagation","target","currentTarget","isElementInteractive","condition","_event$stopImmediateP","stopImmediatePropagation","call","_window","window","navigator","userAgent","includes"],"mappings":";;SAKgBA,iBAAiBA,CAAcC,KAA6C;EACxF,OAAOC,OAAO,EAAE,GAAGD,KAAK,CAACE,OAAO,GAAGF,KAAK,CAACG,OAAO;AACpD;SAEgBC,qBAAqBA,CACjCJ,KAA6C,EAC7CK,GAAmC;EAEnC,IAAMC,UAAU,GAA0B,OAAOD,GAAG,KAAK,QAAQ,GAAG;IAAEA,GAAG,EAAHA,GAAG;IAAEE,IAAI,EAAE,KAAK;IAAEC,KAAK,EAAE;GAAO,GAAGH,GAAG;EAE5G,IACKC,UAAU,CAACC,IAAI,KAAKN,OAAO,EAAE,GAAG,CAACD,KAAK,CAACE,OAAO,GAAG,CAACF,KAAK,CAACG,OAAO,CAAC,IAChE,CAACG,UAAU,CAACC,IAAI,KAAKN,OAAO,EAAE,GAAGD,KAAK,CAACE,OAAO,GAAGF,KAAK,CAACG,OAAO,CAAE,EACnE;IACE,OAAO,KAAK;;EAGhB,IAAKG,UAAU,CAACE,KAAK,IAAI,CAACR,KAAK,CAACS,QAAQ,IAAMH,UAAU,CAACE,KAAK,KAAK,KAAK,IAAIR,KAAK,CAACS,QAAS,EAAE;IACzF,OAAO,KAAK;;EAGhB,OAAOT,KAAK,CAACK,GAAG,CAACK,WAAW,EAAE,KAAKJ,UAAU,CAACD,GAAG,CAACK,WAAW,EAAE;AACnE;SAEgBC,4BAA4BA,CACxCN,GAAmC,EACnCO,OAAgE,EAChEC,eAAe;MAAfA,eAAe;IAAfA,eAAe,GAAG,IAAI;;EAEtB,OAAO,UAAUb,KAA6C;IAC1D,IACIA,KAAK,CAACc,MAAM,KAAKd,KAAK,CAACe,aAAa,IACpCC,oBAAoB,CAAChB,KAAK,CAACc,MAAqB,CAAC,IACjD,CAACf,iBAAiB,CAACC,KAAK,CAAC,EAC3B;MACE;;IAGJ,IAAMiB,SAAS,GAAGb,qBAAqB,CAACJ,KAAK,EAAEK,GAAG,CAAC;IAEnD,IAAIY,SAAS,EAAE;MACX,IAAIJ,eAAe,EAAE;QAAA,IAAAK,qBAAA;;QAEjBlB,KAAK,CAACa,eAAe,EAAE;;QAEtB,CAAAK,qBAAA,GAAAlB,KAAuB,CAACmB,wBAAwB,cAAAD,qBAAA,uBAAhDA,qBAAA,CAAAE,IAAA,CAAApB,MAAoD;;MAGzDY,OAAO,CAACZ,KAAK,CAAC;;GAErB;AACL;IAEaC,OAAO,GAAG,SAAVA,OAAOA;EAAA,IAAAoB,OAAA;EAAA,QAAAA,OAAA,GAASC,MAAM,cAAAD,OAAA,uBAANA,OAAA,CAAQE,SAAS,CAACC,SAAS,CAACC,QAAQ,CAAC,KAAK,CAAC;AAAA;;;;"}
1
+ {"version":3,"file":"keyboard.js","sources":["../../../../../../src/utils/keyboard.ts"],"sourcesContent":["import React from 'react';\nimport { isElementInteractive } from './dom';\n\nexport type KeyDownHandlerOptions = { key: string; meta?: boolean; shift?: boolean };\n\nexport function isPressingMetaKey<T = Element>(event: KeyboardEvent | React.KeyboardEvent<T>) {\n return isMacOs() ? event.metaKey : event.ctrlKey;\n}\n\nexport function shouldTriggerShortcut<T = Element>(\n event: KeyboardEvent | React.KeyboardEvent<T>,\n key: string | KeyDownHandlerOptions\n) {\n const keyOptions: KeyDownHandlerOptions = typeof key === 'string' ? { key, meta: false, shift: false } : key;\n\n if (\n (keyOptions.meta && (isMacOs() ? !event.metaKey : !event.ctrlKey)) ||\n (!keyOptions.meta && (isMacOs() ? event.metaKey : event.ctrlKey))\n ) {\n return false;\n }\n\n if ((keyOptions.shift && !event.shiftKey) || (keyOptions.shift === false && event.shiftKey)) {\n return false;\n }\n\n return event.key.toLowerCase() === keyOptions.key.toLowerCase();\n}\n\nexport function createShortcutKeyDownHandler<T = Element>(\n key: string | KeyDownHandlerOptions,\n handler: (event: KeyboardEvent | React.KeyboardEvent<T>) => void,\n stopPropagation = true,\n element?: HTMLElement | null\n) {\n return function (event: KeyboardEvent | React.KeyboardEvent<T>) {\n const dialog = document.querySelector('[role=\"dialog\"]');\n const isOutsideDialog = element && dialog && !dialog.contains(element);\n\n if (\n (event.target !== event.currentTarget &&\n isElementInteractive(event.target as HTMLElement) &&\n !isPressingMetaKey(event)) ||\n isOutsideDialog // Avoid triggering shortcut if dialog is open and element is outside the dialog\n ) {\n return;\n }\n\n const condition = shouldTriggerShortcut(event, key);\n\n if (condition) {\n if (stopPropagation) {\n // stops react handlers bubbling up to global\n event.stopPropagation();\n // stops global handlers bubbling up to other global\n (event as KeyboardEvent).stopImmediatePropagation?.();\n }\n\n handler(event);\n }\n };\n}\n\nexport const isMacOs = () => window?.navigator.userAgent.includes('Mac');\n"],"names":["isPressingMetaKey","event","isMacOs","metaKey","ctrlKey","shouldTriggerShortcut","key","keyOptions","meta","shift","shiftKey","toLowerCase","createShortcutKeyDownHandler","handler","stopPropagation","element","dialog","document","querySelector","isOutsideDialog","contains","target","currentTarget","isElementInteractive","condition","_event$stopImmediateP","stopImmediatePropagation","call","_window","window","navigator","userAgent","includes"],"mappings":";;SAKgBA,iBAAiBA,CAAcC,KAA6C;EACxF,OAAOC,OAAO,EAAE,GAAGD,KAAK,CAACE,OAAO,GAAGF,KAAK,CAACG,OAAO;AACpD;SAEgBC,qBAAqBA,CACjCJ,KAA6C,EAC7CK,GAAmC;EAEnC,IAAMC,UAAU,GAA0B,OAAOD,GAAG,KAAK,QAAQ,GAAG;IAAEA,GAAG,EAAHA,GAAG;IAAEE,IAAI,EAAE,KAAK;IAAEC,KAAK,EAAE;GAAO,GAAGH,GAAG;EAE5G,IACKC,UAAU,CAACC,IAAI,KAAKN,OAAO,EAAE,GAAG,CAACD,KAAK,CAACE,OAAO,GAAG,CAACF,KAAK,CAACG,OAAO,CAAC,IAChE,CAACG,UAAU,CAACC,IAAI,KAAKN,OAAO,EAAE,GAAGD,KAAK,CAACE,OAAO,GAAGF,KAAK,CAACG,OAAO,CAAE,EACnE;IACE,OAAO,KAAK;;EAGhB,IAAKG,UAAU,CAACE,KAAK,IAAI,CAACR,KAAK,CAACS,QAAQ,IAAMH,UAAU,CAACE,KAAK,KAAK,KAAK,IAAIR,KAAK,CAACS,QAAS,EAAE;IACzF,OAAO,KAAK;;EAGhB,OAAOT,KAAK,CAACK,GAAG,CAACK,WAAW,EAAE,KAAKJ,UAAU,CAACD,GAAG,CAACK,WAAW,EAAE;AACnE;SAEgBC,4BAA4BA,CACxCN,GAAmC,EACnCO,OAAgE,EAChEC,eAAe,EACfC,OAA4B;MAD5BD,eAAe;IAAfA,eAAe,GAAG,IAAI;;EAGtB,OAAO,UAAUb,KAA6C;IAC1D,IAAMe,MAAM,GAAGC,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC;IACxD,IAAMC,eAAe,GAAGJ,OAAO,IAAIC,MAAM,IAAI,CAACA,MAAM,CAACI,QAAQ,CAACL,OAAO,CAAC;IAEtE,IACKd,KAAK,CAACoB,MAAM,KAAKpB,KAAK,CAACqB,aAAa,IACjCC,oBAAoB,CAACtB,KAAK,CAACoB,MAAqB,CAAC,IACjD,CAACrB,iBAAiB,CAACC,KAAK,CAAC,IAC7BkB,eAAe;MACjB;MACE;;IAGJ,IAAMK,SAAS,GAAGnB,qBAAqB,CAACJ,KAAK,EAAEK,GAAG,CAAC;IAEnD,IAAIkB,SAAS,EAAE;MACX,IAAIV,eAAe,EAAE;QAAA,IAAAW,qBAAA;;QAEjBxB,KAAK,CAACa,eAAe,EAAE;;QAEtB,CAAAW,qBAAA,GAAAxB,KAAuB,CAACyB,wBAAwB,cAAAD,qBAAA,uBAAhDA,qBAAA,CAAAE,IAAA,CAAA1B,MAAoD;;MAGzDY,OAAO,CAACZ,KAAK,CAAC;;GAErB;AACL;IAEaC,OAAO,GAAG,SAAVA,OAAOA;EAAA,IAAA0B,OAAA;EAAA,QAAAA,OAAA,GAASC,MAAM,cAAAD,OAAA,uBAANA,OAAA,CAAQE,SAAS,CAACC,SAAS,CAACC,QAAQ,CAAC,KAAK,CAAC;AAAA;;;;"}
@@ -1,2 +1,2 @@
1
1
  import { KeyDownHandlerOptions } from '../utils/keyboard';
2
- export declare const useGlobalKeyDown: (shortcut: string | KeyDownHandlerOptions | undefined, handler: (event: KeyboardEvent) => void) => void;
2
+ export declare const useGlobalKeyDown: (shortcut: string | KeyDownHandlerOptions | undefined, handler: (event: KeyboardEvent) => void, element?: HTMLElement | null | undefined) => void;
package/dist/index.css CHANGED
@@ -603,10 +603,14 @@ table[data-taco^='table'] thead tr:last-child {
603
603
 
604
604
  /* bottom border for column groups */
605
605
 
606
- table[data-taco^='table'] thead tr:not(:last-child) th:before {
607
- @apply bg-grey-300 absolute bottom-0 left-2 right-2 h-[2px] content-[''];
606
+ table[data-taco^='table'] thead tr:not(:last-child) th {
607
+ @apply print:border-grey-300 print:border-b;
608
608
  }
609
609
 
610
+ table[data-taco^='table'] thead tr:not(:last-child) th:before {
611
+ @apply bg-grey-300 absolute bottom-0 left-2 right-2 h-[2px] content-[''];
612
+ }
613
+
610
614
  table[data-taco^='table'] tfoot {
611
615
  /* z-indexes & layout */
612
616
  @apply sticky bottom-0 isolate z-20;
@@ -627,6 +631,10 @@ table[data-taco^='table'] tbody {
627
631
  @apply print:!h-auto;
628
632
  }
629
633
 
634
+ table[data-taco^='table']:has([data-taco='empty-state']) {
635
+ @apply overflow-x-hidden;
636
+ }
637
+
630
638
  table[data-taco^='table'] tr {
631
639
  /* styling */
632
640
  @apply relative bg-white outline-none;
@@ -7,6 +7,6 @@ export declare type TableDataType<TType = unknown> = {
7
7
  filterComparators: TableFilterComparator[];
8
8
  getDisplayValue?: (value: any, options?: {
9
9
  localization: Localization;
10
- }) => string;
10
+ }) => string | string[];
11
11
  };
12
12
  export declare function getDataTypeProperties<TType = unknown>(dataType: TableColumnDataType | undefined): TableDataType<TType>;