You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
2.5 KiB
96 lines
2.5 KiB
// 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,
|
|
}
|
|
})
|