コード例 #1
0
ファイル: index.js プロジェクト: degdigital/input-types
const rootReducer = (state = initialState, action) => {
	switch (action.type) {
		case ADD_INPUT_ITEM:
			return {
				...state,
				inputItems: [
					{
						...defaultInputItem,
						id: generateRandomId()
					},
					...state.inputItems
				],
				isFetching: false,
				isLoading: false
			};
		case EDIT_INPUT_ITEM:
			return {
				...state,
				inputItems: filterEditInputItems(state.inputItems, action.payload)
			};
		case REMOVE_INPUT_ITEM:
			return {
				...state,
				inputItems: state.inputItems.filter(inputItem => inputItem.id !== action.payload.id)
			}
		case REQUEST_SAVED_STATE:
			return {
				...state,
				inputItems: [],
				isFetching: true,
				isLoading: true
			}
		case RECEIVE_SAVED_STATE:
			return {
				...state,
				inputItems: action.payload,
				isFetching: false,
				isLoading: false
			}
		case SAVE_STATE_PENDING:
			return {
				...state,
				isFetching: true,
				saveSuccessful: false
			}
		case SAVE_STATE_COMPLETE:
			return {
				...state,
				isFetching: false,
				saveSuccessful: true
			}
		default:
			return state;
	}
};
コード例 #2
0
ファイル: index.js プロジェクト: degdigital/input-types
	SAVE_STATE_PENDING,
	SAVE_STATE_COMPLETE
} from '../constants/action-types';
import {generateRandomId} from 'utils/utils.js';

const defaultInputItem = {
	name: 'Input Item',
	inputType: 'text',
	isRequired: false
};

const initialState = {
	inputItems: [
		{
			...defaultInputItem,
			id: generateRandomId()
		}
	]
};

const filterEditInputItems = (inputItems, payload) => {
	return inputItems.map(inputItem => {
		if (inputItem.id === payload.id) {
			return Object.assign({}, inputItem, payload);
		} else {
			return inputItem;
		}
	});
};

const rootReducer = (state = initialState, action) => {