Create a table
To create a table, drag-and-drop the Table component from the components browser in the sidekick on the adaptive form. By default, the table contains two columns and three rows, including the header row.
About header and body cells
The header cells are text fields. To change the label for a header, right-click the header cell and click Edit. In the Edit dialog, update the label in the Value field and click OK.
The body cells are text boxes, by default. You can replace a body cell with any other adaptive forms component available in the sidekick, such as a numeric box, date picker, or drop-down list.
For example, the first body row in the following table includes text box, date picker, and drop-down list components as cells.
You can merge two or more body cells by selecting the cells you want to merge, right-click, and select Merge. Also, you can split a merged cell by right-clicking it and selecting Split Cells.
Add, delete, move rows and columns
You can add and delete a row or column, and move a row up and down in a table.
Add, delete, or move a row
To add, delete, or move the row, click any cell of the row. open the content browser
-
The Move Up and Move Down operation moves the selected row up and down.
-
The Add Column operation adds a row below of the selected row.
-
The Delete Column operation deletes the selected row.
Double-click the row to configure properties of a row, such as Name, Bind Reference, Repeat Settings, CSS Class.
Add or delete a column
To add or delete a column, click the text cell in the header section, a toolbar opens with the options to add or delete a column:
Add table description
You can add a description of the table to explain how the information is organized that screen readers can interpret and read out. To add the description:
- Select the table and select
- Specify summary in the Accessibility tab.
- Click Done.
Sort columns in a table
You can sort data based on any column in a table in the adaptive form. The values in the column can be sorted in an ascending or descending order.
Sorting can be applied to table columns containing:
- Static text
- Data model object properties
- Combination of static text and data model object properties
To apply sorting on table columns, the table column cells must contain any of the following components: Numeric Box, Numeric Stepper, Date Input Field, Date Picker, Text, or Text Box.
To enable sorting:
-
Select the table and select
-
Select Enable Sorting.
-
Select
-
Switch to the Preview mode to view the output. The table is automatically sorted based on the first column of the table.
-
Click the column header to sort the values based on the column.
A column header with an up arrow represents that the table is sorted based on that column. In addition, the values in the column are displayed in the ascending order.
Similarly, a column header with a down arrow represents that the values in the column are displayed in the descending order.
You can also make changes in the table in the Preview mode and click the column header again to sort the column values.
Set column width for a table
Execute the following steps to set column width for a table:
- In the Content tab, select the Table component and select the Configure (
1.Enter the comma-separated list of values in the Column Width field to specify the proportionate width of each column in the table. For example, for a table that includes 3 columns, specifying 2,4,6 as the value in the Column Width field results in setting the width of columns as 2/12 for first column, 4/12 for second column, and 6/12 for third column. 2/12 as the width for the first column refers to one-sixth of the table width. Similarly, 4/12 sets the second column width as one-third of the table width and 6/12 sets the third column width as half of the table width.
Configure table style
You can define the style for a table by using the Style mode in the page toolbar. Perform the following steps to switch to style mode and edit the table styling
-
In the page toolbar, before Preview, select
-
In the sidebar select table and select the edit button
You can see the styling properties in the sidebar.
Add or delete a row dynamically
Tables provide out-of-the box support for dynamically adding or deleting rows at runtime.
- Select a table row and select
- In the Repeat settings tab, specify the minimum and maximum counts to limit the number of rows in the table.
- Click Done.
At runtime or preview, you see + and
Expressions in a table
Tables in adaptive forms allow you to write expressions in JavaScript to induce behaviors, such as show or hide a table or a row, add up all the numbers and show the total in a cell, enable or disable a cell, validate user input, and so on. These expressions use adaptive forms scripting model APIs.
While tables and rows support only visibility expressions to control their visibility based on the value returned by an expression, cells support the following expressions:
- Initialization Script: to perform an action on initialization of a field.
- Value Commit Script: to change the components of a form after the value of a field is changed.
- Calculate expressions: to auto-compute value of a field.
- Validation expressions: to validate a field.
- Access expressions: to enable/disable a field.
- Visibility expression: to control visibility of a field and panel.
The visibility expression for a table or a row can be defined in the Panel properties tab of their corresponding Edit component dialog. The expressions for a cell can be defined in the Script tab of its Edit component dialog.
For the complete list of adaptive forms classes, events, objects, and public APIs, see JavaScript Library API reference for adaptive forms.
Mobile layouts
Tables in adaptive forms provide unmatched experience mobile devices because of its fluid and responsive layouts. AEM Forms offers two types of mobile layouts for tables - Headers on left and Collapsible columns.
You can configure a mobile layout for a table from the Styling tab of the Edit component dialog for a table.
Headers on left
In the Headers on left layout, the header in the table are transposed on the left with only one cell appearing against a header. Each row in this layout appears as a distinct section. The following images compare a table on a desktop with that on a mobile device.
Desktop view of a table with Header on left layout
Mobile view of a table with Header on left layout
Collapsible columns layout
In the Collapsible column layout, the columns in the table collapse to show one or two columns, depending on the device size, while other columns are collapsed. You can click the collapse/expand icon to view other columns in the table.
The following images compare how a table looks on a device with collapsed and expanded columns.
Collapsed columns of a table with only two columns showing up on a mobile device
Expanded column of a table on a mobile device
Merge data in a table
Tables in adaptive forms allow you to populate the table at runtime using data from an XML file. The data XML file can reside in the local file system of the machine where AEM Forms server is running or in the CRX repository.
Let’s take example of the following bank transaction summary table that we want to populate with data from an XML file.
In this example, the Element name property for:
- the row is Row1
- the body cell under Transaction date is tableItem1
- the body cell under Description is tableItem2
- the body cell under Transaction type is type
- the body cell under Amount in USD is tableItem3
The XML file that contains data in the following format:
<?xml version="1.0" encoding="UTF-8"?><afData>
<afUnboundData>
<data>
<typeSelect>0</typeSelect>
<Row1>
<tableItem1>2015-01-08</tableItem1>
<tableItem2>Purchase laptop</tableItem2>
<type>0</type>
<tableItem3>12000</tableItem3>
</Row1>
<Row1>
<tableItem1>2015-01-05</tableItem1>
<tableItem2>Transport expense</tableItem2>
<type>0</type>
<tableItem3>120</tableItem3>
</Row1>
<Row1>
<tableItem1>2014-01-08</tableItem1>
<tableItem2>Laser printer</tableItem2>
<type>0</type>
<tableItem3>500</tableItem3>
</Row1>
<Row1>
<tableItem1>2014-12-08</tableItem1>
<tableItem2>Credit card payment</tableItem2>
<type>0</type>
<tableItem3>300</tableItem3>
</Row1>
<Row1>
<tableItem1>2015-01-06</tableItem1>
<tableItem2>Interest earnings</tableItem2>
<type>1</type>
<tableItem3>12000</tableItem3>
</Row1>
<Row1>
<tableItem1>2015-01-05</tableItem1>
<tableItem2>Payment from a client</tableItem2>
<type>1</type>
<tableItem3>500</tableItem3>
</Row1>
<Row1>
<tableItem1>2015-01-08</tableItem1>
<tableItem2>Food expense</tableItem2>
<type>0</type>
<tableItem3>120</tableItem3>
</Row1>
</data>
</afUnboundData>
<afBoundData>
<data/>
</afBoundData>
<afBoundData/>
</afData>
In the sample XML, the data for a row is defined by the <Row1>
tags, which is the element name for the row in the table. Within the <Row1>
tag, the data for each cell is defined within the tag for its element name, such as <tableItem1>
, <tableItem2>
, <tableItem3>
, and <type>
.
To merge this data with the table at runtime, we need to point the adaptive form containing the table to the absolute XML location with wcmmode disabled. For example, if the adaptive form is at https://localhost:4502/myForms/bankTransaction.html and the data XML file is saved at C:/myTransactions/bankSummary.xml, you can view the table with data at the following URL:
https://localhost:4502/myForms/bankTransaction.html?dataRef=file:/// C:/myTransactions/bankSummary.xml&wcmmode=disabled
Use XDP components and XSD complex types
If you created an adaptive form based on an XFA form template, the XFA elements are available in the Data Model tab of AEM Content Finder. You can drag and drop these XFA elements, including tables, in the adaptive form.
The XFA table element is mapped to the Table component and works out-of-the-box in adaptive forms. All properties and functionalities of XDP table are preserved when moved into adaptive form, and you can perform any operation on it just as you do with native adaptive form table. For example, if a row in an XDP table is marked repeatable, it is repeated when dropped in adaptive forms as well.
In addition, you can drag-drop XDP subform to add a new row in the table. However, note that dropping a nested subform does not work.
In addition, you can drag-drop a group of XSD complex type elements to create a table row. A new row gets created just below the row on which you dropped the elements. The cells created using the XSD complex type elements maintain a binding reference to the XSD. You can also replace a body cell with an XSD complex type element by dropping the element onto the cell.