trotl-filter 1.0.45 → 1.0.46

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.js CHANGED
@@ -9514,6 +9514,7 @@ function DateTimeInput({
9514
9514
  style = {},
9515
9515
  predefinedRanges = ["today", "yesterday"],
9516
9516
  startWith = "sunday",
9517
+ presets = [],
9517
9518
  ...rest
9518
9519
  }) {
9519
9520
  let translate;
@@ -9883,6 +9884,56 @@ function DateTimeInput({
9883
9884
  applySelection(d);
9884
9885
  setSelectedPredefined(String(idx));
9885
9886
  };
9887
+ const handlePresetClick = preset => {
9888
+ if (!preset || !preset.type) return;
9889
+ const type = String(preset.type).toLowerCase();
9890
+ if (type === 'clear') {
9891
+ handleClear();
9892
+ return;
9893
+ }
9894
+ if (type === 'today') {
9895
+ const d = new Date();
9896
+ if (time && timeStart) {
9897
+ const [h, m] = (timeStart || "00:00").split(":");
9898
+ d.setHours(Number(h), Number(m), 0, 0);
9899
+ } else if (!time) {
9900
+ d.setHours(0, 0, 0, 0);
9901
+ }
9902
+ applySelection(d);
9903
+ return;
9904
+ }
9905
+
9906
+ // base = selected date (if present) or now
9907
+ const base = selectedDate ? new Date(selectedDate) : new Date();
9908
+ const val = Number(preset.value || 0);
9909
+ if (type === 'days') {
9910
+ base.setDate(base.getDate() + val);
9911
+ if (!selectedDate && time && timeStart) {
9912
+ const [h, m] = (timeStart || "00:00").split(":");
9913
+ base.setHours(Number(h), Number(m), 0, 0);
9914
+ }
9915
+ applySelection(base);
9916
+ return;
9917
+ }
9918
+ if (type === 'months') {
9919
+ base.setMonth(base.getMonth() + val);
9920
+ if (!selectedDate && time && timeStart) {
9921
+ const [h, m] = (timeStart || "00:00").split(":");
9922
+ base.setHours(Number(h), Number(m), 0, 0);
9923
+ }
9924
+ applySelection(base);
9925
+ return;
9926
+ }
9927
+ if (type === 'years') {
9928
+ base.setFullYear(base.getFullYear() + val);
9929
+ if (!selectedDate && time && timeStart) {
9930
+ const [h, m] = (timeStart || "00:00").split(":");
9931
+ base.setHours(Number(h), Number(m), 0, 0);
9932
+ }
9933
+ applySelection(base);
9934
+ return;
9935
+ }
9936
+ };
9886
9937
  const handleDayClick = day => {
9887
9938
  applySelection(day);
9888
9939
  };
@@ -10086,7 +10137,30 @@ function DateTimeInput({
10086
10137
  background: disabled ? '#f9fafb' : undefined,
10087
10138
  color: disabled ? '#9ca3af' : undefined
10088
10139
  }
10089
- })), /*#__PURE__*/React.createElement("div", {
10140
+ })), presets && presets.length > 0 && /*#__PURE__*/React.createElement("div", {
10141
+ style: {
10142
+ display: 'flex',
10143
+ gap: 8,
10144
+ marginTop: 8,
10145
+ marginBottom: 8,
10146
+ flexWrap: 'wrap'
10147
+ }
10148
+ }, presets.map((p, i) => /*#__PURE__*/React.createElement("button", {
10149
+ key: `preset_${i}`,
10150
+ type: "button",
10151
+ onClick: () => !disabled && handlePresetClick(p),
10152
+ disabled: disabled,
10153
+ className: "basic-btn",
10154
+ style: {
10155
+ padding: '6px 10px',
10156
+ fontSize: 12,
10157
+ background: disabled ? '#f9fafb' : '#fff',
10158
+ color: disabled ? '#9ca3af' : '#000',
10159
+ border: '1px solid #d9d9d9',
10160
+ borderRadius: 4,
10161
+ cursor: disabled ? 'not-allowed' : 'pointer'
10162
+ }
10163
+ }, p.label || p.type))), /*#__PURE__*/React.createElement("div", {
10090
10164
  style: {
10091
10165
  display: 'flex',
10092
10166
  justifyContent: 'space-between',
@@ -10150,7 +10224,8 @@ DateTimeInput.propTypes = {
10150
10224
  disabled: PropTypes.bool,
10151
10225
  className: PropTypes.string,
10152
10226
  style: PropTypes.object,
10153
- predefinedRanges: PropTypes.array
10227
+ predefinedRanges: PropTypes.array,
10228
+ presets: PropTypes.array
10154
10229
  };
10155
10230
  const buttonStyle = {
10156
10231
  padding: '6px 16px',