@economic/taco 2.48.2 → 2.48.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/components/Calendar/Calendar.d.ts +0 -1
  2. package/dist/esm/packages/taco/src/components/Calendar/Calendar.js +10 -11
  3. package/dist/esm/packages/taco/src/components/Calendar/Calendar.js.map +1 -1
  4. package/dist/esm/packages/taco/src/components/Datepicker/useDatepicker.js +6 -13
  5. package/dist/esm/packages/taco/src/components/Datepicker/useDatepicker.js.map +1 -1
  6. package/dist/esm/packages/taco/src/components/Menu/components/Content.js +6 -1
  7. package/dist/esm/packages/taco/src/components/Menu/components/Content.js.map +1 -1
  8. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js +6 -6
  9. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js.map +1 -1
  10. package/dist/esm/packages/taco/src/hooks/useGlobalKeyDown.js +2 -2
  11. package/dist/esm/packages/taco/src/hooks/useGlobalKeyDown.js.map +1 -1
  12. package/dist/esm/packages/taco/src/index.js +1 -1
  13. package/dist/esm/packages/taco/src/primitives/Button.js +6 -1
  14. package/dist/esm/packages/taco/src/primitives/Button.js.map +1 -1
  15. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Selection.js +1 -2
  16. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Selection.js.map +1 -1
  17. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Search/Search.js +1 -2
  18. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Search/Search.js.map +1 -1
  19. package/dist/esm/packages/taco/src/primitives/Table/types.js +1 -7
  20. package/dist/esm/packages/taco/src/primitives/Table/types.js.map +1 -1
  21. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableServerLoading.js +12 -8
  22. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableServerLoading.js.map +1 -1
  23. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSearchListener.js +1 -1
  24. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSearchListener.js.map +1 -1
  25. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js +1 -1
  26. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js.map +1 -1
  27. package/dist/esm/packages/taco/src/utils/keyboard.js +2 -5
  28. package/dist/esm/packages/taco/src/utils/keyboard.js.map +1 -1
  29. package/dist/hooks/useGlobalKeyDown.d.ts +1 -1
  30. package/dist/primitives/Table/types.d.ts +0 -5
  31. package/dist/primitives/Table/useTableManager/features/useTableServerLoading.d.ts +3 -3
  32. package/dist/taco.cjs.development.js +54 -55
  33. package/dist/taco.cjs.development.js.map +1 -1
  34. package/dist/taco.cjs.production.min.js +1 -1
  35. package/dist/taco.cjs.production.min.js.map +1 -1
  36. package/dist/utils/keyboard.d.ts +1 -1
  37. package/package.json +2 -2
@@ -28,6 +28,5 @@ 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;
32
31
  };
33
32
  export declare const Calendar: (props: CalendarProps) => JSX.Element;
@@ -93,23 +93,22 @@ const TodayButton = ({
93
93
  }, texts.calendar.actions.today);
94
94
  };
