Skip to content

Commit 4320158

Browse files
committed
feat(block-kit): add examples of released blocks
1 parent ea1c3f8 commit 4320158

21 files changed

Lines changed: 1427 additions & 1 deletion

block-kit/README.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,13 @@ Read the [docs](https://docs.slack.dev/block-kit/) to learn concepts behind thes
99
### Blocks
1010

1111
- **[Actions block](https://docs.slack.dev/reference/block-kit/blocks/actions-block)**: Holds multiple interactive elements. [Implementation](./src/main/java/blocks/Actions.java).
12-
12+
- **[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).
13+
- **[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).
14+
- **[File](https://docs.slack.dev/reference/block-kit/blocks/file-block)**: Displays info about remote files. [Implementation](./src/main/java/blocks/File.java).
15+
- **[Header](https://docs.slack.dev/reference/block-kit/blocks/header-block)**: Displays a larger-sized text. [Implementation](./src/main/java/blocks/Header.java).
16+
- **[Image](https://docs.slack.dev/reference/block-kit/blocks/image-block)**: Displays an image. [Implementation](./src/main/java/blocks/Image.java).
17+
- **[Input](https://docs.slack.dev/reference/block-kit/blocks/input-block)**: Collects information from users via elements. [Implementation](./src/main/java/blocks/Input.java).
18+
- **[Markdown](https://docs.slack.dev/reference/block-kit/blocks/markdown-block)**: Displays formatted markdown. [Implementation](./src/main/java/blocks/Markdown.java).
19+
- **[Rich text](https://docs.slack.dev/reference/block-kit/blocks/rich-text-block)**: Displays formatted, structured representation of text. [Implementation](./src/main/java/blocks/RichText.java).
20+
- **[Section](https://docs.slack.dev/reference/block-kit/blocks/section-block)**: Displays text, possibly alongside elements. [Implementation](./src/main/java/blocks/Section.java).
21+
- **[Video](https://docs.slack.dev/reference/block-kit/blocks/video-block)**: Displays an embedded video player. [Implementation](./src/main/java/blocks/Video.java).
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package blocks;
2+
3+
import com.slack.api.model.block.Blocks;
4+
import com.slack.api.model.block.ContextBlock;
5+
import com.slack.api.model.block.composition.BlockCompositions;
6+
import com.slack.api.model.block.element.BlockElements;
7+
import java.util.List;
8+
9+
/**
10+
* Provides contextual info, which can include both images and text.
11+
* {@link https://docs.slack.dev/reference/block-kit/blocks/context-block/}
12+
*/
13+
public class Context {
14+
/**
15+
* A context block with an image and text.
16+
*/
17+
public static ContextBlock example01() {
18+
ContextBlock block = Blocks.context(c -> c.elements(List.of(
19+
BlockElements.image(i -> i.imageUrl("https://image.freepik.com/free-photo/red-drawing-pin_1156-445.jpg")
20+
.altText("images")),
21+
BlockCompositions.markdownText("Location: **Dogpatch**"))));
22+
return block;
23+
}
24+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package blocks;
2+
3+
import com.slack.api.model.block.Blocks;
4+
import com.slack.api.model.block.DividerBlock;
5+
6+
/**
7+
* Visually separates pieces of info inside of a message.
8+
* {@link https://docs.slack.dev/reference/block-kit/blocks/divider-block/}
9+
*/
10+
public class Divider {
11+
/**
12+
* A simple divider block.
13+
*/
14+
public static DividerBlock example01() {
15+
DividerBlock block = Blocks.divider();
16+
return block;
17+
}
18+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package blocks;
2+
3+
import com.slack.api.model.block.Blocks;
4+
import com.slack.api.model.block.FileBlock;
5+
6+
/**
7+
* Displays info about remote files.
8+
* {@link https://docs.slack.dev/reference/block-kit/blocks/file-block/}
9+
*/
10+
public class File {
11+
/**
12+
* A file block for a remote file.
13+
*/
14+
public static FileBlock example01() {
15+
FileBlock block = Blocks.file(f -> f.externalId("ABCD1").source("remote"));
16+
return block;
17+
}
18+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package blocks;
2+
3+
import com.slack.api.model.block.Blocks;
4+
import com.slack.api.model.block.HeaderBlock;
5+
import com.slack.api.model.block.composition.BlockCompositions;
6+
7+
/**
8+
* Displays a larger-sized text.
9+
* {@link https://docs.slack.dev/reference/block-kit/blocks/header-block/}
10+
*/
11+
public class Header {
12+
/**
13+
* A simple header block.
14+
*/
15+
public static HeaderBlock example01() {
16+
HeaderBlock block = Blocks.header(h -> h.text(BlockCompositions.plainText("A Heartfelt Header")));
17+
return block;
18+
}
19+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package blocks;
2+
3+
import com.slack.api.model.block.Blocks;
4+
import com.slack.api.model.block.ImageBlock;
5+
import com.slack.api.model.block.composition.BlockCompositions;
6+
import com.slack.api.model.block.composition.SlackFileObject;
7+
8+
/**
9+
* Displays an image.
10+
* {@link https://docs.slack.dev/reference/block-kit/blocks/image-block/}
11+
*/
12+
public class Image {
13+
/**
14+
* An image block using image_url.
15+
*/
16+
public static ImageBlock example01() {
17+
ImageBlock block = Blocks.image(i -> i.title(BlockCompositions.plainText("Please enjoy this photo of a kitten"))
18+
.blockId("image4")
19+
.imageUrl("http://placekitten.com/500/500")
20+
.altText("An incredibly cute kitten."));
21+
return block;
22+
}
23+
24+
/**
25+
* An image block using slack_file with a url.
26+
*/
27+
public static ImageBlock example02() {
28+
ImageBlock block = Blocks.image(i -> i.title(BlockCompositions.plainText("Please enjoy this photo of a kitten"))
29+
.blockId("image4")
30+
.slackFile(SlackFileObject.builder()
31+
.url("https://files.slack.com/files-pri/T0123456-F0123456/xyz.png")
32+
.build())
33+
.altText("An incredibly cute kitten."));
34+
return block;
35+
}
36+
37+
/**
38+
* An image block using slack_file with an id.
39+
*/
40+
public static ImageBlock example03() {
41+
ImageBlock block = Blocks.image(i -> i.title(BlockCompositions.plainText("Please enjoy this photo of a kitten"))
42+
.blockId("image4")
43+
.slackFile(SlackFileObject.builder().id("F0123456").build())
44+
.altText("An incredibly cute kitten."));
45+
return block;
46+
}
47+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package blocks;
2+
3+
import com.slack.api.model.block.Blocks;
4+
import com.slack.api.model.block.InputBlock;
5+
import com.slack.api.model.block.composition.BlockCompositions;
6+
import com.slack.api.model.block.element.BlockElements;
7+
8+
/**
9+
* Collects information from users via elements.
10+
* {@link https://docs.slack.dev/reference/block-kit/blocks/input-block/}
11+
*/
12+
public class Input {
13+
/**
14+
* An input block containing a plain-text input element.
15+
*/
16+
public static InputBlock example01() {
17+
InputBlock block = Blocks.input(i -> i.element(BlockElements.plainTextInput(pt -> pt))
18+
.label(BlockCompositions.plainText(pt -> pt.text("Label").emoji(true))));
19+
return block;
20+
}
21+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package blocks;
2+
3+
import com.slack.api.model.block.Blocks;
4+
import com.slack.api.model.block.MarkdownBlock;
5+
6+
/**
7+
* Displays formatted markdown.
8+
* {@link https://docs.slack.dev/reference/block-kit/blocks/markdown-block/}
9+
*/
10+
public class Markdown {
11+
/**
12+
* A markdown block.
13+
*/
14+
public static MarkdownBlock example01() {
15+
MarkdownBlock block = Blocks.markdown(m -> m.text("**Lots of information here!!**"));
16+
return block;
17+
}
18+
}

0 commit comments

Comments
 (0)