MT.BootstrapLazyLoader.js 1.4.1

dotnet add package MT.BootstrapLazyLoader.js --version 1.4.1
NuGet\Install-Package MT.BootstrapLazyLoader.js -Version 1.4.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MT.BootstrapLazyLoader.js" Version="1.4.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add MT.BootstrapLazyLoader.js --version 1.4.1
#r "nuget: MT.BootstrapLazyLoader.js, 1.4.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install MT.BootstrapLazyLoader.js as a Cake Addin
#addin nuget:?package=MT.BootstrapLazyLoader.js&version=1.4.1

// Install MT.BootstrapLazyLoader.js as a Cake Tool
#tool nuget:?package=MT.BootstrapLazyLoader.js&version=1.4.1

MT.BootstrapLazyloader.js

Lazy Loader For Bootstrap Tabs, Pills and Modals

This package adds lazyloading option to bootstrap tabs, pills and modals so contents will load when the user clicks it.

NOT To use with bootstrap 4 lazyload modal set MTLazyloadBootstrapVersion = 4 in global scope.

How To Use

Install

If you use nuget package manager, write down this command in nuget package manager console

<code>Install-Package MT.BootstrapLazyLoader.js</code>

If yout use Bower package manager, write down this command:

<code>bower install mt-bootstraplazyloader</code>

This packages also depends on: <br /> Jquery >=2.0.0<br /> Bootstrap >=3.0.0<br /> FontAwsome >=4.2.0<br />

If you don't use nuget package manager, just download source code, and copy MT.BootstrapTabsLazyLoader.js into your scripts folder.

Using

Add a reference to /Scripts/MT.BootstrapLazyLoader.js to the scripts part of your code, after jquery.js and bootstrap.js

A) Tabs

A1)- For Using MT.BootstrapLazyloader with tabs, add .lazyload class to nav-tabs (bootstrap tabs ul tag)

A2)- add data-url to the anchor tag of every tab you want to lazyload. this attribute will contain the url of partial pages you want to load it into the tab.

B) Pills

B1) For Using MT.BootstrapLazyloader with pills, add .lazyload class to nav-pills (bootstrap pills ul tag)

B2) add data-url to the anchor tag of every tab you want to lazyload. this attribute will contain the url of partial pages you want to load it into the tab.

C) Modal

C1) For Using MT.BoostrapLazyloader with modals, add .lazyload and .showModal classes to the element that will show modal when clicked.

C2) add data-header to define the Modal's Header.

C3) add data-size to define the Modal's size. (Example: data-size="modal-lg", don't set it if you want default size.)

C4) If you are using lazyload modal on an Anchor element, the href attribute will be used as url and you don't need to add extra data-url.

C5) By Default the Id For lazyload modal is "LazyloadModal", but you can add id attribute to the tag that will used to toggle modal, so the id for modal will be Id + "Modal". with adding id to the toggle you can open multiple inner modals.

C6) (New) to prevent modal from closing by clicking the close button, pressing 'Esc' key or by clicking outside of the modal, you just need to add data-closedisabled='false'.

C7) (New) Now you can define a header template target for modal, this is useful if you want to place a customized html in header. for this you should replace data-header with data-header-template attribute and the value should be a css selector like '#idOfDomElementsThatContainsHtml' or any css selector.

Exmaple Result:

sample modal with html template header

Note: Modal's Markup will automatically append to body, and you don't need to add Modal's markup to body manually.

Callback function after Ajax Loaded

The data-callback attribute can be used to specify a javascript function to be called once the load is done (on the .done() event of the $.get)

Example 1

applied for nav-tabs and nav-pills

<ul class="nav nav-tabs lazyload">
    <li class="active"><a href="#fullDesc" data-toggle="tab">Description</a></li>
    <li><a href="#specificationDetails" data-toggle="tab">Specifications</a></li>
    <li><a href="#relatedProducts" data-toggle="tab" data-url="@Url.Action("relatedproducts", new { Model.Product.Id})">Related Products</a></li>
    <li><a href="#files" data-toggle="tab" data-url="@Url.Action("getproductfiles", new { Model.product.Id })" data-callback="initProducts()">Product Files</a></li>
    <li><a href="#videos" data-toggle="tab" data-url="@Url.Action("getproductvideos", new { Model.product.Id })">Product Videos</a></li>
</ul>

note: If you are lazy loading your initial tab, you can add a trigger('shown.bs.tab') on your initial tab.

MVC Example on the same page as your tabs

@section scripts {
        <script type="text/javascript">
            $(document).ready(function () {                
                $('.nav-tabs a[href="#fullDesc"]').trigger('shown.bs.tab');
            });
        </script>
}

Example 2

<button class="lazyload showModal" data-url="@Url.Action("PreviewProduct", new {id=Model.product.Id})"
     data-header="Preview Product" data-size="modal-lg" data-callback="initProducts()">Preview</button>

The Returned Partial View Content:

<div class="modal-body">
        
</div>
<div class="modal-footer">
        
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        <button type="submit" class="btn btn-primary">Save changes</button>
</div >

There are no supported framework assets in this package.

Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.4.1 750 5/25/2020
1.4.0 524 5/23/2020
1.3.0 1,942 10/23/2016
1.2.4 1,000 8/27/2016
1.2.3 1,015 4/5/2016
1.2.2 1,012 4/3/2016
1.2.0 1,078 2/20/2016

Added Ability to use for Bootstrap 4 by adding a global variable MTLazyloadBootstrapVersion = 4;
In 1.4.1 I added ability to read Header html from an html template, with adding new data attribute data-header-temaplte.