@economic/taco 2.14.2 → 2.16.0

Sign up to get free protection for your applications and to get access to all the features.
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