@economic/taco 2.7.2 → 2.7.4

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 (46) hide show
  1. package/dist/components/Select2/Select2.d.ts +4 -5
  2. package/dist/components/Select2/components/Context.d.ts +4 -6
  3. package/dist/components/Select2/components/Create.d.ts +2 -1
  4. package/dist/components/Select2/types.d.ts +4 -0
  5. package/dist/components/Table3/components/columns/cell/controls/{TextAreaControl.d.ts → TextareaControl.d.ts} +1 -1
  6. package/dist/components/Table3/types.d.ts +1 -1
  7. package/dist/esm/packages/taco/src/components/Dialog/components/Content.js +9 -0
  8. package/dist/esm/packages/taco/src/components/Dialog/components/Content.js.map +1 -1
  9. package/dist/esm/packages/taco/src/components/Input/Input.js +15 -12
  10. package/dist/esm/packages/taco/src/components/Input/Input.js.map +1 -1
  11. package/dist/esm/packages/taco/src/components/Listbox/ScrollableList.js +3 -0
  12. package/dist/esm/packages/taco/src/components/Listbox/ScrollableList.js.map +1 -1
  13. package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js +9 -2
  14. package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js.map +1 -1
  15. package/dist/esm/packages/taco/src/components/Select2/Select2.js.map +1 -1
  16. package/dist/esm/packages/taco/src/components/Select2/components/Context.js.map +1 -1
  17. package/dist/esm/packages/taco/src/components/Select2/components/Create.js.map +1 -1
  18. package/dist/esm/packages/taco/src/components/Table3/Table3.js +0 -6
  19. package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
  20. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/DisplayCell.js +1 -1
  21. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/DisplayCell.js.map +1 -1
  22. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingCell.js +2 -1
  23. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingCell.js.map +1 -1
  24. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingControl.js +2 -2
  25. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingControl.js.map +1 -1
  26. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/controls/{TextAreaControl.js → TextareaControl.js} +3 -3
  27. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/controls/{TextAreaControl.js.map → TextareaControl.js.map} +1 -1
  28. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Actions.js +8 -1
  29. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Actions.js.map +1 -1
  30. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js +5 -5
  31. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js.map +1 -1
  32. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/hooks/useParentStylesheets.js +3 -1
  33. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/hooks/useParentStylesheets.js.map +1 -1
  34. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Search.js +7 -4
  35. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Search.js.map +1 -1
  36. package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useSettingsStateListener.js +14 -12
  37. package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useSettingsStateListener.js.map +1 -1
  38. package/dist/esm/packages/taco/src/components/Table3/types.js.map +1 -1
  39. package/dist/esm/packages/taco/src/components/Textarea/Textarea.js +4 -0
  40. package/dist/esm/packages/taco/src/components/Textarea/Textarea.js.map +1 -1
  41. package/dist/taco.cjs.development.js +82 -46
  42. package/dist/taco.cjs.development.js.map +1 -1
  43. package/dist/taco.cjs.production.min.js +1 -1
  44. package/dist/taco.cjs.production.min.js.map +1 -1
  45. package/package.json +2 -2
  46. package/types.json +7143 -7308
@@ -4829,23 +4829,26 @@ const InputWithoutDeprecatedFeatures = /*#__PURE__*/React.forwardRef(function In
4829
4829
  ...attributes
4830
4830
  } = props;
4831
4831
  const internalRef = useMergedRef(ref);
