Show / Hide Table of Contents

Class Widget

Each card is made up of widgets.

A widget is a composite object that can represent one of text, images, buttons, and other object types.

Inheritance
object
Widget
Implements
IMessage<Widget>
IEquatable<Widget>
IDeepCloneable<Widget>
IBufferMessage
IMessage
Inherited Members
object.GetHashCode()
object.GetType()
object.ToString()
Namespace: Google.Apps.Card.V1
Assembly: Google.Apps.Card.V1.dll
Syntax
public sealed class Widget : IMessage<Widget>, IEquatable<Widget>, IDeepCloneable<Widget>, IBufferMessage, IMessage

Constructors

Widget()

Declaration
public Widget()

Widget(Widget)

Declaration
public Widget(Widget other)
Parameters
Type Name Description
Widget other

Properties

ButtonList

A list of buttons.

For example, the following JSON creates two buttons. The first is a blue text button and the second is an image button that opens a link:

"buttonList": {
  "buttons": [
    {
      "text": "Edit",
      "color": {
        "red": 0,
        "green": 0,
        "blue": 1,
      },
      "disabled": true,
    },
    {
      "icon": {
        "knownIcon": "INVITE",
        "altText": "check calendar"
      },
      "onClick": {
        "openLink": {
          "url": "https://example.com/calendar"
        }
      }
    }
  ]
}
Declaration
public ButtonList ButtonList { get; set; }
Property Value
Type Description
ButtonList

Carousel

A carousel contains a collection of nested widgets. For example, this is a JSON representation of a carousel that contains two text paragraphs.

{
  "widgets": [
    {
      "textParagraph": {
        "text": "First text paragraph in the carousel."
      }
    },
    {
      "textParagraph": {
        "text": "Second text paragraph in the carousel."
      }
    }
  ]
}
Declaration
public Carousel Carousel { get; set; }
Property Value
Type Description
Carousel

ChipList

A list of chips.

For example, the following JSON creates two chips. The first is a text chip and the second is an icon chip that opens a link:

"chipList": {
  "chips": [
    {
      "text": "Edit",
      "disabled": true,
    },
    {
      "icon": {
        "knownIcon": "INVITE",
        "altText": "check calendar"
      },
      "onClick": {
        "openLink": {
          "url": "https://example.com/calendar"
        }
      }
    }
  ]
}
Declaration
public ChipList ChipList { get; set; }
Property Value
Type Description
ChipList

Columns

Displays up to 2 columns.

To include more than 2 columns, or to use rows, use the Grid widget.

For example, the following JSON creates 2 columns that each contain text paragraphs:

"columns": {
  "columnItems": [
    {
      "horizontalSizeStyle": "FILL_AVAILABLE_SPACE",
      "horizontalAlignment": "CENTER",
      "verticalAlignment": "CENTER",
      "widgets": [
        {
          "textParagraph": {
            "text": "First column text paragraph"
          }
        }
      ]
    },
    {
      "horizontalSizeStyle": "FILL_AVAILABLE_SPACE",
      "horizontalAlignment": "CENTER",
      "verticalAlignment": "CENTER",
      "widgets": [
        {
          "textParagraph": {
            "text": "Second column text paragraph"
          }
        }
      ]
    }
  ]
}
Declaration
public Columns Columns { get; set; }
Property Value
Type Description
Columns

DataCase

Declaration
public Widget.DataOneofCase DataCase { get; }
Property Value
Type Description
Widget.DataOneofCase

DateTimePicker

Displays a widget that lets users input a date, time, or date and time.

For example, the following JSON creates a date time picker to schedule an appointment:

"dateTimePicker": {
  "name": "appointment_time",
  "label": "Book your appointment at:",
  "type": "DATE_AND_TIME",
  "valueMsEpoch": 796435200000
}
Declaration
public DateTimePicker DateTimePicker { get; set; }
Property Value
Type Description
DateTimePicker

DecoratedText

Displays a decorated text item.

For example, the following JSON creates a decorated text widget showing email address:

