|
|
// forms.ts
// Copyright (C) 2020 Dwayne Harris
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
import { Action } from 'redux' import { NotificationType, FormValue } from '../types'
export interface InitFormAction extends Action { type: 'FORMS_INIT' }
export interface InitFieldAction extends Action { type: 'FORMS_INIT_FIELD' payload: { name: string value: FormValue apiName?: string } }
export interface SetFieldValueAction extends Action { type: 'FORMS_SET_FIELD_VALUE' payload: { name: string value: FormValue } }
export interface SetFormNotificationAction extends Action { type: 'FORMS_SET_FORM_NOTIFICATION' payload: { type: NotificationType message: string } }
export interface SetFieldNotificationAction extends Action { type: 'FORMS_SET_FIELD_NOTIFICATION' payload: { name: string type: NotificationType message: string } }
export type FormsActions = InitFormAction | InitFieldAction | SetFieldValueAction | SetFormNotificationAction | SetFieldNotificationAction
export const initForm = (): InitFormAction => ({ type: 'FORMS_INIT', })
export const initField = (name: string, value: FormValue, apiName?: string): InitFieldAction => ({ type: 'FORMS_INIT_FIELD', payload: { name, value, apiName, }, })
export const setFieldValue = (name: string, value: FormValue): SetFieldValueAction => ({ type: 'FORMS_SET_FIELD_VALUE', payload: { name, value, }, })
export const setFormNotification = (type: NotificationType, message: string): SetFormNotificationAction => ({ type: 'FORMS_SET_FORM_NOTIFICATION', payload: { type, message, } })
export const setFieldNotification = (name: string, type: NotificationType, message: string): SetFieldNotificationAction => ({ type: 'FORMS_SET_FIELD_NOTIFICATION', payload: { name, type, message, } })
|