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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/components/Calendar/Calendar.d.ts +1 -0
  2. package/dist/components/Table3/features/useEditingState.d.ts +1 -1
  3. package/dist/components/Table3/features/useTableEditing.d.ts +2 -2
  4. package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +32 -1
  5. package/dist/esm/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
  6. package/dist/esm/index.css +10 -2
  7. package/dist/esm/packages/taco/src/components/Calendar/Calendar.js +12 -11
  8. package/dist/esm/packages/taco/src/components/Calendar/Calendar.js.map +1 -1
  9. package/dist/esm/packages/taco/src/components/Datepicker/useDatepicker.js +15 -6
  10. package/dist/esm/packages/taco/src/components/Datepicker/useDatepicker.js.map +1 -1
  11. package/dist/esm/packages/taco/src/components/Menu/components/Content.js +1 -1
  12. package/dist/esm/packages/taco/src/components/Menu/components/Content.js.map +1 -1
  13. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js +2 -2
  14. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js.map +1 -1
  15. package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js +5 -1
  16. package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js.map +1 -1
  17. package/dist/esm/packages/taco/src/components/Table3/features/useEditingState.js +11 -6
  18. package/dist/esm/packages/taco/src/components/Table3/features/useEditingState.js.map +1 -1
  19. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js +44 -27
  20. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js.map +1 -1
  21. package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js +5 -8
  22. package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js.map +1 -1
  23. package/dist/esm/packages/taco/src/hooks/useGlobalKeyDown.js +2 -2
  24. package/dist/esm/packages/taco/src/hooks/useGlobalKeyDown.js.map +1 -1
  25. package/dist/esm/packages/taco/src/hooks/useLazyEffect.js +1 -1
  26. package/dist/esm/packages/taco/src/hooks/useLazyEffect.js.map +1 -1
  27. package/dist/esm/packages/taco/src/primitives/BubbleSelect.js +1 -1
  28. package/dist/esm/packages/taco/src/primitives/BubbleSelect.js.map +1 -1
  29. package/dist/esm/packages/taco/src/primitives/Button.js +1 -6
  30. package/dist/esm/packages/taco/src/primitives/Button.js.map +1 -1
  31. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/EmptyStateBody.js +9 -2
  32. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/EmptyStateBody.js.map +1 -1
  33. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFontSizeListener.js +4 -1
  34. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFontSizeListener.js.map +1 -1
  35. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/dataTypes.js +6 -2
  36. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/dataTypes.js.map +1 -1
  37. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/search.js +9 -1
  38. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/search.js.map +1 -1
  39. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js +8 -3
  40. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js.map +1 -1
  41. package/dist/esm/packages/taco/src/utils/dom.js +9 -1
  42. package/dist/esm/packages/taco/src/utils/dom.js.map +1 -1
  43. package/dist/esm/packages/taco/src/utils/keyboard.js +5 -2
  44. package/dist/esm/packages/taco/src/utils/keyboard.js.map +1 -1
  45. package/dist/hooks/useGlobalKeyDown.d.ts +1 -1
  46. package/dist/index.css +10 -2
  47. package/dist/primitives/Table/useTableManager/util/dataTypes.d.ts +1 -1
  48. package/dist/taco.cjs.development.js +180 -84
  49. package/dist/taco.cjs.development.js.map +1 -1
  50. package/dist/taco.cjs.production.min.js +1 -1
  51. package/dist/taco.cjs.production.min.js.map +1 -1
  52. package/dist/utils/keyboard.d.ts +1 -1
  53. package/package.json +2 -1
@@ -28,5 +28,6 @@ export declare type CalendarProps = Omit<React.HTMLAttributes<HTMLDivElement>, '
28
28
  onChange: (date: Date, event?: React.MouseEvent<Element>) => void;
29
29
  value?: Date;
30
30
  disabledDays?: Matcher[];
31
+ visibleMonth?: Date;
31
32
  };
32
33
  export declare const Calendar: (props: CalendarProps) => JSX.Element;
