add possibility to implement custom EmojiProvider
This commit is contained in:
19
Sources/EmojiPicker/DefaultEmojiProvider.swift
Normal file
19
Sources/EmojiPicker/DefaultEmojiProvider.swift
Normal file
@@ -0,0 +1,19 @@
|
||||
//
|
||||
// DefaultEmojiProvider.swift
|
||||
//
|
||||
//
|
||||
// Created by Kévin Sibué on 11/01/2023.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import Smile
|
||||
|
||||
public final class DefaultEmojiProvider: EmojiProvider {
|
||||
|
||||
public init() { }
|
||||
|
||||
public func getAll() -> [Emoji] {
|
||||
return Smile.list().map({ Emoji(value: $0, name: name(emoji: $0).first ?? "") })
|
||||
}
|
||||
|
||||
}
|
||||
@@ -21,17 +21,18 @@ public struct EmojiPickerView: View {
|
||||
private var selectedColor: Color
|
||||
private var searchEnabled: Bool
|
||||
|
||||
public init(selectedEmoji: Binding<Emoji?>, searchEnabled: Bool = false, selectedColor: Color = .blue) {
|
||||
public init(selectedEmoji: Binding<Emoji?>, searchEnabled: Bool = false, selectedColor: Color = .blue, emojiProvider: EmojiProvider = DefaultEmojiProvider()) {
|
||||
self._selectedEmoji = selectedEmoji
|
||||
self.selectedColor = selectedColor
|
||||
self.searchEnabled = searchEnabled
|
||||
self.emojis = emojiProvider.getAll()
|
||||
}
|
||||
|
||||
let columns = [
|
||||
GridItem(.adaptive(minimum: 80))
|
||||
]
|
||||
|
||||
let emojis = EmojiProvider().getAll()
|
||||
let emojis: [Emoji]
|
||||
|
||||
private var searchResults: [Emoji] {
|
||||
if search.isEmpty {
|
||||
|
||||
@@ -2,16 +2,11 @@
|
||||
// EmojiProvider.swift
|
||||
//
|
||||
//
|
||||
// Created by Kévin Sibué on 11/01/2023.
|
||||
// Created by Kévin Sibué on 13/01/2023.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import Smile
|
||||
|
||||
public final class EmojiProvider {
|
||||
|
||||
func getAll() -> [Emoji] {
|
||||
return Smile.list().map({ Emoji(value: $0, name: name(emoji: $0).first ?? "") })
|
||||
}
|
||||
|
||||
public protocol EmojiProvider {
|
||||
func getAll() -> [Emoji]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user