schummar-table 0.40.6 → 0.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -18,11 +18,12 @@ type DatePickerQuickOption = 'today' | 'thisWeek' | 'thisMonth' | 'thisYear' | '
18
18
  label: ReactNode;
19
19
  value: Date | DateRange | (() => Date | DateRange);
20
20
  } | ((onChange: (value: Date | DateRange | null) => void) => ReactNode);
21
+ type DatePickerChangeSource = 'input' | 'calendarWeek' | 'calendar' | 'quickOption';
21
22
  type DatePickerProps = {
22
23
  /** Currently selected day or range of days. */
23
24
  value: Date | DateRange | null;
24
25
  /** Callback for when the day (range) changes. */
25
- onChange: (value: Date | DateRange | null) => void;
26
+ onChange: (value: Date | DateRange | null, source: DatePickerChangeSource) => void;
26
27
  /** Currently visible date. */
27
28
  dateInView?: Date;
28
29
  /** Callback for when the currently visible date changes. */
@@ -216,4 +217,4 @@ declare const termMatch: (text: string, query: string) => boolean;
216
217
  declare function configureTableTheme(tableTheme: PartialTableTheme): void;
217
218
  declare function mergeThemes<T>(...themes: PartialTableTheme<T>[]): PartialTableTheme<T>;
218
219
 
219
- export { AutoFocusTextField, ColumnContext, CommonFilterProps, DateFilter, DatePicker, type DatePickerProps, DatePickerProvider, type DatePickerQuickOption, type DateRange, FilterImplementation, Id, PartialTableTheme, RangeFilter, SelectFilter, Table, TableContext, TableProps, TableResetContext, TableSettingsContext, TableSettingsProvider, TextFilter, commonQuickOptions, configureTableTheme, dateClamp, dateIntersect, endOfDay, getCalendarWeek, helpers, lastDays, mergeThemes, startOfDay, termMatch, textMatch, thisMonth, thisWeek, thisYear, today, useColumnContext, useFilter, useTableContext, useTheme };
220
+ export { AutoFocusTextField, ColumnContext, CommonFilterProps, DateFilter, DatePicker, type DatePickerChangeSource, type DatePickerProps, DatePickerProvider, type DatePickerQuickOption, type DateRange, FilterImplementation, Id, PartialTableTheme, RangeFilter, SelectFilter, Table, TableContext, TableProps, TableResetContext, TableSettingsContext, TableSettingsProvider, TextFilter, commonQuickOptions, configureTableTheme, dateClamp, dateIntersect, endOfDay, getCalendarWeek, helpers, lastDays, mergeThemes, startOfDay, termMatch, textMatch, thisMonth, thisWeek, thisYear, today, useColumnContext, useFilter, useTableContext, useTheme };
package/dist/index.d.ts CHANGED
@@ -18,11 +18,12 @@ type DatePickerQuickOption = 'today' | 'thisWeek' | 'thisMonth' | 'thisYear' | '
18
18
  label: ReactNode;
19
19
  value: Date | DateRange | (() => Date | DateRange);
20
20
  } | ((onChange: (value: Date | DateRange | null) => void) => ReactNode);
