Skip to content
Merged
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
10 changes: 10 additions & 0 deletions block-kit/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,14 @@ Read the [docs](https://docs.slack.dev/block-kit/) to learn concepts behind thes
### Blocks

- **[Actions block](https://docs.slack.dev/reference/block-kit/blocks/actions-block)**: Holds multiple interactive elements. [Implementation](./src/main/java/blocks/Actions.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).
- **[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).
- **[Image](https://docs.slack.dev/reference/block-kit/blocks/image-block)**: Displays an image. [Implementation](./src/main/java/blocks/Image.java).
- **[Input](https://docs.slack.dev/reference/block-kit/blocks/input-block)**: Collects information from users via elements. [Implementation](./src/main/java/blocks/Input.java).
- **[Markdown](https://docs.slack.dev/reference/block-kit/blocks/markdown-block)**: Displays formatted markdown. [Implementation](./src/main/java/blocks/Markdown.java).
- **[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).
- **[Section](https://docs.slack.dev/reference/block-kit/blocks/section-block)**: Displays text, possibly alongside elements. [Implementation](./src/main/java/blocks/Section.java).
- **[Video](https://docs.slack.dev/reference/block-kit/blocks/video-block)**: Displays an embedded video player. [Implementation](./src/main/java/blocks/Video.java).

24 changes: 24 additions & 0 deletions block-kit/src/main/java/blocks/Context.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package blocks;

import com.slack.api.model.block.Blocks;
import com.slack.api.model.block.ContextBlock;
import com.slack.api.model.block.composition.BlockCompositions;
import com.slack.api.model.block.element.BlockElements;
import java.util.List;

/**
* Provides contextual info, which can include both images and text.
* {@link https://docs.slack.dev/reference/block-kit/blocks/context-block/}
*/
public class Context {
/**
* A context block with an image and text.
*/
public static ContextBlock example01() {
ContextBlock block = Blocks.context(c -> c.elements(List.of(
BlockElements.image(i -> i.imageUrl("https://image.freepik.com/free-photo/red-drawing-pin_1156-445.jpg")
.altText("images")),
BlockCompositions.markdownText("Location: **Dogpatch**"))));
return block;
}
}
18 changes: 18 additions & 0 deletions block-kit/src/main/java/blocks/Divider.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package blocks;

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

/**
* Visually separates pieces of info inside of a message.
* {@link https://docs.slack.dev/reference/block-kit/blocks/divider-block/}
*/
public class Divider {
/**
* A simple divider block.
*/
public static DividerBlock example01() {
DividerBlock block = Blocks.divider();
return block;
}
}
18 changes: 18 additions & 0 deletions block-kit/src/main/java/blocks/File.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package blocks;

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

/**
* Displays info about remote files.
* {@link https://docs.slack.dev/reference/block-kit/blocks/file-block/}
*/
public class File {
/**
* A file block for a remote file.
*/
public static FileBlock example01() {
FileBlock block = Blocks.file(f -> f.externalId("ABCD1").source("remote"));
return block;
}
}
19 changes: 19 additions & 0 deletions block-kit/src/main/java/blocks/Header.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package blocks;

import com.slack.api.model.block.Blocks;
import com.slack.api.model.block.HeaderBlock;
import com.slack.api.model.block.composition.BlockCompositions;

/**
* Displays a larger-sized text.
* {@link https://docs.slack.dev/reference/block-kit/blocks/header-block/}
*/
public class Header {
/**
* A simple header block.
*/
public static HeaderBlock example01() {
HeaderBlock block = Blocks.header(h -> h.text(BlockCompositions.plainText("A Heartfelt Header")));
return block;
}
}
47 changes: 47 additions & 0 deletions block-kit/src/main/java/blocks/Image.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package blocks;

import com.slack.api.model.block.Blocks;
import com.slack.api.model.block.ImageBlock;
import com.slack.api.model.block.composition.BlockCompositions;
import com.slack.api.model.block.composition.SlackFileObject;

/**
* Displays an image.
* {@link https://docs.slack.dev/reference/block-kit/blocks/image-block/}
*/
public class Image {
/**
* An image block using image_url.
*/
public static ImageBlock example01() {
ImageBlock block = Blocks.image(i -> i.title(BlockCompositions.plainText("Please enjoy this photo of a kitten"))
.blockId("image4")
.imageUrl("http://placekitten.com/500/500")
.altText("An incredibly cute kitten."));
return block;
}

/**
* An image block using slack_file with a url.
*/
public static ImageBlock example02() {
ImageBlock block = Blocks.image(i -> i.title(BlockCompositions.plainText("Please enjoy this photo of a kitten"))
.blockId("image4")
.slackFile(SlackFileObject.builder()
.url("https://files.slack.com/files-pri/T0123456-F0123456/xyz.png")
.build())
.altText("An incredibly cute kitten."));
return block;
}

/**
* An image block using slack_file with an id.
*/
public static ImageBlock example03() {
ImageBlock block = Blocks.image(i -> i.title(BlockCompositions.plainText("Please enjoy this photo of a kitten"))
.blockId("image4")
.slackFile(SlackFileObject.builder().id("F0123456").build())
.altText("An incredibly cute kitten."));
return block;
}
}
21 changes: 21 additions & 0 deletions block-kit/src/main/java/blocks/Input.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package blocks;

import com.slack.api.model.block.Blocks;
import com.slack.api.model.block.InputBlock;
import com.slack.api.model.block.composition.BlockCompositions;
import com.slack.api.model.block.element.BlockElements;

/**
* Collects information from users via elements.
* {@link https://docs.slack.dev/reference/block-kit/blocks/input-block/}
*/
public class Input {
/**
* An input block containing a plain-text input element.
*/
public static InputBlock example01() {
InputBlock block = Blocks.input(i -> i.element(BlockElements.plainTextInput(pt -> pt))
.label(BlockCompositions.plainText(pt -> pt.text("Label").emoji(true))));
return block;
}
}
18 changes: 18 additions & 0 deletions block-kit/src/main/java/blocks/Markdown.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package blocks;

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

/**
* Displays formatted markdown.
* {@link https://docs.slack.dev/reference/block-kit/blocks/markdown-block/}
*/
public class Markdown {
/**
* A markdown block.
*/
public static MarkdownBlock example01() {
MarkdownBlock block = Blocks.markdown(m -> m.text("**Lots of information here!!**"));
return block;
}
}
Loading