mirror of
https://gitlab.com/freepascal.org/fpc/pas2js.git
synced 2025-08-18 00:29:04 +02:00
* Some changes to accomodate streaming
This commit is contained in:
parent
d14ef007cb
commit
255280a10b
@ -38,7 +38,10 @@ Type
|
|||||||
FHeaderImage: String;
|
FHeaderImage: String;
|
||||||
FHideDelay: Integer;
|
FHideDelay: Integer;
|
||||||
FMinWidth: Integer;
|
FMinWidth: Integer;
|
||||||
|
FOnHide: TNotifyEvent;
|
||||||
|
FShowing: Boolean;
|
||||||
FSmallHeader: String;
|
FSmallHeader: String;
|
||||||
|
FUnrenderOnHide: Boolean;
|
||||||
procedure SetAnimate(AValue: Boolean);
|
procedure SetAnimate(AValue: Boolean);
|
||||||
procedure SetAutoHide(AValue: Boolean);
|
procedure SetAutoHide(AValue: Boolean);
|
||||||
procedure SetBody(AValue: String);
|
procedure SetBody(AValue: String);
|
||||||
@ -49,15 +52,19 @@ Type
|
|||||||
procedure SetHideDelay(AValue: Integer);
|
procedure SetHideDelay(AValue: Integer);
|
||||||
procedure SetMinWidth(AValue: Integer);
|
procedure SetMinWidth(AValue: Integer);
|
||||||
procedure SetSmallHeader(AValue: String);
|
procedure SetSmallHeader(AValue: String);
|
||||||
|
procedure SetUnrenderOnHide(AValue: Boolean);
|
||||||
Protected
|
Protected
|
||||||
|
function BootstrapHide(aEvent: TJSEvent): Boolean; virtual;
|
||||||
function BodyHTML: String; virtual;
|
function BodyHTML: String; virtual;
|
||||||
function CloseButtonHTML: String; virtual;
|
function CloseButtonHTML: String; virtual;
|
||||||
function HeaderHTML: String; virtual;
|
function HeaderHTML: String; virtual;
|
||||||
Function GetTemplateHTML: String; override;
|
Function GetTemplateHTML: String; override;
|
||||||
Function DoRenderHTML(aParent, aElement: TJSHTMLElement): TJSHTMLElement; override;
|
Function DoRenderHTML(aParent, aElement: TJSHTMLElement): TJSHTMLElement; override;
|
||||||
|
procedure ApplyWidgetSettings(aElement: TJSHTMLElement); override;
|
||||||
Public
|
Public
|
||||||
Constructor Create(aOwner : TComponent); override;
|
Constructor Create(aOwner : TComponent); override;
|
||||||
Procedure Hide;
|
Procedure Hide;
|
||||||
|
Property Showing : Boolean Read FShowing;
|
||||||
Published
|
Published
|
||||||
Property Header : String Read FHeader Write SetHeader;
|
Property Header : String Read FHeader Write SetHeader;
|
||||||
Property SmallHeader : String Read FSmallHeader Write SetSmallHeader;
|
Property SmallHeader : String Read FSmallHeader Write SetSmallHeader;
|
||||||
@ -69,8 +76,12 @@ Type
|
|||||||
Property AutoHide : Boolean Read FAutoHide Write SetAutoHide default True;
|
Property AutoHide : Boolean Read FAutoHide Write SetAutoHide default True;
|
||||||
Property Animate : Boolean Read FAnimate Write SetAnimate default False;
|
Property Animate : Boolean Read FAnimate Write SetAnimate default False;
|
||||||
Property MinWidth : Integer Read FMinWidth Write SetMinWidth default 200;
|
Property MinWidth : Integer Read FMinWidth Write SetMinWidth default 200;
|
||||||
|
Property UnrenderOnHide : Boolean Read FUnrenderOnHide Write SetUnrenderOnHide;
|
||||||
|
Property OnHide : TNotifyEvent Read FOnHide Write FOnHide;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
TBootstrapToastWidget = class (TSimpleToastWidget);
|
||||||
|
|
||||||
// Encapsulates the global tag where the toasts are shown.
|
// Encapsulates the global tag where the toasts are shown.
|
||||||
|
|
||||||
{ TToastManager }
|
{ TToastManager }
|
||||||
@ -92,6 +103,7 @@ Type
|
|||||||
procedure SetMultiToast(AValue: Boolean);
|
procedure SetMultiToast(AValue: Boolean);
|
||||||
Protected
|
Protected
|
||||||
Class Function DefaultParentElement : TJSHTMLElement; override;
|
Class Function DefaultParentElement : TJSHTMLElement; override;
|
||||||
|
Function BootstrapHide(Event : TJSEvent) : Boolean;
|
||||||
Function DoRenderHTML(aParent, aElement: TJSHTMLElement): TJSHTMLElement; override;
|
Function DoRenderHTML(aParent, aElement: TJSHTMLElement): TJSHTMLElement; override;
|
||||||
Function GetContentElement: TJSHTMLELement; override;
|
Function GetContentElement: TJSHTMLELement; override;
|
||||||
Procedure InvalidateElement; override;
|
Procedure InvalidateElement; override;
|
||||||
@ -209,6 +221,7 @@ Type
|
|||||||
Function BootstrapHide(Event : TJSEvent) : Boolean;
|
Function BootstrapHide(Event : TJSEvent) : Boolean;
|
||||||
Function DoRenderHTML(aParent, aElement: TJSHTMLElement): TJSHTMLElement; override;
|
Function DoRenderHTML(aParent, aElement: TJSHTMLElement): TJSHTMLElement; override;
|
||||||
Function GetTemplateHTML: String; override;
|
Function GetTemplateHTML: String; override;
|
||||||
|
procedure ApplyWidgetSettings(aElement: TJSHTMLElement); override;
|
||||||
Procedure RefreshReferences; override;
|
Procedure RefreshReferences; override;
|
||||||
function GetTemplateManager: TCustomTemplateLoader; virtual;
|
function GetTemplateManager: TCustomTemplateLoader; virtual;
|
||||||
procedure DoShow; virtual;
|
procedure DoShow; virtual;
|
||||||
@ -241,6 +254,7 @@ Implementation
|
|||||||
|
|
||||||
Resourcestring
|
Resourcestring
|
||||||
SErrNoTemplateSet = '%s: No template set';
|
SErrNoTemplateSet = '%s: No template set';
|
||||||
|
SErrCannotUnrenderFixedElementID = 'Cannot unrender when ElementID (%s) is set';
|
||||||
|
|
||||||
function Toasts: TToastManager;
|
function Toasts: TToastManager;
|
||||||
begin
|
begin
|
||||||
@ -385,6 +399,11 @@ begin
|
|||||||
Result:=TJSHTMLElement(Document.body);
|
Result:=TJSHTMLElement(Document.body);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TToastManager.BootstrapHide(Event: TJSEvent): Boolean;
|
||||||
|
begin
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
function TToastManager.DoRenderHTML(aParent, aElement: TJSHTMLElement): TJSHTMLElement;
|
function TToastManager.DoRenderHTML(aParent, aElement: TJSHTMLElement): TJSHTMLElement;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
@ -467,15 +486,20 @@ begin
|
|||||||
S:=ContextualNames[Contextual];
|
S:=ContextualNames[Contextual];
|
||||||
if S<>'' then
|
if S<>'' then
|
||||||
S:='text-'+S;
|
S:='text-'+S;
|
||||||
Result:=Result+ '<button type="button" class="ml-2 mb-1 close '+S+'" data-dismiss="toast" aria-label="Close">';
|
if BootStrapVersion=bv4 then
|
||||||
Result:=Result+ ' <span aria-hidden="true">×</span>';
|
S:=S+' close'
|
||||||
|
else
|
||||||
|
S:=S+' btn-close';
|
||||||
|
Result:=Result+ '<button type="button" class="xml-2 xmb-1 close '+S+'" data-dismiss="toast" data-bs-dismiss="toast" aria-label="Close">';
|
||||||
|
if BootstrapVersion=bv4 then
|
||||||
|
Result:=Result+ ' <span aria-hidden="true">×</span>';
|
||||||
Result:=Result+ '</button>';
|
Result:=Result+ '</button>';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TSimpleToastWidget.HeaderHTML: String;
|
function TSimpleToastWidget.HeaderHTML: String;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
S : String;
|
me,S : String;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
S:=ContextualNames[Contextual];
|
S:=ContextualNames[Contextual];
|
||||||
@ -484,7 +508,11 @@ begin
|
|||||||
Result:='<div class="toast-header '+S+'">';
|
Result:='<div class="toast-header '+S+'">';
|
||||||
if HeaderImage<>'' then
|
if HeaderImage<>'' then
|
||||||
Result:=Result+'<img src="'+HeaderImage+'" class="rounded mr-2">';
|
Result:=Result+'<img src="'+HeaderImage+'" class="rounded mr-2">';
|
||||||
Result:=Result+'<div class="mr-auto">'+Header+'</div>';
|
if BootStrapVersion=bv4 then
|
||||||
|
me:='mr'
|
||||||
|
else
|
||||||
|
me:='me';
|
||||||
|
Result:=Result+'<div class="'+me+'-auto">'+Header+'</div>';
|
||||||
if (SmallHeader<>'') then
|
if (SmallHeader<>'') then
|
||||||
Result:=Result+'<small>'+SmallHeader+'</small>';
|
Result:=Result+'<small>'+SmallHeader+'</small>';
|
||||||
if CloseButton then
|
if CloseButton then
|
||||||
@ -562,6 +590,25 @@ begin
|
|||||||
if isRendered then Refresh;
|
if isRendered then Refresh;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TSimpleToastWidget.SetUnrenderOnHide(AValue: Boolean);
|
||||||
|
begin
|
||||||
|
if FUnrenderOnHide=AValue then Exit;
|
||||||
|
if FixedElementID and aValue then
|
||||||
|
Raise EWidgets.CreateFmt(SErrCannotUnrenderFixedElementID,[ElementID]);
|
||||||
|
FUnrenderOnHide:=AValue;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TSimpleToastWidget.BootstrapHide(aEvent: TJSEvent) : Boolean;
|
||||||
|
|
||||||
|
begin
|
||||||
|
FShowing:=False;
|
||||||
|
// Writeln('In bootstraphide callback ', assigned(onhide));
|
||||||
|
If Assigned(OnHide) then
|
||||||
|
OnHide(Self);
|
||||||
|
if UnrenderOnHide then
|
||||||
|
Unrender;
|
||||||
|
end;
|
||||||
|
|
||||||
function TSimpleToastWidget.BodyHTML: String;
|
function TSimpleToastWidget.BodyHTML: String;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
@ -591,8 +638,14 @@ end;
|
|||||||
function TSimpleToastWidget.DoRenderHTML(aParent, aElement: TJSHTMLElement): TJSHTMLElement;
|
function TSimpleToastWidget.DoRenderHTML(aParent, aElement: TJSHTMLElement): TJSHTMLElement;
|
||||||
begin
|
begin
|
||||||
Result:=inherited DoRenderHTML(aParent, aElement);
|
Result:=inherited DoRenderHTML(aParent, aElement);
|
||||||
JQuery(Result).toast(New(['animation',FAnimate,'autohide',autohide,'delay',FHideDelay]));
|
end;
|
||||||
JQuery(Result).ToastShow;
|
|
||||||
|
procedure TSimpleToastWidget.ApplyWidgetSettings(aElement: TJSHTMLElement);
|
||||||
|
begin
|
||||||
|
inherited ApplyWidgetSettings(aElement);
|
||||||
|
JQuery(aElement).toast(New(['animation',FAnimate,'autohide',autohide,'delay',FHideDelay]));
|
||||||
|
JQuery(aElement).ToastShow;
|
||||||
|
jQuery(aElement).on_('hidden.bs.toast',@BootstrapHide);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
constructor TSimpleToastWidget.Create(aOwner: TComponent);
|
constructor TSimpleToastWidget.Create(aOwner: TComponent);
|
||||||
@ -738,6 +791,8 @@ Var
|
|||||||
begin
|
begin
|
||||||
Result:=False;
|
Result:=False;
|
||||||
FShowing:=False;
|
FShowing:=False;
|
||||||
|
if FHideEl=Nil then
|
||||||
|
FHideEl:=TJSHTMLElement(Event.targetElement);
|
||||||
// Writeln('In bootstraphide callback ', assigned(onhide));
|
// Writeln('In bootstraphide callback ', assigned(onhide));
|
||||||
If Assigned(OnHide) then
|
If Assigned(OnHide) then
|
||||||
begin
|
begin
|
||||||
@ -763,13 +818,18 @@ function TBootstrapModal.DoRenderHTML(aParent, aElement: TJSHTMLElement): TJSHTM
|
|||||||
begin
|
begin
|
||||||
FHideEl:=Nil;
|
FHideEl:=Nil;
|
||||||
Result:=inherited DoRenderHTML(aParent, aElement);
|
Result:=inherited DoRenderHTML(aParent, aElement);
|
||||||
JQuery(Result).modal(New([
|
end;
|
||||||
|
|
||||||
|
procedure TBootstrapModal.ApplyWidgetSettings(aElement: TJSHTMLElement);
|
||||||
|
|
||||||
|
begin
|
||||||
|
JQuery(aElement).modal(New([
|
||||||
'backdrop', BackDrop,
|
'backdrop', BackDrop,
|
||||||
'keyboard', keyboard,
|
'keyboard', keyboard,
|
||||||
'focus',Focus,
|
'focus',Focus,
|
||||||
'show',ShowOnRender
|
'show',ShowOnRender
|
||||||
]));
|
]));
|
||||||
jQuery(Result).on_('hidden.bs.modal',@BootstrapHide);
|
jQuery(aElement).on_('hidden.bs.modal',@BootstrapHide);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TBootstrapModal.GetTemplateHTML: String;
|
function TBootstrapModal.GetTemplateHTML: String;
|
||||||
@ -841,7 +901,7 @@ procedure TBootstrapModal.Show;
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
if (Template<>'') Then
|
if (Template<>'') or (ElementID<>'') Then
|
||||||
DoShow
|
DoShow
|
||||||
else if TemplateName<>'' then
|
else if TemplateName<>'' then
|
||||||
GetTemplateManager.IfTemplate(TemplateName,@DoShowTemplate)
|
GetTemplateManager.IfTemplate(TemplateName,@DoShowTemplate)
|
||||||
|
Loading…
Reference in New Issue
Block a user