Various improvements

This commit is contained in:
Ilya Laktyushin
2023-12-16 15:57:24 +04:00
parent a3126f87a0
commit 7d45c4c9d0
80 changed files with 2816 additions and 1065 deletions

View File

@@ -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))