95
95
  const Calendar = props => {
96
- var _ref;
97
96
  const {
98
97
  onChange: handleChange,
99
98
  value,
100
99
  disabledDays,
101
- visibleMonth,
102
100
  ...otherProps
103
101
  } = props;
104
- const [internalVisibleMonth, setInternalVisibleMonth] = useState((_ref = visibleMonth !== null && visibleMonth !== void 0 ? visibleMonth : value) !== null && _ref !== void 0 ? _ref : new Date());
102
+ const [visibleMonth, setVisibleMonth] = useState(value !== null && value !== void 0 ? value : new Date());
105
103
  const {
106
104
  texts
107
105
  } = useLocalization();
108
106
  useEffect(() => {
109
- if (visibleMonth && visibleMonth !== internalVisibleMonth) {
110
- setInternalVisibleMonth(visibleMonth);
107
+ if (visibleMonth !== value) {
108
+ setVisibleMonth(value !== null && value !== void 0 ? value : new Date());
111
109
  }
112
- }, [visibleMonth]);
110
+ // visibleMonth in deps array breaking month switching logic. It should not be in deps array.
111
+ }, [value]);
113
112
  const handleDayClick = (date, modifiers, event) => {
114
113
  if (modifiers.outside || modifiers.disabled) {
115
114
  return;
@@ -123,13 +122,13 @@ const Calendar = props => {
123
122
  className: className,
124
123
  captionLayout: "dropdown-buttons",
125
124
  weekStartsOn: 1,
126
- month: internalVisibleMonth,
125
+ month: visibleMonth,
127
126
  numberOfMonths: 1,
128
127
  components: {
129
- Caption: props => (/*#__PURE__*/createElement(Navbar, Object.assign({}, props, {
130
- onMonthChange: setInternalVisibleMonth,
131
- value: internalVisibleMonth
132
- }))),
128
+ Caption: props => /*#__PURE__*/createElement(Navbar, Object.assign({}, props, {
129
+ onMonthChange: setVisibleMonth,
130
+ value: visibleMonth
131
+ })),
133
132
  Footer: () => (/*#__PURE__*/createElement("tfoot", null, /*#__PURE__*/createElement("tr", null, /*#__PURE__*/createElement("td", {
134
133
  colSpan: 7,
135
134
  className: "text-center"
@@ -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 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","onMonthChange","value","texts","calendar","actions","months","useLocalization","handleChange","event","year","month","target","form","onNextClick","getMonth","getDay","onPreviousClick","className","name","onChange","map","key","String","Tooltip","title","previousMonth","IconButton","appearance","icon","onClick","rounded","nextMonth","TodayButton","handleCalendarClickToday","today","setHours","setMinutes","setSeconds","Button","Calendar","props","disabledDays","visibleMonth","otherProps","internalVisibleMonth","setInternalVisibleMonth","_ref","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};\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","onMonthChange","value","texts","calendar","actions","months","useLocalization","handleChange","event","year","month","target","form","onNextClick","getMonth","getDay","onPreviousClick","className","name","onChange","map","key","String","Tooltip","title","previousMonth","IconButton","appearance","icon","onClick","rounded","nextMonth","TodayButton","handleCalendarClickToday","today","setHours","setMinutes","setSeconds","Button","Calendar","props","disabledDays","otherProps","visibleMonth","setVisibleMonth","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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"}
@@ -19,18 +19,14 @@ const useDatepicker = ({
19
19
  } = useLocalization();
20
20
  const [internalValue, setInternalValue] = useState((_format = format(value, formatting.date)) !== null && _format !== void 0 ? _format : '');
21
21
  const originalValueAsDate = parse(value);
22
- // Track the current view date (month/year) in the calendar
23
- const [calendarViewDate, setCalendarViewDate] = useState(originalValueAsDate || new Date());
22
+ // update internal value if it changed 'externally'
24
23
  useEffect(() => {
25
- // Only update the internal value when the input is not focused
26
- // This prevents the input value from being reset while user is typing
27
- if (inputRef.current !== document.activeElement) {
28
- const formattedValue = format(value, formatting.date);
29
- if (formattedValue !== internalValue) {
30
- setInternalValue(formattedValue !== null && formattedValue !== void 0 ? formattedValue : '');
31
- }
24
+ const formattedValue = format(value, formatting.date);
25
+ if (formattedValue !== internalValue) {
26
+ setInternalValue(formattedValue !== null && formattedValue !== void 0 ? formattedValue : '');
32
27
  }
33
28
  }, [value]);
29
+ // event handlers
34
30
  const handleInputBlur = event => {
35
31
  event.persist();
36
32
  const 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());
@@ -51,8 +47,6 @@ const useDatepicker = ({
51
47
  setInternalValue(event.target.value);
52
48
  };
53
49
  const handleChange = date => {
54
- // Update both the input value and calendar view date when selecting a date
55
- setCalendarViewDate(date);
56
50
  setInputValueByRef(inputRef.current, format(date, formatting.date), 'focusout');
57
51
  };
58
52
  const handleKeyDown = event => {
@@ -78,8 +72,7 @@ const useDatepicker = ({
78
72
  const calendarProps = {
79
73
  ...calendar,
80
74
  onChange: handleChange,
81
- value: originalValueAsDate,
82
- visibleMonth: calendarViewDate
75
+ value: originalValueAsDate
83
76
  };
84
77
  return {
85
78
  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 // 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","defaultValue","_","calendar","onBlur","onChange","value","props","ref","inputRef","useMergedRef","formatting","useLocalization","internalValue","setInternalValue","React","_format","format","date","originalValueAsDate","parse","calendarViewDate","setCalendarViewDate","Date","current","document","activeElement","formattedValue","handleInputBlur","event","persist","valueAsDate","parseFromCustomString","target","getMonth","getFullYear","detail","handleInputChange","handleChange","setInputValueByRef","handleKeyDown","onKeyDown","key","dispatchEvent","Event","bubbles","inputProps","autoComplete","type","calendarProps","visibleMonth","input"],"mappings":";;;;;;MAeaA,aAAa,GAAGA,CACzB;EAAEC,YAAY,EAAEC,CAAC;EAAEC,QAAQ;EAAEC,MAAM;EAAEC,QAAQ;EAAEC,KAAK;EAAE,GAAGC;CAAwB,EACjFC,GAAgC;;EAEhC,MAAMC,QAAQ,GAAGC,YAAY,CAAmBF,GAAG,CAAC;EACpD,MAAM;IAAEG;GAAY,GAAGC,eAAe,EAAE;EACxC,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAGC,QAAc,EAAAC,OAAA,GAACC,MAAM,CAACX,KAAK,EAAEK,UAAU,CAACO,IAAI,CAAC,cAAAF,OAAA,cAAAA,OAAA,GAAI,EAAE,CAAC;EAC9F,MAAMG,mBAAmB,GAAGC,KAAK,CAACd,KAAK,CAAC;;EAGxC,MAAM,CAACe,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGP,QAAc,CAAmBI,mBAAmB,IAAI,IAAII,IAAI,EAAE,CAAC;EAEnHR,SAAe,CAAC;;;IAGZ,IAAIN,QAAQ,CAACe,OAAO,KAAKC,QAAQ,CAACC,aAAa,EAAE;MAC7C,MAAMC,cAAc,GAAGV,MAAM,CAACX,KAAK,EAAEK,UAAU,CAACO,IAAI,CAAC;MACrD,IAAIS,cAAc,KAAKd,aAAa,EAAE;QAClCC,gBAAgB,CAACa,cAAc,aAAdA,cAAc,cAAdA,cAAc,GAAI,EAAE,CAAC;;;GAGjD,EAAE,CAACrB,KAAK,CAAC,CAAC;EAEX,MAAMsB,eAAe,GAAIC,KAAyC;IAC9DA,KAAK,CAACC,OAAO,EAAE;IAEf,MAAMC,WAAW,GAAGC,qBAAqB,CACrCH,KAAK,CAACI,MAAM,CAAC3B,KAAK,EAClB,UAAU,EACVa,mBAAmB,aAAnBA,mBAAmB,uBAAnBA,mBAAmB,CAAEe,QAAQ,EAAE,EAC/Bf,mBAAmB,aAAnBA,mBAAmB,uBAAnBA,mBAAmB,CAAEgB,WAAW,EAAE,CACrC;IACD,MAAMR,cAAc,GAAGI,WAAW,GAAGd,MAAM,CAACc,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE;IAEnEF,KAAK,CAACI,MAAM,CAAC3B,KAAK,GAAGqB,cAAc;IAEnC,IAAItB,QAAQ,EAAE;MACTwB,KAAa,CAACO,MAAM,GAAGL,WAAW;MACnC1B,QAAQ,CAACwB,KAAK,CAAC;KAClB,MAAM;;MAEHf,gBAAgB,CAACa,cAAc,CAAC;;IAGpC,IAAIvB,MAAM,EAAE;MACRA,MAAM,CAACyB,KAAK,CAAC;;GAEpB;EAED,MAAMQ,iBAAiB,GAAIR,KAA0C;IACjEf,gBAAgB,CAACe,KAAK,CAACI,MAAM,CAAC3B,KAAK,CAAC;GACvC;EAED,MAAMgC,YAAY,GAAGpB,IAAI;;IAErBI,mBAAmB,CAACJ,IAAI,CAAC;IACzBqB,kBAAkB,CAAC9B,QAAQ,CAACe,OAAO,EAAEP,MAAM,CAACC,IAAI,EAAEP,UAAU,CAACO,IAAI,CAAC,EAAE,UAAU,CAAC;GAClF;EAED,MAAMsB,aAAa,GAAIX,KAA4C;IAC/D,IAAItB,KAAK,CAACkC,SAAS,EAAE;MACjBlC,KAAK,CAACkC,SAAS,CAACZ,KAAK,CAAC;;IAG1B,IAAIA,KAAK,CAACa,GAAG,KAAK,OAAO,EAAE;MACvBb,KAAK,CAACI,MAAM,CAACU,aAAa,CAAC,IAAIC,KAAK,CAAC,UAAU,EAAE;QAAEC,OAAO,EAAE;OAAM,CAAC,CAAC;;GAE3E;EAED,MAAMC,UAAU,GAAe;IAC3B,GAAGvC,KAAK;IACRwC,YAAY,EAAE,KAAK;IACnB3C,MAAM,EAAEwB,eAAe;IACvBvB,QAAQ,EAAEgC,iBAAiB;IAC3BI,SAAS,EAAED,aAAa;IACxBhC,GAAG,EAAEC,QAAQ;IACbuC,IAAI,EAAE,MAAM;IACZ1C,KAAK,EAAEO;GACV;EAED,MAAMoC,aAAa,GAAkB;IACjC,GAAG9C,QAAQ;IACXE,QAAQ,EAAEiC,YAAY;IACtBhC,KAAK,EAAEa,mBAAmB;IAC1B+B,YAAY,EAAE7B;GACjB;EAED,OAAO;IACH8B,KAAK,EAAEL,UAAU;IACjB3C,QAAQ,EAAE8C;GACb;AACL;;;;"}
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","defaultValue","_","calendar","onBlur","onChange","value","props","ref","inputRef","useMergedRef","formatting","useLocalization","internalValue","setInternalValue","React","_format","format","date","originalValueAsDate","parse","formattedValue","handleInputBlur","event","persist","valueAsDate","parseFromCustomString","target","getMonth","getFullYear","detail","handleInputChange","handleChange","setInputValueByRef","current","handleKeyDown","onKeyDown","key","dispatchEvent","Event","bubbles","inputProps","autoComplete","type","calendarProps","input"],"mappings":"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"}
@@ -31,12 +31,17 @@ const Content = /*#__PURE__*/forwardRef(function MenuContent(props, ref) {
31
31
  if (child.props.shortcut) {
32
32
  shortcuts.push(createShortcutKeyDownHandler(child.props.shortcut, event => {
33
33
  event.preventDefault();
34
+ const dialog = document.querySelector('[role="dialog"]');
35
+ // Don't trigger the shortcut if it is outside of the dialog
36
+ if (dialog && !(dialog !== null && dialog !== void 0 && dialog.contains(internalRef.current))) {
37
+ return;
38
+ }
34
39
  menu === null || menu === void 0 ? void 0 : menu.open();
35
40
  setTimeout(() => {
36
41
  var _childrenRefs$current, _childrenRefs$current2;
37
42
  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();
38
43
  }, 1);
39
- }, true, childrenRefs.current[index].current));
44
+ }));
40
45
  }
41
46
  });
42
47
  shortcuts.forEach(handler => document.addEventListener('keydown', 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(\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","align","children","placement","side","otherProps","className","cn","childrenRefs","childrenWithRefs","toArray","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":";;;;;;;MAgBaA,OAAO,gBAAGC,UAAgB,CAAC,SAASC,WAAWA,CAACC,KAAuB,EAAEC,GAA8B;EAChH,MAAMC,WAAW,GAAGC,YAAY,CAAMF,GAAG,CAAC;EAC1C,MAAMG,IAAI,GAAGC,cAAc,EAAE;EAC7B,MAAM;IAAEC,KAAK,GAAG,OAAO;IAAEC,QAAQ;IAAEC,SAAS,EAAEC,IAAI;IAAE,GAAGC;GAAY,GAAGV,KAAK;EAC3E,MAAMW,SAAS,GAAGC,EAAE,CAAC,+EAA+E,EAAEZ,KAAK,CAACW,SAAS,CAAC;;EAGtH,MAAME,YAAY,GAAGf,MAAY,CAAoC,EAAE,CAAC;EACxE,MAAMgB,gBAAgB,GAAIhB,QAAc,CAACiB,OAAO,CAACf,KAAK,CAACO,QAAQ,CAAwD,CAClHS,MAAM,CAACC,KAAK,IAAI,CAAC,CAACA,KAAK,CAAC;GACxBC,GAAG,CAAC,CAACD,KAAK,EAAEE,KAAK;IACdN,YAAY,CAACO,OAAO,CAACD,KAAK,CAAC,gBAAGrB,SAAe,EAAkB;IAC/D,oBAAOA,YAAkB,CAACmB,KAAK,EAAE;MAAEhB,GAAG,EAAEY,YAAY,CAACO,OAAO,CAACD,KAAK;KAAG,CAAC;GACzE,CAAC;;EAGNrB,SAAe,CAAC;IACZ,MAAMuB,SAAS,GAAuC,EAAE;IACxDP,gBAAgB,CAACQ,OAAO,CAAC,CAACL,KAAK,EAAEE,KAAK;MAClC,IAAIF,KAAK,CAACjB,KAAK,CAACuB,QAAQ,EAAE;QACtBF,SAAS,CAACG,IAAI,CACVC,4BAA4B,CACxBR,KAAK,CAACjB,KAAK,CAACuB,QAAQ,EACpBG,KAAK;UACDA,KAAK,CAACC,cAAc,EAAE;UACtBvB,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEwB,IAAI,EAAE;UACZC,UAAU,CAAC;YAAA,IAAAC,qBAAA,EAAAC,sBAAA;YAAA,QAAAD,qBAAA,GAAMjB,YAAY,CAACO,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,EACJnB,YAAY,CAACO,OAAO,CAACD,KAAK,CAAC,CAACC,OAAO,CACtC,CACJ;;KAER,CAAC;IAEFC,SAAS,CAACC,OAAO,CAACW,OAAO,IAAIC,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEF,OAAO,CAAC,CAAC;IAE3E,OAAO;MACHZ,SAAS,CAACC,OAAO,CAACW,OAAO,IAAIC,QAAQ,CAACE,mBAAmB,CAAC,SAAS,EAAEH,OAAO,CAAC,CAAC;KACjF;GACJ,EAAE,CAACnB,gBAAgB,CAAC,CAAC;EAEtB,oBACIhB,cAACuC,MAA4B,qBACzBvC,cAACuC,SAA6B,oBACtB3B,UAAU;IACdJ,KAAK,EAAEA,KAAK;IACZK,SAAS,EAAEA,SAAS;iBACV,MAAM;IAChBF,IAAI,EAAEA,IAAI;IACV6B,UAAU,EAAE,CAAC;IACbC,KAAK,EAAE;MAAEC,QAAQ,EAAEpC,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEoC;KAAU;IACnCvC,GAAG,EAAEC;MACJY,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(child.props.shortcut, event => {\n event.preventDefault();\n\n const dialog = document.querySelector('[role=\"dialog\"]');\n\n // Don't trigger the shortcut if it is outside of the dialog\n if (dialog && !dialog?.contains(internalRef.current)) {\n return;\n }\n\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","align","children","placement","side","otherProps","className","cn","childrenRefs","childrenWithRefs","toArray","filter","child","map","index","current","shortcuts","forEach","shortcut","push","createShortcutKeyDownHandler","event","preventDefault","dialog","document","querySelector","contains","open","setTimeout","_childrenRefs$current","_childrenRefs$current2","click","handler","addEventListener","removeEventListener","DropdownMenuPrimitive","sideOffset","style","minWidth"],"mappings":";;;;;;;MAgBaA,OAAO,gBAAGC,UAAgB,CAAC,SAASC,WAAWA,CAACC,KAAuB,EAAEC,GAA8B;EAChH,MAAMC,WAAW,GAAGC,YAAY,CAAMF,GAAG,CAAC;EAC1C,MAAMG,IAAI,GAAGC,cAAc,EAAE;EAC7B,MAAM;IAAEC,KAAK,GAAG,OAAO;IAAEC,QAAQ;IAAEC,SAAS,EAAEC,IAAI;IAAE,GAAGC;GAAY,GAAGV,KAAK;EAC3E,MAAMW,SAAS,GAAGC,EAAE,CAAC,+EAA+E,EAAEZ,KAAK,CAACW,SAAS,CAAC;;EAGtH,MAAME,YAAY,GAAGf,MAAY,CAAoC,EAAE,CAAC;EACxE,MAAMgB,gBAAgB,GAAIhB,QAAc,CAACiB,OAAO,CAACf,KAAK,CAACO,QAAQ,CAAwD,CAClHS,MAAM,CAACC,KAAK,IAAI,CAAC,CAACA,KAAK,CAAC;GACxBC,GAAG,CAAC,CAACD,KAAK,EAAEE,KAAK;IACdN,YAAY,CAACO,OAAO,CAACD,KAAK,CAAC,gBAAGrB,SAAe,EAAkB;IAC/D,oBAAOA,YAAkB,CAACmB,KAAK,EAAE;MAAEhB,GAAG,EAAEY,YAAY,CAACO,OAAO,CAACD,KAAK;KAAG,CAAC;GACzE,CAAC;;EAGNrB,SAAe,CAAC;IACZ,MAAMuB,SAAS,GAAuC,EAAE;IACxDP,gBAAgB,CAACQ,OAAO,CAAC,CAACL,KAAK,EAAEE,KAAK;MAClC,IAAIF,KAAK,CAACjB,KAAK,CAACuB,QAAQ,EAAE;QACtBF,SAAS,CAACG,IAAI,CACVC,4BAA4B,CAACR,KAAK,CAACjB,KAAK,CAACuB,QAAQ,EAAEG,KAAK;UACpDA,KAAK,CAACC,cAAc,EAAE;UAEtB,MAAMC,MAAM,GAAGC,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC;;UAGxD,IAAIF,MAAM,IAAI,EAACA,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEG,QAAQ,CAAC7B,WAAW,CAACkB,OAAO,CAAC,GAAE;YAClD;;UAGJhB,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE4B,IAAI,EAAE;UACZC,UAAU,CAAC;YAAA,IAAAC,qBAAA,EAAAC,sBAAA;YAAA,QAAAD,qBAAA,GAAMrB,YAAY,CAACO,OAAO,CAACD,KAAK,CAAC,cAAAe,qBAAA,wBAAAC,sBAAA,GAA3BD,qBAAA,CAA6Bd,OAAO,cAAAe,sBAAA,uBAApCA,sBAAA,CAAsCC,KAAK,EAAE;aAAE,CAAC,CAAC;SACrE,CAAC,CACL;;KAER,CAAC;IAEFf,SAAS,CAACC,OAAO,CAACe,OAAO,IAAIR,QAAQ,CAACS,gBAAgB,CAAC,SAAS,EAAED,OAAO,CAAC,CAAC;IAE3E,OAAO;MACHhB,SAAS,CAACC,OAAO,CAACe,OAAO,IAAIR,QAAQ,CAACU,mBAAmB,CAAC,SAAS,EAAEF,OAAO,CAAC,CAAC;KACjF;GACJ,EAAE,CAACvB,gBAAgB,CAAC,CAAC;EAEtB,oBACIhB,cAAC0C,MAA4B,qBACzB1C,cAAC0C,SAA6B,oBACtB9B,UAAU;IACdJ,KAAK,EAAEA,KAAK;IACZK,SAAS,EAAEA,SAAS;iBACV,MAAM;IAChBF,IAAI,EAAEA,IAAI;IACVgC,UAAU,EAAE,CAAC;IACbC,KAAK,EAAE;MAAEC,QAAQ,EAAEvC,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEuC;KAAU;IACnC1C,GAAG,EAAEC;MACJY,gBAAgB,CACW,CACL;AAEvC,CAAC;;;;"}
@@ -39,24 +39,24 @@ function EditingControlCell(props) {
39
39
  var _cellRef$current;
40
40
  return typeof type === 'function' && !!((_cellRef$current = cellRef.current) !== null && _cellRef$current !== void 0 && _cellRef$current.querySelector('[data-taco="Select2"],[data-taco="switch"],[data-taco="checkbox"]'));
41
41
  }, [cellRef.current]);
42
- const handleChange = nextValue => {
42
+ const handleChange = React__default.useCallback(nextValue => {
43
43
  if (nextValue !== value) {
44
44
  tableMeta.editing.setCellValue(cell, nextValue);
45
45
  if (hasNonTextControl) {
46
46
  requestAnimationFrame(() => tableMeta.editing.onCellChanged(cell, rowIndex, nextValue));
47
47
  }
48
48
  }
49
- };
50
- function blur() {
49
+ }, [hasNonTextControl, cell.row.id, cell.column.id, cell.row.original, rowIndex, value]);
50
+ const blur = React__default.useCallback(function blur() {
51
51
  tableMeta.editing.toggleDetailedMode(false);
52
52
  tableMeta.editing.onCellChanged(cell, rowIndex, undefined, !hasNonTextControl);
53
- }
54
- const handleBlur = event => {
53
+ }, [hasNonTextControl, cell.row.id, cell.column.id, cell.row.original, rowIndex]);
54
+ const handleBlur = React__default.useCallback(event => {
55
55
  if (isElementInsideOrTriggeredFromContainer(event.relatedTarget, event.currentTarget)) {
56
56
  return;
57
57
  }
58
58
  blur();
59
- };
59
+ }, [blur]);
60
60
  // ensure that blur runs when the cell gets unmounted (when vertically arrow key navigating)
61
61
  React__default.useEffect(() => {
62
62
  const ref = cellRef.current;
@@ -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, nextValue);\n\n if (hasNonTextControl) {\n requestAnimationFrame(() => tableMeta.editing.onCellChanged(cell, rowIndex, nextValue));\n }\n }\n };\n\n function blur() {\n tableMeta.editing.toggleDetailedMode(false);\n tableMeta.editing.onCellChanged(cell, rowIndex, undefined, !hasNonTextControl);\n }\n\n const handleBlur = (event: React.FocusEvent) => {\n if (isElementInsideOrTriggeredFromContainer(event.relatedTarget, event.currentTarget)) {\n return;\n }\n blur();\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 blur();\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: (event: React.FocusEvent) => 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","rowIndex","React","useContext","RowContext","table","getContext","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","requestAnimationFrame","onCellChanged","blur","toggleDetailedMode","undefined","handleBlur","event","isElementInsideOrTriggeredFromContainer","relatedTarget","currentTarget","useEffect","ref","document","activeElement","error","getCellError","controlProps","dataType","fontSize","size","id","invalid","isDetailedMode","isTruncated","enableTruncate","onBlur","onChange","row","original","rowPendingChanges","getRowValue","tabIndex","cellAttributes","getCellAttributes","onFocus","Field","message","MemoedEditingCell","RowMoveIndicator","memo","controlRef","useRef","currentValue","commonProps","controlFnProps","setValue","Switch","checked","Boolean","Checkbox","handleInputKeyDown","target","readOnly","key","stopPropagation","shiftKey","preventDefault","_target$select","select","call","_target$setSelectionR","_target$value","_target$value2","setSelectionRange","length","_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 = React.useCallback(\n (nextValue: unknown) => {\n if (nextValue !== value) {\n tableMeta.editing.setCellValue(cell, nextValue);\n\n if (hasNonTextControl) {\n requestAnimationFrame(() => tableMeta.editing.onCellChanged(cell, rowIndex, nextValue));\n }\n }\n },\n [hasNonTextControl, cell.row.id, cell.column.id, cell.row.original, rowIndex, value]\n );\n\n const blur = React.useCallback(\n function blur() {\n tableMeta.editing.toggleDetailedMode(false);\n tableMeta.editing.onCellChanged(cell, rowIndex, undefined, !hasNonTextControl);\n },\n [hasNonTextControl, cell.row.id, cell.column.id, cell.row.original, rowIndex]\n );\n\n const handleBlur = React.useCallback(\n (event: React.FocusEvent) => {\n if (isElementInsideOrTriggeredFromContainer(event.relatedTarget, event.currentTarget)) {\n return;\n }\n blur();\n },\n [blur]\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 blur();\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: (event: React.FocusEvent) => 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","rowIndex","React","useContext","RowContext","table","getContext","tableMeta","options","meta","columnMeta","column","columnDef","isActiveRow","rowActive","rowActiveIndex","type","_columnMeta$control","control","handleFocus","useEditingCellAutofocus","value","getValue","hasNonTextControl","useMemo","_cellRef$current","current","querySelector","handleChange","useCallback","nextValue","editing","setCellValue","requestAnimationFrame","onCellChanged","row","id","original","blur","toggleDetailedMode","undefined","handleBlur","event","isElementInsideOrTriggeredFromContainer","relatedTarget","currentTarget","useEffect","ref","document","activeElement","error","getCellError","controlProps","dataType","fontSize","size","invalid","isDetailedMode","isTruncated","enableTruncate","onBlur","onChange","rowPendingChanges","getRowValue","tabIndex","cellAttributes","getCellAttributes","onFocus","Field","message","MemoedEditingCell","RowMoveIndicator","memo","controlRef","useRef","currentValue","commonProps","controlFnProps","setValue","Switch","checked","Boolean","Checkbox","handleInputKeyDown","target","readOnly","key","stopPropagation","shiftKey","preventDefault","_target$select","select","call","_target$setSelectionR","_target$value","_target$value2","setSelectionRange","length","_target$select2","isPressingMetaKey","test","valueAsDate","date","newDate","detail","isDate","Datepicker","onKeyDown","TextareaWithAutosizing","String","Number","parseInt","Input"],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import React__default from 'react';
2
2
  import { createShortcutKeyDownHandler } from '../utils/keyboard.js';
3
3
 
4
- const useGlobalKeyDown = (shortcut, handler, element) => {
4
+ const useGlobalKeyDown = (shortcut, handler) => {
5
5
  React__default.useEffect(() => {
6
6
  let handleKeyDown;
7
7
  if (shortcut) {
8
- handleKeyDown = createShortcutKeyDownHandler(shortcut, handler, false, element);
8
+ handleKeyDown = createShortcutKeyDownHandler(shortcut, handler, false);
9
9
  document.addEventListener('keydown', handleKeyDown);
10
10
  }
11
11
  return () => {
@@ -1 +1 @@
1
- {"version":3,"file":"useGlobalKeyDown.js","sources":["../../../../../../src/hooks/useGlobalKeyDown.ts"],"sourcesContent":["import React from 'react';\nimport { createShortcutKeyDownHandler, KeyDownHandlerOptions } from '../utils/keyboard';\n\nexport const useGlobalKeyDown = (\n shortcut: string | KeyDownHandlerOptions | undefined,\n handler: (event: KeyboardEvent) => void,\n element?: HTMLElement | null\n) => {\n React.useEffect(() => {\n let handleKeyDown;\n\n if (shortcut) {\n handleKeyDown = createShortcutKeyDownHandler(\n shortcut,\n handler as (event: KeyboardEvent | React.KeyboardEvent) => void,\n false,\n element\n );\n\n document.addEventListener('keydown', handleKeyDown);\n }\n\n return () => {\n if (handleKeyDown) {\n document.removeEventListener('keydown', handleKeyDown);\n }\n };\n }, [shortcut, handler]);\n};\n"],"names":["useGlobalKeyDown","shortcut","handler","element","React","useEffect","handleKeyDown","createShortcutKeyDownHandler","document","addEventListener","removeEventListener"],"mappings":";;;MAGaA,gBAAgB,GAAGA,CAC5BC,QAAoD,EACpDC,OAAuC,EACvCC,OAA4B;EAE5BC,cAAK,CAACC,SAAS,CAAC;IACZ,IAAIC,aAAa;IAEjB,IAAIL,QAAQ,EAAE;MACVK,aAAa,GAAGC,4BAA4B,CACxCN,QAAQ,EACRC,OAA+D,EAC/D,KAAK,EACLC,OAAO,CACV;MAEDK,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEH,aAAa,CAAC;;IAGvD,OAAO;MACH,IAAIA,aAAa,EAAE;QACfE,QAAQ,CAACE,mBAAmB,CAAC,SAAS,EAAEJ,aAAa,CAAC;;KAE7D;GACJ,EAAE,CAACL,QAAQ,EAAEC,OAAO,CAAC,CAAC;AAC3B;;;;"}
1
+ {"version":3,"file":"useGlobalKeyDown.js","sources":["../../../../../../src/hooks/useGlobalKeyDown.ts"],"sourcesContent":["import React from 'react';\nimport { createShortcutKeyDownHandler, KeyDownHandlerOptions } from '../utils/keyboard';\n\nexport const useGlobalKeyDown = (\n shortcut: string | KeyDownHandlerOptions | undefined,\n handler: (event: KeyboardEvent) => void\n) => {\n React.useEffect(() => {\n let handleKeyDown;\n\n if (shortcut) {\n handleKeyDown = createShortcutKeyDownHandler(\n shortcut,\n handler as (event: KeyboardEvent | React.KeyboardEvent) => void,\n false\n );\n\n document.addEventListener('keydown', handleKeyDown);\n }\n\n return () => {\n if (handleKeyDown) {\n document.removeEventListener('keydown', handleKeyDown);\n }\n };\n }, [shortcut, handler]);\n};\n"],"names":["useGlobalKeyDown","shortcut","handler","React","useEffect","handleKeyDown","createShortcutKeyDownHandler","document","addEventListener","removeEventListener"],"mappings":";;;MAGaA,gBAAgB,GAAGA,CAC5BC,QAAoD,EACpDC,OAAuC;EAEvCC,cAAK,CAACC,SAAS,CAAC;IACZ,IAAIC,aAAa;IAEjB,IAAIJ,QAAQ,EAAE;MACVI,aAAa,GAAGC,4BAA4B,CACxCL,QAAQ,EACRC,OAA+D,EAC/D,KAAK,CACR;MAEDK,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEH,aAAa,CAAC;;IAGvD,OAAO;MACH,IAAIA,aAAa,EAAE;QACfE,QAAQ,CAACE,mBAAmB,CAAC,SAAS,EAAEJ,aAAa,CAAC;;KAE7D;GACJ,EAAE,CAACJ,QAAQ,EAAEC,OAAO,CAAC,CAAC;AAC3B;;;;"}
@@ -53,7 +53,7 @@ export { Progress } from './components/Progress/Progress.js';
53
53
  export { ToastProvider, useToast } from './components/Toast/Toaster.js';
54
54
  export { Provider, TacoContext } from './components/Provider/Provider.js';
55
55
  export { FontSizes, fixedForwardRef } from './types.js';
56
- export { TableFilterComparator, TableServerLoadAllState } from './primitives/Table/types.js';
56
+ export { TableFilterComparator } from './primitives/Table/types.js';
57
57
  export { DEFAULT_PAGE_SIZE, useTableDataLoader } from './primitives/Table/useTableDataLoader.js';
58
58
  export { useLazyEffect } from './hooks/useLazyEffect.js';
59
59
  export { SearchInput } from './components/SearchInput/SearchInput.js';
@@ -14,8 +14,13 @@ const Button = /*#__PURE__*/forwardRef(function Button(props, ref) {
14
14
  useGlobalKeyDown(shortcut, event => {
15
15
  var _internalRef$current;
16
16
  event === null || event === void 0 ? void 0 : event.preventDefault();
17
+ const dialog = document.querySelector('[role="dialog"]');
18
+ // Don't trigger the click on the button if it is outside of the dialog
19
+ if (dialog && !(dialog !== null && dialog !== void 0 && dialog.contains(internalRef.current))) {
20
+ return;
21
+ }
17
22
  (_internalRef$current = internalRef.current) === null || _internalRef$current === void 0 ? void 0 : _internalRef$current.click();
18
- }, internalRef.current);
23
+ });
19
24
  const Tag = props.href ? 'a' : 'button';
20
25
  return /*#__PURE__*/createElement(Tag, Object.assign({}, otherProps, {
21
26
  href: disabled ? undefined : props.href,
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sources":["../../../../../../src/primitives/Button.tsx"],"sourcesContent":["import * as React from 'react';\nimport { KeyDownHandlerOptions } from '../utils/keyboard';\nimport { useMergedRef } from '../hooks/useMergedRef';\nimport { useGlobalKeyDown } from '../hooks/useGlobalKeyDown';\n\ntype ButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement | HTMLAnchorElement> & {\n /** Content should be a text */\n children: React.ReactNode;\n /** Provides url for buttons being used as a link */\n href?: string;\n shortcut?: string | KeyDownHandlerOptions;\n /** Provides target for buttons being used as a link */\n target?: '_self' | '_blank' | '_parent' | '_top';\n};\n\nconst Button = React.forwardRef(function Button(props: ButtonProps, ref: React.Ref<HTMLButtonElement | HTMLAnchorElement>) {\n const { disabled, shortcut, target, type = 'button', ...otherProps } = props;\n const internalRef = useMergedRef<HTMLButtonElement | HTMLAnchorElement>(ref);\n\n useGlobalKeyDown(\n shortcut,\n event => {\n event?.preventDefault();\n internalRef.current?.click();\n },\n internalRef.current\n );\n\n const Tag = props.href ? 'a' : 'button';\n\n return (\n <Tag\n {...otherProps}\n href={disabled ? undefined : props.href}\n aria-disabled={disabled ? 'true' : undefined}\n disabled={disabled}\n target={Tag === 'a' ? target : undefined}\n type={Tag !== 'a' ? type : undefined}\n ref={internalRef as any}>\n {React.Children.count(props.children) > 1\n ? React.Children.map(props.children, child => (typeof child === 'string' ? <span>{child}</span> : child))\n : props.children}\n </Tag>\n );\n});\n\nexport { Button };\nexport type { ButtonProps };\n"],"names":["Button","React","props","ref","disabled","shortcut","target","type","otherProps","internalRef","useMergedRef","useGlobalKeyDown","event","preventDefault","_internalRef$current","current","click","Tag","href","undefined","count","children","map","child"],"mappings":";;;;MAeMA,MAAM,gBAAGC,UAAgB,CAAC,SAASD,MAAMA,CAACE,KAAkB,EAAEC,GAAqD;EACrH,MAAM;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,IAAI,GAAG,QAAQ;IAAE,GAAGC;GAAY,GAAGN,KAAK;EAC5E,MAAMO,WAAW,GAAGC,YAAY,CAAwCP,GAAG,CAAC;EAE5EQ,gBAAgB,CACZN,QAAQ,EACRO,KAAK;;IACDA,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEC,cAAc,EAAE;IACvB,CAAAC,oBAAA,GAAAL,WAAW,CAACM,OAAO,cAAAD,oBAAA,uBAAnBA,oBAAA,CAAqBE,KAAK,EAAE;GAC/B,EACDP,WAAW,CAACM,OAAO,CACtB;EAED,MAAME,GAAG,GAAGf,KAAK,CAACgB,IAAI,GAAG,GAAG,GAAG,QAAQ;EAEvC,oBACIjB,cAACgB,GAAG,oBACIT,UAAU;IACdU,IAAI,EAAEd,QAAQ,GAAGe,SAAS,GAAGjB,KAAK,CAACgB,IAAI;qBACxBd,QAAQ,GAAG,MAAM,GAAGe,SAAS;IAC5Cf,QAAQ,EAAEA,QAAQ;IAClBE,MAAM,EAAEW,GAAG,KAAK,GAAG,GAAGX,MAAM,GAAGa,SAAS;IACxCZ,IAAI,EAAEU,GAAG,KAAK,GAAG,GAAGV,IAAI,GAAGY,SAAS;IACpChB,GAAG,EAAEM;MACJR,QAAc,CAACmB,KAAK,CAAClB,KAAK,CAACmB,QAAQ,CAAC,GAAG,CAAC,GACnCpB,QAAc,CAACqB,GAAG,CAACpB,KAAK,CAACmB,QAAQ,EAAEE,KAAK,IAAK,OAAOA,KAAK,KAAK,QAAQ,gBAAGtB,4BAAOsB,KAAK,CAAQ,GAAGA,KAAM,CAAC,GACvGrB,KAAK,CAACmB,QAAQ,CAClB;AAEd,CAAC;;;;"}
1
+ {"version":3,"file":"Button.js","sources":["../../../../../../src/primitives/Button.tsx"],"sourcesContent":["import * as React from 'react';\nimport { KeyDownHandlerOptions } from '../utils/keyboard';\nimport { useMergedRef } from '../hooks/useMergedRef';\nimport { useGlobalKeyDown } from '../hooks/useGlobalKeyDown';\n\ntype ButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement | HTMLAnchorElement> & {\n /** Content should be a text */\n children: React.ReactNode;\n /** Provides url for buttons being used as a link */\n href?: string;\n shortcut?: string | KeyDownHandlerOptions;\n /** Provides target for buttons being used as a link */\n target?: '_self' | '_blank' | '_parent' | '_top';\n};\n\nconst Button = React.forwardRef(function Button(props: ButtonProps, ref: React.Ref<HTMLButtonElement | HTMLAnchorElement>) {\n const { disabled, shortcut, target, type = 'button', ...otherProps } = props;\n const internalRef = useMergedRef<HTMLButtonElement | HTMLAnchorElement>(ref);\n\n useGlobalKeyDown(shortcut, event => {\n event?.preventDefault();\n const dialog = document.querySelector('[role=\"dialog\"]');\n\n // Don't trigger the click on the button if it is outside of the dialog\n if (dialog && !dialog?.contains(internalRef.current)) {\n return;\n }\n\n internalRef.current?.click();\n });\n\n const Tag = props.href ? 'a' : 'button';\n\n return (\n <Tag\n {...otherProps}\n href={disabled ? undefined : props.href}\n aria-disabled={disabled ? 'true' : undefined}\n disabled={disabled}\n target={Tag === 'a' ? target : undefined}\n type={Tag !== 'a' ? type : undefined}\n ref={internalRef as any}>\n {React.Children.count(props.children) > 1\n ? React.Children.map(props.children, child => (typeof child === 'string' ? <span>{child}</span> : child))\n : props.children}\n </Tag>\n );\n});\n\nexport { Button };\nexport type { ButtonProps };\n"],"names":["Button","React","props","ref","disabled","shortcut","target","type","otherProps","internalRef","useMergedRef","useGlobalKeyDown","event","preventDefault","dialog","document","querySelector","contains","current","_internalRef$current","click","Tag","href","undefined","count","children","map","child"],"mappings":";;;;MAeMA,MAAM,gBAAGC,UAAgB,CAAC,SAASD,MAAMA,CAACE,KAAkB,EAAEC,GAAqD;EACrH,MAAM;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,IAAI,GAAG,QAAQ;IAAE,GAAGC;GAAY,GAAGN,KAAK;EAC5E,MAAMO,WAAW,GAAGC,YAAY,CAAwCP,GAAG,CAAC;EAE5EQ,gBAAgB,CAACN,QAAQ,EAAEO,KAAK;;IAC5BA,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEC,cAAc,EAAE;IACvB,MAAMC,MAAM,GAAGC,QAAQ,CAACC,aAAa,CAAC,iBAAiB,CAAC;;IAGxD,IAAIF,MAAM,IAAI,EAACA,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEG,QAAQ,CAACR,WAAW,CAACS,OAAO,CAAC,GAAE;MAClD;;IAGJ,CAAAC,oBAAA,GAAAV,WAAW,CAACS,OAAO,cAAAC,oBAAA,uBAAnBA,oBAAA,CAAqBC,KAAK,EAAE;GAC/B,CAAC;EAEF,MAAMC,GAAG,GAAGnB,KAAK,CAACoB,IAAI,GAAG,GAAG,GAAG,QAAQ;EAEvC,oBACIrB,cAACoB,GAAG,oBACIb,UAAU;IACdc,IAAI,EAAElB,QAAQ,GAAGmB,SAAS,GAAGrB,KAAK,CAACoB,IAAI;qBACxBlB,QAAQ,GAAG,MAAM,GAAGmB,SAAS;IAC5CnB,QAAQ,EAAEA,QAAQ;IAClBE,MAAM,EAAEe,GAAG,KAAK,GAAG,GAAGf,MAAM,GAAGiB,SAAS;IACxChB,IAAI,EAAEc,GAAG,KAAK,GAAG,GAAGd,IAAI,GAAGgB,SAAS;IACpCpB,GAAG,EAAEM;MACJR,QAAc,CAACuB,KAAK,CAACtB,KAAK,CAACuB,QAAQ,CAAC,GAAG,CAAC,GACnCxB,QAAc,CAACyB,GAAG,CAACxB,KAAK,CAACuB,QAAQ,EAAEE,KAAK,IAAK,OAAOA,KAAK,KAAK,QAAQ,gBAAG1B,4BAAO0B,KAAK,CAAQ,GAAGA,KAAM,CAAC,GACvGzB,KAAK,CAACuB,QAAQ,CAClB;AAEd,CAAC;;;;"}
@@ -3,7 +3,6 @@ import { Tooltip } from '../../../../../../components/Tooltip/Tooltip.js';
3
3
  import { useLocalization } from '../../../../../../components/Provider/Localization.js';
4
4
  import { Checkbox } from '../../../../../../components/Checkbox/Checkbox.js';
5
5
  import { Shortcut } from '../../../../../../components/Shortcut/Shortcut.js';
6
- import { TableServerLoadAllState } from '../../../../types.js';
7
6
  import { RowContext } from '../../Row/RowContext.js';
8
7
 
9
8
  function Header(context) {
@@ -41,7 +40,7 @@ function Header(context) {
41
40
  className: "hover:border-blue !-mt-px",
42
41
  checked: isAllRowsSelected,
43
42
  indeterminate: isSomeRowsSelected && !isAllRowsSelected,
44
- loading: tableMeta.server.loadAllStatus === TableServerLoadAllState.Loading,
43
+ loading: tableMeta.server.loading,
45
44
  onChange: handleChange
46
45
  }));
47
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Selection.js","sources":["../../../../../../../../../../../src/primitives/Table/Core/components/Columns/Internal/Selection.tsx"],"sourcesContent":["import React from 'react';\nimport {\n HeaderContext as ReactTableHeaderContext,\n CellContext as ReactTableCellContext,\n TableMeta as ReactTableMeta,\n RowSelectionState,\n} from '@tanstack/react-table';\nimport { useLocalization } from '../../../../../../components/Provider/Localization';\nimport { Tooltip } from '../../../../../../components/Tooltip/Tooltip';\nimport { Checkbox } from '../../../../../../components/Checkbox/Checkbox';\nimport { Shortcut } from '../../../../../../components/Shortcut/Shortcut';\nimport { TableServerLoadAllState } from '../../../../types';\nimport { RowContext } from '../../Row/RowContext';\nimport { useTableManagerInternalColumn } from '../../../../useTableManager/types';\n\nfunction Header<TType = unknown>(context: ReactTableHeaderContext<TType, unknown>) {\n const { texts } = useLocalization();\n const { table } = context;\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n const isAllRowsSelected = table.getIsAllRowsSelected();\n const isSomeRowsSelected = table.getIsSomeRowsSelected();\n const title = isAllRowsSelected ? texts.table.columns.select.deselectAll : texts.table.columns.select.selectAll;\n\n const handleChange = async (checked: boolean) => {\n // load all data if that is possible\n if (tableMeta.server.loadAllIfNeeded) {\n // don't pass the search query because we need all data - not filtered data\n await tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters);\n }\n\n table.toggleAllRowsSelected(checked);\n };\n\n return (\n <Tooltip title={title}>\n <Checkbox\n aria-label={title}\n className=\"hover:border-blue !-mt-px\"\n checked={isAllRowsSelected}\n indeterminate={isSomeRowsSelected && !isAllRowsSelected}\n loading={tableMeta.server.loadAllStatus === TableServerLoadAllState.Loading}\n onChange={handleChange}\n />\n </Tooltip>\n );\n}\n\nconst toggleBetween = (fromRowIndex: number, toRowIndex: number): [number, number] => {\n const fromIndex = toRowIndex < fromRowIndex ? toRowIndex : fromRowIndex;\n const toIndex = toRowIndex > fromRowIndex ? toRowIndex : fromRowIndex;\n\n return [fromIndex, toIndex];\n};\n\nfunction Cell<TType = unknown>(context: ReactTableCellContext<TType, unknown>) {\n const { texts } = useLocalization();\n const { row, table } = context;\n const { hideInternalColumns, rowIndex } = React.useContext(RowContext);\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n if (hideInternalColumns || (table.options.enableGrouping && table.getState().grouping?.length && !row.getIsGrouped())) {\n return null;\n }\n\n const isSelected = row.getIsGrouped() ? row.getIsAllSubRowsSelected() : row.getIsSelected();\n const canSelect = row.getCanSelect();\n const title = isSelected ? texts.table.columns.select.deselect : texts.table.columns.select.select;\n\n const handleClick = async (event: React.MouseEvent) => {\n event.stopPropagation();\n\n if (row.getIsGrouped()) {\n row.subRows.forEach(row => row.toggleSelected());\n } else if (event.shiftKey) {\n const [fromIndex, toIndex] = toggleBetween(tableMeta.rowSelection.lastSelectedRowIndex.current ?? 0, rowIndex);\n const selectedRows = table.getRowModel().rows.slice(fromIndex, toIndex + 1);\n\n if (tableMeta.server.loadAllIfNeeded && selectedRows.some(row => row.original === undefined)) {\n // don't pass the search query because we need all data - not filtered data\n await tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters);\n }\n\n table.setRowSelection((currentRowSelection: RowSelectionState) => ({\n ...currentRowSelection,\n ...selectedRows.filter(row => row.getCanSelect()).reduce((state, row) => ({ ...state, [row.id]: true }), {}),\n }));\n } else {\n row.toggleSelected();\n }\n\n tableMeta.rowSelection.lastSelectedRowIndex.current = row.index;\n };\n\n return (\n <Tooltip\n hidden={!canSelect}\n title={\n <>\n {title}\n <Shortcut className=\"ml-2\" keys=\"Space\" />\n </>\n }>\n <Checkbox\n aria-label={title}\n className=\"!mt-0\"\n checked={isSelected}\n onClick={handleClick}\n disabled={!canSelect}\n // this is necessary to remove console spam from eslint\n onChange={() => false}\n />\n </Tooltip>\n );\n}\n\nexport const renderer: useTableManagerInternalColumn = {\n header: Header,\n renderer: Cell,\n size: 40,\n meta: {\n align: 'center',\n className: '!px-1',\n // TODO: remove when table3 is migrated, this satisfies the legacy table3 type\n enableSearch: false,\n header: '',\n headerClassName: '!px-1',\n },\n};\n"],"names":["Header","context","texts","useLocalization","table","tableMeta","options","meta","isAllRowsSelected","getIsAllRowsSelected","isSomeRowsSelected","getIsSomeRowsSelected","title","columns","select","deselectAll","selectAll","handleChange","checked","toggleAllRowsSelected","_temp","server","loadAllIfNeeded","Promise","resolve","getState","sorting","columnFilters","then","_temp2","e","reject","React","Tooltip","Checkbox","className","indeterminate","loading","loadAllStatus","TableServerLoadAllState","Loading","onChange","toggleBetween","fromRowIndex","toRowIndex","fromIndex","toIndex","Cell","row","hideInternalColumns","rowIndex","useContext","RowContext","enableGrouping","_table$getState$group","grouping","length","getIsGrouped","isSelected","getIsAllSubRowsSelected","getIsSelected","canSelect","getCanSelect","deselect","handleClick","event","rowSelection","lastSelectedRowIndex","current","index","stopPropagation","_temp6","subRows","forEach","toggleSelected","_temp5","shiftKey","_tableMeta$rowSelecti","_temp4","setRowSelection","currentRowSelection","selectedRows","filter","reduce","state","id","getRowModel","rows","slice","_temp3","some","original","undefined","_temp7","hidden","Shortcut","keys","onClick","disabled","renderer","header","size","align","enableSearch","headerClassName"],"mappings":"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"}
1
+ {"version":3,"file":"Selection.js","sources":["../../../../../../../../../../../src/primitives/Table/Core/components/Columns/Internal/Selection.tsx"],"sourcesContent":["import React from 'react';\nimport {\n HeaderContext as ReactTableHeaderContext,\n CellContext as ReactTableCellContext,\n TableMeta as ReactTableMeta,\n RowSelectionState,\n} from '@tanstack/react-table';\nimport { useLocalization } from '../../../../../../components/Provider/Localization';\nimport { Tooltip } from '../../../../../../components/Tooltip/Tooltip';\nimport { Checkbox } from '../../../../../../components/Checkbox/Checkbox';\nimport { Shortcut } from '../../../../../../components/Shortcut/Shortcut';\nimport { RowContext } from '../../Row/RowContext';\nimport { useTableManagerInternalColumn } from '../../../../useTableManager/types';\n\nfunction Header<TType = unknown>(context: ReactTableHeaderContext<TType, unknown>) {\n const { texts } = useLocalization();\n const { table } = context;\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n const isAllRowsSelected = table.getIsAllRowsSelected();\n const isSomeRowsSelected = table.getIsSomeRowsSelected();\n const title = isAllRowsSelected ? texts.table.columns.select.deselectAll : texts.table.columns.select.selectAll;\n\n const handleChange = async (checked: boolean) => {\n // load all data if that is possible\n if (tableMeta.server.loadAllIfNeeded) {\n // don't pass the search query because we need all data - not filtered data\n await tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters);\n }\n\n table.toggleAllRowsSelected(checked);\n };\n\n return (\n <Tooltip title={title}>\n <Checkbox\n aria-label={title}\n className=\"hover:border-blue !-mt-px\"\n checked={isAllRowsSelected}\n indeterminate={isSomeRowsSelected && !isAllRowsSelected}\n loading={tableMeta.server.loading}\n onChange={handleChange}\n />\n </Tooltip>\n );\n}\n\nconst toggleBetween = (fromRowIndex: number, toRowIndex: number): [number, number] => {\n const fromIndex = toRowIndex < fromRowIndex ? toRowIndex : fromRowIndex;\n const toIndex = toRowIndex > fromRowIndex ? toRowIndex : fromRowIndex;\n\n return [fromIndex, toIndex];\n};\n\nfunction Cell<TType = unknown>(context: ReactTableCellContext<TType, unknown>) {\n const { texts } = useLocalization();\n const { row, table } = context;\n const { hideInternalColumns, rowIndex } = React.useContext(RowContext);\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n if (hideInternalColumns || (table.options.enableGrouping && table.getState().grouping?.length && !row.getIsGrouped())) {\n return null;\n }\n\n const isSelected = row.getIsGrouped() ? row.getIsAllSubRowsSelected() : row.getIsSelected();\n const canSelect = row.getCanSelect();\n const title = isSelected ? texts.table.columns.select.deselect : texts.table.columns.select.select;\n\n const handleClick = async (event: React.MouseEvent) => {\n event.stopPropagation();\n\n if (row.getIsGrouped()) {\n row.subRows.forEach(row => row.toggleSelected());\n } else if (event.shiftKey) {\n const [fromIndex, toIndex] = toggleBetween(tableMeta.rowSelection.lastSelectedRowIndex.current ?? 0, rowIndex);\n const selectedRows = table.getRowModel().rows.slice(fromIndex, toIndex + 1);\n\n if (tableMeta.server.loadAllIfNeeded && selectedRows.some(row => row.original === undefined)) {\n // don't pass the search query because we need all data - not filtered data\n await tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters);\n }\n\n table.setRowSelection((currentRowSelection: RowSelectionState) => ({\n ...currentRowSelection,\n ...selectedRows.filter(row => row.getCanSelect()).reduce((state, row) => ({ ...state, [row.id]: true }), {}),\n }));\n } else {\n row.toggleSelected();\n }\n\n tableMeta.rowSelection.lastSelectedRowIndex.current = row.index;\n };\n\n return (\n <Tooltip\n hidden={!canSelect}\n title={\n <>\n {title}\n <Shortcut className=\"ml-2\" keys=\"Space\" />\n </>\n }>\n <Checkbox\n aria-label={title}\n className=\"!mt-0\"\n checked={isSelected}\n onClick={handleClick}\n disabled={!canSelect}\n // this is necessary to remove console spam from eslint\n onChange={() => false}\n />\n </Tooltip>\n );\n}\n\nexport const renderer: useTableManagerInternalColumn = {\n header: Header,\n renderer: Cell,\n size: 40,\n meta: {\n align: 'center',\n className: '!px-1',\n // TODO: remove when table3 is migrated, this satisfies the legacy table3 type\n enableSearch: false,\n header: '',\n headerClassName: '!px-1',\n },\n};\n"],"names":["Header","context","texts","useLocalization","table","tableMeta","options","meta","isAllRowsSelected","getIsAllRowsSelected","isSomeRowsSelected","getIsSomeRowsSelected","title","columns","select","deselectAll","selectAll","handleChange","checked","toggleAllRowsSelected","_temp","server","loadAllIfNeeded","Promise","resolve","getState","sorting","columnFilters","then","_temp2","e","reject","React","Tooltip","Checkbox","className","indeterminate","loading","onChange","toggleBetween","fromRowIndex","toRowIndex","fromIndex","toIndex","Cell","row","hideInternalColumns","rowIndex","useContext","RowContext","enableGrouping","_table$getState$group","grouping","length","getIsGrouped","isSelected","getIsAllSubRowsSelected","getIsSelected","canSelect","getCanSelect","deselect","handleClick","event","rowSelection","lastSelectedRowIndex","current","index","stopPropagation","_temp6","subRows","forEach","toggleSelected","_temp5","shiftKey","_tableMeta$rowSelecti","_temp4","setRowSelection","currentRowSelection","selectedRows","filter","reduce","state","id","getRowModel","rows","slice","_temp3","some","original","undefined","_temp7","hidden","Shortcut","keys","onClick","disabled","renderer","header","size","align","enableSearch","headerClassName"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import React__default from 'react';
2
2
  import { useLocalization } from '../../../../../../../components/Provider/Localization.js';
3
3
  import { Switch } from '../../../../../../../components/Switch/Switch.js';
4
- import { TableServerLoadAllState } from '../../../../../types.js';
5
4
  import { SearchInput2 } from '../../../../../../../components/SearchInput2/SearchInput2.js';
6
5
 
7
6
  function Search(props) {
@@ -91,7 +90,7 @@ function Search(props) {
91
90
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SearchInput2, {
92
91
  findCurrent: tableMeta.search.currentHighlightColumnIndex !== undefined ? tableMeta.search.currentHighlightColumnIndex + 1 : null,
93
92
  findTotal: (_tableMeta$search$hig = (_tableMeta$search$hig2 = tableMeta.search.highlightedColumnIndexes) === null || _tableMeta$search$hig2 === void 0 ? void 0 : _tableMeta$search$hig2.length) !== null && _tableMeta$search$hig !== void 0 ? _tableMeta$search$hig : null,
94
- loading: tableMeta.server.loadAllStatus === TableServerLoadAllState.Loading,
93
+ loading: tableMeta.server.loading,
95
94
  name: "table-search",
96
95
  onClickFindPrevious: handlePreviousResult,
97
96
  onClickFindNext: handleNextResult,