add gs
This commit is contained in:
+169
@@ -0,0 +1,169 @@
|
||||
local CoreGui = game:GetService("CoreGui")
|
||||
|
||||
local Modules = CoreGui.RobloxGui.Modules
|
||||
local Common = Modules.Common
|
||||
local LuaChat = Modules.LuaChat
|
||||
|
||||
local Constants = require(LuaChat.Constants)
|
||||
local Create = require(LuaChat.Create)
|
||||
local Signal = require(Common.Signal)
|
||||
|
||||
local Text = require(LuaChat.Text)
|
||||
local getInputEvent = require(LuaChat.Utils.getInputEvent)
|
||||
|
||||
local FFlagTextBoxOverrideManualFocusRelease = settings():GetFFlag("TextBoxOverrideManualFocusRelease")
|
||||
|
||||
local CANCEL_BUTTON_PADDING = 16
|
||||
|
||||
local ConversationSearchBox = {}
|
||||
|
||||
function ConversationSearchBox.new(appState)
|
||||
local self = {}
|
||||
setmetatable(self, {__index = ConversationSearchBox})
|
||||
|
||||
self.rbx = Create.new"Frame"
|
||||
{
|
||||
Name = "ConversationSearchBox",
|
||||
BackgroundTransparency = 1,
|
||||
BorderSizePixel = 0,
|
||||
LayoutOrder = 1,
|
||||
Size = UDim2.new(1, 0, 1, 0),
|
||||
Create.new "UIListLayout"
|
||||
{
|
||||
SortOrder = "LayoutOrder",
|
||||
FillDirection = "Horizontal",
|
||||
HorizontalAlignment = "Right",
|
||||
},
|
||||
}
|
||||
|
||||
local cancelButton = Create.new"TextButton"
|
||||
{
|
||||
Name = "Cancel",
|
||||
BackgroundTransparency = 1,
|
||||
Position = UDim2.new(0, 0, 0, 0),
|
||||
TextSize = Constants.Font.FONT_SIZE_18,
|
||||
TextColor3 = Constants.Color.WHITE,
|
||||
Font = Enum.Font.SourceSans,
|
||||
Text = appState.localization:Format("Feature.Chat.Action.Cancel"),
|
||||
TextXAlignment = Enum.TextXAlignment.Center,
|
||||
LayoutOrder = 1,
|
||||
}
|
||||
cancelButton.Size = UDim2.new(0,
|
||||
Text.GetTextWidth(cancelButton.Text, cancelButton.Font, cancelButton.TextSize) + CANCEL_BUTTON_PADDING * 2, 1, 0)
|
||||
cancelButton.Parent = self.rbx
|
||||
|
||||
local searchBoxContainer = Create.new"Frame"
|
||||
{
|
||||
Name = "SearchBoxContainer",
|
||||
BackgroundTransparency = 1,
|
||||
Size = UDim2.new(1, -cancelButton.Size.X.Offset, 1, 0),
|
||||
Position = UDim2.new(0, 8, 0, 0),
|
||||
LayoutOrder = 0,
|
||||
}
|
||||
searchBoxContainer.Parent = self.rbx
|
||||
|
||||
local searchBoxBackground = Create.new"ImageLabel"
|
||||
{
|
||||
Name = "SearchBoxBackground",
|
||||
BackgroundTransparency = 1,
|
||||
Size = UDim2.new(1, 0, 1, -12),
|
||||
Position = UDim2.new(0, 8, 0.5, 0),
|
||||
AnchorPoint = Vector2.new(0, 0.5),
|
||||
Image = "rbxasset://textures/ui/LuaChat/9-slice/search.png",
|
||||
ScaleType = Enum.ScaleType.Slice,
|
||||
SliceCenter = Rect.new(3,3,4,4),
|
||||
Create.new"ImageLabel"
|
||||
{
|
||||
Name = "SearchIcon",
|
||||
BackgroundTransparency = 1,
|
||||
Size = UDim2.new(0, 16, 0, 16),
|
||||
Position = UDim2.new(0, 8, 0.5, 0),
|
||||
AnchorPoint = Vector2.new(0, 0.5),
|
||||
ImageColor3 = Constants.Color.GRAY3,
|
||||
Image = "rbxasset://textures/ui/LuaChat/icons/ic-search.png",
|
||||
},
|
||||
}
|
||||
searchBoxBackground.Parent = searchBoxContainer
|
||||
|
||||
local clearSearchButton = Create.new"ImageButton"
|
||||
{
|
||||
Name = "ClearButton",
|
||||
BackgroundTransparency = 1,
|
||||
Size = UDim2.new(0, 16, 0, 16),
|
||||
Position = UDim2.new(1, -8, 0.5, 0),
|
||||
AnchorPoint = Vector2.new(1, 0.5),
|
||||
Image = "rbxasset://textures/ui/LuaChat/icons/ic-clear-solid.png",
|
||||
Visible = false,
|
||||
}
|
||||
clearSearchButton.Parent = searchBoxBackground
|
||||
|
||||
local search = Create.new"TextBox"
|
||||
{
|
||||
Name = "Search",
|
||||
BackgroundTransparency = 1,
|
||||
ClipsDescendants = true,
|
||||
Size = UDim2.new(1, -36 - 8 - 32, 1, 0),
|
||||
Position = UDim2.new(0, 36, 0, 0),
|
||||
TextSize = Constants.Font.FONT_SIZE_14,
|
||||
TextColor3 = Constants.Color.GRAY1,
|
||||
Font = Enum.Font.SourceSans,
|
||||
Text = "",
|
||||
PlaceholderText = appState.localization:Format("Feature.Chat.Label.SearchWord"),
|
||||
PlaceholderColor3 = Constants.Color.GRAY3,
|
||||
TextXAlignment = Enum.TextXAlignment.Left,
|
||||
OverlayNativeInput = true,
|
||||
ClearTextOnFocus = false,
|
||||
}
|
||||
search.Parent = searchBoxBackground
|
||||
if FFlagTextBoxOverrideManualFocusRelease then
|
||||
search.ManualFocusRelease = true
|
||||
end
|
||||
self.search = search
|
||||
|
||||
self.SearchChanged = Signal.new()
|
||||
self.Closed = Signal.new()
|
||||
|
||||
local searchText = ""
|
||||
|
||||
search:GetPropertyChangedSignal("Text"):Connect(function()
|
||||
searchText = string.lower(search.Text)
|
||||
clearSearchButton.Visible = searchText ~= ""
|
||||
self.SearchChanged:fire(search.Text)
|
||||
end)
|
||||
|
||||
search.FocusLost:Connect(function()
|
||||
if search.Text:len() == 0 then
|
||||
self:Cancel()
|
||||
end
|
||||
end)
|
||||
|
||||
getInputEvent(cancelButton):Connect(function()
|
||||
self:Cancel()
|
||||
end)
|
||||
|
||||
getInputEvent(clearSearchButton):Connect(function()
|
||||
search.Text = ""
|
||||
self:Cancel()
|
||||
end)
|
||||
|
||||
self.SearchFilterPredicate = function(other)
|
||||
if searchText == "" then
|
||||
return true
|
||||
end
|
||||
return string.find(string.lower(other), searchText, 1, true) ~= nil
|
||||
end
|
||||
|
||||
return self
|
||||
end
|
||||
|
||||
function ConversationSearchBox:Cancel()
|
||||
self.search:ReleaseFocus()
|
||||
self.search.Text = ""
|
||||
self.Closed:fire()
|
||||
end
|
||||
|
||||
function ConversationSearchBox:Update(participants)
|
||||
|
||||
end
|
||||
|
||||
return ConversationSearchBox
|
||||
Reference in New Issue
Block a user