@kalyx/react 1.0.0-rc.13 → 1.0.0-rc.14

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.cjs CHANGED
@@ -1,13 +1,29 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
+ var adapterDateFns = require('@kalyx/adapter-date-fns');
4
5
  var react = require('react');
5
6
  var core = require('@kalyx/core');
6
- var adapterDateFns = require('@kalyx/adapter-date-fns');
7
7
  var jsxRuntime = require('react/jsx-runtime');
8
8
  var react$1 = require('@floating-ui/react');
9
9
 
10
- // src/components/DatePicker/Root.tsx
10
+ // src/index.ts
11
+
12
+ // src/internal/defaultAdapter.ts
13
+ var __defaultAdapter = null;
14
+ function setDefaultAdapter(adapter) {
15
+ __defaultAdapter = adapter;
16
+ }
17
+ function getDefaultAdapter() {
18
+ return __defaultAdapter;
19
+ }
20
+ function resolveAdapter(passed, fallback, componentName) {
21
+ if (passed) return passed;
22
+ if (fallback) return fallback;
23
+ throw new Error(
24
+ `[@kalyx/react/headless] ${componentName} requires an adapter. Pass one via <${componentName} adapter={...}>. If you don't need a custom adapter, import from '@kalyx/react' instead.`
25
+ );
26
+ }
11
27
  var DatePickerContext = react.createContext(null);