21
+ type DatePickerChangeSource = 'input' | 'calendarWeek' | 'calendar' | 'quickOption';
21
22
  type DatePickerProps = {
22
23
  /** Currently selected day or range of days. */
23
24
  value: Date | DateRange | null;
24
25
  /** Callback for when the day (range) changes. */
25
- onChange: (value: Date | DateRange | null) => void;
26
+ onChange: (value: Date | DateRange | null, source: DatePickerChangeSource) => void;
26
27
  /** Currently visible date. */
27
28
  dateInView?: Date;
28
29
  /** Callback for when the currently visible date changes. */
@@ -216,4 +217,4 @@ declare const termMatch: (text: string, query: string) => boolean;
216
217
  declare function configureTableTheme(tableTheme: PartialTableTheme): void;
217
218
  declare function mergeThemes<T>(...themes: PartialTableTheme<T>[]): PartialTableTheme<T>;
218
219
 
219
- export { AutoFocusTextField, ColumnContext, CommonFilterProps, DateFilter, DatePicker, type DatePickerProps, DatePickerProvider, type DatePickerQuickOption, type DateRange, FilterImplementation, Id, PartialTableTheme, RangeFilter, SelectFilter, Table, TableContext, TableProps, TableResetContext, TableSettingsContext, TableSettingsProvider, TextFilter, commonQuickOptions, configureTableTheme, dateClamp, dateIntersect, endOfDay, getCalendarWeek, helpers, lastDays, mergeThemes, startOfDay, termMatch, textMatch, thisMonth, thisWeek, thisYear, today, useColumnContext, useFilter, useTableContext, useTheme };
220
+ export { AutoFocusTextField, ColumnContext, CommonFilterProps, DateFilter, DatePicker, type DatePickerChangeSource, type DatePickerProps, DatePickerProvider, type DatePickerQuickOption, type DateRange, FilterImplementation, Id, PartialTableTheme, RangeFilter, SelectFilter, Table, TableContext, TableProps, TableResetContext, TableSettingsContext, TableSettingsProvider, TextFilter, commonQuickOptions, configureTableTheme, dateClamp, dateIntersect, endOfDay, getCalendarWeek, helpers, lastDays, mergeThemes, startOfDay, termMatch, textMatch, thisMonth, thisWeek, thisYear, today, useColumnContext, useFilter, useTableContext, useTheme };
package/dist/index.js CHANGED
@@ -1295,7 +1295,7 @@ function DatePicker(props) {
1295
1295
  showCalendarWeek,
1296
1296
  blockedRanges = []
1297
1297
  } = defaults(props, context);
1298
- function onChange(value2) {
1298
+ function onChange(value2, source) {
1299
1299
  if (value2 instanceof Date) {
1300
1300
  value2 = dateClamp(value2, minDate, maxDate);
1301
1301
  } else if (value2) {
@@ -1304,7 +1304,7 @@ function DatePicker(props) {
1304
1304
  max: dateClamp(value2.max, minDate, maxDate)
1305
1305
  };
1306
1306
  }
1307
- props.onChange(value2);
1307
+ props.onChange(value2, source);
1308
1308
  }
1309
1309
  const Button2 = useTheme((t) => t.components.Button);
1310
1310
  const IconButton2 = useTheme((t) => t.components.IconButton);
@@ -1378,7 +1378,7 @@ function DatePicker(props) {
1378
1378
  if (option instanceof Function) {
1379
1379
  return option((value3) => {
1380
1380
  setDirty(void 0);
1381
- onChange(value3);
1381
+ onChange(value3, "quickOption");
1382
1382
  });
1383
1383
  }
1384
1384
  const { label, value: value2 } = typeof option === "string" ? commonQuickOptions[option] : option;
@@ -1393,9 +1393,9 @@ function DatePicker(props) {
1393
1393
  onClick: () => {
1394
1394
  setDirty(void 0);
1395
1395
  if (value2 instanceof Function) {
1396
- onChange(value2(props));
1396
+ onChange(value2(props), "quickOption");
1397
1397
  } else {
1398
- onChange(value2);
1398
+ onChange(value2, "quickOption");
1399
1399
  }
1400
1400
  },
1401
1401
  children: label
@@ -1430,9 +1430,9 @@ function DatePicker(props) {
1430
1430
  setDirty(void 0);
1431
1431
  }
1432
1432
  }, [rangeSelect]);
1433
- function set(min2, max2, edit) {
1433
+ function set(source, min2, max2, edit) {
1434
1434
  if (!rangeSelect) {
1435
- onChange(min2 != null ? min2 : null);
1435
+ onChange(min2 != null ? min2 : null, source);
1436
1436
  return;
1437
1437
  }
1438
1438
  if (min2 && max2 && min2 > max2) {
@@ -1446,7 +1446,7 @@ function DatePicker(props) {
1446
1446
  }
1447
1447
  if (!min2 === !max2) {
1448
1448
  setDirty(void 0);
1449
- onChange(min2 && max2 ? { min: min2, max: endOfDay(max2) } : null);
1449
+ onChange(min2 && max2 ? { min: min2, max: endOfDay(max2) } : null, source);
1450
1450
  } else {
1451
1451
  setDirty({ min: min2, max: max2 });
1452
1452
  }
@@ -1484,7 +1484,7 @@ function DatePicker(props) {
1484
1484
  DateInput,
1485
1485
  {
1486
1486
  value: min != null ? min : null,
1487
- onChange: (date) => set(date != null ? date : void 0, max, "min"),
1487
+ onChange: (date) => set("input", date != null ? date : void 0, max, "min"),
1488
1488
  locale
1489
1489
  }
1490
1490
  ),
@@ -1494,7 +1494,7 @@ function DatePicker(props) {
1494
1494
  DateInput,
1495
1495
  {
1496
1496
  value: max != null ? max : null,
1497
- onChange: (date) => set(min, date != null ? date : void 0, "max"),
1497
+ onChange: (date) => set("input", min, date != null ? date : void 0, "max"),
1498
1498
  locale
1499
1499
  }
1500
1500
  )
@@ -1579,7 +1579,7 @@ function DatePicker(props) {
1579
1579
  }
1580
1580
  const min2 = minDate && weekStart.date < minDate ? minDate : weekStart.date;
1581
1581
  const max2 = maxDate && weekEnd.date > maxDate ? maxDate : weekEnd.date;
1582
- set(min2, max2);
1582
+ set("calendarWeek", min2, max2);
1583
1583
  },
1584
1584
  onPointerOver: () => !weekDisabled && setHovered({ min: weekStart.date, max: weekEnd.date }),
1585
1585
  onPointerOut: () => !weekDisabled && setHovered(void 0),
@@ -1615,10 +1615,10 @@ function DatePicker(props) {
1615
1615
  }, getDateProps({ dateObj: dateObject })), {
1616
1616
  onClick: () => {
1617
1617
  if (dirty) {
1618
- if (min) set(min, date);
1619
- else set(date, max);
1618
+ if (min) set("calendar", min, date);
1619
+ else set("calendar", date, max);
1620
1620
  } else {
1621
- set(date);
1621
+ set("calendar", date);
1622
1622
  }
1623
1623
  },
1624
1624
  onPointerOver: () => setHovered({ min: date, max: date }),