mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 22:55:00 +00:00
Various improvements
This commit is contained in:
@@ -256,6 +256,9 @@ public final class EditableTokenListNode: ASDisplayNode, UITextFieldDelegate {
|
||||
private let context: AccountContext
|
||||
private let presentationTheme: PresentationTheme
|
||||
|
||||
private let placeholder: String
|
||||
private let shortPlaceholder: String?
|
||||
|
||||
private let theme: EditableTokenListNodeTheme
|
||||
private let backgroundNode: NavigationBackgroundNode
|
||||
private let scrollNode: ASScrollNode
|
||||
@@ -271,10 +274,13 @@ public final class EditableTokenListNode: ASDisplayNode, UITextFieldDelegate {
|
||||
public var deleteToken: ((AnyHashable) -> Void)?
|
||||
public var textReturned: (() -> Void)?
|
||||
|
||||
public init(context: AccountContext, presentationTheme: PresentationTheme, theme: EditableTokenListNodeTheme, placeholder: String) {
|
||||
public init(context: AccountContext, presentationTheme: PresentationTheme, theme: EditableTokenListNodeTheme, placeholder: String, shortPlaceholder: String? = nil) {
|
||||
self.context = context
|
||||
self.presentationTheme = presentationTheme
|
||||
self.theme = theme
|
||||
|
||||
self.placeholder = placeholder
|
||||
self.shortPlaceholder = shortPlaceholder
|
||||
|
||||
self.backgroundNode = NavigationBackgroundNode(color: theme.backgroundColor)
|
||||
|
||||
@@ -336,6 +342,14 @@ public final class EditableTokenListNode: ASDisplayNode, UITextFieldDelegate {
|
||||
public func updateLayout(tokens: [EditableTokenListToken], width: CGFloat, leftInset: CGFloat, rightInset: CGFloat, transition: ContainedViewLayoutTransition) -> CGFloat {
|
||||
let validTokens = Set<AnyHashable>(tokens.map { $0.id })
|
||||
|
||||
if let shortPlaceholder = self.shortPlaceholder {
|
||||
if validTokens.count > 0 {
|
||||
self.placeholderNode.attributedText = NSAttributedString(string: shortPlaceholder, font: Font.regular(15.0), textColor: self.theme.placeholderTextColor)
|
||||
} else {
|
||||
self.placeholderNode.attributedText = NSAttributedString(string: self.placeholder, font: Font.regular(15.0), textColor: self.theme.placeholderTextColor)
|
||||
}
|
||||
}
|
||||
|
||||
for i in (0 ..< self.tokenNodes.count).reversed() {
|
||||
let tokenNode = tokenNodes[i]
|
||||
if !validTokens.contains(tokenNode.token.id) {
|
||||
@@ -430,7 +444,9 @@ public final class EditableTokenListNode: ASDisplayNode, UITextFieldDelegate {
|
||||
currentOffset.y += 28.0
|
||||
currentOffset.x = sideInset
|
||||
}
|
||||
transition.updateFrame(node: self.placeholderNode, frame: CGRect(origin: CGPoint(x: currentOffset.x + 4.0, y: currentOffset.y + floor((28.0 - placeholderSize.height) / 2.0)), size: placeholderSize))
|
||||
let placeholderFrame = CGRect(origin: CGPoint(x: currentOffset.x + 4.0, y: currentOffset.y + floor((28.0 - placeholderSize.height) / 2.0)), size: placeholderSize)
|
||||
self.placeholderNode.bounds = CGRect(origin: .zero, size: placeholderSize)
|
||||
transition.updatePosition(node: self.placeholderNode, position: placeholderFrame.center)
|
||||
|
||||
let textNodeFrame = CGRect(origin: CGPoint(x: currentOffset.x + 4.0, y: currentOffset.y + UIScreenPixel), size: CGSize(width: width - currentOffset.x - sideInset - 8.0, height: 28.0))
|
||||
let caretNodeFrame = CGRect(origin: CGPoint(x: textNodeFrame.minX, y: textNodeFrame.minY + 4.0 - UIScreenPixel), size: CGSize(width: 2.0, height: 19.0 + UIScreenPixel))
|
||||
|
||||
Reference in New Issue
Block a user