Add bridged share button to board and card permas
This commit is contained in:
@@ -10,4 +10,14 @@ module BridgeHelper
|
||||
bridge_title: "Go to #{board.name}"
|
||||
}
|
||||
end
|
||||
|
||||
def bridged_share_button(type = nil)
|
||||
tag.button "Share", hidden: true, data: {
|
||||
controller: "bridge--share",
|
||||
action: "bridge--share#share",
|
||||
bridge__overflow_menu_target: "item",
|
||||
bridge_title: "Share",
|
||||
bridge_share_type: type
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
import { BridgeComponent } from "@hotwired/hotwire-native-bridge"
|
||||
|
||||
export default class extends BridgeComponent {
|
||||
static component = "share"
|
||||
|
||||
share() {
|
||||
const type = this.bridgeElement.bridgeAttribute("share-type")
|
||||
switch (type) {
|
||||
case "card-url":
|
||||
this.send("shareCardUrl", this.#data(type))
|
||||
break
|
||||
default:
|
||||
this.send("shareUrl", this.#data(type))
|
||||
}
|
||||
}
|
||||
|
||||
#data(type) {
|
||||
return {
|
||||
title: document.title,
|
||||
url: window.location.href,
|
||||
...this.#additionalDataFor(type)
|
||||
}
|
||||
}
|
||||
|
||||
#additionalDataFor(type) {
|
||||
switch (type) {
|
||||
case "card-url":
|
||||
return {
|
||||
author: this.#author,
|
||||
dateAdded: this.#dateAdded
|
||||
}
|
||||
default:
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
get #author() {
|
||||
return document.querySelector(".card__meta-text--author strong")?.textContent?.trim() ?? null
|
||||
}
|
||||
|
||||
get #dateAdded() {
|
||||
const timestamp = document.querySelector(".card__meta-text--added time")?.dateTime
|
||||
return parseInt(timestamp) || null
|
||||
}
|
||||
}
|
||||
@@ -30,3 +30,5 @@
|
||||
<%= render "boards/show/columns", page: @page, board: @board %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
<%= bridged_share_button() %>
|
||||
|
||||
@@ -23,3 +23,5 @@
|
||||
<%= button_to_remove_card_image(@card) if @card.image.attached? %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<%= bridged_share_button("card-url") %>
|
||||
|
||||
Reference in New Issue
Block a user