{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.AmplifyUiBuilder.Types.UpdateFormData
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.AmplifyUiBuilder.Types.UpdateFormData where

import Amazonka.AmplifyUiBuilder.Types.FieldConfig
import Amazonka.AmplifyUiBuilder.Types.FormActionType
import Amazonka.AmplifyUiBuilder.Types.FormCTA
import Amazonka.AmplifyUiBuilder.Types.FormDataTypeConfig
import Amazonka.AmplifyUiBuilder.Types.FormStyle
import Amazonka.AmplifyUiBuilder.Types.SectionalElement
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude

-- | Updates and saves all of the information about a form, based on form ID.
--
-- /See:/ 'newUpdateFormData' smart constructor.
data UpdateFormData = UpdateFormData'
  { -- | The @FormCTA@ object that stores the call to action configuration for
    -- the form.
    UpdateFormData -> Maybe FormCTA
cta :: Prelude.Maybe FormCTA,
    -- | The type of data source to use to create the form.
    UpdateFormData -> Maybe FormDataTypeConfig
dataType :: Prelude.Maybe FormDataTypeConfig,
    -- | The configuration information for the form\'s fields.
    UpdateFormData -> Maybe (HashMap Text FieldConfig)
fields :: Prelude.Maybe (Prelude.HashMap Prelude.Text FieldConfig),
    -- | Specifies whether to perform a create or update action on the form.
    UpdateFormData -> Maybe FormActionType
formActionType :: Prelude.Maybe FormActionType,
    -- | The name of the form.
    UpdateFormData -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The schema version of the form.
    UpdateFormData -> Maybe Text
schemaVersion :: Prelude.Maybe Prelude.Text,
    -- | The configuration information for the visual helper elements for the
    -- form. These elements are not associated with any data.
    UpdateFormData -> Maybe (HashMap Text SectionalElement)
sectionalElements :: Prelude.Maybe (Prelude.HashMap Prelude.Text SectionalElement),
    -- | The configuration for the form\'s style.
    UpdateFormData -> Maybe FormStyle
style :: Prelude.Maybe FormStyle
  }
  deriving (UpdateFormData -> UpdateFormData -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateFormData -> UpdateFormData -> Bool
$c/= :: UpdateFormData -> UpdateFormData -> Bool
== :: UpdateFormData -> UpdateFormData -> Bool
$c== :: UpdateFormData -> UpdateFormData -> Bool
Prelude.Eq, ReadPrec [UpdateFormData]
ReadPrec UpdateFormData
Int -> ReadS UpdateFormData
ReadS [UpdateFormData]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateFormData]
$creadListPrec :: ReadPrec [UpdateFormData]
readPrec :: ReadPrec UpdateFormData
$creadPrec :: ReadPrec UpdateFormData
readList :: ReadS [UpdateFormData]
$creadList :: ReadS [UpdateFormData]
readsPrec :: Int -> ReadS UpdateFormData
$creadsPrec :: Int -> ReadS UpdateFormData
Prelude.Read, Int -> UpdateFormData -> ShowS
[UpdateFormData] -> ShowS
UpdateFormData -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateFormData] -> ShowS
$cshowList :: [UpdateFormData] -> ShowS
show :: UpdateFormData -> String
$cshow :: UpdateFormData -> String
showsPrec :: Int -> UpdateFormData -> ShowS
$cshowsPrec :: Int -> UpdateFormData -> ShowS
Prelude.Show, forall x. Rep UpdateFormData x -> UpdateFormData
forall x. UpdateFormData -> Rep UpdateFormData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateFormData x -> UpdateFormData
$cfrom :: forall x. UpdateFormData -> Rep UpdateFormData x
Prelude.Generic)

-- |
-- Create a value of 'UpdateFormData' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'cta', 'updateFormData_cta' - The @FormCTA@ object that stores the call to action configuration for
-- the form.
--
-- 'dataType', 'updateFormData_dataType' - The type of data source to use to create the form.
--
-- 'fields', 'updateFormData_fields' - The configuration information for the form\'s fields.
--
-- 'formActionType', 'updateFormData_formActionType' - Specifies whether to perform a create or update action on the form.
--
-- 'name', 'updateFormData_name' - The name of the form.
--
-- 'schemaVersion', 'updateFormData_schemaVersion' - The schema version of the form.
--
-- 'sectionalElements', 'updateFormData_sectionalElements' - The configuration information for the visual helper elements for the
-- form. These elements are not associated with any data.
--
-- 'style', 'updateFormData_style' - The configuration for the form\'s style.
newUpdateFormData ::
  UpdateFormData