@@ -12,7 +12,7 @@ export declare function usePendingChangesState<TType = unknown>(handleSave: Tabl
12
12
  setCellValue: <T_1 extends TType>(cell: ReactTableCell<T_1, unknown>, rowIndex: number, value: unknown) => void;
13
13
  getCellValue: <T_2 extends TType>(cell: ReactTableCell<T_2, unknown>) => unknown | undefined;
14
14
  getCellError: <T_3 extends TType>(cell: ReactTableCell<T_3, unknown>) => string | undefined;
15
- onCellChanged: <T_4 extends TType>(cell: ReactTableCell<T_4, unknown>, rowIndex: number, shouldRunUpdaters?: boolean) => Promise<void>;
15
+ onCellChanged: <T_4 extends TType>(cell: ReactTableCell<T_4, unknown>, rowIndex: number, nextValue: any, shouldRunUpdaters?: boolean) => Promise<void>;
16
16
  getErrorsShownInAlert: <T_5 extends TType>() => {
17
17
  rowId: string;
18
18
  index: any;
@@ -12,7 +12,7 @@ export declare function useTableEditing<TType = unknown>(isEnabled: boolean | un
12
12
  setCellValue: <T_1 extends TType>(cell: import("@tanstack/react-table").Cell<T_1, unknown>, rowIndex: number, value: unknown) => void;
13
13
  getCellValue: <T_2 extends TType>(cell: import("@tanstack/react-table").Cell<T_2, unknown>) => unknown;
14
14
  getCellError: <T_3 extends TType>(cell: import("@tanstack/react-table").Cell<T_3, unknown>) => string | undefined;
15
- onCellChanged: <T_4 extends TType>(cell: import("@tanstack/react-table").Cell<T_4, unknown>, rowIndex: number, shouldRunUpdaters?: boolean) => Promise<void>;
15
+ onCellChanged: <T_4 extends TType>(cell: import("@tanstack/react-table").Cell<T_4, unknown>, rowIndex: number, nextValue: any, shouldRunUpdaters?: boolean) => Promise<void>;
16
16
  getErrorsShownInAlert: <T_5 extends TType>() => {
17
17
  rowId: string;
18
18
  index: any;
@@ -29,7 +29,7 @@ export declare function useTableEditing<TType = unknown>(isEnabled: boolean | un
29
29
  isEditing: boolean;
30
30
  isDetailedMode: boolean;
31
31
  toggleDetailedMode: React.Dispatch<React.SetStateAction<boolean>>;
32
- toggleEditing: <T_9 extends TType>(enabled: React.SetStateAction<boolean>, table: ReactTable<T_9>, scrollToIndex: (index: number) => void) => void;
32
+ toggleEditing: <T_9 extends TType>(enabled: React.SetStateAction<boolean>, table: ReactTable<T_9>, scrollToIndex: (index: number) => void, doSave?: boolean) => void;
33
33
  lastFocusedCellIndex: number | undefined;
34
34
  setLastFocusedCellIndex: React.Dispatch<React.SetStateAction<number | undefined>>;
35
35
  createRow: <T_10 extends TType>(table: ReactTable<T_10>, scrollToIndex: (index: number) => void, row?: Partial<T_10> | undefined) => Promise<void>;
@@ -27,6 +27,37 @@ function _objectWithoutPropertiesLoose(source, excluded) {
27
27
  }
28
28
  return target;
29
29
  }
30
+ function _unsupportedIterableToArray(o, minLen) {
31
+ if (!o) return;
32
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
33
+ var n = Object.prototype.toString.call(o).slice(8, -1);
34
+ if (n === "Object" && o.constructor) n = o.constructor.name;
35
+ if (n === "Map" || n === "Set") return Array.from(o);
36
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
37
+ }
38
+ function _arrayLikeToArray(arr, len) {
39
+ if (len == null || len > arr.length) len = arr.length;
40
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
41
+ return arr2;
42
+ }
43
+ function _createForOfIteratorHelperLoose(o, allowArrayLike) {
44
+ var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
45
+ if (it) return (it = it.call(o)).next.bind(it);
46
+ if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
47
+ if (it) o = it;
48
+ var i = 0;
49
+ return function () {
50
+ if (i >= o.length) return {
51
+ done: true
52
+ };
53
+ return {
54
+ done: false,
55
+ value: o[i++]
56
+ };
57
+ };
58
+ }
59
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
60
+ }
30
61
 
31
- export { _extends as extends, _objectDestructuringEmpty as objectDestructuringEmpty, _objectWithoutPropertiesLoose as objectWithoutPropertiesLoose };
62
+ export { _arrayLikeToArray as arrayLikeToArray, _createForOfIteratorHelperLoose as createForOfIteratorHelperLoose, _extends as extends, _objectDestructuringEmpty as objectDestructuringEmpty, _objectWithoutPropertiesLoose as objectWithoutPropertiesLoose, _unsupportedIterableToArray as unsupportedIterableToArray };
32
63
  //# sourceMappingURL=_rollupPluginBabelHelpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_rollupPluginBabelHelpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"_rollupPluginBabelHelpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -603,10 +603,14 @@ table[data-taco^='table'] thead tr:last-child {
603
603
 
604
604
  /* bottom border for column groups */
605
605
 
606
- table[data-taco^='table'] thead tr:not(:last-child) th:before {
607
- @apply bg-grey-300 absolute bottom-0 left-2 right-2 h-[2px] content-[''];
606
+ table[data-taco^='table'] thead tr:not(:last-child) th {
607
+ @apply print:border-grey-300 print:border-b;
608
608
  }
609
609
 
610
+ table[data-taco^='table'] thead tr:not(:last-child) th:before {
611
+ @apply bg-grey-300 absolute bottom-0 left-2 right-2 h-[2px] content-[''];
612
+ }
613
+
610
614
  table[data-taco^='table'] tfoot {
611
615
  /* z-indexes & layout */
612
616
  @apply sticky bottom-0 isolate z-20;
@@ -627,6 +631,10 @@ table[data-taco^='table'] tbody {
627
631
  @apply print:!h-auto;
628
632
  }
629
633
 
634
+ table[data-taco^='table']:has([data-taco='empty-state']) {
635
+ @apply overflow-x-hidden;
636
+ }
637
+
630
638
  table[data-taco^='table'] tr {
631
639
  /* styling */
632
640
  @apply relative bg-white outline-none;
@@ -6,7 +6,7 @@ import { IconButton } from '../IconButton/IconButton.js';
6
6
  import { useLocalization } from '../Provider/Localization.js';
7
7
  import { DayPicker, Button } from 'react-day-picker';
8
8
 
9
- var _excluded = ["onChange", "value", "disabledDays"];
9
+ var _excluded = ["onChange", "value", "disabledDays", "visibleMonth"];
10
10
  var thisYear = /*#__PURE__*/new Date().getFullYear();
11
11
  var years = [];
12
12
  for (var i = thisYear - 50; i <= thisYear + 10; i += 1) {
@@ -92,21 +92,22 @@ var TodayButton = function TodayButton(_ref2) {
92
92
  }, texts.calendar.actions.today);
93
93
  };
94
94
  var Calendar = function Calendar(props) {
95
+ var _ref3;
95
96
  var handleChange = props.onChange,
96
97
  value = props.value,
97
98
  disabledDays = props.disabledDays,
99
+ visibleMonth = props.visibleMonth,
98
100
  otherProps = _objectWithoutPropertiesLoose(props, _excluded);
99
- var _React$useState = useState(value !== null && value !== void 0 ? value : new Date()),
100
- visibleMonth = _React$useState[0],
101
- setVisibleMonth = _React$useState[1];
101
+ var _React$useState = useState((_ref3 = visibleMonth !== null && visibleMonth !== void 0 ? visibleMonth : value) !== null && _ref3 !== void 0 ? _ref3 : new Date()),
102
+ internalVisibleMonth = _React$useState[0],
103
+ setInternalVisibleMonth = _React$useState[1];
102
104
  var _useLocalization3 = useLocalization(),
103
105
  texts = _useLocalization3.texts;
104
106
  useEffect(function () {
105
- if (visibleMonth !== value) {
106
- setVisibleMonth(value !== null && value !== void 0 ? value : new Date());
107
+ if (visibleMonth && visibleMonth !== internalVisibleMonth) {
108
+ setInternalVisibleMonth(visibleMonth);
107
109
  }
108
- // visibleMonth in deps array breaking month switching logic. It should not be in deps array.
109
- }, [value]);
110
+ }, [visibleMonth]);
110
111
  var handleDayClick = function handleDayClick(date, modifiers, event) {
111
112
  if (modifiers.outside || modifiers.disabled) {
112
113
  return;
@@ -120,13 +121,13 @@ var Calendar = function Calendar(props) {
120
121
  className: className,
121
122
  captionLayout: "dropdown-buttons",
122
123
  weekStartsOn: 1,
123
- month: visibleMonth,
124
+ month: internalVisibleMonth,
124
125
  numberOfMonths: 1,
125
126
  components: {
126
127
  Caption: function Caption(props) {
127
128
  return /*#__PURE__*/createElement(Navbar, Object.assign({}, props, {
128
- onMonthChange: setVisibleMonth,
129
- value: visibleMonth
129
+ onMonthChange: setInternalVisibleMonth,
130
+ value: internalVisibleMonth
130
131
  }));
131
132
  },
132
133
  Footer: function Footer() {
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar.js","sources":["../../../../../../../src/components/Calendar/Calendar.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'clsx';\nimport { Button, CaptionProps, DayClickEventHandler, DayPicker, Matcher } from 'react-day-picker';\nimport { useLocalization } from '../Provider/Localization';\nimport { IconButton } from '../IconButton/IconButton';\nimport { Tooltip } from '../Tooltip/Tooltip';\nimport './Calendar.css';\n\nexport type CalendarTextsActions = {\n /** Aria-label for previous month action button */\n previousMonth: string;\n /** Aria-label for next month action button */\n nextMonth: string;\n /** Aria-label for previous year action button */\n previousYear: string;\n /** Aria-label for next year action button */\n nextYear: string;\n /** Text displayed within today action button */\n today: string;\n};\n\nexport type CalendarTexts = {\n /** Text and aria-label for action buttons in Calendar */\n actions: CalendarTextsActions;\n /** Text abbreviation for months in Calendar's header, starting with January */\n months: string[];\n /** Text abbreviation for days in Calendar's header, starting with Sunday */\n weekdaysShort: string[];\n /** Text for days in Calendar's header, starting with Sunday */\n weekdays: string[];\n};\n\n/** @internal */\ntype CustomNavbarElementProps = {\n onMonthChange: (month: Date) => void;\n value?: Date;\n};\n\nconst thisYear = new Date().getFullYear();\nconst years: number[] = [];\n\nfor (let i = thisYear - 50; i <= thisYear + 10; i += 1) {\n years.push(i);\n}\n\nconst Navbar = React.memo(({ onMonthChange, value = new Date() }: CustomNavbarElementProps): JSX.Element => {\n const {\n texts: {\n calendar: { actions, months },\n },\n } = useLocalization();\n\n const handleChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n const { year, month } = event.target.form as HTMLFormElement;\n onMonthChange(new Date(year.value, month.value));\n };\n\n const onNextClick = () => {\n onMonthChange(new Date(value.getFullYear(), value.getMonth() + 1, value.getDay()));\n };\n\n const onPreviousClick = () => {\n onMonthChange(new Date(value.getFullYear(), value.getMonth() - 1, value.getDay()));\n };\n\n return (\n <div className=\"mb-3 flex items-center justify-between\">\n <form className=\"inline-flex space-x-1\">\n <select className=\"h-8 px-2\" name=\"month\" onChange={handleChange} value={value.getMonth()}>\n {months.map((month, i) => (\n <option key={month} value={i}>\n {month}\n </option>\n ))}\n </select>\n <select className=\"h-8 px-2\" name=\"year\" onChange={handleChange} value={value.getFullYear()}>\n {years.map(year => (\n <option key={year} value={year}>\n {String(year)}\n </option>\n ))}\n </select>\n </form>\n <div>\n <Tooltip title={actions.previousMonth}>\n <IconButton\n appearance=\"discrete\"\n icon=\"chevron-left\"\n aria-label={actions.previousMonth}\n onClick={onPreviousClick}\n rounded\n />\n </Tooltip>\n <Tooltip title={actions.nextMonth}>\n <IconButton\n appearance=\"discrete\"\n icon=\"chevron-right\"\n aria-label={actions.nextMonth}\n onClick={onNextClick}\n rounded\n />\n </Tooltip>\n </div>\n </div>\n );\n});\n\nexport type CalendarProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'value'> & {\n /** Handler called when a day is clicked in calendar */\n onChange: (date: Date, event?: React.MouseEvent<Element>) => void;\n value?: Date;\n disabledDays?: Matcher[];\n};\n\nconst TodayButton = ({ handleChange }: { handleChange: (month: Date) => void }) => {\n const { texts } = useLocalization();\n\n const handleCalendarClickToday = (): void => {\n const today = new Date();\n\n // set to midday to avoid UTC offset causing dates to be mismatched server side\n today.setHours(12);\n today.setMinutes(0);\n today.setSeconds(0);\n\n handleChange(today);\n };\n return (\n <Button\n className=\"cursor-pointer border-none bg-transparent text-xs text-blue-500 hover:text-blue-300\"\n onClick={handleCalendarClickToday}>\n {texts.calendar.actions.today}\n </Button>\n );\n};\n\nexport const Calendar = (props: CalendarProps) => {\n const { onChange: handleChange, value, disabledDays, ...otherProps } = props;\n const [visibleMonth, setVisibleMonth] = React.useState(value ?? new Date());\n const { texts } = useLocalization();\n\n React.useEffect(() => {\n if (visibleMonth !== value) {\n setVisibleMonth(value ?? new Date());\n }\n // visibleMonth in deps array breaking month switching logic. It should not be in deps array.\n }, [value]);\n\n const handleDayClick: DayClickEventHandler = (date, modifiers, event) => {\n if (modifiers.outside || modifiers.disabled) {\n return;\n }\n\n handleChange(date, event);\n };\n\n const className = cn('flex bg-white text-xs p-2', otherProps.className);\n\n return (\n <div data-taco=\"calendar\">\n <DayPicker\n className={className}\n captionLayout=\"dropdown-buttons\"\n weekStartsOn={1}\n month={visibleMonth}\n numberOfMonths={1}\n components={{\n Caption: (props: CaptionProps) => <Navbar {...props} onMonthChange={setVisibleMonth} value={visibleMonth} />,\n Footer: () => (\n <tfoot>\n <tr>\n <td colSpan={7} className=\"text-center\">\n <TodayButton handleChange={handleChange} />\n </td>\n </tr>\n </tfoot>\n ),\n HeadRow: () => (\n <tr>\n {texts.calendar.weekdaysShort.map((weekday, index) => {\n const label = texts.calendar.weekdays && texts.calendar.weekdays[index];\n return (\n <th key={weekday} aria-label={label} className=\"rdp-head_cell\" title={label}>\n {weekday}\n </th>\n );\n })}\n </tr>\n ),\n }}\n onDayClick={handleDayClick}\n selected={value}\n disabled={disabledDays}\n />\n </div>\n );\n};\n"],"names":["thisYear","Date","getFullYear","years","i","push","Navbar","React","_ref","onMonthChange","_ref$value","value","_useLocalization","useLocalization","_useLocalization$text","texts","calendar","actions","months","handleChange","event","_event$target$form","target","form","year","month","onNextClick","getMonth","getDay","onPreviousClick","className","name","onChange","map","key","String","Tooltip","title","previousMonth","IconButton","appearance","icon","onClick","rounded","nextMonth","TodayButton","_ref2","_useLocalization2","handleCalendarClickToday","today","setHours","setMinutes","setSeconds","Button","Calendar","props","disabledDays","otherProps","_objectWithoutPropertiesLoose","_excluded","_React$useState","visibleMonth","setVisibleMonth","_useLocalization3","handleDayClick","date","modifiers","outside","disabled","cn","DayPicker","captionLayout","weekStartsOn","numberOfMonths","components","Caption","Footer","colSpan","HeadRow","weekdaysShort","weekday","index","label","weekdays","onDayClick","selected"],"mappings":"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"}
1
+ {"version":3,"file":"Calendar.js","sources":["../../../../../../../src/components/Calendar/Calendar.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'clsx';\nimport { Button, CaptionProps, DayClickEventHandler, DayPicker, Matcher } from 'react-day-picker';\nimport { useLocalization } from '../Provider/Localization';\nimport { IconButton } from '../IconButton/IconButton';\nimport { Tooltip } from '../Tooltip/Tooltip';\nimport './Calendar.css';\n\nexport type CalendarTextsActions = {\n /** Aria-label for previous month action button */\n previousMonth: string;\n /** Aria-label for next month action button */\n nextMonth: string;\n /** Aria-label for previous year action button */\n previousYear: string;\n /** Aria-label for next year action button */\n nextYear: string;\n /** Text displayed within today action button */\n today: string;\n};\n\nexport type CalendarTexts = {\n /** Text and aria-label for action buttons in Calendar */\n actions: CalendarTextsActions;\n /** Text abbreviation for months in Calendar's header, starting with January */\n months: string[];\n /** Text abbreviation for days in Calendar's header, starting with Sunday */\n weekdaysShort: string[];\n /** Text for days in Calendar's header, starting with Sunday */\n weekdays: string[];\n};\n\n/** @internal */\ntype CustomNavbarElementProps = {\n onMonthChange: (month: Date) => void;\n value?: Date;\n};\n\nconst thisYear = new Date().getFullYear();\nconst years: number[] = [];\n\nfor (let i = thisYear - 50; i <= thisYear + 10; i += 1) {\n years.push(i);\n}\n\nconst Navbar = React.memo(({ onMonthChange, value = new Date() }: CustomNavbarElementProps): JSX.Element => {\n const {\n texts: {\n calendar: { actions, months },\n },\n } = useLocalization();\n\n const handleChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n const { year, month } = event.target.form as HTMLFormElement;\n onMonthChange(new Date(year.value, month.value));\n };\n\n const onNextClick = () => {\n onMonthChange(new Date(value.getFullYear(), value.getMonth() + 1, value.getDay()));\n };\n\n const onPreviousClick = () => {\n onMonthChange(new Date(value.getFullYear(), value.getMonth() - 1, value.getDay()));\n };\n\n return (\n <div className=\"mb-3 flex items-center justify-between\">\n <form className=\"inline-flex space-x-1\">\n <select className=\"h-8 px-2\" name=\"month\" onChange={handleChange} value={value.getMonth()}>\n {months.map((month, i) => (\n <option key={month} value={i}>\n {month}\n </option>\n ))}\n </select>\n <select className=\"h-8 px-2\" name=\"year\" onChange={handleChange} value={value.getFullYear()}>\n {years.map(year => (\n <option key={year} value={year}>\n {String(year)}\n </option>\n ))}\n </select>\n </form>\n <div>\n <Tooltip title={actions.previousMonth}>\n <IconButton\n appearance=\"discrete\"\n icon=\"chevron-left\"\n aria-label={actions.previousMonth}\n onClick={onPreviousClick}\n rounded\n />\n </Tooltip>\n <Tooltip title={actions.nextMonth}>\n <IconButton\n appearance=\"discrete\"\n icon=\"chevron-right\"\n aria-label={actions.nextMonth}\n onClick={onNextClick}\n rounded\n />\n </Tooltip>\n </div>\n </div>\n );\n});\n\nexport type CalendarProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'value'> & {\n /** Handler called when a day is clicked in calendar */\n onChange: (date: Date, event?: React.MouseEvent<Element>) => void;\n value?: Date;\n disabledDays?: Matcher[];\n visibleMonth?: Date;\n};\n\nconst TodayButton = ({ handleChange }: { handleChange: (month: Date) => void }) => {\n const { texts } = useLocalization();\n\n const handleCalendarClickToday = (): void => {\n const today = new Date();\n\n // set to midday to avoid UTC offset causing dates to be mismatched server side\n today.setHours(12);\n today.setMinutes(0);\n today.setSeconds(0);\n\n handleChange(today);\n };\n return (\n <Button\n className=\"cursor-pointer border-none bg-transparent text-xs text-blue-500 hover:text-blue-300\"\n onClick={handleCalendarClickToday}>\n {texts.calendar.actions.today}\n </Button>\n );\n};\n\nexport const Calendar = (props: CalendarProps) => {\n const { onChange: handleChange, value, disabledDays, visibleMonth, ...otherProps } = props;\n const [internalVisibleMonth, setInternalVisibleMonth] = React.useState(visibleMonth ?? value ?? new Date());\n const { texts } = useLocalization();\n\n React.useEffect(() => {\n if (visibleMonth && visibleMonth !== internalVisibleMonth) {\n setInternalVisibleMonth(visibleMonth);\n }\n }, [visibleMonth]);\n\n const handleDayClick: DayClickEventHandler = (date, modifiers, event) => {\n if (modifiers.outside || modifiers.disabled) {\n return;\n }\n\n handleChange(date, event);\n };\n\n const className = cn('flex bg-white text-xs p-2', otherProps.className);\n\n return (\n <div data-taco=\"calendar\">\n <DayPicker\n className={className}\n captionLayout=\"dropdown-buttons\"\n weekStartsOn={1}\n month={internalVisibleMonth}\n numberOfMonths={1}\n components={{\n Caption: (props: CaptionProps) => (\n <Navbar {...props} onMonthChange={setInternalVisibleMonth} value={internalVisibleMonth} />\n ),\n Footer: () => (\n <tfoot>\n <tr>\n <td colSpan={7} className=\"text-center\">\n <TodayButton handleChange={handleChange} />\n </td>\n </tr>\n </tfoot>\n ),\n HeadRow: () => (\n <tr>\n {texts.calendar.weekdaysShort.map((weekday, index) => {\n const label = texts.calendar.weekdays && texts.calendar.weekdays[index];\n return (\n <th key={weekday} aria-label={label} className=\"rdp-head_cell\" title={label}>\n {weekday}\n </th>\n );\n })}\n </tr>\n ),\n }}\n onDayClick={handleDayClick}\n selected={value}\n disabled={disabledDays}\n />\n </div>\n );\n};\n"],"names":["thisYear","Date","getFullYear","years","i","push","Navbar","React","_ref","onMonthChange","_ref$value","value","_useLocalization","useLocalization","_useLocalization$text","texts","calendar","actions","months","handleChange","event","_event$target$form","target","form","year","month","onNextClick","getMonth","getDay","onPreviousClick","className","name","onChange","map","key","String","Tooltip","title","previousMonth","IconButton","appearance","icon","onClick","rounded","nextMonth","TodayButton","_ref2","_useLocalization2","handleCalendarClickToday","today","setHours","setMinutes","setSeconds","Button","Calendar","props","disabledDays","visibleMonth","otherProps","_objectWithoutPropertiesLoose","_excluded","_React$useState","_ref3","internalVisibleMonth","setInternalVisibleMonth","_useLocalization3","handleDayClick","date","modifiers","outside","disabled","cn","DayPicker","captionLayout","weekStartsOn","numberOfMonths","components","Caption","Footer","colSpan","HeadRow","weekdaysShort","weekday","index","label","weekdays","onDayClick","selected"],"mappings":"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"}
@@ -20,14 +20,20 @@ var useDatepicker = function useDatepicker(_ref, ref) {
20
20
  internalValue = _React$useState[0],
21
21
  setInternalValue = _React$useState[1];
22
22
  var originalValueAsDate = parse(value);
23
- // update internal value if it changed 'externally'
23
+ // Track the current view date (month/year) in the calendar
24
+ var _React$useState2 = useState(originalValueAsDate || new Date()),
25
+ calendarViewDate = _React$useState2[0],
26
+ setCalendarViewDate = _React$useState2[1];
24
27
  useEffect(function () {
25
- var formattedValue = format(value, formatting.date);
26
- if (formattedValue !== internalValue) {
27
- setInternalValue(formattedValue !== null && formattedValue !== void 0 ? formattedValue : '');
28
+ // Only update the internal value when the input is not focused
29
+ // This prevents the input value from being reset while user is typing
30
+ if (inputRef.current !== document.activeElement) {
31
+ var formattedValue = format(value, formatting.date);
32
+ if (formattedValue !== internalValue) {
33
+ setInternalValue(formattedValue !== null && formattedValue !== void 0 ? formattedValue : '');
34
+ }
28
35
  }
29
36
  }, [value]);
30
- // event handlers
31
37
  var handleInputBlur = function handleInputBlur(event) {
32
38
  event.persist();
33
39
  var valueAsDate = parseFromCustomString(event.target.value, 'dd.mm.yy', originalValueAsDate === null || originalValueAsDate === void 0 ? void 0 : originalValueAsDate.getMonth(), originalValueAsDate === null || originalValueAsDate === void 0 ? void 0 : originalValueAsDate.getFullYear());
@@ -48,6 +54,8 @@ var useDatepicker = function useDatepicker(_ref, ref) {
48
54
  setInternalValue(event.target.value);
49
55
  };
50
56
  var handleChange = function handleChange(date) {
57
+ // Update both the input value and calendar view date when selecting a date
58
+ setCalendarViewDate(date);
51
59
  setInputValueByRef(inputRef.current, format(date, formatting.date), 'focusout');
52
60
  };
53
61
  var handleKeyDown = function handleKeyDown(event) {
@@ -71,7 +79,8 @@ var useDatepicker = function useDatepicker(_ref, ref) {
71
79
  });
72
80
  var calendarProps = _extends({}, calendar, {
73
81
  onChange: handleChange,
74
- value: originalValueAsDate
82
+ value: originalValueAsDate,
83
+ visibleMonth: calendarViewDate
75
84
  });
76
85
  return {
77
86
  input: inputProps,
@@ -1 +1 @@
1
- {"version":3,"file":"useDatepicker.js","sources":["../../../../../../../src/components/Datepicker/useDatepicker.tsx"],"sourcesContent":["import * as React from 'react';\nimport { parseFromCustomString, format, parse } from '../../utils/date';\nimport { useLocalization } from '../Provider/Localization';\nimport { setInputValueByRef } from '../../utils/input';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { DatepickerProps } from './Datepicker';\nimport { CalendarProps } from '../Calendar/Calendar';\nimport { InputProps as BaseInputProps } from '../Input/Input';\n\ntype InputProps = BaseInputProps & { ref: React.RefObject<HTMLInputElement> };\ntype useDatepicker = React.HTMLAttributes<HTMLDivElement> & {\n calendar: CalendarProps;\n input: InputProps;\n};\n\nexport const useDatepicker = (\n { defaultValue: _, calendar, onBlur, onChange, value, ...props }: DatepickerProps,\n ref: React.Ref<HTMLInputElement>\n): useDatepicker => {\n const inputRef = useMergedRef<HTMLInputElement>(ref);\n const { formatting } = useLocalization();\n const [internalValue, setInternalValue] = React.useState(format(value, formatting.date) ?? '');\n const originalValueAsDate = parse(value);\n\n // update internal value if it changed 'externally'\n React.useEffect(() => {\n const formattedValue = format(value, formatting.date);\n\n if (formattedValue !== internalValue) {\n setInternalValue(formattedValue ?? '');\n }\n }, [value]);\n\n // event handlers\n const handleInputBlur = (event: React.FocusEvent<HTMLInputElement>): void => {\n event.persist();\n\n const valueAsDate = parseFromCustomString(\n event.target.value,\n 'dd.mm.yy',\n originalValueAsDate?.getMonth(),\n originalValueAsDate?.getFullYear()\n );\n const formattedValue = valueAsDate ? format(valueAsDate) || '' : '';\n\n event.target.value = formattedValue;\n\n if (onChange) {\n (event as any).detail = valueAsDate;\n onChange(event);\n } else {\n // update the internal value to use the formatted date\n setInternalValue(formattedValue);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n setInternalValue(event.target.value);\n };\n\n const handleChange = date => {\n setInputValueByRef(inputRef.current, format(date, formatting.date), 'focusout');\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (props.onKeyDown) {\n props.onKeyDown(event);\n }\n\n if (event.key === 'Enter') {\n event.target.dispatchEvent(new Event('focusout', { bubbles: true }));\n }\n };\n\n const inputProps: InputProps = {\n ...props,\n autoComplete: 'off',\n onBlur: handleInputBlur,\n onChange: handleInputChange,\n onKeyDown: handleKeyDown,\n ref: inputRef,\n type: 'text',\n value: internalValue,\n };\n\n const calendarProps: CalendarProps = {\n ...calendar,\n onChange: handleChange,\n value: originalValueAsDate,\n };\n\n return {\n input: inputProps,\n calendar: calendarProps,\n };\n};\n"],"names":["useDatepicker","_ref","ref","calendar","onBlur","onChange","value","props","_objectWithoutPropertiesLoose","_excluded","inputRef","useMergedRef","_useLocalization","useLocalization","formatting","_React$useState","React","_format","format","date","internalValue","setInternalValue","originalValueAsDate","parse","formattedValue","handleInputBlur","event","persist","valueAsDate","parseFromCustomString","target","getMonth","getFullYear","detail","handleInputChange","handleChange","setInputValueByRef","current","handleKeyDown","onKeyDown","key","dispatchEvent","Event","bubbles","inputProps","_extends","autoComplete","type","calendarProps","input"],"mappings":"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"}
1
+ {"version":3,"file":"useDatepicker.js","sources":["../../../../../../../src/components/Datepicker/useDatepicker.tsx"],"sourcesContent":["import * as React from 'react';\nimport { parseFromCustomString, format, parse } from '../../utils/date';\nimport { useLocalization } from '../Provider/Localization';\nimport { setInputValueByRef } from '../../utils/input';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { DatepickerProps } from './Datepicker';\nimport { CalendarProps } from '../Calendar/Calendar';\nimport { InputProps as BaseInputProps } from '../Input/Input';\n\ntype InputProps = BaseInputProps & { ref: React.RefObject<HTMLInputElement> };\ntype useDatepicker = React.HTMLAttributes<HTMLDivElement> & {\n calendar: CalendarProps;\n input: InputProps;\n};\n\nexport const useDatepicker = (\n { defaultValue: _, calendar, onBlur, onChange, value, ...props }: DatepickerProps,\n ref: React.Ref<HTMLInputElement>\n): useDatepicker => {\n const inputRef = useMergedRef<HTMLInputElement>(ref);\n const { formatting } = useLocalization();\n const [internalValue, setInternalValue] = React.useState(format(value, formatting.date) ?? '');\n const originalValueAsDate = parse(value);\n\n // Track the current view date (month/year) in the calendar\n const [calendarViewDate, setCalendarViewDate] = React.useState<Date | undefined>(originalValueAsDate || new Date());\n\n React.useEffect(() => {\n // Only update the internal value when the input is not focused\n // This prevents the input value from being reset while user is typing\n if (inputRef.current !== document.activeElement) {\n const formattedValue = format(value, formatting.date);\n if (formattedValue !== internalValue) {\n setInternalValue(formattedValue ?? '');\n }\n }\n }, [value]);\n\n const handleInputBlur = (event: React.FocusEvent<HTMLInputElement>): void => {\n event.persist();\n\n const valueAsDate = parseFromCustomString(\n event.target.value,\n 'dd.mm.yy',\n originalValueAsDate?.getMonth(),\n originalValueAsDate?.getFullYear()\n );\n const formattedValue = valueAsDate ? format(valueAsDate) || '' : '';\n\n event.target.value = formattedValue;\n\n if (onChange) {\n (event as any).detail = valueAsDate;\n onChange(event);\n } else {\n // update the internal value to use the formatted date\n setInternalValue(formattedValue);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n setInternalValue(event.target.value);\n };\n\n const handleChange = date => {\n // Update both the input value and calendar view date when selecting a date\n setCalendarViewDate(date);\n setInputValueByRef(inputRef.current, format(date, formatting.date), 'focusout');\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (props.onKeyDown) {\n props.onKeyDown(event);\n }\n\n if (event.key === 'Enter') {\n event.target.dispatchEvent(new Event('focusout', { bubbles: true }));\n }\n };\n\n const inputProps: InputProps = {\n ...props,\n autoComplete: 'off',\n onBlur: handleInputBlur,\n onChange: handleInputChange,\n onKeyDown: handleKeyDown,\n ref: inputRef,\n type: 'text',\n value: internalValue,\n };\n\n const calendarProps: CalendarProps = {\n ...calendar,\n onChange: handleChange,\n value: originalValueAsDate,\n visibleMonth: calendarViewDate,\n };\n\n return {\n input: inputProps,\n calendar: calendarProps,\n };\n};\n"],"names":["useDatepicker","_ref","ref","calendar","onBlur","onChange","value","props","_objectWithoutPropertiesLoose","_excluded","inputRef","useMergedRef","_useLocalization","useLocalization","formatting","_React$useState","React","_format","format","date","internalValue","setInternalValue","originalValueAsDate","parse","_React$useState2","Date","calendarViewDate","setCalendarViewDate","current","document","activeElement","formattedValue","handleInputBlur","event","persist","valueAsDate","parseFromCustomString","target","getMonth","getFullYear","detail","handleInputChange","handleChange","setInputValueByRef","handleKeyDown","onKeyDown","key","dispatchEvent","Event","bubbles","inputProps","_extends","autoComplete","type","calendarProps","visibleMonth","input"],"mappings":"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"}
@@ -38,7 +38,7 @@ var Content = /*#__PURE__*/forwardRef(function MenuContent(props, ref) {
38
38
  var _childrenRefs$current, _childrenRefs$current2;
39
39
  return (_childrenRefs$current = childrenRefs.current[index]) === null || _childrenRefs$current === void 0 ? void 0 : (_childrenRefs$current2 = _childrenRefs$current.current) === null || _childrenRefs$current2 === void 0 ? void 0 : _childrenRefs$current2.click();
40
40
  }, 1);
41
- }));
41
+ }, true, childrenRefs.current[index].current));
42
42
  }
43
43
  });
44
44
  shortcuts.forEach(function (handler) {
@@ -1 +1 @@
1
- {"version":3,"file":"Content.js","sources":["../../../../../../../../src/components/Menu/components/Content.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport cn from 'clsx';\nimport { Align, Placement } from '../../../types';\nimport { useMergedRef } from '../../../hooks/useMergedRef';\nimport { useCurrentMenu } from '../Context';\nimport { createShortcutKeyDownHandler } from '../../../utils/keyboard';\nimport { MenuItemProps } from './Item';\n\nexport type MenuContentProps = Omit<DropdownMenuPrimitive.DropdownMenuContentProps, 'children' | 'side'> & {\n align?: Align;\n children: React.ReactNode;\n /** Set the position of the Menu relative to its trigger. Default value is `bottom` */\n placement?: Placement;\n};\n\nexport const Content = React.forwardRef(function MenuContent(props: MenuContentProps, ref: React.Ref<HTMLDivElement>) {\n const internalRef = useMergedRef<any>(ref);\n const menu = useCurrentMenu();\n const { align = 'start', children, placement: side, ...otherProps } = props;\n const className = cn('border border-transparent rounded block outline-none p-1 yt-shadow wcag-white', props.className);\n\n // attach refs to each child\n const childrenRefs = React.useRef<React.RefObject<HTMLDivElement>[]>([]);\n const childrenWithRefs = (React.Children.toArray(props.children) as React.ReactElement<MenuItemProps & { ref: any }>[])\n .filter(child => !!child) // remove falsey children\n .map((child, index) => {\n childrenRefs.current[index] = React.createRef<HTMLDivElement>();\n return React.cloneElement(child, { ref: childrenRefs.current[index] });\n });\n\n // register any shortcuts attached to children\n React.useEffect(() => {\n const shortcuts: ((event: KeyboardEvent) => void)[] = [];\n childrenWithRefs.forEach((child, index) => {\n if (child.props.shortcut) {\n shortcuts.push(\n createShortcutKeyDownHandler(child.props.shortcut, event => {\n event.preventDefault();\n menu?.open();\n setTimeout(() => childrenRefs.current[index]?.current?.click(), 1);\n })\n );\n }\n });\n\n shortcuts.forEach(handler => document.addEventListener('keydown', handler));\n\n return () => {\n shortcuts.forEach(handler => document.removeEventListener('keydown', handler));\n };\n }, [childrenWithRefs]);\n\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n {...otherProps}\n align={align}\n className={className}\n data-taco=\"menu\"\n side={side}\n sideOffset={3}\n style={{ minWidth: menu?.minWidth }}\n ref={internalRef}>\n {childrenWithRefs}\n </DropdownMenuPrimitive.Content>\n </DropdownMenuPrimitive.Portal>\n );\n});\n"],"names":["Content","React","MenuContent","props","ref","internalRef","useMergedRef","menu","useCurrentMenu","_props$align","align","side","placement","otherProps","_objectWithoutPropertiesLoose","_excluded","className","cn","childrenRefs","childrenWithRefs","toArray","children","filter","child","map","index","current","shortcuts","forEach","shortcut","push","createShortcutKeyDownHandler","event","preventDefault","open","setTimeout","_childrenRefs$current","_childrenRefs$current2","click","handler","document","addEventListener","removeEventListener","DropdownMenuPrimitive","sideOffset","style","minWidth"],"mappings":";;;;;;;;;IAgBaA,OAAO,gBAAGC,UAAgB,CAAC,SAASC,WAAWA,CAACC,KAAuB,EAAEC,GAA8B;EAChH,IAAMC,WAAW,GAAGC,YAAY,CAAMF,GAAG,CAAC;EAC1C,IAAMG,IAAI,GAAGC,cAAc,EAAE;MAC7BC,YAAA,GAAsEN,KAAK,CAAnEO,KAAK;IAALA,KAAK,GAAAD,YAAA,cAAG,OAAO,GAAAA,YAAA;IAAuBE,IAAI,GAAoBR,KAAK,CAAxCS,SAAS;IAAWC,UAAU,GAAAC,6BAAA,CAAKX,KAAK,EAAAY,SAAA;EAC3E,IAAMC,SAAS,GAAGC,EAAE,CAAC,+EAA+E,EAAEd,KAAK,CAACa,SAAS,CAAC;;EAGtH,IAAME,YAAY,GAAGjB,MAAY,CAAoC,EAAE,CAAC;EACxE,IAAMkB,gBAAgB,GAAIlB,QAAc,CAACmB,OAAO,CAACjB,KAAK,CAACkB,QAAQ,CAAwD,CAClHC,MAAM,CAAC,UAAAC,KAAK;IAAA,OAAI,CAAC,CAACA,KAAK;IAAC;GACxBC,GAAG,CAAC,UAACD,KAAK,EAAEE,KAAK;IACdP,YAAY,CAACQ,OAAO,CAACD,KAAK,CAAC,gBAAGxB,SAAe,EAAkB;IAC/D,oBAAOA,YAAkB,CAACsB,KAAK,EAAE;MAAEnB,GAAG,EAAEc,YAAY,CAACQ,OAAO,CAACD,KAAK;KAAG,CAAC;GACzE,CAAC;;EAGNxB,SAAe,CAAC;IACZ,IAAM0B,SAAS,GAAuC,EAAE;IACxDR,gBAAgB,CAACS,OAAO,CAAC,UAACL,KAAK,EAAEE,KAAK;MAClC,IAAIF,KAAK,CAACpB,KAAK,CAAC0B,QAAQ,EAAE;QACtBF,SAAS,CAACG,IAAI,CACVC,4BAA4B,CAACR,KAAK,CAACpB,KAAK,CAAC0B,QAAQ,EAAE,UAAAG,KAAK;UACpDA,KAAK,CAACC,cAAc,EAAE;UACtB1B,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE2B,IAAI,EAAE;UACZC,UAAU,CAAC;YAAA,IAAAC,qBAAA,EAAAC,sBAAA;YAAA,QAAAD,qBAAA,GAAMlB,YAAY,CAACQ,OAAO,CAACD,KAAK,CAAC,cAAAW,qBAAA,wBAAAC,sBAAA,GAA3BD,qBAAA,CAA6BV,OAAO,cAAAW,sBAAA,uBAApCA,sBAAA,CAAsCC,KAAK,EAAE;aAAE,CAAC,CAAC;SACrE,CAAC,CACL;;KAER,CAAC;IAEFX,SAAS,CAACC,OAAO,CAAC,UAAAW,OAAO;MAAA,OAAIC,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEF,OAAO,CAAC;MAAC;IAE3E,OAAO;MACHZ,SAAS,CAACC,OAAO,CAAC,UAAAW,OAAO;QAAA,OAAIC,QAAQ,CAACE,mBAAmB,CAAC,SAAS,EAAEH,OAAO,CAAC;QAAC;KACjF;GACJ,EAAE,CAACpB,gBAAgB,CAAC,CAAC;EAEtB,oBACIlB,cAAC0C,MAA4B,qBACzB1C,cAAC0C,SAA6B,oBACtB9B,UAAU;IACdH,KAAK,EAAEA,KAAK;IACZM,SAAS,EAAEA,SAAS;iBACV,MAAM;IAChBL,IAAI,EAAEA,IAAI;IACViC,UAAU,EAAE,CAAC;IACbC,KAAK,EAAE;MAAEC,QAAQ,EAAEvC,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEuC;KAAU;IACnC1C,GAAG,EAAEC;MACJc,gBAAgB,CACW,CACL;AAEvC,CAAC;;;;"}
1
+ {"version":3,"file":"Content.js","sources":["../../../../../../../../src/components/Menu/components/Content.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport cn from 'clsx';\nimport { Align, Placement } from '../../../types';\nimport { useMergedRef } from '../../../hooks/useMergedRef';\nimport { useCurrentMenu } from '../Context';\nimport { createShortcutKeyDownHandler } from '../../../utils/keyboard';\nimport { MenuItemProps } from './Item';\n\nexport type MenuContentProps = Omit<DropdownMenuPrimitive.DropdownMenuContentProps, 'children' | 'side'> & {\n align?: Align;\n children: React.ReactNode;\n /** Set the position of the Menu relative to its trigger. Default value is `bottom` */\n placement?: Placement;\n};\n\nexport const Content = React.forwardRef(function MenuContent(props: MenuContentProps, ref: React.Ref<HTMLDivElement>) {\n const internalRef = useMergedRef<any>(ref);\n const menu = useCurrentMenu();\n const { align = 'start', children, placement: side, ...otherProps } = props;\n const className = cn('border border-transparent rounded block outline-none p-1 yt-shadow wcag-white', props.className);\n\n // attach refs to each child\n const childrenRefs = React.useRef<React.RefObject<HTMLDivElement>[]>([]);\n const childrenWithRefs = (React.Children.toArray(props.children) as React.ReactElement<MenuItemProps & { ref: any }>[])\n .filter(child => !!child) // remove falsey children\n .map((child, index) => {\n childrenRefs.current[index] = React.createRef<HTMLDivElement>();\n return React.cloneElement(child, { ref: childrenRefs.current[index] });\n });\n\n // register any shortcuts attached to children\n React.useEffect(() => {\n const shortcuts: ((event: KeyboardEvent) => void)[] = [];\n childrenWithRefs.forEach((child, index) => {\n if (child.props.shortcut) {\n shortcuts.push(\n createShortcutKeyDownHandler(\n child.props.shortcut,\n event => {\n event.preventDefault();\n menu?.open();\n setTimeout(() => childrenRefs.current[index]?.current?.click(), 1);\n },\n true,\n childrenRefs.current[index].current\n )\n );\n }\n });\n\n shortcuts.forEach(handler => document.addEventListener('keydown', handler));\n\n return () => {\n shortcuts.forEach(handler => document.removeEventListener('keydown', handler));\n };\n }, [childrenWithRefs]);\n\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n {...otherProps}\n align={align}\n className={className}\n data-taco=\"menu\"\n side={side}\n sideOffset={3}\n style={{ minWidth: menu?.minWidth }}\n ref={internalRef}>\n {childrenWithRefs}\n </DropdownMenuPrimitive.Content>\n </DropdownMenuPrimitive.Portal>\n );\n});\n"],"names":["Content","React","MenuContent","props","ref","internalRef","useMergedRef","menu","useCurrentMenu","_props$align","align","side","placement","otherProps","_objectWithoutPropertiesLoose","_excluded","className","cn","childrenRefs","childrenWithRefs","toArray","children","filter","child","map","index","current","shortcuts","forEach","shortcut","push","createShortcutKeyDownHandler","event","preventDefault","open","setTimeout","_childrenRefs$current","_childrenRefs$current2","click","handler","document","addEventListener","removeEventListener","DropdownMenuPrimitive","sideOffset","style","minWidth"],"mappings":";;;;;;;;;IAgBaA,OAAO,gBAAGC,UAAgB,CAAC,SAASC,WAAWA,CAACC,KAAuB,EAAEC,GAA8B;EAChH,IAAMC,WAAW,GAAGC,YAAY,CAAMF,GAAG,CAAC;EAC1C,IAAMG,IAAI,GAAGC,cAAc,EAAE;MAC7BC,YAAA,GAAsEN,KAAK,CAAnEO,KAAK;IAALA,KAAK,GAAAD,YAAA,cAAG,OAAO,GAAAA,YAAA;IAAuBE,IAAI,GAAoBR,KAAK,CAAxCS,SAAS;IAAWC,UAAU,GAAAC,6BAAA,CAAKX,KAAK,EAAAY,SAAA;EAC3E,IAAMC,SAAS,GAAGC,EAAE,CAAC,+EAA+E,EAAEd,KAAK,CAACa,SAAS,CAAC;;EAGtH,IAAME,YAAY,GAAGjB,MAAY,CAAoC,EAAE,CAAC;EACxE,IAAMkB,gBAAgB,GAAIlB,QAAc,CAACmB,OAAO,CAACjB,KAAK,CAACkB,QAAQ,CAAwD,CAClHC,MAAM,CAAC,UAAAC,KAAK;IAAA,OAAI,CAAC,CAACA,KAAK;IAAC;GACxBC,GAAG,CAAC,UAACD,KAAK,EAAEE,KAAK;IACdP,YAAY,CAACQ,OAAO,CAACD,KAAK,CAAC,gBAAGxB,SAAe,EAAkB;IAC/D,oBAAOA,YAAkB,CAACsB,KAAK,EAAE;MAAEnB,GAAG,EAAEc,YAAY,CAACQ,OAAO,CAACD,KAAK;KAAG,CAAC;GACzE,CAAC;;EAGNxB,SAAe,CAAC;IACZ,IAAM0B,SAAS,GAAuC,EAAE;IACxDR,gBAAgB,CAACS,OAAO,CAAC,UAACL,KAAK,EAAEE,KAAK;MAClC,IAAIF,KAAK,CAACpB,KAAK,CAAC0B,QAAQ,EAAE;QACtBF,SAAS,CAACG,IAAI,CACVC,4BAA4B,CACxBR,KAAK,CAACpB,KAAK,CAAC0B,QAAQ,EACpB,UAAAG,KAAK;UACDA,KAAK,CAACC,cAAc,EAAE;UACtB1B,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE2B,IAAI,EAAE;UACZC,UAAU,CAAC;YAAA,IAAAC,qBAAA,EAAAC,sBAAA;YAAA,QAAAD,qBAAA,GAAMlB,YAAY,CAACQ,OAAO,CAACD,KAAK,CAAC,cAAAW,qBAAA,wBAAAC,sBAAA,GAA3BD,qBAAA,CAA6BV,OAAO,cAAAW,sBAAA,uBAApCA,sBAAA,CAAsCC,KAAK,EAAE;aAAE,CAAC,CAAC;SACrE,EACD,IAAI,EACJpB,YAAY,CAACQ,OAAO,CAACD,KAAK,CAAC,CAACC,OAAO,CACtC,CACJ;;KAER,CAAC;IAEFC,SAAS,CAACC,OAAO,CAAC,UAAAW,OAAO;MAAA,OAAIC,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEF,OAAO,CAAC;MAAC;IAE3E,OAAO;MACHZ,SAAS,CAACC,OAAO,CAAC,UAAAW,OAAO;QAAA,OAAIC,QAAQ,CAACE,mBAAmB,CAAC,SAAS,EAAEH,OAAO,CAAC;QAAC;KACjF;GACJ,EAAE,CAACpB,gBAAgB,CAAC,CAAC;EAEtB,oBACIlB,cAAC0C,MAA4B,qBACzB1C,cAAC0C,SAA6B,oBACtB9B,UAAU;IACdH,KAAK,EAAEA,KAAK;IACZM,SAAS,EAAEA,SAAS;iBACV,MAAM;IAChBL,IAAI,EAAEA,IAAI;IACViC,UAAU,EAAE,CAAC;IACbC,KAAK,EAAE;MAAEC,QAAQ,EAAEvC,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEuC;KAAU;IACnC1C,GAAG,EAAEC;MACJc,gBAAgB,CACW,CACL;AAEvC,CAAC;;;;"}
@@ -40,13 +40,13 @@ function EditingControlCell(props) {
40
40
  if (nextValue !== value) {
41
41
  tableMeta.editing.setCellValue(cell, rowIndex, nextValue);
42
42
  if (hasNonTextControl) {
43
- tableMeta.editing.onCellChanged(cell, rowIndex);
43
+ tableMeta.editing.onCellChanged(cell, rowIndex, nextValue);
44
44
  }
45
45
  }
46
46
  };
47
47
  var handleBlur = function handleBlur() {
48
48
  tableMeta.editing.toggleDetailedMode(false);
49
- tableMeta.editing.onCellChanged(cell, rowIndex, !hasNonTextControl);
49
+ tableMeta.editing.onCellChanged(cell, rowIndex, undefined, !hasNonTextControl);
50
50
  };
51
51
  // ensure that blur runs when the cell gets unmounted (when vertically arrow key navigating)
52
52
  React__default.useEffect(function () {
@@ -1 +1 @@
1
- {"version":3,"file":"EditingControlCell.js","sources":["../../../../../../../../../../src/components/Table3/components/Columns/Cell/EditingControlCell.tsx"],"sourcesContent":["import React from 'react';\nimport { TableMeta as ReactTableMeta, ColumnMeta as ReactTableColumnMeta } from '@tanstack/react-table';\nimport { isDate } from 'date-fns';\nimport { Datepicker } from '../../../../Datepicker/Datepicker';\nimport { Switch } from '../../../../Switch/Switch';\nimport { Input } from '../../../../Input/Input';\nimport { TableColumnDataType, TableColumnRendererControl, TableFontSize } from '../../../../../primitives/Table/types';\nimport * as date from '../../../../../utils/date';\nimport { RowMoveIndicator } from './Editing/RowMoveIndicator';\nimport { TextareaWithAutosizing } from './Editing/TextareaWithAutosizing';\nimport { Field } from '../../../../Field/Field';\nimport { isElementInsideOrTriggeredFromContainer } from '../../../../../utils/dom';\nimport { TableCellRendererProps } from '../../../../../primitives/Table/Core/types';\nimport { RowContext } from '../../../../../primitives/Table/Core/components/Row/RowContext';\nimport { getCellAttributes } from '../../../../../primitives/Table/Core/components/Columns/Cell/util';\nimport { useEditingCellAutofocus } from './util';\nimport { isPressingMetaKey } from '../../../../../utils/keyboard';\nimport { Checkbox } from '../../../../Checkbox/Checkbox';\n\nexport function EditingControlCell<TType = unknown>(props: TableCellRendererProps<TType>) {\n const { cell, cellRef, isHighlighted, index } = props;\n const { rowIndex } = React.useContext(RowContext);\n const { table } = cell.getContext();\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const columnMeta = cell.column.columnDef.meta as ReactTableColumnMeta<TType, unknown>;\n const isActiveRow = tableMeta.rowActive.rowActiveIndex === rowIndex;\n const type = columnMeta.control ?? 'input';\n const handleFocus = useEditingCellAutofocus<TType>(props);\n const value = cell.getValue();\n\n // some controls, like select2, should trigger cell changed (validation, updates) as the value changes\n const hasNonTextControl = React.useMemo(() => {\n return (\n typeof type === 'function' &&\n !!cellRef.current?.querySelector('[data-taco=\"Select2\"],[data-taco=\"switch\"],[data-taco=\"checkbox\"]')\n );\n }, [cellRef.current]);\n\n const handleChange = (nextValue: unknown) => {\n if (nextValue !== value) {\n tableMeta.editing.setCellValue(cell, rowIndex, nextValue);\n\n if (hasNonTextControl) {\n tableMeta.editing.onCellChanged(cell, rowIndex);\n }\n }\n };\n\n const handleBlur = () => {\n tableMeta.editing.toggleDetailedMode(false);\n tableMeta.editing.onCellChanged(cell, rowIndex, !hasNonTextControl);\n };\n\n // ensure that blur runs when the cell gets unmounted (when vertically arrow key navigating)\n React.useEffect(() => {\n const ref = cellRef.current;\n\n return () => {\n if (document.activeElement === ref || isElementInsideOrTriggeredFromContainer(document.activeElement, ref)) {\n handleBlur();\n }\n };\n }, []);\n\n const error = tableMeta.editing.getCellError<TType>(cell);\n\n const controlProps = {\n dataType: columnMeta.dataType,\n fontSize: tableMeta.fontSize.size,\n id: cell.column.id,\n invalid: !!error,\n isDetailedMode: tableMeta.editing.isDetailedMode,\n isTruncated: !!columnMeta.enableTruncate,\n onBlur: handleBlur,\n onChange: handleChange,\n row: cell.row.original,\n rowPendingChanges: tableMeta.editing.getRowValue(cell.row.id),\n tabIndex: isActiveRow ? 0 : -1,\n toggleDetailedMode: tableMeta.editing.toggleDetailedMode,\n type,\n value,\n };\n\n const cellAttributes = {\n ...getCellAttributes(cell, index, isHighlighted),\n 'data-cell-editing-invalid': error ? true : undefined,\n 'data-taco': 'cell-control',\n onFocus: handleFocus,\n ref: cellRef,\n tabIndex: -1,\n };\n\n return (\n <td {...cellAttributes}>\n <Field invalid={!!error} message={error}>\n <MemoedEditingCell<TType> {...controlProps} />\n </Field>\n {\n // we show row move indicator here within the cell rather than the row because it is\n // an editing only feature, and we don't want to leak editing into the shared row component\n }\n <RowMoveIndicator cell={cell} cellRef={cellRef} isActiveRow={isActiveRow} />\n </td>\n );\n}\n\ntype MemoedEditingCellProps<TType = unknown, TValue = unknown> = {\n dataType?: TableColumnDataType;\n fontSize: TableFontSize;\n id: string;\n invalid: boolean;\n isDetailedMode: boolean;\n isTruncated: boolean;\n onBlur: () => void;\n onChange: (value: TValue) => void;\n row: TType;\n rowPendingChanges: Partial<TType> | undefined;\n tabIndex?: number;\n toggleDetailedMode: (detailed: React.SetStateAction<boolean>) => void;\n type: TableColumnRendererControl<TType>;\n value: TValue;\n};\n\nconst MemoedEditingCell = React.memo(function MemoedEditingCell<TType = unknown>(props: MemoedEditingCellProps<TType>) {\n const {\n dataType,\n fontSize,\n id,\n invalid,\n isDetailedMode,\n isTruncated,\n onBlur,\n onChange,\n row,\n rowPendingChanges,\n tabIndex = -1,\n toggleDetailedMode,\n type = 'input',\n value,\n } = props;\n const controlRef = React.useRef<HTMLElement>(null);\n const currentValue = row[id];\n const commonProps = {\n onBlur,\n ref: controlRef,\n tabIndex,\n };\n\n if (typeof type === 'function') {\n const controlFnProps = {\n ...commonProps,\n invalid,\n setValue: onChange,\n value,\n };\n\n return type(controlFnProps, { ...row, ...rowPendingChanges });\n }\n\n if (type === 'switch') {\n return (\n <Switch\n {...commonProps}\n checked={Boolean(value)}\n onChange={onChange}\n ref={controlRef as React.RefObject<HTMLButtonElement>}\n />\n );\n }\n\n if (type === 'checkbox') {\n return (\n <Checkbox\n {...commonProps}\n checked={Boolean(value)}\n onChange={onChange}\n ref={controlRef as React.RefObject<HTMLButtonElement>}\n />\n );\n }\n\n const handleInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n const target = event.target as HTMLInputElement | HTMLTextAreaElement;\n\n if (target.readOnly) {\n return;\n }\n\n // prevent active row navigation while in detailed mode\n if (\n isDetailedMode &&\n (event.key === 'ArrowUp' || event.key === 'ArrowDown' || event.key === 'ArrowLeft' || event.key === 'ArrowRight')\n ) {\n event.stopPropagation();\n }\n\n // enter or exit detail mode when pressing enter\n if (event.key === 'Enter') {\n // textareas support shift and enter, don't prevent default in that case\n if (event.shiftKey && isDetailedMode) {\n return;\n }\n\n event.preventDefault();\n\n if (isDetailedMode) {\n target.select?.();\n } else {\n target.setSelectionRange?.(target.value?.length, target.value?.length);\n }\n\n toggleDetailedMode(editing => !editing);\n return;\n }\n\n // reset the value, or exit edit mode when pressing escape\n if (event.key === 'Escape') {\n if (isDetailedMode) {\n event.preventDefault();\n toggleDetailedMode(false);\n\n if (value !== currentValue) {\n props.onChange(currentValue);\n }\n\n // have to let onChange run before selecting, otherwise the value changes\n requestAnimationFrame(() => target.select?.());\n }\n\n return;\n }\n\n // toggle into detailed mode when actually inputting something\n if (!isPressingMetaKey(event) && (/^[a-z0-9]$/i.test(event.key) || event.key === 'Backspace')) {\n toggleDetailedMode(true);\n }\n };\n\n const handleFocus = (event: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n if (!isDetailedMode) {\n event.target.select();\n }\n };\n\n if (type === 'datepicker') {\n const valueAsDate = date.parse(value as Date | string | undefined);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newDate = (event as any).detail as Date;\n\n if (!valueAsDate || !newDate || (isDate(valueAsDate) && isDate(newDate) && !date.isWeakEqual(valueAsDate, newDate))) {\n props.onChange(newDate);\n }\n };\n\n return (\n <Datepicker\n {...commonProps}\n invalid={invalid}\n onChange={handleChange}\n onFocus={handleFocus}\n onKeyDown={handleInputKeyDown}\n ref={controlRef as React.RefObject<HTMLInputElement>}\n value={valueAsDate}\n />\n );\n }\n\n if (type === 'textarea') {\n const handleChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n onChange(event.target.value);\n };\n\n return (\n <TextareaWithAutosizing\n {...commonProps}\n fontSize={fontSize}\n invalid={invalid}\n isTruncated={isTruncated}\n onChange={handleChange}\n onFocus={handleFocus}\n onKeyDown={handleInputKeyDown}\n ref={controlRef as React.RefObject<HTMLTextAreaElement>}\n value={String(value ?? '')}\n />\n );\n }\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange(dataType === 'number' && event.target.value ? Number.parseInt(event.target.value) : event.target.value);\n };\n\n return (\n <Input\n {...commonProps}\n invalid={invalid}\n onChange={handleChange}\n onFocus={handleFocus}\n onKeyDown={handleInputKeyDown}\n ref={controlRef as React.RefObject<HTMLInputElement>}\n type={dataType === 'number' ? 'number' : undefined}\n value={dataType === 'number' ? (value as number) : String(value ?? '')}\n />\n );\n}) as <TType = unknown>(props: MemoedEditingCellProps<TType>) => JSX.Element;\n"],"names":["EditingControlCell","props","cell","cellRef","isHighlighted","index","_React$useContext","React","useContext","RowContext","rowIndex","_cell$getContext","getContext","table","tableMeta","options","meta","columnMeta","column","columnDef","isActiveRow","rowActive","rowActiveIndex","type","_columnMeta$control","control","handleFocus","useEditingCellAutofocus","value","getValue","hasNonTextControl","useMemo","_cellRef$current","current","querySelector","handleChange","nextValue","editing","setCellValue","onCellChanged","handleBlur","toggleDetailedMode","useEffect","ref","document","activeElement","isElementInsideOrTriggeredFromContainer","error","getCellError","controlProps","dataType","fontSize","size","id","invalid","isDetailedMode","isTruncated","enableTruncate","onBlur","onChange","row","original","rowPendingChanges","getRowValue","tabIndex","cellAttributes","_extends","getCellAttributes","undefined","onFocus","Field","message","MemoedEditingCell","RowMoveIndicator","memo","_props$tabIndex","_props$type","controlRef","useRef","currentValue","commonProps","controlFnProps","setValue","Switch","checked","Boolean","Checkbox","handleInputKeyDown","event","target","readOnly","key","stopPropagation","shiftKey","preventDefault","_target$select","select","call","_target$setSelectionR","_target$value","_target$value2","setSelectionRange","length","requestAnimationFrame","_target$select2","isPressingMetaKey","test","valueAsDate","date","newDate","detail","isDate","Datepicker","onKeyDown","TextareaWithAutosizing","String","Number","parseInt","Input"],"mappings":"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"}
1
+ {"version":3,"file":"EditingControlCell.js","sources":["../../../../../../../../../../src/components/Table3/components/Columns/Cell/EditingControlCell.tsx"],"sourcesContent":["import React from 'react';\nimport { TableMeta as ReactTableMeta, ColumnMeta as ReactTableColumnMeta } from '@tanstack/react-table';\nimport { isDate } from 'date-fns';\nimport { Datepicker } from '../../../../Datepicker/Datepicker';\nimport { Switch } from '../../../../Switch/Switch';\nimport { Input } from '../../../../Input/Input';\nimport { TableColumnDataType, TableColumnRendererControl, TableFontSize } from '../../../../../primitives/Table/types';\nimport * as date from '../../../../../utils/date';\nimport { RowMoveIndicator } from './Editing/RowMoveIndicator';\nimport { TextareaWithAutosizing } from './Editing/TextareaWithAutosizing';\nimport { Field } from '../../../../Field/Field';\nimport { isElementInsideOrTriggeredFromContainer } from '../../../../../utils/dom';\nimport { TableCellRendererProps } from '../../../../../primitives/Table/Core/types';\nimport { RowContext } from '../../../../../primitives/Table/Core/components/Row/RowContext';\nimport { getCellAttributes } from '../../../../../primitives/Table/Core/components/Columns/Cell/util';\nimport { useEditingCellAutofocus } from './util';\nimport { isPressingMetaKey } from '../../../../../utils/keyboard';\nimport { Checkbox } from '../../../../Checkbox/Checkbox';\n\nexport function EditingControlCell<TType = unknown>(props: TableCellRendererProps<TType>) {\n const { cell, cellRef, isHighlighted, index } = props;\n const { rowIndex } = React.useContext(RowContext);\n const { table } = cell.getContext();\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const columnMeta = cell.column.columnDef.meta as ReactTableColumnMeta<TType, unknown>;\n const isActiveRow = tableMeta.rowActive.rowActiveIndex === rowIndex;\n const type = columnMeta.control ?? 'input';\n const handleFocus = useEditingCellAutofocus<TType>(props);\n const value = cell.getValue();\n\n // some controls, like select2, should trigger cell changed (validation, updates) as the value changes\n const hasNonTextControl = React.useMemo(() => {\n return (\n typeof type === 'function' &&\n !!cellRef.current?.querySelector('[data-taco=\"Select2\"],[data-taco=\"switch\"],[data-taco=\"checkbox\"]')\n );\n }, [cellRef.current]);\n\n const handleChange = (nextValue: unknown) => {\n if (nextValue !== value) {\n tableMeta.editing.setCellValue(cell, rowIndex, nextValue);\n\n if (hasNonTextControl) {\n tableMeta.editing.onCellChanged(cell, rowIndex, nextValue);\n }\n }\n };\n\n const handleBlur = () => {\n tableMeta.editing.toggleDetailedMode(false);\n tableMeta.editing.onCellChanged(cell, rowIndex, undefined, !hasNonTextControl);\n };\n\n // ensure that blur runs when the cell gets unmounted (when vertically arrow key navigating)\n React.useEffect(() => {\n const ref = cellRef.current;\n\n return () => {\n if (document.activeElement === ref || isElementInsideOrTriggeredFromContainer(document.activeElement, ref)) {\n handleBlur();\n }\n };\n }, []);\n\n const error = tableMeta.editing.getCellError<TType>(cell);\n\n const controlProps = {\n dataType: columnMeta.dataType,\n fontSize: tableMeta.fontSize.size,\n id: cell.column.id,\n invalid: !!error,\n isDetailedMode: tableMeta.editing.isDetailedMode,\n isTruncated: !!columnMeta.enableTruncate,\n onBlur: handleBlur,\n onChange: handleChange,\n row: cell.row.original,\n rowPendingChanges: tableMeta.editing.getRowValue(cell.row.id),\n tabIndex: isActiveRow ? 0 : -1,\n toggleDetailedMode: tableMeta.editing.toggleDetailedMode,\n type,\n value,\n };\n\n const cellAttributes = {\n ...getCellAttributes(cell, index, isHighlighted),\n 'data-cell-editing-invalid': error ? true : undefined,\n 'data-taco': 'cell-control',\n onFocus: handleFocus,\n ref: cellRef,\n tabIndex: -1,\n };\n\n return (\n <td {...cellAttributes}>\n <Field invalid={!!error} message={error}>\n <MemoedEditingCell<TType> {...controlProps} />\n </Field>\n {\n // we show row move indicator here within the cell rather than the row because it is\n // an editing only feature, and we don't want to leak editing into the shared row component\n }\n <RowMoveIndicator cell={cell} cellRef={cellRef} isActiveRow={isActiveRow} />\n </td>\n );\n}\n\ntype MemoedEditingCellProps<TType = unknown, TValue = unknown> = {\n dataType?: TableColumnDataType;\n fontSize: TableFontSize;\n id: string;\n invalid: boolean;\n isDetailedMode: boolean;\n isTruncated: boolean;\n onBlur: () => void;\n onChange: (value: TValue) => void;\n row: TType;\n rowPendingChanges: Partial<TType> | undefined;\n tabIndex?: number;\n toggleDetailedMode: (detailed: React.SetStateAction<boolean>) => void;\n type: TableColumnRendererControl<TType>;\n value: TValue;\n};\n\nconst MemoedEditingCell = React.memo(function MemoedEditingCell<TType = unknown>(props: MemoedEditingCellProps<TType>) {\n const {\n dataType,\n fontSize,\n id,\n invalid,\n isDetailedMode,\n isTruncated,\n onBlur,\n onChange,\n row,\n rowPendingChanges,\n tabIndex = -1,\n toggleDetailedMode,\n type = 'input',\n value,\n } = props;\n const controlRef = React.useRef<HTMLElement>(null);\n const currentValue = row[id];\n const commonProps = {\n onBlur,\n ref: controlRef,\n tabIndex,\n };\n\n if (typeof type === 'function') {\n const controlFnProps = {\n ...commonProps,\n invalid,\n setValue: onChange,\n value,\n };\n\n return type(controlFnProps, { ...row, ...rowPendingChanges });\n }\n\n if (type === 'switch') {\n return (\n <Switch\n {...commonProps}\n checked={Boolean(value)}\n onChange={onChange}\n ref={controlRef as React.RefObject<HTMLButtonElement>}\n />\n );\n }\n\n if (type === 'checkbox') {\n return (\n <Checkbox\n {...commonProps}\n checked={Boolean(value)}\n onChange={onChange}\n ref={controlRef as React.RefObject<HTMLButtonElement>}\n />\n );\n }\n\n const handleInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n const target = event.target as HTMLInputElement | HTMLTextAreaElement;\n\n if (target.readOnly) {\n return;\n }\n\n // prevent active row navigation while in detailed mode\n if (\n isDetailedMode &&\n (event.key === 'ArrowUp' || event.key === 'ArrowDown' || event.key === 'ArrowLeft' || event.key === 'ArrowRight')\n ) {\n event.stopPropagation();\n }\n\n // enter or exit detail mode when pressing enter\n if (event.key === 'Enter') {\n // textareas support shift and enter, don't prevent default in that case\n if (event.shiftKey && isDetailedMode) {\n return;\n }\n\n event.preventDefault();\n\n if (isDetailedMode) {\n target.select?.();\n } else {\n target.setSelectionRange?.(target.value?.length, target.value?.length);\n }\n\n toggleDetailedMode(editing => !editing);\n return;\n }\n\n // reset the value, or exit edit mode when pressing escape\n if (event.key === 'Escape') {\n if (isDetailedMode) {\n event.preventDefault();\n toggleDetailedMode(false);\n\n if (value !== currentValue) {\n props.onChange(currentValue);\n }\n\n // have to let onChange run before selecting, otherwise the value changes\n requestAnimationFrame(() => target.select?.());\n }\n\n return;\n }\n\n // toggle into detailed mode when actually inputting something\n if (!isPressingMetaKey(event) && (/^[a-z0-9]$/i.test(event.key) || event.key === 'Backspace')) {\n toggleDetailedMode(true);\n }\n };\n\n const handleFocus = (event: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n if (!isDetailedMode) {\n event.target.select();\n }\n };\n\n if (type === 'datepicker') {\n const valueAsDate = date.parse(value as Date | string | undefined);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newDate = (event as any).detail as Date;\n\n if (!valueAsDate || !newDate || (isDate(valueAsDate) && isDate(newDate) && !date.isWeakEqual(valueAsDate, newDate))) {\n props.onChange(newDate);\n }\n };\n\n return (\n <Datepicker\n {...commonProps}\n invalid={invalid}\n onChange={handleChange}\n onFocus={handleFocus}\n onKeyDown={handleInputKeyDown}\n ref={controlRef as React.RefObject<HTMLInputElement>}\n value={valueAsDate}\n />\n );\n }\n\n if (type === 'textarea') {\n const handleChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n onChange(event.target.value);\n };\n\n return (\n <TextareaWithAutosizing\n {...commonProps}\n fontSize={fontSize}\n invalid={invalid}\n isTruncated={isTruncated}\n onChange={handleChange}\n onFocus={handleFocus}\n onKeyDown={handleInputKeyDown}\n ref={controlRef as React.RefObject<HTMLTextAreaElement>}\n value={String(value ?? '')}\n />\n );\n }\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange(dataType === 'number' && event.target.value ? Number.parseInt(event.target.value) : event.target.value);\n };\n\n return (\n <Input\n {...commonProps}\n invalid={invalid}\n onChange={handleChange}\n onFocus={handleFocus}\n onKeyDown={handleInputKeyDown}\n ref={controlRef as React.RefObject<HTMLInputElement>}\n type={dataType === 'number' ? 'number' : undefined}\n value={dataType === 'number' ? (value as number) : String(value ?? '')}\n />\n );\n}) as <TType = unknown>(props: MemoedEditingCellProps<TType>) => JSX.Element;\n"],"names":["EditingControlCell","props","cell","cellRef","isHighlighted","index","_React$useContext","React","useContext","RowContext","rowIndex","_cell$getContext","getContext","table","tableMeta","options","meta","columnMeta","column","columnDef","isActiveRow","rowActive","rowActiveIndex","type","_columnMeta$control","control","handleFocus","useEditingCellAutofocus","value","getValue","hasNonTextControl","useMemo","_cellRef$current","current","querySelector","handleChange","nextValue","editing","setCellValue","onCellChanged","handleBlur","toggleDetailedMode","undefined","useEffect","ref","document","activeElement","isElementInsideOrTriggeredFromContainer","error","getCellError","controlProps","dataType","fontSize","size","id","invalid","isDetailedMode","isTruncated","enableTruncate","onBlur","onChange","row","original","rowPendingChanges","getRowValue","tabIndex","cellAttributes","_extends","getCellAttributes","onFocus","Field","message","MemoedEditingCell","RowMoveIndicator","memo","_props$tabIndex","_props$type","controlRef","useRef","currentValue","commonProps","controlFnProps","setValue","Switch","checked","Boolean","Checkbox","handleInputKeyDown","event","target","readOnly","key","stopPropagation","shiftKey","preventDefault","_target$select","select","call","_target$setSelectionR","_target$value","_target$value2","setSelectionRange","length","requestAnimationFrame","_target$select2","isPressingMetaKey","test","valueAsDate","date","newDate","detail","isDate","Datepicker","onKeyDown","TextareaWithAutosizing","String","Number","parseInt","Input"],"mappings":"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"}
@@ -43,7 +43,11 @@ function Alert(props) {
43
43
  var visibleColumns = table.getVisibleFlatColumns().map(function (c) {
44
44
  return c.id;
45
45
  });
46
- var rowIdentityColumn = tableMeta.rowIdentityAccessor && visibleColumns.includes(String(tableMeta.rowIdentityAccessor)) ? table.getColumn(String(tableMeta.rowIdentityAccessor)) : undefined;
46
+ var rowIdentityColumn = tableMeta.rowIdentityAccessor && visibleColumns.includes(String(tableMeta.rowIdentityAccessor)) ?
47
+ // table.getColumn(columName) throw error in strict dev mode. Related thread: https://github.com/TanStack/table/discussions/5505
48
+ table.getAllColumns().find(function (x) {
49
+ return x.id === String(tableMeta.rowIdentityAccessor);
50
+ }) : undefined;
47
51
  pendingChangesWithErrors.forEach(function (pendingChangeWithError, index) {
48
52
  var _row;
49
53
  // if appropriate, concatenate the item with the text "and"
@@ -1 +1 @@
1
- {"version":3,"file":"Alert.js","sources":["../../../../../../../../../src/components/Table3/components/Editing/Alert.tsx"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport { ScrollToOptions as ReactVirtualScrollToOptions } from '@tanstack/react-virtual';\nimport { Alert as BaseAlert, AlertProps as BaseAlertProps } from '../../../Alert/Alert';\nimport { TableRef } from '../../../../primitives/Table/types';\nimport { Tooltip } from '../../../Tooltip/Tooltip';\nimport { useLocalization } from '../../../Provider/Localization';\nimport { Dialog, DialogProps } from '../../../Dialog/Dialog';\nimport { Group } from '../../../Group/Group';\nimport { Button } from '../../../Button/Button';\n\ntype AlertProps<TType = unknown> = Omit<BaseAlertProps, 'children'> & {\n scrollToIndex: (index: number, options: ReactVirtualScrollToOptions) => void;\n table: ReactTable<TType>;\n tableRef: React.RefObject<TableRef>;\n};\n\nexport function Alert<TType = unknown>(props: AlertProps<TType>) {\n const { scrollToIndex, table, tableRef, ...attributes } = props;\n const { texts } = useLocalization();\n const validationTexts = texts.table3.editing.validation;\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const [showFilterResetDialog, setShowFilterResetDialog] = React.useState<number | false>(false);\n const pendingChangesWithErrors = tableMeta.editing.getErrorsShownInAlert<TType>();\n\n function scrollToRow(rowIndex: number) {\n tableMeta.rowActive.setRowActiveIndex(rowIndex);\n scrollToIndex(rowIndex, { align: 'center' });\n\n requestAnimationFrame(() => {\n const cell = tableRef.current?.querySelector(\n 'tbody > tr[data-row-active=\"true\"] > td[data-cell-editing-invalid=\"true\"]'\n );\n\n if (cell) {\n (cell as HTMLElement).focus?.();\n }\n });\n }\n\n // generate the \"N unsaved entries\" title\n const title = (\n pendingChangesWithErrors.length === 1 ? validationTexts.alert.titleOne : validationTexts.alert.titlePlural\n ).replace('[COUNT]', String(pendingChangesWithErrors.length));\n\n // generate links to each invalid row, to go into the error message\n const links: React.ReactNode[] = [];\n const visibleColumns = table.getVisibleFlatColumns().map(c => c.id);\n const rowIdentityColumn =\n tableMeta.rowIdentityAccessor && visibleColumns.includes(String(tableMeta.rowIdentityAccessor))\n ? table.getColumn(String(tableMeta.rowIdentityAccessor))\n : undefined;\n\n pendingChangesWithErrors.forEach((pendingChangeWithError, index) => {\n // if appropriate, concatenate the item with the text \"and\"\n if (pendingChangesWithErrors.length > 1 && index === pendingChangesWithErrors.length - 1) {\n // Add space before and after `messageAnd` text\n links.push(` ${validationTexts.alert.messageAnd} `);\n }\n pendingChangeWithError;\n\n const handleClick = () => {\n // if row is visible\n if (pendingChangeWithError.index > -1) {\n scrollToRow(pendingChangeWithError.index);\n tableMeta.rowActive.setRowActiveIndex(pendingChangeWithError.index);\n }\n // if row is filtered out\n else {\n setShowFilterResetDialog(pendingChangeWithError.index);\n }\n };\n\n let tooltip;\n\n if (pendingChangeWithError.errors.row) {\n tooltip = pendingChangeWithError.errors.row;\n } else {\n const firstCellErrorColumnId = Object.keys(pendingChangeWithError.errors.cells)[0];\n const columnName = table.getAllColumns().find(column => column.id === firstCellErrorColumnId)?.columnDef.meta?.header;\n tooltip = `${columnName}: ${pendingChangeWithError.errors.cells[firstCellErrorColumnId]}`;\n }\n\n let row;\n try {\n row = table.getRow(pendingChangeWithError.rowId).original;\n } catch {\n // because of server loading, some rows may not be accessible\n }\n\n links.push(\n <Tooltip key={pendingChangeWithError.rowId} title={tooltip}>\n <span className=\"text-blue\" onClick={handleClick} role=\"button\">\n {rowIdentityColumn ? row?.[rowIdentityColumn.id] : pendingChangeWithError.index + 1}\n </span>\n </Tooltip>\n );\n\n // if appropriate, concatenate the item with the text \",\"\n if (pendingChangesWithErrors.length > 2 && index < pendingChangesWithErrors.length - 2) {\n links.push(', ');\n }\n });\n\n // generate the \"Row N is incomplete and hasn't been saved\" error message\n const message = (links.length === 1 ? validationTexts.alert.messageOne : validationTexts.alert.messagePlural)\n .split(/(\\[\\w+\\])/)\n .map(part => {\n if (part === '[COLUMN]') {\n return rowIdentityColumn?.columnDef.meta?.header ?? validationTexts.alert.messageRow;\n }\n\n if (part === '[ROW]') {\n return links;\n }\n\n return part;\n });\n\n const handleResetFilters = () => {\n table.resetGlobalFilter();\n table.resetColumnFilters();\n\n requestAnimationFrame(() => {\n if (showFilterResetDialog && showFilterResetDialog > -1) {\n scrollToRow(showFilterResetDialog);\n }\n\n setShowFilterResetDialog(false);\n });\n };\n\n return (\n <>\n <BaseAlert {...attributes} state=\"error\">\n <span className=\"font-bold\">{title}</span>&nbsp;{message}\n </BaseAlert>\n <FilterResetDialog\n open={showFilterResetDialog !== false}\n onChange={() => setShowFilterResetDialog(false)}\n onSubmit={handleResetFilters}\n />\n </>\n );\n}\n\ntype FilterResetDialogProps = Omit<DialogProps, 'children'> & {\n onSubmit: () => void;\n};\n\nfunction FilterResetDialog(props: FilterResetDialogProps) {\n const { onSubmit: handleSubmit, ...dialogProps } = props;\n const { texts } = useLocalization();\n\n return (\n <Dialog {...dialogProps} size=\"xs\">\n <Dialog.Content aria-label=\"Create a new account\">\n <Dialog.Title>{texts.table3.editing.validation.resetFiltersDialog.title}</Dialog.Title>\n\n <p>{texts.table3.editing.validation.resetFiltersDialog.description}</p>\n\n <Dialog.Footer>\n <Group>\n <Dialog.Close>\n <Button>{texts.table3.editing.validation.resetFiltersDialog.cancel}</Button>\n </Dialog.Close>\n <Button appearance=\"primary\" onClick={handleSubmit}>\n {texts.table3.editing.validation.resetFiltersDialog.confirm}\n </Button>\n </Group>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog>\n );\n}\n"],"names":["Alert","props","scrollToIndex","table","tableRef","attributes","_objectWithoutPropertiesLoose","_excluded","_useLocalization","useLocalization","texts","validationTexts","table3","editing","validation","tableMeta","options","meta","_React$useState","React","useState","showFilterResetDialog","setShowFilterResetDialog","pendingChangesWithErrors","getErrorsShownInAlert","scrollToRow","rowIndex","rowActive","setRowActiveIndex","align","requestAnimationFrame","cell","_tableRef$current","current","querySelector","_cell$focus","focus","call","title","length","alert","titleOne","titlePlural","replace","String","links","visibleColumns","getVisibleFlatColumns","map","c","id","rowIdentityColumn","rowIdentityAccessor","includes","getColumn","undefined","forEach","pendingChangeWithError","index","push","messageAnd","handleClick","tooltip","errors","row","_table$getAllColumns$","_table$getAllColumns$2","firstCellErrorColumnId","Object","keys","cells","columnName","getAllColumns","find","column","columnDef","header","getRow","rowId","original","_unused","Tooltip","key","className","onClick","role","_row","message","messageOne","messagePlural","split","part","_rowIdentityColumn$co","_rowIdentityColumn$co2","messageRow","handleResetFilters","resetGlobalFilter","resetColumnFilters","BaseAlert","state","FilterResetDialog","open","onChange","onSubmit","handleSubmit","dialogProps","_excluded2","_useLocalization2","Dialog","size","Content","Title","resetFiltersDialog","description","Footer","Group","Close","Button","cancel","appearance","confirm"],"mappings":";;;;;;;;;;;SAiBgBA,KAAKA,CAAkBC,KAAwB;EAC3D,IAAQC,aAAa,GAAqCD,KAAK,CAAvDC,aAAa;IAAEC,KAAK,GAA8BF,KAAK,CAAxCE,KAAK;IAAEC,QAAQ,GAAoBH,KAAK,CAAjCG,QAAQ;IAAKC,UAAU,GAAAC,6BAAA,CAAKL,KAAK,EAAAM,SAAA;EAC/D,IAAAC,gBAAA,GAAkBC,eAAe,EAAE;IAA3BC,KAAK,GAAAF,gBAAA,CAALE,KAAK;EACb,IAAMC,eAAe,GAAGD,KAAK,CAACE,MAAM,CAACC,OAAO,CAACC,UAAU;EACvD,IAAMC,SAAS,GAAGZ,KAAK,CAACa,OAAO,CAACC,IAA6B;EAC7D,IAAAC,eAAA,GAA0DC,cAAK,CAACC,QAAQ,CAAiB,KAAK,CAAC;IAAxFC,qBAAqB,GAAAH,eAAA;IAAEI,wBAAwB,GAAAJ,eAAA;EACtD,IAAMK,wBAAwB,GAAGR,SAAS,CAACF,OAAO,CAACW,qBAAqB,EAAS;EAEjF,SAASC,WAAWA,CAACC,QAAgB;IACjCX,SAAS,CAACY,SAAS,CAACC,iBAAiB,CAACF,QAAQ,CAAC;IAC/CxB,aAAa,CAACwB,QAAQ,EAAE;MAAEG,KAAK,EAAE;KAAU,CAAC;IAE5CC,qBAAqB,CAAC;;MAClB,IAAMC,IAAI,IAAAC,iBAAA,GAAG5B,QAAQ,CAAC6B,OAAO,cAAAD,iBAAA,uBAAhBA,iBAAA,CAAkBE,aAAa,CACxC,2EAA2E,CAC9E;MAED,IAAIH,IAAI,EAAE;QAAA,IAAAI,WAAA;QACL,CAAAA,WAAA,GAAAJ,IAAoB,CAACK,KAAK,cAAAD,WAAA,uBAA1BA,WAAA,CAAAE,IAAA,CAAAN,KAA8B;;KAEtC,CAAC;;;EAIN,IAAMO,KAAK,GAAG,CACVf,wBAAwB,CAACgB,MAAM,KAAK,CAAC,GAAG5B,eAAe,CAAC6B,KAAK,CAACC,QAAQ,GAAG9B,eAAe,CAAC6B,KAAK,CAACE,WAAW,EAC5GC,OAAO,CAAC,SAAS,EAAEC,MAAM,CAACrB,wBAAwB,CAACgB,MAAM,CAAC,CAAC;;EAG7D,IAAMM,KAAK,GAAsB,EAAE;EACnC,IAAMC,cAAc,GAAG3C,KAAK,CAAC4C,qBAAqB,EAAE,CAACC,GAAG,CAAC,UAAAC,CAAC;IAAA,OAAIA,CAAC,CAACC,EAAE;IAAC;EACnE,IAAMC,iBAAiB,GACnBpC,SAAS,CAACqC,mBAAmB,IAAIN,cAAc,CAACO,QAAQ,CAACT,MAAM,CAAC7B,SAAS,CAACqC,mBAAmB,CAAC,CAAC,GACzFjD,KAAK,CAACmD,SAAS,CAACV,MAAM,CAAC7B,SAAS,CAACqC,mBAAmB,CAAC,CAAC,GACtDG,SAAS;EAEnBhC,wBAAwB,CAACiC,OAAO,CAAC,UAACC,sBAAsB,EAAEC,KAAK;;;IAE3D,IAAInC,wBAAwB,CAACgB,MAAM,GAAG,CAAC,IAAImB,KAAK,KAAKnC,wBAAwB,CAACgB,MAAM,GAAG,CAAC,EAAE;;MAEtFM,KAAK,CAACc,IAAI,OAAKhD,eAAe,CAAC6B,KAAK,CAACoB,UAAU,MAAG,CAAC;;IAIvD,IAAMC,WAAW,GAAG,SAAdA,WAAWA;;MAEb,IAAIJ,sBAAsB,CAACC,KAAK,GAAG,CAAC,CAAC,EAAE;QACnCjC,WAAW,CAACgC,sBAAsB,CAACC,KAAK,CAAC;QACzC3C,SAAS,CAACY,SAAS,CAACC,iBAAiB,CAAC6B,sBAAsB,CAACC,KAAK,CAAC;;;WAGlE;QACDpC,wBAAwB,CAACmC,sBAAsB,CAACC,KAAK,CAAC;;KAE7D;IAED,IAAII,OAAO;IAEX,IAAIL,sBAAsB,CAACM,MAAM,CAACC,GAAG,EAAE;MACnCF,OAAO,GAAGL,sBAAsB,CAACM,MAAM,CAACC,GAAG;KAC9C,MAAM;MAAA,IAAAC,qBAAA,EAAAC,sBAAA;MACH,IAAMC,sBAAsB,GAAGC,MAAM,CAACC,IAAI,CAACZ,sBAAsB,CAACM,MAAM,CAACO,KAAK,CAAC,CAAC,CAAC,CAAC;MAClF,IAAMC,UAAU,IAAAN,qBAAA,GAAG9D,KAAK,CAACqE,aAAa,EAAE,CAACC,IAAI,CAAC,UAAAC,MAAM;QAAA,OAAIA,MAAM,CAACxB,EAAE,KAAKiB,sBAAsB;QAAC,cAAAF,qBAAA,wBAAAC,sBAAA,GAA1ED,qBAAA,CAA4EU,SAAS,CAAC1D,IAAI,cAAAiD,sBAAA,uBAA1FA,sBAAA,CAA4FU,MAAM;MACrHd,OAAO,GAAMS,UAAU,UAAKd,sBAAsB,CAACM,MAAM,CAACO,KAAK,CAACH,sBAAsB,CAAG;;IAG7F,IAAIH,GAAG;IACP,IAAI;MACAA,GAAG,GAAG7D,KAAK,CAAC0E,MAAM,CAACpB,sBAAsB,CAACqB,KAAK,CAAC,CAACC,QAAQ;KAC5D,CAAC,OAAAC,OAAA,EAAM;;;IAIRnC,KAAK,CAACc,IAAI,cACNxC,6BAAC8D,OAAO;MAACC,GAAG,EAAEzB,sBAAsB,CAACqB,KAAK;MAAExC,KAAK,EAAEwB;oBAC/C3C;MAAMgE,SAAS,EAAC,WAAW;MAACC,OAAO,EAAEvB,WAAW;MAAEwB,IAAI,EAAC;OAClDlC,iBAAiB,IAAAmC,IAAA,GAAGtB,GAAG,cAAAsB,IAAA,uBAAHA,IAAA,CAAMnC,iBAAiB,CAACD,EAAE,CAAC,GAAGO,sBAAsB,CAACC,KAAK,GAAG,CAAC,CAChF,CACD,CACb;;IAGD,IAAInC,wBAAwB,CAACgB,MAAM,GAAG,CAAC,IAAImB,KAAK,GAAGnC,wBAAwB,CAACgB,MAAM,GAAG,CAAC,EAAE;MACpFM,KAAK,CAACc,IAAI,CAAC,IAAI,CAAC;;GAEvB,CAAC;;EAGF,IAAM4B,OAAO,GAAG,CAAC1C,KAAK,CAACN,MAAM,KAAK,CAAC,GAAG5B,eAAe,CAAC6B,KAAK,CAACgD,UAAU,GAAG7E,eAAe,CAAC6B,KAAK,CAACiD,aAAa,EACvGC,KAAK,CAAC,WAAW,CAAC,CAClB1C,GAAG,CAAC,UAAA2C,IAAI;IACL,IAAIA,IAAI,KAAK,UAAU,EAAE;MAAA,IAAAC,qBAAA,EAAAC,sBAAA;MACrB,QAAAD,qBAAA,GAAOzC,iBAAiB,aAAjBA,iBAAiB,wBAAA0C,sBAAA,GAAjB1C,iBAAiB,CAAEwB,SAAS,CAAC1D,IAAI,cAAA4E,sBAAA,uBAAjCA,sBAAA,CAAmCjB,MAAM,cAAAgB,qBAAA,cAAAA,qBAAA,GAAIjF,eAAe,CAAC6B,KAAK,CAACsD,UAAU;;IAGxF,IAAIH,IAAI,KAAK,OAAO,EAAE;MAClB,OAAO9C,KAAK;;IAGhB,OAAO8C,IAAI;GACd,CAAC;EAEN,IAAMI,kBAAkB,GAAG,SAArBA,kBAAkBA;IACpB5F,KAAK,CAAC6F,iBAAiB,EAAE;IACzB7F,KAAK,CAAC8F,kBAAkB,EAAE;IAE1BnE,qBAAqB,CAAC;MAClB,IAAIT,qBAAqB,IAAIA,qBAAqB,GAAG,CAAC,CAAC,EAAE;QACrDI,WAAW,CAACJ,qBAAqB,CAAC;;MAGtCC,wBAAwB,CAAC,KAAK,CAAC;KAClC,CAAC;GACL;EAED,oBACIH,yEACIA,6BAAC+E,OAAS,oBAAK7F,UAAU;IAAE8F,KAAK,EAAC;mBAC7BhF;IAAMgE,SAAS,EAAC;KAAa7C,KAAK,CAAQ,UAAOiD,OAAO,CAChD,eACZpE,6BAACiF,iBAAiB;IACdC,IAAI,EAAEhF,qBAAqB,KAAK,KAAK;IACrCiF,QAAQ,EAAE,SAAAA;MAAA,OAAMhF,wBAAwB,CAAC,KAAK,CAAC;;IAC/CiF,QAAQ,EAAER;IACZ,CACH;AAEX;AAMA,SAASK,iBAAiBA,CAACnG,KAA6B;EACpD,IAAkBuG,YAAY,GAAqBvG,KAAK,CAAhDsG,QAAQ;IAAmBE,WAAW,GAAAnG,6BAAA,CAAKL,KAAK,EAAAyG,UAAA;EACxD,IAAAC,iBAAA,GAAkBlG,eAAe,EAAE;IAA3BC,KAAK,GAAAiG,iBAAA,CAALjG,KAAK;EAEb,oBACIS,6BAACyF,MAAM,oBAAKH,WAAW;IAAEI,IAAI,EAAC;mBAC1B1F,6BAACyF,MAAM,CAACE,OAAO;kBAAY;kBACvB3F,6BAACyF,MAAM,CAACG,KAAK,QAAErG,KAAK,CAACE,MAAM,CAACC,OAAO,CAACC,UAAU,CAACkG,kBAAkB,CAAC1E,KAAK,CAAgB,eAEvFnB,wCAAIT,KAAK,CAACE,MAAM,CAACC,OAAO,CAACC,UAAU,CAACkG,kBAAkB,CAACC,WAAW,CAAK,eAEvE9F,6BAACyF,MAAM,CAACM,MAAM,qBACV/F,6BAACgG,KAAK,qBACFhG,6BAACyF,MAAM,CAACQ,KAAK,qBACTjG,6BAACkG,MAAM,QAAE3G,KAAK,CAACE,MAAM,CAACC,OAAO,CAACC,UAAU,CAACkG,kBAAkB,CAACM,MAAM,CAAU,CACjE,eACfnG,6BAACkG,MAAM;IAACE,UAAU,EAAC,SAAS;IAACnC,OAAO,EAAEoB;KACjC9F,KAAK,CAACE,MAAM,CAACC,OAAO,CAACC,UAAU,CAACkG,kBAAkB,CAACQ,OAAO,CACtD,CACL,CACI,CACH,CACZ;AAEjB;;;;"}
1
+ {"version":3,"file":"Alert.js","sources":["../../../../../../../../../src/components/Table3/components/Editing/Alert.tsx"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport { ScrollToOptions as ReactVirtualScrollToOptions } from '@tanstack/react-virtual';\nimport { Alert as BaseAlert, AlertProps as BaseAlertProps } from '../../../Alert/Alert';\nimport { TableRef } from '../../../../primitives/Table/types';\nimport { Tooltip } from '../../../Tooltip/Tooltip';\nimport { useLocalization } from '../../../Provider/Localization';\nimport { Dialog, DialogProps } from '../../../Dialog/Dialog';\nimport { Group } from '../../../Group/Group';\nimport { Button } from '../../../Button/Button';\n\ntype AlertProps<TType = unknown> = Omit<BaseAlertProps, 'children'> & {\n scrollToIndex: (index: number, options: ReactVirtualScrollToOptions) => void;\n table: ReactTable<TType>;\n tableRef: React.RefObject<TableRef>;\n};\n\nexport function Alert<TType = unknown>(props: AlertProps<TType>) {\n const { scrollToIndex, table, tableRef, ...attributes } = props;\n const { texts } = useLocalization();\n const validationTexts = texts.table3.editing.validation;\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const [showFilterResetDialog, setShowFilterResetDialog] = React.useState<number | false>(false);\n const pendingChangesWithErrors = tableMeta.editing.getErrorsShownInAlert<TType>();\n\n function scrollToRow(rowIndex: number) {\n tableMeta.rowActive.setRowActiveIndex(rowIndex);\n scrollToIndex(rowIndex, { align: 'center' });\n\n requestAnimationFrame(() => {\n const cell = tableRef.current?.querySelector(\n 'tbody > tr[data-row-active=\"true\"] > td[data-cell-editing-invalid=\"true\"]'\n );\n\n if (cell) {\n (cell as HTMLElement).focus?.();\n }\n });\n }\n\n // generate the \"N unsaved entries\" title\n const title = (\n pendingChangesWithErrors.length === 1 ? validationTexts.alert.titleOne : validationTexts.alert.titlePlural\n ).replace('[COUNT]', String(pendingChangesWithErrors.length));\n\n // generate links to each invalid row, to go into the error message\n const links: React.ReactNode[] = [];\n const visibleColumns = table.getVisibleFlatColumns().map(c => c.id);\n const rowIdentityColumn =\n tableMeta.rowIdentityAccessor && visibleColumns.includes(String(tableMeta.rowIdentityAccessor))\n ? // table.getColumn(columName) throw error in strict dev mode. Related thread: https://github.com/TanStack/table/discussions/5505\n table.getAllColumns().find(x => x.id === String(tableMeta.rowIdentityAccessor))\n : undefined;\n\n pendingChangesWithErrors.forEach((pendingChangeWithError, index) => {\n // if appropriate, concatenate the item with the text \"and\"\n if (pendingChangesWithErrors.length > 1 && index === pendingChangesWithErrors.length - 1) {\n // Add space before and after `messageAnd` text\n links.push(` ${validationTexts.alert.messageAnd} `);\n }\n pendingChangeWithError;\n\n const handleClick = () => {\n // if row is visible\n if (pendingChangeWithError.index > -1) {\n scrollToRow(pendingChangeWithError.index);\n tableMeta.rowActive.setRowActiveIndex(pendingChangeWithError.index);\n }\n // if row is filtered out\n else {\n setShowFilterResetDialog(pendingChangeWithError.index);\n }\n };\n\n let tooltip;\n\n if (pendingChangeWithError.errors.row) {\n tooltip = pendingChangeWithError.errors.row;\n } else {\n const firstCellErrorColumnId = Object.keys(pendingChangeWithError.errors.cells)[0];\n const columnName = table.getAllColumns().find(column => column.id === firstCellErrorColumnId)?.columnDef.meta?.header;\n tooltip = `${columnName}: ${pendingChangeWithError.errors.cells[firstCellErrorColumnId]}`;\n }\n\n let row;\n try {\n row = table.getRow(pendingChangeWithError.rowId).original;\n } catch {\n // because of server loading, some rows may not be accessible\n }\n\n links.push(\n <Tooltip key={pendingChangeWithError.rowId} title={tooltip}>\n <span className=\"text-blue\" onClick={handleClick} role=\"button\">\n {rowIdentityColumn ? row?.[rowIdentityColumn.id] : pendingChangeWithError.index + 1}\n </span>\n </Tooltip>\n );\n\n // if appropriate, concatenate the item with the text \",\"\n if (pendingChangesWithErrors.length > 2 && index < pendingChangesWithErrors.length - 2) {\n links.push(', ');\n }\n });\n\n // generate the \"Row N is incomplete and hasn't been saved\" error message\n const message = (links.length === 1 ? validationTexts.alert.messageOne : validationTexts.alert.messagePlural)\n .split(/(\\[\\w+\\])/)\n .map(part => {\n if (part === '[COLUMN]') {\n return rowIdentityColumn?.columnDef.meta?.header ?? validationTexts.alert.messageRow;\n }\n\n if (part === '[ROW]') {\n return links;\n }\n\n return part;\n });\n\n const handleResetFilters = () => {\n table.resetGlobalFilter();\n table.resetColumnFilters();\n\n requestAnimationFrame(() => {\n if (showFilterResetDialog && showFilterResetDialog > -1) {\n scrollToRow(showFilterResetDialog);\n }\n\n setShowFilterResetDialog(false);\n });\n };\n\n return (\n <>\n <BaseAlert {...attributes} state=\"error\">\n <span className=\"font-bold\">{title}</span>&nbsp;{message}\n </BaseAlert>\n <FilterResetDialog\n open={showFilterResetDialog !== false}\n onChange={() => setShowFilterResetDialog(false)}\n onSubmit={handleResetFilters}\n />\n </>\n );\n}\n\ntype FilterResetDialogProps = Omit<DialogProps, 'children'> & {\n onSubmit: () => void;\n};\n\nfunction FilterResetDialog(props: FilterResetDialogProps) {\n const { onSubmit: handleSubmit, ...dialogProps } = props;\n const { texts } = useLocalization();\n\n return (\n <Dialog {...dialogProps} size=\"xs\">\n <Dialog.Content aria-label=\"Create a new account\">\n <Dialog.Title>{texts.table3.editing.validation.resetFiltersDialog.title}</Dialog.Title>\n\n <p>{texts.table3.editing.validation.resetFiltersDialog.description}</p>\n\n <Dialog.Footer>\n <Group>\n <Dialog.Close>\n <Button>{texts.table3.editing.validation.resetFiltersDialog.cancel}</Button>\n </Dialog.Close>\n <Button appearance=\"primary\" onClick={handleSubmit}>\n {texts.table3.editing.validation.resetFiltersDialog.confirm}\n </Button>\n </Group>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog>\n );\n}\n"],"names":["Alert","props","scrollToIndex","table","tableRef","attributes","_objectWithoutPropertiesLoose","_excluded","_useLocalization","useLocalization","texts","validationTexts","table3","editing","validation","tableMeta","options","meta","_React$useState","React","useState","showFilterResetDialog","setShowFilterResetDialog","pendingChangesWithErrors","getErrorsShownInAlert","scrollToRow","rowIndex","rowActive","setRowActiveIndex","align","requestAnimationFrame","cell","_tableRef$current","current","querySelector","_cell$focus","focus","call","title","length","alert","titleOne","titlePlural","replace","String","links","visibleColumns","getVisibleFlatColumns","map","c","id","rowIdentityColumn","rowIdentityAccessor","includes","getAllColumns","find","x","undefined","forEach","pendingChangeWithError","index","push","messageAnd","handleClick","tooltip","errors","row","_table$getAllColumns$","_table$getAllColumns$2","firstCellErrorColumnId","Object","keys","cells","columnName","column","columnDef","header","getRow","rowId","original","_unused","Tooltip","key","className","onClick","role","_row","message","messageOne","messagePlural","split","part","_rowIdentityColumn$co","_rowIdentityColumn$co2","messageRow","handleResetFilters","resetGlobalFilter","resetColumnFilters","BaseAlert","state","FilterResetDialog","open","onChange","onSubmit","handleSubmit","dialogProps","_excluded2","_useLocalization2","Dialog","size","Content","Title","resetFiltersDialog","description","Footer","Group","Close","Button","cancel","appearance","confirm"],"mappings":"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"}