Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions block-kit/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ Read the [docs](https://docs.slack.dev/block-kit/) to learn concepts behind thes
- **[Carousel](https://docs.slack.dev/reference/block-kit/blocks/carousel-block)**: Displays related card blocks in a horizontally-scrolling container. [Implementation](./src/main/java/blocks/Carousel.java).
- **[Card](https://docs.slack.dev/reference/block-kit/blocks/card-block)**: Displays content in a card. [Implementation](./src/main/java/blocks/Card.java).
- **[Context](https://docs.slack.dev/reference/block-kit/blocks/context-block)**: Provides contextual info, which can include both images and text. [Implementation](./src/main/java/blocks/Context.java).
- **[Data table](https://docs.slack.dev/reference/block-kit/blocks/data-table-block)**: Displays rich tables that support pagination, sorting, filtering, and interactivity. [Implementation](./src/main/java/blocks/DataTable.java).
- **[Divider](https://docs.slack.dev/reference/block-kit/blocks/divider-block)**: Visually separates pieces of info inside of a message. [Implementation](./src/main/java/blocks/Divider.java).
- **[File](https://docs.slack.dev/reference/block-kit/blocks/file-block)**: Displays info about remote files. [Implementation](./src/main/java/blocks/File.java).
- **[Header](https://docs.slack.dev/reference/block-kit/blocks/header-block)**: Displays a larger-sized text. [Implementation](./src/main/java/blocks/Header.java).
Expand Down
65 changes: 65 additions & 0 deletions block-kit/src/main/java/blocks/DataTable.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package blocks;

import com.slack.api.model.block.Blocks;
import com.slack.api.model.block.DataTableBlock;

Check failure on line 4 in block-kit/src/main/java/blocks/DataTable.java

View workflow job for this annotation

GitHub Actions / maven@java17 (block-kit)

cannot find symbol
import com.slack.api.model.block.composition.BlockCompositions;
import com.slack.api.model.block.element.RichTextSectionElement;
import com.slack.api.model.block.element.RichTextSectionElement.TextStyle;
import java.util.List;

/**
* Displays rich tables that support pagination, sorting, filtering, and interactivity.
* {@link https://docs.slack.dev/reference/block-kit/blocks/data-table-block/}
*/
public class DataTable {
/**
* A sample data table block.
*/
public static DataTableBlock example01() {

Check failure on line 18 in block-kit/src/main/java/blocks/DataTable.java

View workflow job for this annotation

GitHub Actions / maven@java17 (block-kit)

cannot find symbol
DataTableBlock block = Blocks.dataTable(t -> t.caption("A Fabulous Table")

Check failure on line 19 in block-kit/src/main/java/blocks/DataTable.java

View workflow job for this annotation

GitHub Actions / maven@java17 (block-kit)

cannot find symbol

Check failure on line 19 in block-kit/src/main/java/blocks/DataTable.java

View workflow job for this annotation

GitHub Actions / maven@java17 (block-kit)

cannot find symbol
.rows(List.of(
List.of(
BlockCompositions.rawText("Name"),

Check failure on line 22 in block-kit/src/main/java/blocks/DataTable.java

View workflow job for this annotation

GitHub Actions / maven@java17 (block-kit)

cannot find symbol
BlockCompositions.rawText("Department"),

Check failure on line 23 in block-kit/src/main/java/blocks/DataTable.java

View workflow job for this annotation

GitHub Actions / maven@java17 (block-kit)

cannot find symbol
BlockCompositions.rawText("Badge")),

Check failure on line 24 in block-kit/src/main/java/blocks/DataTable.java

View workflow job for this annotation

GitHub Actions / maven@java17 (block-kit)

cannot find symbol
List.of(
BlockCompositions.rawText("Data Refinement Department"),

Check failure on line 26 in block-kit/src/main/java/blocks/DataTable.java

View workflow job for this annotation

GitHub Actions / maven@java17 (block-kit)

cannot find symbol
BlockCompositions.rawText("MDR"),

Check failure on line 27 in block-kit/src/main/java/blocks/DataTable.java

View workflow job for this annotation

GitHub Actions / maven@java17 (block-kit)

cannot find symbol
Blocks.richText(rt -> rt.elements(List.of(RichTextSectionElement.builder()
.elements(List.of(RichTextSectionElement.Text.builder()
.text("Blue")
.style(TextStyle.builder()
.bold(true)
.build())
.build()))
.build())))),
List.of(
BlockCompositions.rawText("Art Sourcing Department"),

Check failure on line 37 in block-kit/src/main/java/blocks/DataTable.java

View workflow job for this annotation

GitHub Actions / maven@java17 (block-kit)

cannot find symbol
BlockCompositions.rawText("O&D"),
Blocks.richText(rt -> rt.elements(List.of(RichTextSectionElement.builder()
.elements(List.of(
RichTextSectionElement.Text.builder()
.text("Green")
.build(),
RichTextSectionElement.Text.builder()
.text("review")
.style(
TextStyle.builder()
.italic(true)
.build())
.build()))
.build())))),
List.of(
BlockCompositions.rawText("Wellness Department"),
BlockCompositions.rawText("Wellness Center"),
Blocks.richText(rt -> rt.elements(List.of(RichTextSectionElement.builder()
.elements(List.of(RichTextSectionElement.Text.builder()
.text("Limited")
.style(TextStyle.builder()
.bold(true)
.build())
.build()))
.build())))))));
return block;
}
}
145 changes: 145 additions & 0 deletions block-kit/src/test/java/blocks/DataTableTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
package blocks;

import static org.junit.jupiter.api.Assertions.assertEquals;

import com.google.gson.JsonParser;
import com.slack.api.model.block.DataTableBlock;
import com.slack.api.util.json.GsonFactory;
import org.junit.jupiter.api.Test;

public class DataTableTest {
@Test
public void testExample01() {
DataTableBlock block = DataTable.example01();
String actual = GsonFactory.createSnakeCase().toJson(block);
String expected = """
{
"type": "data_table",
"caption": "A Fabulous Table",
"rows": [
[
{
"type": "raw_text",
"text": "Name"
},
{
"type": "raw_text",
"text": "Department"
},
{
"type": "raw_text",
"text": "Badge"
}
],
[
{
"type": "raw_text",
"text": "Data Refinement Department"
},
{
"type": "raw_text",
"text": "MDR"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "Blue",
"style": {
"bold": true,
"italic": false,
"strike": false,
"highlight": false,
"client_highlight": false,
"underline": false,
"unlink": false,
"code": false
}
}
]
}
]
}
],
[
{
"type": "raw_text",
"text": "Art Sourcing Department"
},
{
"type": "raw_text",
"text": "O&D"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "Green"
},
{
"type": "text",
"text": "review",
"style": {
"bold": false,
"italic": true,
"strike": false,
"highlight": false,
"client_highlight": false,
"underline": false,
"unlink": false,
"code": false
}
}
]
}
]
}
],
[
{
"type": "raw_text",
"text": "Wellness Department"
},
{
"type": "raw_text",
"text": "Wellness Center"
},
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "Limited",
"style": {
"bold": true,
"italic": false,
"strike": false,
"highlight": false,
"client_highlight": false,
"underline": false,
"unlink": false,
"code": false
}
}
]
}
]
}
]
]
}
""";
assertEquals(JsonParser.parseString(expected), JsonParser.parseString(actual));
}
}