newUpdateFormData :: UpdateFormData
newUpdateFormData =
  UpdateFormData'
    { $sel:cta:UpdateFormData' :: Maybe FormCTA
cta = forall a. Maybe a
Prelude.Nothing,
      $sel:dataType:UpdateFormData' :: Maybe FormDataTypeConfig
dataType = forall a. Maybe a
Prelude.Nothing,
      $sel:fields:UpdateFormData' :: Maybe (HashMap Text FieldConfig)
fields = forall a. Maybe a
Prelude.Nothing,
      $sel:formActionType:UpdateFormData' :: Maybe FormActionType
formActionType = forall a. Maybe a
Prelude.Nothing,
      $sel:name:UpdateFormData' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:schemaVersion:UpdateFormData' :: Maybe Text
schemaVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:sectionalElements:UpdateFormData' :: Maybe (HashMap Text SectionalElement)
sectionalElements = forall a. Maybe a
Prelude.Nothing,
      $sel:style:UpdateFormData' :: Maybe FormStyle
style = forall a. Maybe a
Prelude.Nothing
    }

-- | The @FormCTA@ object that stores the call to action configuration for
-- the form.
updateFormData_cta :: Lens.Lens' UpdateFormData (Prelude.Maybe FormCTA)
updateFormData_cta :: Lens' UpdateFormData (Maybe FormCTA)
updateFormData_cta = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFormData' {Maybe FormCTA
cta :: Maybe FormCTA
$sel:cta:UpdateFormData' :: UpdateFormData -> Maybe FormCTA
cta} -> Maybe FormCTA
cta) (\s :: UpdateFormData
s@UpdateFormData' {} Maybe FormCTA
a -> UpdateFormData
s {$sel:cta:UpdateFormData' :: Maybe FormCTA
cta = Maybe FormCTA
a} :: UpdateFormData)

-- | The type of data source to use to create the form.
updateFormData_dataType :: Lens.Lens' UpdateFormData (Prelude.Maybe FormDataTypeConfig)
updateFormData_dataType :: Lens' UpdateFormData (Maybe FormDataTypeConfig)
updateFormData_dataType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFormData' {Maybe FormDataTypeConfig
dataType :: Maybe FormDataTypeConfig
$sel:dataType:UpdateFormData' :: UpdateFormData -> Maybe FormDataTypeConfig
dataType} -> Maybe FormDataTypeConfig
dataType) (\s :: UpdateFormData
s@UpdateFormData' {} Maybe FormDataTypeConfig
a -> UpdateFormData
s {$sel:dataType:UpdateFormData' :: Maybe FormDataTypeConfig
dataType = Maybe FormDataTypeConfig
a} :: UpdateFormData)

-- | The configuration information for the form\'s fields.
updateFormData_fields :: Lens.Lens' UpdateFormData (Prelude.Maybe (Prelude.HashMap Prelude.Text FieldConfig))
updateFormData_fields :: Lens' UpdateFormData (Maybe (HashMap Text FieldConfig))
updateFormData_fields = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFormData' {Maybe (HashMap Text FieldConfig)
fields :: Maybe (HashMap Text FieldConfig)
$sel:fields:UpdateFormData' :: UpdateFormData -> Maybe (HashMap Text FieldConfig)
fields} -> Maybe (HashMap Text FieldConfig)
fields) (\s :: UpdateFormData
s@UpdateFormData' {} Maybe (HashMap Text FieldConfig)
a -> UpdateFormData
s {$sel:fields:UpdateFormData' :: Maybe (HashMap Text FieldConfig)
fields = Maybe (HashMap Text FieldConfig)
a} :: UpdateFormData) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Specifies whether to perform a create or update action on the form.
updateFormData_formActionType :: Lens.Lens' UpdateFormData (Prelude.Maybe FormActionType)
updateFormData_formActionType :: Lens' UpdateFormData (Maybe FormActionType)
updateFormData_formActionType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFormData' {Maybe FormActionType
formActionType :: Maybe FormActionType
$sel:formActionType:UpdateFormData' :: UpdateFormData -> Maybe FormActionType
formActionType} -> Maybe FormActionType
formActionType) (\s :: UpdateFormData
s@UpdateFormData' {} Maybe FormActionType
a -> UpdateFormData
s {$sel:formActionType:UpdateFormData' :: Maybe FormActionType
formActionType = Maybe FormActionType
a} :: UpdateFormData)

