# disco/1.4.17/backend/views/components/Analytics/features/dateRange/dateRangeSlice.js

Discount Rules for WooCommerce – Disco | Dynamic Pricing, Conditions, Bulk, Bundle, BOGO, version 1.4.17. 40 lines.

- Page: https://pluginprobe.com/plugins/disco/1.4.17/code/backend/views/components/Analytics/features/dateRange/dateRangeSlice.js
- Raw: https://pluginprobe.com/plugins/disco/1.4.17/raw/backend/views/components/Analytics/features/dateRange/dateRangeSlice.js
- Modified: 2026-07-09T04:37:46+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/disco/1.4.17/code/backend/views/components/Analytics/features/dateRange/dateRangeSlice.js#L10-L20`.

```javascript
import { createSelector, createSlice } from '@reduxjs/toolkit';
import { format, subDays } from 'date-fns';

function toApiDate(date) {
	return format(date, 'yyyy-MM-dd');
}

const today = new Date();
const defaultStart = subDays(today, 27);

const initialState = {
	startDate: toApiDate(defaultStart),
	endDate: toApiDate(today),
};

const dateRangeSlice = createSlice({
	name: 'dateRange',
	initialState,
	reducers: {
		setDateRange(state, action) {
			state.startDate = action.payload.startDate;
			state.endDate = action.payload.endDate;
		},
	},
});

export const { setDateRange } = dateRangeSlice.actions;

export const selectDateRange = (state) => state.dateRange;

export const selectDateRangeParams = createSelector(
	[selectDateRange],
	(dateRange) => ({
		date_from: dateRange.startDate,
		date_to: dateRange.endDate,
	})
);

export default dateRangeSlice.reducer;

```
