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