mirror of
https://gitlab.com/freepascal.org/fpc/pas2js.git
synced 2025-08-17 19:49:07 +02:00
* Add templatename property
This commit is contained in:
parent
b7396548f4
commit
50f19e89f7
@ -20,7 +20,7 @@ unit bootstrapwidgets;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, js, libjquery, libbootstrap, web, webwidget, htmlwidgets;
|
Classes, SysUtils, js, libjquery, libbootstrap, web, webwidget, htmlwidgets, rtl.TemplateLoader;
|
||||||
|
|
||||||
Type
|
Type
|
||||||
|
|
||||||
@ -197,18 +197,25 @@ Type
|
|||||||
FShowOnRender: Boolean;
|
FShowOnRender: Boolean;
|
||||||
FTemplate: String;
|
FTemplate: String;
|
||||||
FShowing : Boolean;
|
FShowing : Boolean;
|
||||||
|
FTemplateLoader: TCustomTemplateLoader;
|
||||||
|
FTemplateName: String;
|
||||||
function GetModalReferences: TModalReferences;
|
function GetModalReferences: TModalReferences;
|
||||||
function HideClick(Event: TJSEvent): Boolean;
|
function HideClick(Event: TJSEvent): Boolean;
|
||||||
procedure SetModalReferences(AValue: TModalReferences);
|
procedure SetModalReferences(AValue: TModalReferences);
|
||||||
|
procedure SetTemplateLoader(AValue: TCustomTemplateLoader);
|
||||||
|
procedure SetTemplateName(AValue: String);
|
||||||
procedure SetTemplate(AValue: String);
|
procedure SetTemplate(AValue: String);
|
||||||
protected
|
protected
|
||||||
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 RefreshReferences; override;
|
Procedure RefreshReferences; override;
|
||||||
|
function GetTemplateManager: TCustomTemplateLoader; virtual;
|
||||||
|
procedure DoShow; virtual;
|
||||||
Function CreateReferences: TWebWidgetReferences; override;
|
Function CreateReferences: TWebWidgetReferences; override;
|
||||||
Public
|
Public
|
||||||
procedure GetValues(aList: TStrings);
|
procedure GetValues(aList: TStrings);
|
||||||
|
// Show is async
|
||||||
Procedure Show;
|
Procedure Show;
|
||||||
Procedure Hide;
|
Procedure Hide;
|
||||||
Property Showing : Boolean Read FShowing;
|
Property Showing : Boolean Read FShowing;
|
||||||
@ -218,6 +225,8 @@ Type
|
|||||||
Property KeyBoard : Boolean Read FKeyBoard Write FKeyBoard;
|
Property KeyBoard : Boolean Read FKeyBoard Write FKeyBoard;
|
||||||
Property Focus : Boolean Read FFocus Write FFocus;
|
Property Focus : Boolean Read FFocus Write FFocus;
|
||||||
Property Template : String Read FTemplate Write SetTemplate;
|
Property Template : String Read FTemplate Write SetTemplate;
|
||||||
|
Property TemplateName : String Read FTemplateName Write SetTemplateName;
|
||||||
|
Property TemplateLoader : TCustomTemplateLoader Read FTemplateLoader Write SetTemplateLoader;
|
||||||
Property OnHide : TOnModalHideEvent Read FOnHide Write FOnHide;
|
Property OnHide : TOnModalHideEvent Read FOnHide Write FOnHide;
|
||||||
Property References : TModalReferences Read GetModalReferences Write SetModalReferences;
|
Property References : TModalReferences Read GetModalReferences Write SetModalReferences;
|
||||||
end;
|
end;
|
||||||
@ -230,6 +239,9 @@ Function Toasts : TToastManager;
|
|||||||
|
|
||||||
Implementation
|
Implementation
|
||||||
|
|
||||||
|
Resourcestring
|
||||||
|
SErrNoTemplateSet = '%s: No template set';
|
||||||
|
|
||||||
function Toasts: TToastManager;
|
function Toasts: TToastManager;
|
||||||
begin
|
begin
|
||||||
Result:=TToastManager.Instance;
|
Result:=TToastManager.Instance;
|
||||||
@ -599,11 +611,17 @@ end;
|
|||||||
{ TModalReferenceItem }
|
{ TModalReferenceItem }
|
||||||
|
|
||||||
procedure TModalReferenceItem.Assign(Source: TPersistent);
|
procedure TModalReferenceItem.Assign(Source: TPersistent);
|
||||||
|
|
||||||
|
Var
|
||||||
|
MRI : TModalReferenceItem absolute Source;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
if Source is TModalReferenceItem then
|
if Source is TModalReferenceItem then
|
||||||
Self.Kind:=TModalReferenceItem(Source).Kind
|
begin
|
||||||
else
|
Self.Kind:=MRI.Kind;
|
||||||
inherited Assign(Source);
|
Self.InitialValue:=MRI.InitialValue;
|
||||||
|
end;
|
||||||
|
inherited Assign(Source);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TModalReferenceItem.GetValue: String;
|
function TModalReferenceItem.GetValue: String;
|
||||||
@ -648,6 +666,7 @@ end;
|
|||||||
function TBootstrapModal.HideClick (Event : TJSEvent): Boolean;
|
function TBootstrapModal.HideClick (Event : TJSEvent): Boolean;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
Result:=False;
|
||||||
// Writeln('In hide click');
|
// Writeln('In hide click');
|
||||||
FHideEl:=TJSHtmlElement(Event.targetElement);
|
FHideEl:=TJSHtmlElement(Event.targetElement);
|
||||||
Hide;
|
Hide;
|
||||||
@ -663,6 +682,27 @@ begin
|
|||||||
References.Assign(aValue);
|
References.Assign(aValue);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TBootstrapModal.SetTemplateLoader(AValue: TCustomTemplateLoader);
|
||||||
|
begin
|
||||||
|
if FTemplateLoader=AValue then Exit;
|
||||||
|
if Assigned(FTemplateLoader) then
|
||||||
|
FTemplateLoader.RemoveFreeNotification(self);
|
||||||
|
FTemplateLoader:=AValue;
|
||||||
|
if Assigned(FTemplateLoader) then
|
||||||
|
FTemplateLoader.FreeNotification(self);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TBootstrapModal.SetTemplateName(AValue: String);
|
||||||
|
begin
|
||||||
|
if FTemplateName=AValue then Exit;
|
||||||
|
if Showing Then
|
||||||
|
Raise EWidgets.Create('Cannot set template name while showing bootstrap modal');
|
||||||
|
FTemplateName:=AValue;
|
||||||
|
Template:='';
|
||||||
|
If IsRendered then
|
||||||
|
UnRender;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TBootstrapModal.SetTemplate(AValue: String);
|
procedure TBootstrapModal.SetTemplate(AValue: String);
|
||||||
begin
|
begin
|
||||||
if FTemplate=AValue then Exit;
|
if FTemplate=AValue then Exit;
|
||||||
@ -774,7 +814,16 @@ begin
|
|||||||
Result:=TModalReferences.Create(Self,TModalReferenceItem);
|
Result:=TModalReferences.Create(Self,TModalReferenceItem);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TBootstrapModal.Show;
|
function TBootstrapModal.GetTemplateManager: TCustomTemplateLoader;
|
||||||
|
|
||||||
|
begin
|
||||||
|
Result:=FTemplateLoader;
|
||||||
|
if Result=Nil then
|
||||||
|
Result:=GlobalTemplates;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TBootstrapModal.DoShow;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
FHideEl:=Nil;
|
FHideEl:=Nil;
|
||||||
if not IsRendered then
|
if not IsRendered then
|
||||||
@ -783,5 +832,22 @@ begin
|
|||||||
FShowing:=True;
|
FShowing:=True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TBootstrapModal.Show;
|
||||||
|
|
||||||
|
procedure DoShowTemplate(Sender: TObject; const aTemplate: String);
|
||||||
|
begin
|
||||||
|
Template:=GetTemplateManager.Templates[aTemplate];
|
||||||
|
DoShow;
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
if (Template<>'') Then
|
||||||
|
DoShow
|
||||||
|
else if TemplateName<>'' then
|
||||||
|
GetTemplateManager.IfTemplate(TemplateName,@DoShowTemplate)
|
||||||
|
else
|
||||||
|
Raise EWidgets.CreateFmt(SErrNoTemplateSet,[Name]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
Loading…
Reference in New Issue
Block a user