-- | The name of the form.
updateFormData_name :: Lens.Lens' UpdateFormData (Prelude.Maybe Prelude.Text)
updateFormData_name :: Lens' UpdateFormData (Maybe Text)
updateFormData_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFormData' {Maybe Text
name :: Maybe Text
$sel:name:UpdateFormData' :: UpdateFormData -> Maybe Text
name} -> Maybe Text
name) (\s :: UpdateFormData
s@UpdateFormData' {} Maybe Text
a -> UpdateFormData
s {$sel:name:UpdateFormData' :: Maybe Text
name = Maybe Text
a} :: UpdateFormData)

-- | The schema version of the form.
updateFormData_schemaVersion :: Lens.Lens' UpdateFormData (Prelude.Maybe Prelude.Text)
updateFormData_schemaVersion :: Lens' UpdateFormData (Maybe Text)
updateFormData_schemaVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFormData' {Maybe Text
schemaVersion :: Maybe Text
$sel:schemaVersion:UpdateFormData' :: UpdateFormData -> Maybe Text
schemaVersion} -> Maybe Text
schemaVersion) (\s :: UpdateFormData
s@UpdateFormData' {} Maybe Text
a -> UpdateFormData
s {$sel:schemaVersion:UpdateFormData' :: Maybe Text
schemaVersion = Maybe Text
a} :: UpdateFormData)

-- | The configuration information for the visual helper elements for the
-- form. These elements are not associated with any data.
updateFormData_sectionalElements :: Lens.Lens' UpdateFormData (Prelude.Maybe (Prelude.HashMap Prelude.Text SectionalElement))
updateFormData_sectionalElements :: Lens' UpdateFormData (Maybe (HashMap Text SectionalElement))
updateFormData_sectionalElements = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFormData' {Maybe (HashMap Text SectionalElement)
sectionalElements :: Maybe (HashMap Text SectionalElement)
$sel:sectionalElements:UpdateFormData' :: UpdateFormData -> Maybe (HashMap Text SectionalElement)
sectionalElements} -> Maybe (HashMap Text SectionalElement)
sectionalElements) (\s :: UpdateFormData
s@UpdateFormData' {} Maybe (HashMap Text SectionalElement)
a -> UpdateFormData
s {$sel:sectionalElements:UpdateFormData' :: Maybe (HashMap Text SectionalElement)
sectionalElements = Maybe (HashMap Text SectionalElement)
a} :: UpdateFormData) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The configuration for the form\'s style.
updateFormData_style :: Lens.Lens' UpdateFormData (Prelude.Maybe FormStyle)
updateFormData_style :: Lens' UpdateFormData (Maybe FormStyle)
updateFormData_style = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateFormData' {Maybe FormStyle
style :: Maybe FormStyle
$sel:style:UpdateFormData' :: UpdateFormData -> Maybe FormStyle
style} -> Maybe FormStyle
style) (\s :: UpdateFormData
s@UpdateFormData' {} Maybe FormStyle
a -> UpdateFormData
s {$sel:style:UpdateFormData' :: Maybe FormStyle
style = Maybe FormStyle
a} :: UpdateFormData)

instance Prelude.Hashable UpdateFormData where
  hashWithSalt :: Int -> UpdateFormData -> Int
hashWithSalt Int
_salt UpdateFormData' {Maybe Text
Maybe (HashMap Text SectionalElement)
Maybe (HashMap Text FieldConfig)
Maybe FormActionType
Maybe FormCTA
Maybe FormDataTypeConfig
Maybe FormStyle
style :: Maybe FormStyle
sectionalElements :: Maybe (HashMap Text SectionalElement)
schemaVersion :: Maybe Text
name :: Maybe Text
formActionType :: Maybe FormActionType
fields :: Maybe (HashMap Text FieldConfig)
dataType :: Maybe FormDataTypeConfig
cta :: Maybe FormCTA
$sel:style:UpdateFormData' :: UpdateFormData -> Maybe FormStyle
$sel:sectionalElements:UpdateFormData' :: UpdateFormData -> Maybe (HashMap Text SectionalElement)
$sel:schemaVersion:UpdateFormData' :: UpdateFormData -> Maybe Text
$sel:name:UpdateFormData' :: UpdateFormData -> Maybe Text
$sel:formActionType:UpdateFormData' :: UpdateFormData -> Maybe FormActionType
$sel:fields:UpdateFormData' :: UpdateFormData -> Maybe (HashMap Text FieldConfig)
$sel:dataType:UpdateFormData' :: UpdateFormData -> Maybe FormDataTypeConfig
$sel:cta:UpdateFormData' :: UpdateFormData -> Maybe FormCTA
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe FormCTA
cta
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe FormDataTypeConfig
dataType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text FieldConfig)
fields
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe FormActionType
formActionType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
schemaVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text SectionalElement)
sectionalElements
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe FormStyle
style