12
28
  function useDatePickerContext(componentName) {
13
29
  const context = react.useContext(DatePickerContext);
@@ -46,10 +62,11 @@ function DatePickerRoot({
46
62
  displayFormat = "yyyy-MM-dd",
47
63
  locale = "en-US",
48
64
  displayTimezone,
49
- adapter = adapterDateFns.DateFnsAdapter,
65
+ adapter: adapterProp,
50
66
  labels: labelsProp,
51
67
  children
52
68
  }) {
69
+ const adapter = resolveAdapter(adapterProp, getDefaultAdapter(), "DatePicker");
53
70
  const pickerId = react.useId();
54
71
  const isControlled = react.useRef(controlledValue !== void 0).current;
55
72
  const referenceRef = react.useRef(null);
@@ -1127,10 +1144,11 @@ function RangePickerRoot({
1127
1144
  displayFormat = "yyyy-MM-dd",
1128
1145
  locale = "en-US",
1129
1146
  displayTimezone,
1130
- adapter = adapterDateFns.DateFnsAdapter,
1147
+ adapter: adapterProp,
1131
1148
  labels: labelsProp,
1132
1149
  children
1133
1150
  }) {
1151
+ const adapter = resolveAdapter(adapterProp, getDefaultAdapter(), "RangePicker");
1134
1152
  const pickerId = react.useId();
1135
1153
  const isControlled = react.useRef(controlledValue !== void 0).current;
1136
1154
  const referenceRef = react.useRef(null);
@@ -1805,9 +1823,11 @@ function TimePickerRoot({
1805
1823
  disabled = false,
1806
1824
  readOnly = false,
1807
1825
  filterTime,
1826
+ adapter: adapterProp,
1808
1827
  labels: labelsProp,
1809
1828
  children
1810
1829
  }) {
1830
+ const adapter = resolveAdapter(adapterProp, getDefaultAdapter(), "TimePicker");
1811
1831
  const pickerId = react.useId();
1812
1832
  const mergedLabels = react.useMemo(
1813
1833
  () => ({ ...core.DEFAULT_TIMEPICKER_LABELS, ...labelsProp }),
@@ -1825,14 +1845,14 @@ function TimePickerRoot({
1825
1845
  const setTime = react.useCallback(
1826
1846
  (partial) => {
1827
1847
  if (disabled || readOnly) return;
1828
- const base = currentValue ?? adapterDateFns.DateFnsAdapter.today(displayTimezone);
1848
+ const base = currentValue ?? adapter.today(displayTimezone);
1829
1849
  const newIso = displayTimezone ? core.setTimeInTimezone(base, partial, displayTimezone) : core.setTime(base, partial);
1830
1850
  if (!isControlled) {
1831
1851
  setUncontrolledValue(newIso);
1832
1852
  }
1833
1853
  onChange?.(newIso);
1834
1854
  },
1835
- [disabled, readOnly, currentValue, displayTimezone, isControlled, onChange]
1855
+ [disabled, readOnly, currentValue, displayTimezone, isControlled, onChange, adapter]
1836
1856
  );
1837
1857
  const contextValue = react.useMemo(
1838
1858
  () => ({
@@ -2208,10 +2228,11 @@ function DateTimePickerRoot({
2208
2228
  displayFormat = "yyyy-MM-dd HH:mm",
2209
2229
  locale = "en-US",
2210
2230
  displayTimezone,
2211
- adapter = adapterDateFns.DateFnsAdapter,
2231
+ adapter: adapterProp,
2212
2232
  labels: labelsProp,
2213
2233
  children
2214
2234
  }) {
2235
+ const adapter = resolveAdapter(adapterProp, getDefaultAdapter(), "DateTimePicker");
2215
2236
  const pickerId = react.useId();
2216
2237
  const mergedDateLabels = react.useMemo(
2217
2238
  () => ({ ...core.DEFAULT_DATEPICKER_LABELS, ...labelsProp }),
@@ -2746,9 +2767,10 @@ function useDatePicker(options = {}) {
2746
2767
  onChange,
2747
2768
  disabled = [],
2748
2769
  weekStartsOn = 0,
2749
- adapter = adapterDateFns.DateFnsAdapter,
2770
+ adapter: adapterProp,
2750
2771
  displayTimezone
2751
2772
  } = options;
2773
+ const adapter = resolveAdapter(adapterProp, getDefaultAdapter(), "useDatePicker");
2752
2774
  const pickerId = react.useId();
2753
2775
  const isControlled = react.useRef(controlledValue !== void 0).current;
2754
2776
  const [uncontrolledValue, setUncontrolledValue] = react.useState(
@@ -2829,9 +2851,10 @@ function useRangePicker(options = {}) {
2829
2851
  onChange,
2830
2852
  disabled = [],
2831
2853
  weekStartsOn = 0,
2832
- adapter = adapterDateFns.DateFnsAdapter,
2854
+ adapter: adapterProp,
2833
2855
  displayTimezone
2834
2856
  } = options;
2857
+ const adapter = resolveAdapter(adapterProp, getDefaultAdapter(), "useRangePicker");
2835
2858
  const pickerId = react.useId();
2836
2859
  const isControlled = react.useRef(controlledValue !== void 0).current;
2837
2860
  const [uncontrolledValue, setUncontrolledValue] = react.useState(
@@ -2936,9 +2959,6 @@ function useRangePicker(options = {}) {
2936
2959
  adapter
2937
2960
  };
2938
2961
  }
2939
- function getDefaultIso() {
2940
- return adapterDateFns.DateFnsAdapter.today();
2941
- }
2942
2962
  function useTimePicker(options = {}) {
2943
2963
  const {
2944
2964
  value: controlledValue,
@@ -2946,15 +2966,17 @@ function useTimePicker(options = {}) {
2946
2966
  onChange,
2947
2967
  format = "24h",
2948
2968
  step = 1,
2949
- displayTimezone
2969
+ displayTimezone,
2970
+ adapter: adapterProp
2950
2971
  } = options;
2972
+ const adapter = resolveAdapter(adapterProp, getDefaultAdapter(), "useTimePicker");
2951
2973
  const pickerId = react.useId();
2952
2974
  const isControlled = react.useRef(controlledValue !== void 0).current;
2953
2975
  const [uncontrolledValue, setUncontrolledValue] = react.useState(
2954
2976
  defaultValue ?? null
2955
2977
  );
2956
2978
  const currentValue = isControlled ? controlledValue ?? null : uncontrolledValue;
2957
- const baseIso = currentValue ?? getDefaultIso();
2979
+ const baseIso = currentValue ?? adapter.today();
2958
2980
  const currentTime = react.useMemo(
2959
2981
  () => displayTimezone ? core.getTimeInTimezone(baseIso, displayTimezone) : core.getTime(baseIso),
2960
2982
  [baseIso, displayTimezone]
@@ -3004,7 +3026,12 @@ function useTimePicker(options = {}) {
3004
3026
  pickerId
3005
3027
  };
3006
3028
  }
3029
+ setDefaultAdapter(adapterDateFns.DateFnsAdapter);
3007
3030
 
3031
+ Object.defineProperty(exports, "DateFnsAdapter", {
3032
+ enumerable: true,
3033
+ get: function () { return adapterDateFns.DateFnsAdapter; }
3034
+ });
3008
3035
  Object.defineProperty(exports, "DEFAULT_DATEPICKER_LABELS", {
3009
3036
  enumerable: true,
3010
3037
  get: function () { return core.DEFAULT_DATEPICKER_LABELS; }
@@ -3021,10 +3048,6 @@ Object.defineProperty(exports, "DEFAULT_TIMEPICKER_LABELS", {
3021
3048
  enumerable: true,
3022
3049
  get: function () { return core.DEFAULT_TIMEPICKER_LABELS; }
3023
3050
  });
3024
- Object.defineProperty(exports, "DateFnsAdapter", {
3025
- enumerable: true,
3026
- get: function () { return adapterDateFns.DateFnsAdapter; }
3027
- });
3028
3051
  exports.DatePicker = DatePicker;
3029
3052
  exports.DateTimePicker = DateTimePicker;
3030
3053
  exports.MonthPicker = MonthPicker;