@economic/taco 2.14.2 → 2.16.0

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 (117) hide show
  1. package/dist/components/Drawer/Drawer.d.ts +5 -1
  2. package/dist/components/Icon/components/AiChatSolid.d.ts +3 -0
  3. package/dist/components/Icon/components/AiStars.d.ts +3 -0
  4. package/dist/components/Icon/components/EnvelopeSolid.d.ts +3 -0
  5. package/dist/components/Icon/components/PhoneSolid.d.ts +3 -0
  6. package/dist/components/Icon/components/QuestionMarkBold.d.ts +3 -0
  7. package/dist/components/Icon/components/index.d.ts +1 -1
  8. package/dist/components/Input/Input.d.ts +1 -1
  9. package/dist/components/Menu/components/Item.d.ts +1 -1
  10. package/dist/components/Menu/components/Link.d.ts +1 -1
  11. package/dist/components/Navigation2/components/Link.d.ts +1 -1
  12. package/dist/components/Provider/Localization.d.ts +19 -0
  13. package/dist/components/SearchInput2/SearchInput2.d.ts +1 -0
  14. package/dist/components/Select2/components/Option.d.ts +2 -2
  15. package/dist/components/Select2/components/Search.d.ts +1 -1
  16. package/dist/components/Table3/components/alert/ErrorAlert.d.ts +10 -0
  17. package/dist/components/Table3/components/columns/cell/DisplayCell.d.ts +5 -2
  18. package/dist/components/Table3/components/columns/cell/EditingCell.d.ts +3 -0
  19. package/dist/components/Table3/components/columns/cell/Highlight.d.ts +2 -0
  20. package/dist/components/Table3/components/columns/internal/EditingActions.d.ts +1 -1
  21. package/dist/components/Table3/components/rows/Row.d.ts +2 -0
  22. package/dist/components/Table3/components/rows/RowContext.d.ts +1 -0
  23. package/dist/components/Table3/hooks/features/useEditing.d.ts +12 -11
  24. package/dist/components/Table3/hooks/features/usePauseShortcuts.d.ts +5 -0
  25. package/dist/components/Table3/hooks/features/useSearch.d.ts +2 -0
  26. package/dist/components/Table3/hooks/features/useValidation.d.ts +13 -0
  27. package/dist/components/Table3/hooks/useTable.d.ts +4 -0
  28. package/dist/components/Table3/types.d.ts +26 -1
  29. package/dist/components/Table3/util/editing.d.ts +6 -0
  30. package/dist/components/Tag/Tag.d.ts +1 -1
  31. package/dist/components/Tooltip/Tooltip.d.ts +4 -0
  32. package/dist/esm/index.css +112 -33
  33. package/dist/esm/packages/taco/src/components/Drawer/Drawer.js +7 -2
  34. package/dist/esm/packages/taco/src/components/Drawer/Drawer.js.map +1 -1
  35. package/dist/esm/packages/taco/src/components/Field/Field.js +19 -3
  36. package/dist/esm/packages/taco/src/components/Field/Field.js.map +1 -1
  37. package/dist/esm/packages/taco/src/components/Icon/components/AiChatSolid.js +19 -0
  38. package/dist/esm/packages/taco/src/components/Icon/components/AiChatSolid.js.map +1 -0
  39. package/dist/esm/packages/taco/src/components/Icon/components/AiStars.js +30 -0
  40. package/dist/esm/packages/taco/src/components/Icon/components/AiStars.js.map +1 -0
  41. package/dist/esm/packages/taco/src/components/Icon/components/EnvelopeSolid.js +19 -0
  42. package/dist/esm/packages/taco/src/components/Icon/components/EnvelopeSolid.js.map +1 -0
  43. package/dist/esm/packages/taco/src/components/Icon/components/PhoneSolid.js +17 -0
  44. package/dist/esm/packages/taco/src/components/Icon/components/PhoneSolid.js.map +1 -0
  45. package/dist/esm/packages/taco/src/components/Icon/components/QuestionMarkBold.js +17 -0
  46. package/dist/esm/packages/taco/src/components/Icon/components/QuestionMarkBold.js.map +1 -0
  47. package/dist/esm/packages/taco/src/components/Icon/components/index.js +10 -0
  48. package/dist/esm/packages/taco/src/components/Icon/components/index.js.map +1 -1
  49. package/dist/esm/packages/taco/src/components/Provider/Localization.js +19 -0
  50. package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
  51. package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js +4 -0
  52. package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js.map +1 -1
  53. package/dist/esm/packages/taco/src/components/Table3/Table3.js +28 -4
  54. package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
  55. package/dist/esm/packages/taco/src/components/Table3/components/alert/ErrorAlert.js +154 -0
  56. package/dist/esm/packages/taco/src/components/Table3/components/alert/ErrorAlert.js.map +1 -0
  57. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/Cell.js +51 -6
  58. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/Cell.js.map +1 -1
  59. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/DisplayCell.js +7 -55
  60. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/DisplayCell.js.map +1 -1
  61. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingCell.js +69 -37
  62. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingCell.js.map +1 -1
  63. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingControl.js +17 -17
  64. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingControl.js.map +1 -1
  65. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/Highlight.js +41 -0
  66. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/Highlight.js.map +1 -0
  67. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/controls/TextareaControl.js +21 -12
  68. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/controls/TextareaControl.js.map +1 -1
  69. package/dist/esm/packages/taco/src/components/Table3/components/columns/footer/Footer.js +1 -1
  70. package/dist/esm/packages/taco/src/components/Table3/components/columns/footer/Footer.js.map +1 -1
  71. package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Group.js +6 -5
  72. package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Group.js.map +1 -1
  73. package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Header.js +2 -2
  74. package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Header.js.map +1 -1
  75. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/EditingActions.js +57 -17
  76. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/EditingActions.js.map +1 -1
  77. package/dist/esm/packages/taco/src/components/Table3/components/rows/Row.js +42 -32
  78. package/dist/esm/packages/taco/src/components/Table3/components/rows/Row.js.map +1 -1
  79. package/dist/esm/packages/taco/src/components/Table3/components/rows/RowContext.js +2 -1
  80. package/dist/esm/packages/taco/src/components/Table3/components/rows/RowContext.js.map +1 -1
  81. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/Filters.js +8 -1
  82. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/Filters.js.map +1 -1
  83. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/hooks/useParentStylesheets.js +2 -1
  84. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/hooks/useParentStylesheets.js.map +1 -1
  85. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Search.js +48 -1
  86. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Search.js.map +1 -1
  87. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Settings.js +2 -2
  88. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Settings.js.map +1 -1
  89. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Toolbar.js +1 -1
  90. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Toolbar.js.map +1 -1
  91. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useEditing.js +185 -101
  92. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useEditing.js.map +1 -1
  93. package/dist/esm/packages/taco/src/components/Table3/hooks/features/usePauseShortcuts.js +12 -0
  94. package/dist/esm/packages/taco/src/components/Table3/hooks/features/usePauseShortcuts.js.map +1 -0
  95. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useSearch.js +4 -1
  96. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useSearch.js.map +1 -1
  97. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useValidation.js +178 -0
  98. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useValidation.js.map +1 -0
  99. package/dist/esm/packages/taco/src/components/Table3/hooks/useConvertChildrenToColumns.js +1 -1
  100. package/dist/esm/packages/taco/src/components/Table3/hooks/useConvertChildrenToColumns.js.map +1 -1
  101. package/dist/esm/packages/taco/src/components/Table3/hooks/useTable.js +8 -2
  102. package/dist/esm/packages/taco/src/components/Table3/hooks/useTable.js.map +1 -1
  103. package/dist/esm/packages/taco/src/components/Table3/strategies/virtualised.js +1 -1
  104. package/dist/esm/packages/taco/src/components/Table3/types.js.map +1 -1
  105. package/dist/esm/packages/taco/src/components/Table3/util/editing.js +21 -1
  106. package/dist/esm/packages/taco/src/components/Table3/util/editing.js.map +1 -1
  107. package/dist/esm/packages/taco/src/components/Tooltip/Tooltip.js +4 -0
  108. package/dist/esm/packages/taco/src/components/Tooltip/Tooltip.js.map +1 -1
  109. package/dist/esm/packages/taco/src/utils/hooks/useTruncated.js +20 -0
  110. package/dist/esm/packages/taco/src/utils/hooks/useTruncated.js.map +1 -0
  111. package/dist/index.css +112 -33
  112. package/dist/taco.cjs.development.js +1735 -957
  113. package/dist/taco.cjs.development.js.map +1 -1
  114. package/dist/taco.cjs.production.min.js +1 -1
  115. package/dist/taco.cjs.production.min.js.map +1 -1
  116. package/package.json +2 -2
  117. package/types.json +23852 -10957