instance Prelude.NFData UpdateFormData where
  rnf :: UpdateFormData -> ()
rnf UpdateFormData' {Maybe Text
Maybe (HashMap Text SectionalElement)
Maybe (HashMap Text FieldConfig)
Maybe FormActionType
Maybe FormCTA
Maybe FormDataTypeConfig
Maybe FormStyle
style :: Maybe FormStyle
sectionalElements :: Maybe (HashMap Text SectionalElement)
schemaVersion :: Maybe Text
name :: Maybe Text
formActionType :: Maybe FormActionType
fields :: Maybe (HashMap Text FieldConfig)
dataType :: Maybe FormDataTypeConfig
cta :: Maybe FormCTA
$sel:style:UpdateFormData' :: UpdateFormData -> Maybe FormStyle
$sel:sectionalElements:UpdateFormData' :: UpdateFormData -> Maybe (HashMap Text SectionalElement)
$sel:schemaVersion:UpdateFormData' :: UpdateFormData -> Maybe Text
$sel:name:UpdateFormData' :: UpdateFormData -> Maybe Text
$sel:formActionType:UpdateFormData' :: UpdateFormData -> Maybe FormActionType
$sel:fields:UpdateFormData' :: UpdateFormData -> Maybe (HashMap Text FieldConfig)
$sel:dataType:UpdateFormData' :: UpdateFormData -> Maybe FormDataTypeConfig
$sel:cta:UpdateFormData' :: UpdateFormData -> Maybe FormCTA
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe FormCTA
cta
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe FormDataTypeConfig
dataType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text FieldConfig)
fields
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe FormActionType
formActionType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
schemaVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text SectionalElement)
sectionalElements
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe FormStyle
style

instance Data.ToJSON UpdateFormData where
  toJSON :: UpdateFormData -> Value
toJSON UpdateFormData' {Maybe Text
Maybe (HashMap Text SectionalElement)
Maybe (HashMap Text FieldConfig)
Maybe FormActionType
Maybe FormCTA
Maybe FormDataTypeConfig
Maybe FormStyle
style :: Maybe FormStyle
sectionalElements :: Maybe (HashMap Text SectionalElement)
schemaVersion :: Maybe Text
name :: Maybe Text
formActionType :: Maybe FormActionType
fields :: Maybe (HashMap Text FieldConfig)
dataType :: Maybe FormDataTypeConfig
cta :: Maybe FormCTA
$sel:style:UpdateFormData' :: UpdateFormData -> Maybe FormStyle
$sel:sectionalElements:UpdateFormData' :: UpdateFormData -> Maybe (HashMap Text SectionalElement)
$sel:schemaVersion:UpdateFormData' :: UpdateFormData -> Maybe Text
$sel:name:UpdateFormData' :: UpdateFormData -> Maybe Text
$sel:formActionType:UpdateFormData' :: UpdateFormData -> Maybe FormActionType
$sel:fields:UpdateFormData' :: UpdateFormData -> Maybe (HashMap Text FieldConfig)
$sel:dataType:UpdateFormData' :: UpdateFormData -> Maybe FormDataTypeConfig
$sel:cta:UpdateFormData' :: UpdateFormData -> Maybe FormCTA
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"cta" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe FormCTA
cta,
            (Key
"dataType" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe FormDataTypeConfig
dataType,
            (Key
"fields" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (HashMap Text FieldConfig)
fields,
            (Key
"formActionType" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe FormActionType
formActionType,
            (Key
"name" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
name,
            (Key
"schemaVersion" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
schemaVersion,
            (Key
"sectionalElements" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (HashMap Text SectionalElement)
sectionalElements,
            (Key
"style" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe FormStyle
style
          ]
      )