"decoratedText": {
  "icon": {
    "knownIcon": "EMAIL"
  },
  "topLabel": "Email Address",
  "text": "sasha@example.com",
  "bottomLabel": "This is a new Email address!",
  "switchControl": {
    "name": "has_send_welcome_email_to_sasha",
    "selected": false,
    "controlType": "CHECKBOX"
  }
}
Declaration
public DecoratedText DecoratedText { get; set; }
Property Value
Type Description
DecoratedText

Divider

Displays a horizontal line divider between widgets.

For example, the following JSON creates a divider:

"divider": {
}
Declaration
public Divider Divider { get; set; }
Property Value
Type Description
Divider

Grid

Displays a grid with a collection of items.

A grid supports any number of columns and items. The number of rows is determined by the upper bounds of the number items divided by the number of columns. A grid with 10 items and 2 columns has 5 rows. A grid with 11 items and 2 columns has 6 rows.

Google Workspace add-ons and Chat apps:

For example, the following JSON creates a 2 column grid with a single item:

"grid": {
  "title": "A fine collection of items",
  "columnCount": 2,
  "borderStyle": {
    "type": "STROKE",
    "cornerRadius": 4
  },
  "items": [
    {
      "image": {
        "imageUri": "https://www.example.com/image.png",
        "cropStyle": {
          "type": "SQUARE"
        },
        "borderStyle": {
          "type": "STROKE"
        }
      },
      "title": "An item",
      "textAlignment": "CENTER"
    }
  ],
  "onClick": {
    "openLink": {
      "url": "https://www.example.com"
    }
  }
}
Declaration
public Grid Grid { get; set; }
Property Value
Type Description
Grid

HorizontalAlignment

Specifies whether widgets align to the left, right, or center of a column.

Declaration
public Widget.Types.HorizontalAlignment HorizontalAlignment { get; set; }
Property Value
Type Description
Widget.Types.HorizontalAlignment

Image

Displays an image.

For example, the following JSON creates an image with alternative text:

"image": {
  "imageUrl":
  "https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png",
  "altText": "Chat app avatar"
}
Declaration
public Image Image { get; set; }
Property Value
Type Description
Image

SelectionInput

Displays a selection control that lets users select items. Selection controls can be checkboxes, radio buttons, switches, or dropdown menus.

For example, the following JSON creates a dropdown menu that lets users choose a size:

"selectionInput": {
  "name": "size",
  "label": "Size"
  "type": "DROPDOWN",
  "items": [
    {
      "text": "S",
      "value": "small",
      "selected": false
    },
    {
      "text": "M",
      "value": "medium",
      "selected": true
    },
    {
      "text": "L",
      "value": "large",
      "selected": false
    },
    {
      "text": "XL",
      "value": "extra_large",
      "selected": false
    }
  ]
}
Declaration
public SelectionInput SelectionInput { get; set; }
Property Value
Type Description
SelectionInput

TextInput

Displays a text box that users can type into.

For example, the following JSON creates a text input for an email address:

"textInput": {
  "name": "mailing_address",
  "label": "Mailing Address"
}

As another example, the following JSON creates a text input for a programming language with static suggestions:

"textInput": {
  "name": "preferred_programing_language",
  "label": "Preferred Language",
  "initialSuggestions": {
    "items": [
      {
        "text": "C++"
      },
      {
        "text": "Java"
      },
      {
        "text": "JavaScript"
      },
      {
        "text": "Python"
      }
    ]
  }
}
Declaration
public TextInput TextInput { get; set; }
Property Value
Type Description
TextInput

TextParagraph

Displays a text paragraph. Supports simple HTML formatted text. For more information about formatting text, see Formatting text in Google Chat apps and Formatting text in Google Workspace add-ons.

For example, the following JSON creates a bolded text:

"textParagraph": {
  "text": "  <b>bold text</b>"
}
Declaration
public TextParagraph TextParagraph { get; set; }
Property Value
Type Description
TextParagraph
In this article
Back to top Generated by DocFX