123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323 |
- unit demobootstrap;
- {$mode objfpc}
- interface
- uses
- sysutils, classes, web, js, webwidget, htmlwidgets, bootstrapwidgets, widgetdemo;
- Type
- { TSimpleToastWidgetDemo }
- TSimpleToastWidgetDemo = class(TDemoContainer)
- public
- class function WebWidgetClass: TCustomWebWidgetClass; override;
- Procedure ShowDemo; override;
- end;
- { TToastManagerDemo }
- TToastManagerDemo = class(TDemoContainer)
- private
- procedure DoShowToast(Sender: TObject; Event: TJSEvent);
- Protected
- FLabelClosable:TLabelWidget;
- FLabelHeader:TLabelWidget;
- FLabelBody:TLabelWidget;
- FLabelContextual:TLabelWidget;
- FHeader : TTextInputWidget;
- FBody : TTextAreaWidget;
- FContextual : TSelectWidget;
- FClosable : TCheckboxInputWidget;
- FShowButton: TBootstrapButton;
- public
- Class Function Demohelp : String; override;
- Class Function Description : String; override;
- class function WebWidgetClass: TCustomWebWidgetClass; override;
- Function GetInspectorInstance: TObject; override;
- Procedure ShowDemo; override;
- end;
- { TBootstrapButtonDemo }
- TBootstrapButtonDemo = class(TDemoContainer)
- Private
- public
- class function WebWidgetClass: TCustomWebWidgetClass; override;
- Procedure ShowDemo; override;
- end;
- { TBootstrapModalDemo }
- TBootstrapModalDemo = class(TDemoContainer)
- Private
- FShow : TBootstrapButton;
- FHide : TBootstrapButton;
- FMemo : TTextAreaWidget;
- procedure DoHideDialog(Sender: TObject; Event: TJSEvent);
- procedure DoModalHide(Sender: TObject; El: TJSHTMLElement; Values: TStrings);
- procedure DoShowDialog(Sender: TObject; Event: TJSEvent);
- Function Modal : TBootstrapModal;
- public
- Class Function Demohelp : String; override;
- Class Function Description : String; override;
- class function WebWidgetClass: TCustomWebWidgetClass; override;
- Function GetInspectorInstance: TObject; override;
- Procedure ShowDemo; override;
- end;
- implementation
- { TBootstrapModalDemo }
- procedure TBootstrapModalDemo.DoHideDialog(Sender: TObject; Event: TJSEvent);
- begin
- Modal.Hide;
- end;
- procedure TBootstrapModalDemo.DoModalHide(Sender: TObject; El: TJSHTMLElement; Values: TStrings);
- begin
- Fmemo.Lines.Add('Modal closed and returned '+IntToStr(Values.Count)+' values.');
- FMemo.Lines.AddStrings(Values);
- end;
- procedure TBootstrapModalDemo.DoShowDialog(Sender: TObject; Event: TJSEvent);
- begin
- Modal.Show;
- end;
- function TBootstrapModalDemo.Modal: TBootstrapModal;
- begin
- Result:=WidgetInstance as TBootstrapModal;
- end;
- class function TBootstrapModalDemo.Demohelp: String;
- begin
- Result:='Bootstrap modal showas a modal template and returns list of form values on close (hide)';
- end;
- class function TBootstrapModalDemo.Description: String;
- begin
- Result:='Bootstrap modal demo';
- end;
- class function TBootstrapModalDemo.WebWidgetClass: TCustomWebWidgetClass;
- begin
- Result:=TBootStrapModal;
- end;
- function TBootstrapModalDemo.GetInspectorInstance: TObject;
- begin
- Result:=inherited GetInspectorInstance;
- end;
- Const
- SampleModal =
- '<div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"> '+
- ' <div class="modal-dialog" role="document">'+
- ' <div class="modal-content">'+
- ' <div class="modal-header">'+
- ' <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>'+
- ' <button type="button" class="close" data-dismiss="modal" aria-label="Close">'+
- ' <span aria-hidden="true">×</span>'+
- ' </button>'+
- ' </div>'+
- ' <div class="modal-body">'+
- ' <p>Modal body text goes here.</p>'+
- ' </div>'+
- ' <div class="modal-footer">'+
- ' <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>'+
- ' <button type="button" class="btn btn-primary">Save changes</button>'+
- ' </div>'+
- ' </div>'+
- ' </div>'+
- '</div>';
- procedure TBootstrapModalDemo.ShowDemo;
- Var
- R : TRowWidget;
- C : TColWidget;
- Procedure AddRow;
- begin
- R:=TRowWidget.Create(Self);
- R.Parent:=Self;
- C:=TColWidget.Create(Self);
- C.DefaultColSpan:=6;
- C.Parent:=R;
- end;
- begin
- inherited ShowDemo;
- Modal.Template:=SampleModal;
- AddRow;
- C.DefaultColSpan:=6;
- FShow:=TBootstrapButton.Create(Self);
- FShow.OnClick:=@DoShowDialog;
- FShow.Contextual:=cPrimary;
- FShow.Parent:=C;
- FShow.Text:='Show dialog';
- C:=TColWidget.Create(Self);
- C.Parent:=R;
- C.DefaultColSpan:=6;
- FHide:=TBootstrapButton.Create(Self);
- FHide.OnClick:=@DoHideDialog;
- FHide.Contextual:=cSecondary;
- FHide.Parent:=C;
- FHide.Text:='Hide dialog';
- AddRow;
- With TLabelWidget.Create(Self) do
- begin
- Text:='Log:';
- Parent:=C;
- end;
- AddRow;
- FMemo:=TTextAreaWidget.Create(Self);
- FMemo.Parent:=C;
- FMemo.Columns:=80;
- FMemo.Rows:=25;
- Modal.OnHide:=@DoModalHide;
- Refresh;
- end;
- { TToastManagerDemo }
- procedure TToastManagerDemo.DoShowToast(Sender: TObject; Event: TJSEvent);
- Var
- T : TContextual;
- begin
- if FContextual.SelectedIndex<>-1 then
- T:=TContextual(FContextual.SelectedIndex)
- else
- T:=cNone;
- TToastManager.Instance.ShowToast(FHeader.Value,FBody.Lines.text,T,FClosable.Checked);
- end;
- class function TToastManagerDemo.Demohelp: String;
- begin
- Result:='Toast manager demo: click button to show a toast in the top-left corner';
- end;
- class function TToastManagerDemo.Description: String;
- begin
- Result:='Toast manager demo';
- end;
- class function TToastManagerDemo.WebWidgetClass: TCustomWebWidgetClass;
- begin
- Result:=Nil;
- end;
- function TToastManagerDemo.GetInspectorInstance: TObject;
- begin
- Result:=TToastManager.Instance;
- end;
- procedure TToastManagerDemo.ShowDemo;
- Var
- T : TContextual;
- R : TRowWidget;
- C : TColWidget;
- Procedure AddRow;
- begin
- R:=TRowWidget.Create(Self);
- R.Parent:=Self;
- C:=TColWidget.Create(Self);
- C.Parent:=R;
- end;
- begin
- inherited ShowDemo;
- TToastManager.Instance.ParentID:='toastarea-stack';
- // Contextual
- AddRow;
- FLabelContextual:=TLabelWidget.Create(Self);
- FLabelContextual.Text:='Contextual class for message';
- FContextual:=TSelectWidget.Create(Self);
- For T in TContextual do
- FContextual.Items.Add(ContextualNames[t]);
- FContextual.SelectedIndex:=0;
- FLabelContextual.LabelFor:=FContextual;
- FLabelContextual.Parent:=C;
- FContextual.Parent:=C;
- FContextual.Classes:='form-control';
- // Header
- AddRow;
- FLabelHeader:=TLabelWidget.Create(Self);
- FLabelHeader.Text:='Toast header';
- FHeader:=TTextInputWidget.Create(Self);
- FHeader.Value:='The message title';
- FLabelHeader.LabelFor:=FHeader;
- FLabelHeader.Parent:=C;
- FHeader.Parent:=C;
- FHeader.Classes:='form-control';
- // Body
- AddRow;
- FLabelBody:=TLabelWidget.Create(Self);
- FLabelBody.Text:='Toast body';
- FBody:=TTextAreaWidget.Create(Self);
- FBody.Lines.Text:='A nice message to show';
- FLabelBody.LabelFor:=FBody;
- FLabelBody.Parent:=C;
- FBody.Parent:=C;
- FBody.Classes:='form-control';
- // Closable checkbox
- AddRow;
- FLabelClosable:=TLabelWidget.Create(Self);
- FLabelClosable.Text:='Allow to close toast';
- FClosable:=TCheckboxInputWidget.Create(Self);
- FClosable.Classes:='form-check-input';
- FLabelClosable.LabelFor:=FClosable;
- FLabelClosable.Parent:=C;
- FClosable.Parent:=C;
- // button
- AddRow;
- FShowButton:=TBootstrapButton.Create(Self);
- FShowButton.Text:='Show toast';
- FShowButton.Parent:=C;
- FShowButton.OnClick:=@DoShowToast;
- Refresh;
- end;
- { TBootstrapButtonDemo }
- class function TBootstrapButtonDemo.WebWidgetClass: TCustomWebWidgetClass;
- begin
- Result:=TBootstrapButton;
- end;
- procedure TBootstrapButtonDemo.ShowDemo;
- begin
- inherited ShowDemo;
- WidgetInstance.OnClick:=@DoClick;
- end;
- { TToastManagerDemo }
- class function TSimpleToastWidgetDemo.WebWidgetClass: TCustomWebWidgetClass;
- begin
- Result:=TSimpleToastWidget;
- end;
- procedure TSimpleToastWidgetDemo.ShowDemo;
- begin
- inherited ShowDemo;
- end;
- initialization
- TBootstrapButtonDemo.RegisterDemo;
- TSimpleToastWidgetDemo.RegisterDemo;
- TToastManagerDemo.RegisterDemo;
- TBootstrapModalDemo.Registerdemo;
- end.
|