4832
- let handleKeyDown = onKeyDown;
4833
- // home and end keys only navigate to the start/end of input value if the input container does not scroll
4834
- // if it has scroll height then the browser reverts to native scrolling behaviour only
4835
- // so we manually override it to ensure _our_ desired behaviour remains intact
4836
- // only the 'text', 'search', 'url', 'tel', 'password' input types support setSelectionRange
4837
- if (validSetSelectionRangeTypes.includes(type)) {
4838
- handleKeyDown = event => {
4832
+ const handleKeyDown = event => {
4833
+ // prevent any external keyboard shortcuts from executing while typing single characters in input
4834
+ if (event.key.length === 1) {
4835
+ event.stopPropagation();
4836
+ }
4837
+ // home and end keys only navigate to the start/end of input value if the input container does not scroll
4838
+ // if it has scroll height then the browser reverts to native scrolling behaviour only
4839
+ // so we manually override it to ensure _our_ desired behaviour remains intact
4840
+ // only the 'text', 'search', 'url', 'tel', 'password' input types support setSelectionRange
4841
+ if (validSetSelectionRangeTypes.includes(type)) {
4839
4842
  if (!event.shiftKey && (event.key === 'Home' || event.key === 'End')) {
4840
4843
  event.preventDefault();
4841
4844
  const position = event.key === 'End' ? event.currentTarget.value.length : 0;
4842
4845
  event.currentTarget.setSelectionRange(position, position);
4843
4846
  }
4844
- if (typeof onKeyDown === 'function') {
4845
- onKeyDown(event);
4846
- }
4847
- };
4848
- }
4847
+ }
4848
+ if (typeof onKeyDown === 'function') {
4849
+ onKeyDown(event);
4850
+ }
4851
+ };
4849
4852
  const prefixRef = React.useRef(null);
4850
4853
  const prefixRect = useBoundingClientRectListener(prefixRef);
4851
4854
  const postfixRef = React.useRef(null);
@@ -5093,6 +5096,9 @@ const ScrollableList = /*#__PURE__*/React.forwardRef(function ScrollableList(pro
5093
5096
  const index = nextIndex !== undefined ? nextIndex : currentIndex;
5094
5097
  onKeyDown(event, index);
5095
5098
  }
5099
+ // Stops the keyboard event from propagating so that keyboard event on other components outside the scrollable
5100
+ // list are not executed.
5101
+ event.stopPropagation();
5096
5102
  };
