Update EmojiKit version and split off Apple emoji categories into sections
This commit is contained in:
@@ -6,7 +6,7 @@
|
|||||||
"location" : "https://github.com/tyiu/EmojiKit",
|
"location" : "https://github.com/tyiu/EmojiKit",
|
||||||
"state" : {
|
"state" : {
|
||||||
"branch" : "emoji-keywords",
|
"branch" : "emoji-keywords",
|
||||||
"revision" : "3250b3cada8829ec3ff09013e861cba2b48bdb04"
|
"revision" : "99744e7e8d004e1e7ebaa0e38af184ae1b6c8296"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -14,8 +14,8 @@
|
|||||||
"kind" : "remoteSourceControl",
|
"kind" : "remoteSourceControl",
|
||||||
"location" : "https://github.com/apple/swift-collections.git",
|
"location" : "https://github.com/apple/swift-collections.git",
|
||||||
"state" : {
|
"state" : {
|
||||||
"revision" : "94cf62b3ba8d4bed62680a282d4c25f9c63c2efb",
|
"revision" : "ee97538f5b81ae89698fd95938896dec5217b148",
|
||||||
"version" : "1.1.0"
|
"version" : "1.1.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -12,7 +12,11 @@ public final class DefaultEmojiProvider: EmojiProvider {
|
|||||||
|
|
||||||
public init() { }
|
public init() { }
|
||||||
|
|
||||||
public func getAll() -> [Emoji] {
|
public func getAppleEmojiCategories() -> [EmojiKit.AppleEmojiCategory] {
|
||||||
|
return EmojiManager.getAvailableEmojis()
|
||||||
|
}
|
||||||
|
|
||||||
|
public func getAllEmojis() -> [EmojiKit.Emoji] {
|
||||||
return EmojiManager.getAvailableEmojis().flatMap { $0.emojis.values }
|
return EmojiManager.getAvailableEmojis().flatMap { $0.emojis.values }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,49 +22,48 @@ public struct EmojiPickerView: View {
|
|||||||
private var selectedColor: Color
|
private var selectedColor: Color
|
||||||
private var searchEnabled: Bool
|
private var searchEnabled: Bool
|
||||||
|
|
||||||
public init(selectedEmoji: Binding<Emoji?>, searchEnabled: Bool = false, selectedColor: Color = .blue, emojiProvider: EmojiProvider = DefaultEmojiProvider()) {
|
private let emojiCategories: [AppleEmojiCategory]
|
||||||
|
|
||||||
|
public init(selectedEmoji: Binding<Emoji?>, searchEnabled: Bool = false, selectedColor: Color = .blue, emojiProvider: EmojiProvider = DefaultEmojiProvider(), emojiCategories: [AppleEmojiCategory] = EmojiManager.getAvailableEmojis()) {
|
||||||
self._selectedEmoji = selectedEmoji
|
self._selectedEmoji = selectedEmoji
|
||||||
self.selectedColor = selectedColor
|
self.selectedColor = selectedColor
|
||||||
self.searchEnabled = searchEnabled
|
self.searchEnabled = searchEnabled
|
||||||
self.emojis = emojiProvider.getAll()
|
self.emojiCategories = emojiProvider.getAppleEmojiCategories()
|
||||||
}
|
}
|
||||||
|
|
||||||
let columns = [
|
let columns = [
|
||||||
GridItem(.adaptive(minimum: 36))
|
GridItem(.adaptive(minimum: 36))
|
||||||
]
|
]
|
||||||
|
|
||||||
let emojis: [Emoji]
|
|
||||||
|
|
||||||
private var searchResults: [Emoji] {
|
|
||||||
if search.isEmpty {
|
|
||||||
return emojis
|
|
||||||
} else {
|
|
||||||
return emojis
|
|
||||||
// .filter { $0.name.lowercased().contains(search.lowercased()) }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public var body: some View {
|
public var body: some View {
|
||||||
ScrollView {
|
ScrollView {
|
||||||
LazyVGrid(columns: columns) {
|
LazyVGrid(columns: columns, alignment: .leading) {
|
||||||
ForEach(searchResults, id: \.self) { emoji in
|
ForEach(emojiCategories, id: \.self) { category in
|
||||||
RoundedRectangle(cornerRadius: 16)
|
Section {
|
||||||
.fill((selectedEmoji == emoji ? selectedColor : Color.clear).opacity(0.4))
|
ForEach(category.emojis.values, id: \.self) { emoji in
|
||||||
.frame(width: 36, height: 36)
|
RoundedRectangle(cornerRadius: 16)
|
||||||
.overlay {
|
.fill((selectedEmoji == emoji ? selectedColor : Color.clear).opacity(0.4))
|
||||||
Text(emoji.value)
|
.frame(width: 36, height: 36)
|
||||||
.font(.largeTitle)
|
.overlay {
|
||||||
}
|
Text(emoji.value)
|
||||||
.onTapGesture {
|
.font(.largeTitle)
|
||||||
selectedEmoji = emoji
|
}
|
||||||
dismiss()
|
.onTapGesture {
|
||||||
|
selectedEmoji = emoji
|
||||||
|
dismiss()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} header: {
|
||||||
|
Text(category.name.localizedName)
|
||||||
|
.foregroundStyle(.gray)
|
||||||
|
.padding(.vertical, 8)
|
||||||
|
}
|
||||||
|
.frame(alignment: .leading)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.padding(.horizontal)
|
.padding(.horizontal)
|
||||||
}
|
}
|
||||||
.frame(maxHeight: .infinity)
|
.frame(maxHeight: .infinity)
|
||||||
.searchable(text: $search)
|
|
||||||
.textInputAutocapitalization(.never)
|
.textInputAutocapitalization(.never)
|
||||||
.autocorrectionDisabled()
|
.autocorrectionDisabled()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,5 +9,6 @@ import Foundation
|
|||||||
import EmojiKit
|
import EmojiKit
|
||||||
|
|
||||||
public protocol EmojiProvider {
|
public protocol EmojiProvider {
|
||||||
func getAll() -> [Emoji]
|
func getAppleEmojiCategories() -> [AppleEmojiCategory]
|
||||||
|
func getAllEmojis() -> [Emoji]
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user