From af3212e70e0ec81c406070b970d029be591e6826 Mon Sep 17 00:00:00 2001 From: Terry Yiu <963907+tyiu@users.noreply.github.com> Date: Sat, 8 Jun 2024 16:06:33 -0400 Subject: [PATCH] Update EmojiKit version and split off Apple emoji categories into sections --- Package.resolved | 6 +-- .../EmojiPicker/DefaultEmojiProvider.swift | 6 ++- Sources/EmojiPicker/EmojiPickerView.swift | 51 +++++++++---------- Sources/EmojiPicker/EmojiProvider.swift | 3 +- 4 files changed, 35 insertions(+), 31 deletions(-) diff --git a/Package.resolved b/Package.resolved index 80cc0ee..cf01517 100644 --- a/Package.resolved +++ b/Package.resolved @@ -6,7 +6,7 @@ "location" : "https://github.com/tyiu/EmojiKit", "state" : { "branch" : "emoji-keywords", - "revision" : "3250b3cada8829ec3ff09013e861cba2b48bdb04" + "revision" : "99744e7e8d004e1e7ebaa0e38af184ae1b6c8296" } }, { @@ -14,8 +14,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-collections.git", "state" : { - "revision" : "94cf62b3ba8d4bed62680a282d4c25f9c63c2efb", - "version" : "1.1.0" + "revision" : "ee97538f5b81ae89698fd95938896dec5217b148", + "version" : "1.1.1" } } ], diff --git a/Sources/EmojiPicker/DefaultEmojiProvider.swift b/Sources/EmojiPicker/DefaultEmojiProvider.swift index f75478d..4dc04ad 100644 --- a/Sources/EmojiPicker/DefaultEmojiProvider.swift +++ b/Sources/EmojiPicker/DefaultEmojiProvider.swift @@ -12,7 +12,11 @@ public final class DefaultEmojiProvider: EmojiProvider { 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 } } diff --git a/Sources/EmojiPicker/EmojiPickerView.swift b/Sources/EmojiPicker/EmojiPickerView.swift index e880ac7..b9cc613 100644 --- a/Sources/EmojiPicker/EmojiPickerView.swift +++ b/Sources/EmojiPicker/EmojiPickerView.swift @@ -22,49 +22,48 @@ public struct EmojiPickerView: View { private var selectedColor: Color private var searchEnabled: Bool - public init(selectedEmoji: Binding, searchEnabled: Bool = false, selectedColor: Color = .blue, emojiProvider: EmojiProvider = DefaultEmojiProvider()) { + private let emojiCategories: [AppleEmojiCategory] + + public init(selectedEmoji: Binding, searchEnabled: Bool = false, selectedColor: Color = .blue, emojiProvider: EmojiProvider = DefaultEmojiProvider(), emojiCategories: [AppleEmojiCategory] = EmojiManager.getAvailableEmojis()) { self._selectedEmoji = selectedEmoji self.selectedColor = selectedColor self.searchEnabled = searchEnabled - self.emojis = emojiProvider.getAll() + self.emojiCategories = emojiProvider.getAppleEmojiCategories() } let columns = [ 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 { ScrollView { - LazyVGrid(columns: columns) { - ForEach(searchResults, id: \.self) { emoji in - RoundedRectangle(cornerRadius: 16) - .fill((selectedEmoji == emoji ? selectedColor : Color.clear).opacity(0.4)) - .frame(width: 36, height: 36) - .overlay { - Text(emoji.value) - .font(.largeTitle) - } - .onTapGesture { - selectedEmoji = emoji - dismiss() + LazyVGrid(columns: columns, alignment: .leading) { + ForEach(emojiCategories, id: \.self) { category in + Section { + ForEach(category.emojis.values, id: \.self) { emoji in + RoundedRectangle(cornerRadius: 16) + .fill((selectedEmoji == emoji ? selectedColor : Color.clear).opacity(0.4)) + .frame(width: 36, height: 36) + .overlay { + Text(emoji.value) + .font(.largeTitle) + } + .onTapGesture { + selectedEmoji = emoji + dismiss() + } } + } header: { + Text(category.name.localizedName) + .foregroundStyle(.gray) + .padding(.vertical, 8) + } + .frame(alignment: .leading) } } .padding(.horizontal) } .frame(maxHeight: .infinity) - .searchable(text: $search) .textInputAutocapitalization(.never) .autocorrectionDisabled() } diff --git a/Sources/EmojiPicker/EmojiProvider.swift b/Sources/EmojiPicker/EmojiProvider.swift index bbd2caf..53c65c7 100644 --- a/Sources/EmojiPicker/EmojiProvider.swift +++ b/Sources/EmojiPicker/EmojiProvider.swift @@ -9,5 +9,6 @@ import Foundation import EmojiKit public protocol EmojiProvider { - func getAll() -> [Emoji] + func getAppleEmojiCategories() -> [AppleEmojiCategory] + func getAllEmojis() -> [Emoji] }