5097
5103
  const handleClick = index => event => {
5098
5104
  setCurrentIndex(index);
@@ -6145,6 +6151,8 @@ const Content$4 = /*#__PURE__*/React.forwardRef(function DialogContent(props, re
6145
6151
  } else if (dialog.onClose) {
6146
6152
  dialog.onClose();
6147
6153
  }
6154
+ // Stops event from propogating outside the dialog.
6155
+ event.stopPropagation();
6148
6156
  };
6149
6157
  // the chosen behaviour in taco is that outside clicks do not close the dialog
6150
6158
  const handleInteractOutside = event => event.preventDefault();
@@ -6158,12 +6166,19 @@ const Content$4 = /*#__PURE__*/React.forwardRef(function DialogContent(props, re
6158
6166
  } else {
6159
6167
  output = props.children;
6160
6168
  }
6169
+ const onKeyDown = event => {
6170
+ if (event.key !== 'Escape') {
6171
+ // Stops event from propogating outside the dialog.
6172
+ event.stopPropagation();
6173
+ }
6174
+ };
6161
6175
  return /*#__PURE__*/React.createElement(DialogPrimitive.Portal, null, /*#__PURE__*/React.createElement(DialogPrimitive.Overlay, {
6162
6176
  asChild: true
6163
6177
  }, /*#__PURE__*/React.createElement(Backdrop, null, /*#__PURE__*/React.createElement(DialogPrimitive.Content, Object.assign({}, props, {
6164
6178
  className: className,
6165
6179
  onEscapeKeyDown: handleEscapeKeyDown,
6166
6180
  onInteractOutside: handleInteractOutside,
6181
+ onKeyDown: onKeyDown,
6167
6182
  ref: internalRef,
6168
6183
  style: {
6169
6184
  ...props.style,
@@ -9122,8 +9137,15 @@ const SearchInput2 = /*#__PURE__*/React__default.forwardRef(function SearchInput
9122
9137
  if (settingsContent) {
9123
9138
  const settingsClassname = cn('border-grey-300 absolute left-0 right-0 -mt-0.5 hidden top-full group-focus-within:flex focus-within:flex flex-col gap-y-4 rounded-b border border-t-0 bg-white p-3 shadow !pt-[calc(theme(spacing.3)_+_theme(spacing[0.5]))]');
9124
9139
  return /*#__PURE__*/React__default.createElement("div", {
9125
- className: "group relative z-10 [&_[data-taco='input-container']]:z-10",
9126
- ref: containerRef
9140
+ className: cn('group relative', {
9141
+ 'z-10 [&_[data-taco=input-container]]:z-10': focused
9142
+ }),
9143
+ ref: containerRef,
9144
+ // create a new stacking context so our internal z-indexes don't effect external components
9145
+ // https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context
9146
+ style: {
9147
+ opacity: 0.999
9148
+ }
9127
9149
  }, input, /*#__PURE__*/React__default.createElement("div", {
9128
9150
  className: settingsClassname,
9129
9151
  onClickCapture: () => {
@@ -16177,7 +16199,7 @@ function DisplayCell(props) {
16177
16199
  index,
16178
16200
  tableRef
16179
16201
  };
16180
- }, [row.original, props.children, value]);
16202
+ }, [row.original, props.children, value, tableMeta.columnFreezing.frozenColumnIndex]);
16181
16203
  const memoedHighlight = React__default.useMemo(() => {
16182
16204
  var _tableMeta$search$que;
16183
16205
  if (!tableMeta.search.isHighlightingEnabled || !columnMeta.enableSearch) {
@@ -16314,6 +16336,7 @@ const MemoedCell = /*#__PURE__*/React__default.memo(function MemoedCell(props) {
16314
16336
  const {
16315
16337
  actions,
16316
16338
  actionsLength,
16339
+ fontSize,
16317
16340
  isCurrentRow,
16318
16341
  isEditing,
16319
16342
  isResizingColumn,
@@ -16348,8 +16371,13 @@ const MemoedCell = /*#__PURE__*/React__default.memo(function MemoedCell(props) {
16348
16371
  const visibleActions = actions.map(action => action(row.original)).filter(action => !!action);
16349
16372
  const actionsOnRow = visibleActions.length === actionsLength ? visibleActions : visibleActions.slice(0, actionsLength - 1);
16350
16373
  const actionsInMenu = visibleActions.slice(visibleActions.length === actionsLength ? actionsLength : actionsLength - 1);
16374
+ const className = cn('-mb-2 flex justify-end pl-2 text-right', {
16375
+ // Adjust negative margin on row actions cell to ensure that the cell aligns vertically.
16376
+ '-mt-2': fontSize === 'small',
16377
+ '-mt-1.5': fontSize !== 'small'
16378
+ });
16351
16379
  content = /*#__PURE__*/React__default.createElement("span", {
16352
- className: "-mb-2 -mt-1.5 flex justify-end pl-2 text-right",
16380
+ className: className,
16353
16381
  ref: ref
16354
16382
  }, actionsOnRow.map((button, index) => {
16355
16383
  var _ref, _button$props$tooltip;
@@ -16385,6 +16413,7 @@ function Cell$1(context) {
16385
16413
  return /*#__PURE__*/React__default.createElement(MemoedCell, Object.assign({}, context, {
16386
16414
  actions: tableMeta.rowActions.actionsForRow,
16387
16415
  actionsLength: tableMeta.rowActions.actionsForRowLength,
16416
+ fontSize: tableMeta.fontSize.size,
16388
16417
  isCurrentRow: tableMeta.currentRow.currentRowIndex === rowIndex,
16389
16418
  isEditing: tableMeta.editing.isEditing,
16390
16419
  isResizingColumn: !!context.table.getState().columnSizingInfo.isResizingColumn,
@@ -16766,18 +16795,20 @@ function useSettingsStateListener$1(table, onChangeSettings) {
16766
16795
  React__default.useEffect(() => {
16767
16796
  let handler;
16768
16797
  if (typeof onChangeSettings === 'function') {
16769
- handler = setTimeout(() => onChangeSettings({
16770
- // adding a new setting? you need to add it to the print settings in PrintButton.tsx!
16771
- columnFreezingIndex: meta.columnFreezing.frozenColumnIndex,
16772
- columnOrder: state.columnOrder,
16773
- columnSizing: state.columnSizing,
16774
- columnVisibility: state.columnVisibility,
16775
- excludeUnmatchedRecordsInSearch: meta.search.excludeUnmatchedResults,
16776
- fontSize: meta.fontSize.size,
16777
- rowHeight: meta.rowHeight.height,
16778
- showWarningWhenPrintingLargeDataset: meta.printing.printWarningDialogVisibility,
16779
- sorting: state.sorting
16780
- }), 250);
16798
+ handler = setTimeout(() => {
16799
+ onChangeSettings({
16800
+ // adding a new setting? you need to add it to the print settings in PrintButton.tsx!
16801
+ columnFreezingIndex: meta.columnFreezing.frozenColumnIndex,
16802
+ columnOrder: meta.columnOrdering.isEnabled ? state.columnOrder : undefined,
16803
+ columnSizing: table.options.enableColumnResizing ? state.columnSizing : undefined,
16804
+ columnVisibility: table.options.enableHiding ? state.columnVisibility : undefined,
16805
+ excludeUnmatchedRecordsInSearch: meta.search.excludeUnmatchedResults,
16806
+ fontSize: meta.fontSize.isEnabled ? meta.fontSize.size : undefined,
16807
+ rowHeight: meta.rowHeight.isEnabled ? meta.rowHeight.height : undefined,
16808
+ showWarningWhenPrintingLargeDataset: meta.printing.printWarningDialogVisibility,
16809
+ sorting: state.sorting
16810
+ });
16811
+ }, 250);
16781
16812
  }
16782
16813
  return () => clearTimeout(handler);
16783
16814
  }, [meta.columnFreezing.frozenColumnIndex, state.columnOrder, state.columnSizing, state.columnVisibility, meta.search.excludeUnmatchedResults, meta.fontSize.size, meta.rowHeight.height, meta.printing.printWarningDialogVisibility, state.sorting]);
@@ -17551,6 +17582,10 @@ const Textarea = /*#__PURE__*/React.forwardRef(function Textarea(props, ref) {
17551
17582
  // if it has scroll height then the browser reverts to native scrolling behaviour only
17552
17583
  // so we manually override it to ensure _our_ desired behaviour remains intact
17553
17584
  const handleKeyDown = event => {
17585
+ // prevent any external keyboard shortcuts from executing while typing single characters in textarea
17586
+ if (event.key.length === 1) {
17587
+ event.stopPropagation();
17588
+ }
17554
17589
  if (event.key === 'Home' || event.key === 'End') {
17555
17590
  event.preventDefault();
17556
17591
  const position = event.key === 'End' ? event.currentTarget.value.length : 0;
@@ -17569,7 +17604,7 @@ const Textarea = /*#__PURE__*/React.forwardRef(function Textarea(props, ref) {
17569
17604
  }));
17570
17605
  });
17571
17606
 
17572
- const TextAreaControl = /*#__PURE__*/React__default.forwardRef(function TextAreaControl(props, externalRef) {
17607
+ const TextareaControl = /*#__PURE__*/React__default.forwardRef(function TextareaControl(props, externalRef) {
17573
17608
  const {
17574
17609
  onKeyDown: handleKeyDown,
17575
17610
  onChange: handleChange,
@@ -17787,7 +17822,7 @@ const EditingControl = /*#__PURE__*/React__default.forwardRef(function Control(p
17787
17822
  ref: refCallback
17788
17823
  }));
17789
17824
  } else if (controlRenderer === 'textarea') {
17790
- return /*#__PURE__*/React__default.createElement(TextAreaControl, Object.assign({}, props, {
17825
+ return /*#__PURE__*/React__default.createElement(TextareaControl, Object.assign({}, props, {
17791
17826
  isCellInDetailMode: isCellInDetailMode,
17792
17827
  onKeyDown: handleInputKeyDown,
17793
17828
  ref: refCallback
@@ -17899,7 +17934,7 @@ const MemoedEditingCell = /*#__PURE__*/React__default.memo(function MemoedEditin
17899
17934
  return removeMoveReason;
17900
17935
  }, [value]);
17901
17936
  const controlRenderer = (_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.control;
17902
- const className = cn('!px-2 py-[var(--table3-row-padding)]', {
17937
+ const className = cn('!px-[0.4375rem] py-[calc(var(--table3-row-padding)_-_0.06rem)]', {
17903
17938
  relative: (isCurrentRow || isHovered) && controlRenderer === 'textarea',
17904
17939
  // Need to set higher z-index, so that the current row textarea (in expanded state) overlaps rows below
17905
17940
  'z-10': isCurrentRow,
@@ -17919,6 +17954,7 @@ const MemoedEditingCell = /*#__PURE__*/React__default.memo(function MemoedEditin
17919
17954
  validationErrors: []
17920
17955
  }), /*#__PURE__*/React__default.createElement("div", {
17921
17956
  className: className,
17957
+ "data-align": columnMeta.align,
17922
17958
  "data-column-index": index,
17923
17959
  role: "cell",
17924
17960
  ref: cellRef
@@ -19312,10 +19348,13 @@ function resetHighlightedColumnIndexes(enabled, value, table) {
19312
19348
  table.getRowModel().rows.forEach((row, rowIndex) => {
19313
19349
  columns.forEach((column, columnIndex) => {
19314
19350
  try {
19315
- var _row$original, _column$columnDef$met;
19316
- 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);
19317
- if (cellValue && globalFilterFn$1(cellValue, value)) {
19318
- 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
+ }
19319
19358
  }
19320
19359
  } catch (e) {
19321
19360
  //
@@ -19944,7 +19983,9 @@ const PRINT_STYLES = `
19944
19983
 
19945
19984
  @media print {
19946
19985
  html, body, #root {
19947
- overflow: auto !important;
19986
+ // hides horizontal scrollbar
19987
+ overflow-x: none !important;
19988
+ overflow-y: auto !important;
19948
19989
  height: auto !important;
19949
19990
  width: auto !important;
19950
19991
  }
@@ -20087,14 +20128,14 @@ function PrintIFrame({
20087
20128
  };
20088
20129
  }, [mountNode, stylesReady]);
20089
20130
  React__default.useEffect(() => {
20090
- var _iframeWindow$parent$, _iframeWindow$parent$2;
20091
- if (!iframeWindow || !stylesReady) {
20131
+ var _contentRef$closest, _parentElement$innerH;
20132
+ if (!contentRef || !iframeWindow || !stylesReady) {
20092
20133
  return;
20093
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;
20094
20137
  const iframeDocument = iframeWindow.document;
20095
- // Only the content inside the main element will get printed along with the table.
20096
- 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) || '';
20097
- 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 : '';
20098
20139
  const tableElement = iframeDocument.querySelector('[role="table"]');
20099
20140
  const tableColumnFreezingStyles = iframeDocument.querySelector('[data-taco="table3-column-freezing-styles"]');
20100
20141
  const tableWrapper = iframeDocument.createElement('div');
@@ -20690,11 +20731,6 @@ const Table$1 = /*#__PURE__*/fixedForwardRef(function Table3(props, ref) {
20690
20731
  const bodyRef = React__default.useRef(null);
20691
20732
  React__default.useEffect(() => {
20692
20733
  const handleKeyDown = event => {
20693
- var _bodyRef$current;
20694
- // prevent global shortcuts activating while active in other elements, like inputs or buttons
20695
- if (isEventTriggeredOnInteractiveElement(event.target) && !(bodyRef !== null && bodyRef !== void 0 && (_bodyRef$current = bodyRef.current) !== null && _bodyRef$current !== void 0 && _bodyRef$current.contains(event.target))) {
20696
- return;
20697
- }
20698
20734
  tableMeta.hoverState.handleKeyDown(event);
20699
20735
  tableMeta.currentRow.handleKeyDown(event, table.getRowModel().rows.length, scrollToIndex);
20700
20736
  tableMeta.rowClick.handleKeyDown(event, table);