@@ -1,10 +1,13 @@
1
1
  /// <reference types="react" />
2
2
  import { TableMeta, CellContext } from '@tanstack/react-table';
3
3
  export declare type EditingCellProps<TType = unknown> = CellContext<TType, unknown> & {
4
+ highlighted?: boolean;
5
+ highlightedAsCurrent?: boolean;
4
6
  children?: string | JSX.Element;
5
7
  };
6
8
  export declare function EditingCell<TType = unknown>(props: EditingCellProps<TType>): JSX.Element;
7
9
  export declare type MemoedEditingCellProps<TType = unknown> = EditingCellProps<TType> & {
8
10
  isHovered: boolean;
9
11
  tableMeta: TableMeta<TType>;
12
+ error?: string;
10
13
  };
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare const Highlight: (props: any) => JSX.Element;
@@ -5,4 +5,4 @@ export declare type EditingActionsProps<TType = unknown> = CellContext<TType, un
5
5
  };
6
6
  export declare const COLUMN_ID = "__editing_actions";
7
7
  export declare const EDITING_ACTIONS_WIDTH = 60;
8
- export declare function createRowEditingActionsColumn<TType = unknown>(): DisplayColumnDef<TType, unknown>;
8
+ export declare function createRowEditingActionsColumn<TType = unknown>(rowIdentifier?: string): DisplayColumnDef<TType, unknown>;
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { Row as RTRow, Table as RTable } from '@tanstack/react-table';
3
3
  import { Table3RowClickHandler, Table3RowDropHandler } from '../../types';
4
+ import { LastCellIndex } from '../../util/editing';
4
5
  declare type RowProps<TType = unknown> = Omit<React.HTMLAttributes<HTMLDivElement>, 'onClick' | 'onDrop'> & {
5
6
  index: number;
6
7
  isLastRow: boolean;
@@ -12,6 +13,7 @@ declare type RowProps<TType = unknown> = Omit<React.HTMLAttributes<HTMLDivElemen
12
13
  tableRef: React.RefObject<HTMLDivElement>;
13
14
  };
14
15
  export declare function Row<TType = unknown>(props: RowProps<TType>): JSX.Element;
16
+ export declare const lastCellIndex: LastCellIndex;
15
17
  export declare type MemoedRowProps<TType = unknown> = RowProps<TType> & {
16
18
  'aria-grabbed'?: boolean;
17
19
  'data-current': boolean;
@@ -3,6 +3,7 @@ declare type RowContextValue = {
3
3
  isHovered: boolean;
4
4
  setIsHovered: (value: boolean) => void;
5
5
  rowIndex: number;
6
+ hasError: boolean;
6
7
  };
7
8
  export declare const RowContext: React.Context<RowContextValue>;
8
9
  export declare const useRowContext: () => RowContextValue;
@@ -1,30 +1,31 @@
1
1
  import React from 'react';
2
2
  import { Cell as RTCell } from '@tanstack/react-table';
3
+ import { Table3SaveHandler } from '../../types';
3
4
  import { IndicatorReason } from '../../components/columns/cell/Indicator';
4
- export declare enum SavingStateValue {
5
+ import { Table3Validation } from './useValidation';
6
+ export declare enum SavingStatusValue {
5
7
  Saving = "saving",
6
8
  Saved = "saved",
7
9
  Error = "error"
8
10
  }
9
- export declare type SavingState = {
10
- state: SavingStateValue;
11
- };
12
- export declare function useEditing<TType = unknown>(isEnabled: boolean, onSave?: (row: TType) => void): {
11
+ export declare function useEditing<TType = unknown>(isEnabled: boolean, validation: Table3Validation<TType>, onSave?: Table3SaveHandler<TType>): {
13
12
  isEnabled: boolean;
14
13
  isEditing: boolean;
15
14
  toggleEditing: React.Dispatch<React.SetStateAction<boolean>>;
16
- changes: Record<string, TType> | null;
15
+ changes: EditingState<TType>;
17
16
  getCellValue: <T extends TType>(cell: RTCell<T, unknown>) => any;
18
17
  setCellValue: <T_1 extends TType>(cell: RTCell<T_1, unknown>, value: unknown) => void;
19
18
  saveChangesIfNeeded: () => Promise<void>;
20
19
  detailModeEditing: boolean;
21
20
  setDetailModeEditing: React.Dispatch<React.SetStateAction<boolean>>;
22
- rowMoveReason: Record<string, IndicatorReason | null>;
23
- setRowMoveReason: React.Dispatch<React.SetStateAction<Record<string, IndicatorReason | null>>>;
24
- removeRowMoveReason: (columnId: string) => void;
21
+ rowMoveReason: Record<string, IndicatorReason | null> | null;
22
+ setRowMoveReason: React.Dispatch<React.SetStateAction<Record<string, IndicatorReason | null> | null>>;
23
+ removeRowMoveReason: () => void;
25
24
  handleKeyDown: (event: KeyboardEvent) => void;
26
25
  handleBlur: (event: React.FocusEvent) => void;
27
26
  resetChange: (rowId: string) => void;
28
- savingStates: Record<string, SavingState> | null;
29
- removeSavingState: (rowId: string) => void;
27
+ getSavingStatus: (rowId: string) => SavingStatusValue | null;
28
+ resetSavingStatus: (rowId: string) => void;
30
29
  };
30
+ declare type EditingState<TType = unknown> = Record<string, TType> | null;
31
+ export {};
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export declare function usePauseShortcuts(): {
3
+ isPaused: boolean;
4
+ pause: React.Dispatch<React.SetStateAction<boolean>>;
5
+ };
@@ -13,4 +13,6 @@ export declare function useSearch(isEnabled: boolean, excludeUnmatchedResultsInS
13
13
  currentHighlightColumnIndex: number | undefined;
14
14
  setCurrentHighlightColumnIndex: React.Dispatch<React.SetStateAction<number | undefined>>;
15
15
  loadAll: Table3LoadAllHandler | undefined;
16
+ isSearching: boolean;
17
+ setIsSearching: React.Dispatch<React.SetStateAction<boolean>>;
16
18
  };
@@ -0,0 +1,13 @@
1
+ import { Cell as RTCell } from '@tanstack/react-table';
2
+ import { RowErrors, Table3CellValidationHandler, Table3RowValidationHandler } from '../../types';
3
+ export declare type Table3Validation<TType = unknown> = {
4
+ validate: (rowId: string, row: TType, cellId?: string) => Promise<void | RowErrors>;
5
+ setCellError: (rowId: string, cellId: string, error: string) => void;
6
+ setRowErrors: (rowId: string, errors: Record<string, string>) => void;
7
+ confirmErrors: (rowId: string) => void;
8
+ getCellError: <T extends TType>(cell: RTCell<T, unknown>) => string | undefined;
9
+ resetErrors: (rowId: string, cellId?: string) => void;
10
+ errors: Record<string, RowErrors> | null;
11
+ draftErrors: Record<string, RowErrors> | null;
12
+ };
13
+ export declare function useValidation<TType = unknown>(onCellValidate?: Table3CellValidationHandler<TType>, onRowValidate?: Table3RowValidationHandler<TType>): Table3Validation<TType>;
@@ -16,6 +16,8 @@ import { usePrinting } from './features/usePrinting';
16
16
  import { useRowGoto } from './features/useRowGoto';
17
17
  import { useSearch } from './features/useSearch';
18
18
  import { useRowActions } from './features/useRowActions';
19
+ import { Table3Validation } from './features/useValidation';
20
+ import { usePauseShortcuts } from './features/usePauseShortcuts';
19
21
  declare module '@tanstack/table-core' {
20
22
  interface TableMeta<TData extends RowData> {
21
23
  columnFreezing: ReturnType<typeof useColumnFreezing>;
@@ -37,6 +39,8 @@ declare module '@tanstack/table-core' {
37
39
  rowHeight: ReturnType<typeof useRowHeight>;
38
40
  rowSelection: ReturnType<typeof useRowSelection>;
39
41
  search: ReturnType<typeof useSearch>;
42
+ shortcutsState: ReturnType<typeof usePauseShortcuts>;
43
+ validation: Table3Validation<TData>;
40
44
  }
41
45
  interface ColumnMeta<TData extends RowData, TValue> {
42
46
  align?: Table3ColumnAlignment;
@@ -17,7 +17,7 @@ export declare type Table3ColumnControlProps = {
17
17
  onBlur?: (value: any) => void;
18
18
  onFocus?: React.FocusEventHandler;
19
19
  readOnly?: boolean;
20
- ref: React.RefObject<HTMLElement>;
20
+ ref: React.RefObject<HTMLElement> | ((instance: HTMLElement | null | undefined) => void);
21
21
  setValue: (value: any) => void;
22
22
  value: any;
23
23
  };
@@ -112,6 +112,9 @@ export declare type Table3LoadAllHandler = (sorting: Table3ColumnSort[], filters
112
112
  export declare type Table3RowGotoHandler = (column: string, query: string, sorting: Table3ColumnSort[], filters: ColumnFilter[], search: string | undefined) => Promise<number>;
113
113
  export declare type Table3ColumnSort = RTTableColumnSort;
114
114
  export declare type Table3SortHandler = (sorting: Table3ColumnSort[]) => void;
115
+ export declare type RowErrors = Record<string, string>;
116
+ export declare type Table3CellValidationHandler<TType = unknown> = (cellValue: any, cellId: string, row: TType) => Promise<RowErrors | undefined | void>;
117
+ export declare type Table3RowValidationHandler<TType = unknown> = (row: TType) => Promise<RowErrors | undefined | void>;
115
118
  export declare type TableStrategy = {
116
119
  renderBody: () => JSX.Element | JSX.Element[] | null;
117
120
  scrollToIndex: (index: number, options?: {
@@ -169,10 +172,13 @@ export declare type Table3CommonProps<TType = unknown> = Partial<Table3Options>
169
172
  onFilter?: Table3FilterHandler;
170
173
  onSave?: Table3SaveHandler<TType>;
171
174
  onSort?: Table3SortHandler;
175
+ onCellValidate?: Table3CellValidationHandler<TType>;
176
+ onRowValidate?: Table3RowValidationHandler<TType>;
172
177
  preset?: Table3Preset;
173
178
  shortcuts?: Table3Shortcuts<TType>;
174
179
  toolbarLeft?: JSX.Element;
175
180
  toolbarRight?: JSX.Element;
181
+ rowIdentifier?: string;
176
182
  };
177
183
  interface Table3ClientProps<TType = unknown> extends Table3CommonProps<TType> {
178
184
  length?: never;
@@ -262,6 +268,12 @@ export declare type Table3Texts = {
262
268
  progress: string;
263
269
  complete: string;
264
270
  };
271
+ clearChangesConfirmationDialog: {
272
+ title: string;
273
+ description: string;
274
+ cancel: string;
275
+ confirm: string;
276
+ };
265
277
  };
266
278
  filters: {
267
279
  button: string;
@@ -344,5 +356,18 @@ export declare type Table3Texts = {
344
356
  otherOptions: {
345
357
  tooltip: string;
346
358
  };
359
+ validation: {
360
+ index: string;
361
+ alert: {
362
+ unsavedEntries: (count?: number) => string;
363
+ incompleteAndHavntBeenSaved: (count?: number) => string;
364
+ };
365
+ resetFiltersDialog: {
366
+ title: string;
367
+ description: string;
368
+ cancel: string;
369
+ confirm: string;
370
+ };
371
+ };
347
372
  };
348
373
  export {};
@@ -2,3 +2,9 @@ export declare const focussableNodeNames: string[];
2
2
  export declare const focusableSelector: string;
3
3
  export declare const hasChanged: (value: any, newValue: any) => boolean;
4
4
  export declare const willRowMoveAfterSorting: (value: any, cell: any, rowIndex: any, rows: any, desc: any) => boolean;
5
+ export declare class LastCellIndex {
6
+ _value: string | null | undefined;
7
+ get value(): string | null | undefined;
8
+ set value(val: string | null | undefined);
9
+ }
10
+ export declare function getColumnIndex(element: Element): string | null | undefined;
@@ -13,7 +13,7 @@ export declare const Tag: React.ForwardRefExoticComponent<Pick<React.HTMLAttribu
13
13
  children: string;
14
14
  color?: "green" | "yellow" | "red" | "blue" | "purple" | "brown" | "pink" | "orange" | "grey" | "transparent" | undefined;
15
15
  disabled?: boolean | undefined;
16
- icon?: React.ReactElement<IconProps, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)> | "account-preview" | "accounting-year-cancel" | "accounting-year" | "accounting" | "arrow-bottom" | "arrow-down" | "arrow-end" | "arrow-left" | "arrow-right" | "arrow-start" | "arrow-top" | "arrow-up" | "attach-auto" | "attach-cancel" | "attach-warning" | "attach" | "autotext-insert" | "autotext" | "basic-tabs" | "basic" | "bell-solid" | "book" | "booking" | "budget" | "calendar" | "cash-account" | "cash-reports" | "chart-area" | "chart-bar" | "chart-line" | "chart-pie" | "chart-table" | "chat-solid" | "chat" | "chevron-down-double" | "chevron-down-solid" | "chevron-down" | "chevron-left-double" | "chevron-left-solid" | "chevron-left" | "chevron-right-double" | "chevron-right-solid" | "chevron-right" | "chevron-up-double" | "chevron-up-solid" | "chevron-up" | "circle-close" | "circle-information" | "circle-minus" | "circle-plus" | "circle-questionmark" | "circle-tick" | "circle-warning" | "clamp-open" | "clamp" | "close" | "column-freeze" | "column-unfreeze" | "columns" | "connection-enable" | "connection-revoke" | "contacts" | "copy" | "courses" | "credit" | "delete-permanently" | "delete" | "depecriate" | "developer" | "distribution-template" | "document-approve" | "document-create-entry" | "document-cut" | "document-error" | "document-isolate-page" | "document-merge" | "document-move" | "document-preview" | "document-received" | "document-rejected-request" | "document-split" | "document-time" | "document" | "download" | "drag" | "e-copedia" | "e-signature" | "edit-simple" | "edit" | "ellipsis-horizontal" | "ellipsis-vertical" | "entries-on-account" | "entries-open" | "entries-warning" | "entry-type-customer-invoice" | "entry-type-customer-payment" | "entry-type-journal-entry" | "entry-type-manual-customer-invoice" | "entry-type-supplier-invoice" | "entry-type-supplier-payment" | "envelope-approved" | "envelope" | "expand-view" | "expenses" | "export-to-excel" | "export-to-pdf" | "export" | "eye-off" | "eye-on" | "filter-solid" | "filter" | "font-size" | "graph-solid" | "hash" | "height-extra-tall" | "height-medium" | "height-short" | "height-tall" | "home" | "images" | "import" | "inbox-einvoicing" | "inbox-scanning" | "inbox-smart" | "inbox" | "info" | "inventory-matrix" | "inventory" | "journal-pro" | "layout-both" | "layout-first" | "layout-last" | "layout-none" | "layout" | "ledger-card-customer-reminder" | "ledger-card-manual-customer-invoice" | "ledger-card-obsolete-stock" | "ledger-card-opening-entry" | "ledger-card-reserved-entry" | "ledger-card-shrinkage-pilferage" | "ledger-card-stock-adjustment" | "ledger-card-transferred-opening-entry" | "ledger-card" | "lightbulb" | "line" | "list-bulleted" | "list-search" | "list" | "location" | "lock-open" | "lock" | "log-out" | "log" | "market" | "match-amount" | "match-entries" | "menu" | "mileage" | "modal-resize" | "modal-shrink" | "more-solid" | "more" | "move" | "navigation-list" | "note-follow-up" | "note-read" | "note" | "numbers" | "partner-api" | "payment-paid" | "payment-unpaid" | "period" | "person-change" | "person-minus" | "person-plus" | "person-tick" | "play" | "plus-minus" | "print" | "process-payment" | "product-ledger-card" | "profile" | "project-cards" | "projects" | "question-mark" | "quicklinks" | "rating-bankruptcy" | "rating-payment-problems" | "reconciled" | "refresh" | "report-solid" | "report" | "restore" | "rotate-left" | "rotate-right" | "sales" | "search-bold" | "search" | "secure-tick" | "secure" | "settings-solid" | "settings" | "shortcuts" | "show-all" | "show-less" | "show-more" | "show-template" | "sliders" | "smartpay" | "sort-by" | "star-solid" | "star" | "subscriptions" | "system-entries" | "tag" | "template-override" | "templates" | "thumb-both" | "thumb-down-solid" | "thumb-down" | "thumb-up-solid" | "thumb-up" | "tick-bold" | "tick" | "time" | "transfer-cancel" | "transfer-locked" | "transfer" | "undo" | "undock" | "unreconciled" | "warning" | "webshop" | "website" | "workflow-template-basic" | "workflow" | "zoom" | undefined;
16
+ icon?: React.ReactElement<IconProps, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)> | "account-preview" | "accounting-year-cancel" | "accounting-year" | "accounting" | "ai-chat-solid" | "ai-stars" | "arrow-bottom" | "arrow-down" | "arrow-end" | "arrow-left" | "arrow-right" | "arrow-start" | "arrow-top" | "arrow-up" | "attach-auto" | "attach-cancel" | "attach-warning" | "attach" | "autotext-insert" | "autotext" | "basic-tabs" | "basic" | "bell-solid" | "book" | "booking" | "budget" | "calendar" | "cash-account" | "cash-reports" | "chart-area" | "chart-bar" | "chart-line" | "chart-pie" | "chart-table" | "chat-solid" | "chat" | "chevron-down-double" | "chevron-down-solid" | "chevron-down" | "chevron-left-double" | "chevron-left-solid" | "chevron-left" | "chevron-right-double" | "chevron-right-solid" | "chevron-right" | "chevron-up-double" | "chevron-up-solid" | "chevron-up" | "circle-close" | "circle-information" | "circle-minus" | "circle-plus" | "circle-questionmark" | "circle-tick" | "circle-warning" | "clamp-open" | "clamp" | "close" | "column-freeze" | "column-unfreeze" | "columns" | "connection-enable" | "connection-revoke" | "contacts" | "copy" | "courses" | "credit" | "delete-permanently" | "delete" | "depecriate" | "developer" | "distribution-template" | "document-approve" | "document-create-entry" | "document-cut" | "document-error" | "document-isolate-page" | "document-merge" | "document-move" | "document-preview" | "document-received" | "document-rejected-request" | "document-split" | "document-time" | "document" | "download" | "drag" | "e-copedia" | "e-signature" | "edit-simple" | "edit" | "ellipsis-horizontal" | "ellipsis-vertical" | "entries-on-account" | "entries-open" | "entries-warning" | "entry-type-customer-invoice" | "entry-type-customer-payment" | "entry-type-journal-entry" | "entry-type-manual-customer-invoice" | "entry-type-supplier-invoice" | "entry-type-supplier-payment" | "envelope-approved" | "envelope-solid" | "envelope" | "expand-view" | "expenses" | "export-to-excel" | "export-to-pdf" | "export" | "eye-off" | "eye-on" | "filter-solid" | "filter" | "font-size" | "graph-solid" | "hash" | "height-extra-tall" | "height-medium" | "height-short" | "height-tall" | "home" | "images" | "import" | "inbox-einvoicing" | "inbox-scanning" | "inbox-smart" | "inbox" | "info" | "inventory-matrix" | "inventory" | "journal-pro" | "layout-both" | "layout-first" | "layout-last" | "layout-none" | "layout" | "ledger-card-customer-reminder" | "ledger-card-manual-customer-invoice" | "ledger-card-obsolete-stock" | "ledger-card-opening-entry" | "ledger-card-reserved-entry" | "ledger-card-shrinkage-pilferage" | "ledger-card-stock-adjustment" | "ledger-card-transferred-opening-entry" | "ledger-card" | "lightbulb" | "line" | "list-bulleted" | "list-search" | "list" | "location" | "lock-open" | "lock" | "log-out" | "log" | "market" | "match-amount" | "match-entries" | "menu" | "mileage" | "modal-resize" | "modal-shrink" | "more-solid" | "more" | "move" | "navigation-list" | "note-follow-up" | "note-read" | "note" | "numbers" | "partner-api" | "payment-paid" | "payment-unpaid" | "period" | "person-change" | "person-minus" | "person-plus" | "person-tick" | "phone-solid" | "play" | "plus-minus" | "print" | "process-payment" | "product-ledger-card" | "profile" | "project-cards" | "projects" | "question-mark-bold" | "question-mark" | "quicklinks" | "rating-bankruptcy" | "rating-payment-problems" | "reconciled" | "refresh" | "report-solid" | "report" | "restore" | "rotate-left" | "rotate-right" | "sales" | "search-bold" | "search" | "secure-tick" | "secure" | "settings-solid" | "settings" | "shortcuts" | "show-all" | "show-less" | "show-more" | "show-template" | "sliders" | "smartpay" | "sort-by" | "star-solid" | "star" | "subscriptions" | "system-entries" | "tag" | "template-override" | "templates" | "thumb-both" | "thumb-down-solid" | "thumb-down" | "thumb-up-solid" | "thumb-up" | "tick-bold" | "tick" | "time" | "transfer-cancel" | "transfer-locked" | "transfer" | "undo" | "undock" | "unreconciled" | "warning" | "webshop" | "website" | "workflow-template-basic" | "workflow" | "zoom" | undefined;
17
17
  readOnly?: boolean | undefined;
18
18
  onDelete?: ((event: React.MouseEvent<SVGSVGElement>) => void) | undefined;
19
19
  } & React.RefAttributes<HTMLSpanElement>>;
@@ -2,6 +2,8 @@ import * as React from 'react';
2
2
  export declare type TooltipProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> & {
3
3
  /** The element which activates the tooltip when hovered. Should be a single React/HTML element */
4
4
  children: React.ReactElement | any;
5
+ /** Use this value to hide tooltip conditionally */
6
+ hide?: boolean;
5
7
  /** Text displayed in the tooltip */
6
8
  title: string | JSX.Element;
7
9
  /**
@@ -13,6 +15,8 @@ export declare type TooltipProps = Omit<React.HTMLAttributes<HTMLDivElement>, 't
13
15
  export declare const Tooltip: React.ForwardRefExoticComponent<Pick<React.HTMLAttributes<HTMLDivElement>, "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "nonce" | "placeholder" | "slot" | "spellCheck" | "style" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture"> & {
14
16
  /** The element which activates the tooltip when hovered. Should be a single React/HTML element */
15
17
  children: React.ReactElement | any;
18
+ /** Use this value to hide tooltip conditionally */
19
+ hide?: boolean | undefined;
16
20
  /** Text displayed in the tooltip */
17
21
  title: string | JSX.Element;
18
22
  /**
@@ -652,6 +652,10 @@
652
652
  @apply flex;
653
653
  }
654
654
 
655
+ [data-taco='table3-column-group'] > div {
656
+ @apply grow;
657
+ }
658
+
655
659
  /* In cases where row height might differ from default one (example: textarea without truncate or changing of font size or row height),
656
660
  we need to prevent editing controls to take all available space */
657
661
  [role='cell']:not([data-highlighted='true']) {
@@ -701,94 +705,108 @@
701
705
  }
702
706
 
703
707
  /* normal rows */
704
- [role='row']:not([data-selected='true']):not([data-error='true']) [role='cell'] {
708
+ [role='row']:not([data-selected='true']):not([data-invalid='true']) [role='cell'] {
705
709
  @apply bg-white;
706
710
  }
707
- [role='row']:not([data-selected='true']):not([data-error='true']):hover [role='cell'] {
711
+ [role='row']:not([data-selected='true']):not([data-invalid='true']):hover [role='cell'] {
708
712
  --table3-row-actions-shadow: theme(colors.grey.100);
709
713
  @apply bg-grey-100;
710
714
  }
711
- [role='row']:not([data-selected='true']):not([data-error='true'])[data-current='true'] [role='cell'] {
715
+ [role='row']:not([data-selected='true']):not([data-invalid='true'])[data-current='true'] [role='cell'] {
712
716
  --table3-row-actions-shadow: theme(colors.grey.100);
713
717
  @apply bg-grey-100;
714
718
  }
715
- [role='row']:not([data-selected='true']):not([data-error='true'])[data-current='true']:hover [role='cell'] {
719
+ [role='row']:not([data-selected='true']):not([data-invalid='true'])[data-current='true']:hover [role='cell'] {
716
720
  --table3-row-actions-shadow: theme(colors.grey.100);
717
721
  @apply bg-grey-100;
718
722
  }
723
+ /* Fields shouldn’t have white background when not in current row and hovered*/
724
+ [role='row']:not([data-selected='true']):not([data-invalid='true'])[data-current='false']:hover [role='cell'] .bg-white {
725
+ @apply !bg-grey-100;
726
+ }
719
727
  /* normal rows when focus is inside the table */
720
728
  [data-taco='table2']:focus-within
721
- [role='row'][data-current='true']:not([data-selected='true']):not([data-error='true'])
729
+ [role='row'][data-current='true']:not([data-selected='true']):not([data-invalid='true'])
722
730
  [role='cell'] {
723
731
  --table3-row-actions-shadow: theme(colors.grey.200);
724
732
  @apply bg-grey-200;
725
733
  }
726
734
  /* normal rows when hover is paused */
727
- [data-pause-hover='true'] [role='row']:not([data-selected='true']):not([data-error='true']):hover:not([data-current='true']) [role='cell'] {
735
+ [data-pause-hover='true'] [role='row']:not([data-selected='true']):not([data-invalid='true']):hover:not([data-current='true']) [role='cell'] {
728
736
  --table3-row-actions-shadow: theme(colors.white);
729
737
  @apply !bg-white;
730
738
  }
731
- [data-pause-hover='true'] [role='row']:not([data-selected='true']):not([data-error='true']):hover[data-current='true'] [role='cell'] {
739
+ [data-pause-hover='true'] [role='row']:not([data-selected='true']):not([data-invalid='true']):hover[data-current='true'] [role='cell'] {
732
740
  --table3-row-actions-shadow: theme(colors.grey.200);
733
741
  @apply !bg-grey-200;
734
742
  }
735
743
 
736
744
  /* selected rows */
737
- [role='row'][data-selected='true']:not([data-error='true']) [role='cell'] {
745
+ [role='row'][data-selected='true']:not([data-invalid='true']) [role='cell'] {
738
746
  @apply bg-blue-100;
739
747
  }
740
- [role='row'][data-selected='true']:not([data-error='true']):hover [role='cell'] {
748
+ [role='row'][data-selected='true']:not([data-invalid='true']):hover [role='cell'] {
741
749
  --table3-row-actions-shadow: #d6e3f6;
742
750
  @apply bg-[#D6E3F6];
743
751
  }
744
- [role='row'][data-selected='true']:not([data-error='true'])[data-current='true']:hover [role='cell'],
752
+ [role='row'][data-selected='true']:not([data-invalid='true'])[data-current='true']:hover [role='cell'],
745
753
 
746
- [role='row'][data-selected='true']:not([data-error='true'])[data-current='true'] [role='cell'] {
754
+ [role='row'][data-selected='true']:not([data-invalid='true'])[data-current='true'] [role='cell'] {
747
755
  --table3-row-actions-shadow: #d6e3f6;
748
756
  @apply bg-[#D6E3F6];
749
757
  }
750
758
  /* selected rows when focus is inside the table */
751
- [data-taco='table2']:focus-within [role='row'][data-current='true'][data-selected='true']:not([data-error='true']) [role='cell'] {
759
+ [data-taco='table2']:focus-within
760
+ [role='row'][data-current='true'][data-selected='true']:not([data-invalid='true'])
761
+ [role='cell'] {
752
762
  --table3-row-actions-shadow: #ccd8eb;
753
763
  @apply bg-[#CCD8EB];
754
764
  }
755
765
  /* selected rows when hover is paused */
756
- [data-pause-hover='true'] [role='row'][data-selected='true']:not([data-error='true']):hover:not([data-current='true']) [role='cell'] {
766
+ [data-pause-hover='true'] [role='row'][data-selected='true']:not([data-invalid='true']):hover:not([data-current='true']) [role='cell'] {
757
767
  --table3-row-actions-shadow: theme(colors.blue.100);
758
768
  @apply !bg-blue-100;
759
769
  }
760
- [data-pause-hover='true'] [role='row'][data-selected='true']:not([data-error='true']):hover[data-current='true'] [role='cell'] {
770
+ [data-pause-hover='true'] [role='row'][data-selected='true']:not([data-invalid='true']):hover[data-current='true'] [role='cell'] {
761
771
  --table3-row-actions-shadow: #ccd8eb;
762
772
  @apply !bg-[#CCD8EB];
763
773
  }
764
774
 
765
775
  /* error rows */
766
- [role='row'][data-error='true'] [role='cell'] {
776
+ [role='row'][data-invalid='true'] [role='cell'] {
767
777
  @apply bg-[#FFEDE9];
768
778
  }
769
- [role='row'][data-error='true']:hover [role='cell'] {
779
+ [role='row'][data-invalid='true']:hover [role='cell'] {
770
780
  --table3-row-actions-shadow: #ffe4de;
771
781
  @apply bg-[#FFE4DE];
772
782
  }
773
- [role='row'][data-error='true'][data-current='true'] [role='cell'] {
783
+ [role='row'][data-invalid='true'][data-current='true'] [role='cell'] {
774
784
  --table3-row-actions-shadow: theme(colors.red.100);
775
785
  @apply bg-red-100;
776
786
  }
777
- [role='row'][data-error='true'][data-current='true']:hover [role='cell'] {
787
+ [role='row'][data-invalid='true'][data-current='true']:hover [role='cell'] {
778
788
  --table3-row-actions-shadow: #ffe4de;
779
789
  @apply bg-[#FFE4DE];
780
790
  }
791
+ /* Fields with errors shouldn’t have white background when not in current row */
792
+ [role='row'][data-invalid='true'][data-current='false'] [role='cell'] .bg-white {
793
+ @apply !bg-[#FFEDE9];
794
+ }
795
+ /* Request from UX: In error state, input backgroud color should be the same as row background color */
796
+ [role='row'][data-invalid='true'][data-current='false']:hover [role='cell'] .bg-white {
797
+ @apply !bg-[#FFE4DE];
798
+ }
781
799
  /* error rows when focus is inside the table */
782
- [data-taco='table2']:focus-within [role='row'][data-current='true'][data-error='true'] [role='cell'] {
800
+ [data-taco='table2']:focus-within [role='row'][data-current='true'][data-invalid='true'] [role='cell'] {
783
801
  --table3-row-actions-shadow: theme(colors.red.100);
784
802
  @apply bg-red-100;
785
803
  }
786
804
  /* error rows when hover is paused */
787
- [data-pause-hover='true'] [role='row'][data-error='true']:hover:not([data-current='true']) [role='cell'] {
805
+ [data-pause-hover='true'] [role='row'][data-invalid='true']:hover:not([data-current='true']) [role='cell'] {
788
806
  --table3-row-actions-shadow: #ffede9;
789
807
  @apply !bg-[#FFEDE9];
790
808
  }
791
- [data-pause-hover='true'] [role='row'][data-error='true']:hover[data-current='true'] [role='cell'] {
809
+ [data-pause-hover='true'] [role='row'][data-invalid='true']:hover[data-current='true'] [role='cell'] {
792
810
  --table3-row-actions-shadow: theme(colors.red.100);
793
811
  @apply !bg-red-100;
794
812
  }
@@ -802,6 +820,12 @@
802
820
  @apply !wcag-blue-500;
803
821
  }
804
822
 
823
+ /* error row */
824
+ /*!!!!*/
825
+ [data-taco='table2-body'] [role='row'][data-invalid='true'] [role='cell'] {
826
+ /*@apply !bg-[#FFF5F2];*/
827
+ }
828
+
805
829
  /* cell component overrides */
806
830
 
807
831
  /* small font size */
@@ -820,7 +844,9 @@
820
844
  }
821
845
 
822
846
  [data-font-size='small'] [role='cell'] [data-taco='badge'],
823
- [data-font-size='small'] [role='cell'] [data-taco='badge-icon'] {
847
+ [data-font-size='small'] [role='cell'] [data-taco='badge-icon'],
848
+ [data-font-size='small'] [role='cell'] [data-taco='icon'],
849
+ [data-font-size='small'] [role='cell'] [data-taco='spinner'] {
824
850
  @apply !-my-0.5 !text-xs;
825
851
  }
826
852
 
@@ -828,11 +854,21 @@
828
854
  @apply !-my-1;
829
855
  }
830
856
 
831
- [data-font-size='small'] [role='cell'] [data-taco='input-container'],
832
- [data-font-size='small'] [role='cell'] [data-taco='Select2'] {
857
+ [data-font-size='small'] [role='cell'] [data-taco='Select2'],
858
+ [data-font-size='small'] [role='cell'] [data-taco='input-container'] {
833
859
  @apply !-my-[3px];
834
860
  }
835
861
 
862
+ /* from validation */
863
+ [data-font-size='small'] [role='row'][data-invalid='true'] [role='cell'] [data-taco='Select2'],
864
+ [data-font-size='small'] [role='row'][data-invalid='true'] [role='cell'] [data-taco='input-container'],
865
+ [data-font-size='small'] [role='row'] [role='cell'][data-invalid='true'] [data-taco='Select2'],
866
+ [data-font-size='small'] [role='row'] [role='cell'][data-invalid='true'] [data-taco='input-container'] {
867
+ @apply !-mt-1;
868
+ @apply !mb-0;
869
+ }
870
+ /*---*/
871
+
836
872
  [data-font-size='small'] [role='cell'] [data-taco='input'],
837
873
  [data-font-size='small'] [role='cell'] [data-taco='Select2'],
838
874
  [data-font-size='small'] [role='cell'] [data-taco='textarea'] {
@@ -859,9 +895,18 @@
859
895
  @apply !my-0;
860
896
  }
861
897
 
862
- [data-font-size='small'] [role='cell'][data-editable] {
863
- @apply px-[calc(var(--table3-cell-padding-x)_-_6px)];
864
- }
898
+ /* When cell is editable, but not highlighted, then we apply cell padding to a cell itself */
899
+
900
+ [data-font-size='small'] [role='cell'][data-editable]:not([data-highlighted='true']) {
901
+ @apply px-[calc(var(--table3-cell-padding-x)_-_6px)];
902
+ }
903
+
904
+ /* When cell is editable and highlighted, the padding should apply to highlight wrapper,
905
+ because it should take all the available space in the cell */
906
+
907
+ [data-font-size='small'] [role='cell'][data-editable][data-highlighted='true'] [data-taco='highlight'] {
908
+ @apply px-[calc(var(--table3-cell-padding-x)_-_6px)];
909
+ }
865
910
 
866
911
  [data-font-size='small'] [role='cell'][data-editable] [data-taco='checkbox'],
867
912
  [data-font-size='small'] [role='cell'][data-editable] [data-taco='checkbox-container'],
@@ -889,9 +934,18 @@
889
934
  @apply !-my-[5px];
890
935
  }
891
936
 
892
- [data-font-size='medium'] [role='cell'][data-editable] {
893
- @apply px-[calc(var(--table3-cell-padding-x)_-_8px)];
894
- }
937
+ /* When cell is editable, but not highlighted, then we apply cell padding to a cell itself */
938
+
939
+ [data-font-size='medium'] [role='cell'][data-editable]:not([data-highlighted='true']) {
940
+ @apply px-[calc(var(--table3-cell-padding-x)_-_8px)];
941
+ }
942
+
943
+ /* When cell is editable and highlighted, the padding should apply to highlight wrapper,
944
+ because it should take all the available space in the cell */
945
+
946
+ [data-font-size='medium'] [role='cell'][data-editable][data-highlighted='true'] [data-taco='highlight'] {
947
+ @apply px-[calc(var(--table3-cell-padding-x)_-_8px)];
948
+ }
895
949
 
896
950
  [data-font-size='medium'] [role='cell'][data-editable] [data-taco='checkbox'],
897
951
  [data-font-size='medium'] [role='cell'][data-editable] [data-taco='checkbox-container'],
@@ -900,6 +954,14 @@
900
954
  @apply !mx-[calc(var(--table3-cell-padding-x)_-_3px)] !mt-px;
901
955
  }
902
956
 
957
+ [data-font-size='medium'] [role='row'][data-invalid='true'] [role='cell'] [data-taco='Select2'],
958
+ [data-font-size='medium'] [role='row'][data-invalid='true'] [role='cell'] [data-taco='input-container'],
959
+ [data-font-size='medium'] [role='row'] [role='cell'][data-invalid='true'] [data-taco='Select2'],
960
+ [data-font-size='medium'] [role='row'] [role='cell'][data-invalid='true'] [data-taco='input-container'] {
961
+ @apply !-mt-1.5;
962
+ @apply !mb-0;
963
+ }
964
+
903
965
  /* large font size */
904
966
  [data-font-size='large'] [role='cell'] > [data-taco='button'],
905
967
  [data-font-size='large'] [role='cell'] > [data-taco='icon-button'] {
@@ -919,6 +981,14 @@
919
981
  @apply !-my-[7.5px];
920
982
  }
921
983
 
984
+ [data-font-size='large'] [role='row'][data-invalid='true'] [role='cell'] [data-taco='Select2'],
985
+ [data-font-size='large'] [role='row'][data-invalid='true'] [role='cell'] [data-taco='input-container'],
986
+ [data-font-size='large'] [role='row'] [role='cell'][data-invalid='true'] [data-taco='Select2'],
987
+ [data-font-size='large'] [role='row'] [role='cell'][data-invalid='true'] [data-taco='input-container'] {
988
+ @apply !-mt-2;
989
+ @apply !mb-0;
990
+ }
991
+
922
992
  [data-font-size='large'] [role='cell'] [data-taco='input'],
923
993
  [data-font-size='large'] [role='cell'] [data-taco='Select2'],
924
994
  [data-font-size='large'] [role='cell'] [data-taco='textarea'] {
@@ -933,9 +1003,18 @@
933
1003
  @apply !h-6 !w-6;
934
1004
  }
935
1005
 
936
- [data-font-size='large'] [role='cell'][data-editable] {
937
- @apply px-[calc(var(--table3-cell-padding-x)_-_10px)];
938
- }
1006
+ /* When cell is editable, but not highlighted, then we apply cell padding to a cell itself */
1007
+
1008
+ [data-font-size='large'] [role='cell'][data-editable]:not([data-highlighted='true']) {
1009
+ @apply px-[calc(var(--table3-cell-padding-x)_-_10px)];
1010
+ }
1011
+
1012
+ /* When cell is editable and highlighted, the padding should apply to highlight wrapper,
1013
+ because it should take all the available space in the cell */
1014
+
1015
+ [data-font-size='large'] [role='cell'][data-editable][data-highlighted='true'] [data-taco='highlight'] {
1016
+ @apply px-[calc(var(--table3-cell-padding-x)_-_10px)];
1017
+ }
939
1018
 
940
1019
  [data-font-size='large'] [role='cell'][data-editable] [data-taco='checkbox'],
941
1020
  [data-font-size='large'] [role='cell'][data-editable] [data-taco='checkbox-container'],
@@ -6,11 +6,14 @@ import { Content, InnerContent, Title, Footer, Close, Actions } from './componen
6
6
  import { useControllableState } from '@radix-ui/react-use-controllable-state';
7
7
  import { Trigger } from './components/Trigger.js';
8
8
 
9
+ const DEFAULT_OUTLET_NAME = 'default';
9
10
  const Outlet = /*#__PURE__*/forwardRef(function Outlet(props, ref) {
11
+ var _props$name;
10
12
  const className = cn('h-full ml-auto overflow-hidden flex-shrink-0', props.className);
11
13
  return /*#__PURE__*/createElement("div", Object.assign({}, props, {
12
14
  className: className,
13
15
  "data-taco": "drawer-outlet",
16
+ "data-taco-outlet-name": (_props$name = props.name) !== null && _props$name !== void 0 ? _props$name : DEFAULT_OUTLET_NAME,
14
17
  ref: ref
15
18
  }));
16
19
  });
@@ -34,6 +37,7 @@ const Drawer = /*#__PURE__*/forwardRef(function Drawer(props, ref) {
34
37
  children,
35
38
  focusTrap = props.focusTrap === undefined && props.variant === 'overlay' ? true : props.focusTrap,
36
39
  showCloseButton = true,
40
+ outletName,
37
41
  ...otherProps
38
42
  } = props;
39
43
  const [open, setOpen] = useControllableState({
@@ -63,9 +67,10 @@ const Drawer = /*#__PURE__*/forwardRef(function Drawer(props, ref) {
63
67
  }, []);
64
68
  useEffect(() => {
65
69
  var _document$querySelect;
66
- const outletElement = (_document$querySelect = document.querySelector('[data-taco="drawer-outlet"]')) !== null && _document$querySelect !== void 0 ? _document$querySelect : document.body;
70
+ const outletSelector = `[data-taco="drawer-outlet"][data-taco-outlet-name="${outletName !== null && outletName !== void 0 ? outletName : DEFAULT_OUTLET_NAME}"]`;
71
+ const outletElement = (_document$querySelect = document.querySelector(outletSelector)) !== null && _document$querySelect !== void 0 ? _document$querySelect : document.body;
67
72
  setOutlet(outletElement);
68
- }, []);
73
+ }, [outletName]);
69
74
  useEffect(() => {
70
75
  if (open) {
71
76
  // if drawerStack is defined, this means that another drawer was opened before