Common Hands-on Sample For AngularJS Developers: Part 1

This article gives you some hands-on tricks in AngularJs. In every web application, we use some common functionalities that is frequently used in pages or modules. Let us see what these common requirements are and how to achieve them. 

Note: There can be other ways of doing this requirement, I have written this article based on my learning. For visualizing the requirements, I have added the output first and then written the code below.

How to check all checkboxes in a check box list

Consider the scenario where we have a list of check boxes and let us say a user wants to select either one of the checkboxes or they need an option to check all the checkboxes from the list of check boxes.

 

Code: CheckAllcheckbox.html

 

  1. <html>  
  2.     <head>  
  3.         <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js"></script>  
  4.         <script>  
  5. angular.module("CheckAllModule", [])  
  6. .controller("checkboxController", function checkboxController($scope) {  
  7. $scope.Items = [{  
  8. Name: "ASP.NET"  
  9. }, {  
  10. Name: "C#"  
  11. },  
  12. {  
  13. Name: "SQL Server"  
  14. },  
  15. {  
  16. Name: "WCF"  
  17. },  
  18. {  
  19. Name: "Angular Js"  
  20. },  
  21. {  
  22. Name: " ASP.NET MVC4"  
  23. }];  
  24. $scope.checkAll = function () {  
  25. if ($scope.selectedAll) {  
  26. $scope.selectedAll = true;  
  27. } else {  
  28. $scope.selectedAll = false;  
  29. }  
  30. angular.forEach($scope.Items, function (item) {  
  31. item.Selected = $scope.selectedAll;  
  32. });  
  33. };  
  34. });  
  35. </script>  
  36.     </head>  
  37.     <body ng-app="CheckAllModule">  
  38.         <div style="width: 800px; border: 2px solid gray;">  
  39.             <b>Checking All Items In a check box List</b>  
  40.             <ul ng-controller="checkboxController">  
  41.                 <li>Check All Skills  
  42.                     <input type="checkbox" ng-model="selectedAll" ng-click="checkAll()" />  
  43.                 </li>  
  44.                 <li ng-repeat="item in Items">  
  45.                     <label>  
  46.                         <b>Skills </b>{{item.Name}}  
  47.                         <input type="checkbox" ng-model="item.Selected" />  
  48.                     </label>  
  49.                 </li>  
  50.             </ul>  
  51.         </div>  
  52.     </body>  
  53. </html>

Code Clarification

Assign some items to the scope and when the user selects, check all of them. This calls the function checkAll(), that does for each loop, iterates through the scope and does the selection.

  1. angular.forEach($scope.Items, function (item)   
  2. {  
  3. item.Selected = $scope.selectedAll;  
  4. }

How to do a Cascading Dropdown in AngularJs

Assume we have a requirement to populate some drop downs on a cascading basis. We have 2 dropdowns, the first one contains a list of countrys or citys and the second drop down contains the country names and city names. Based on the first drop down selection, the second one will be populated and so on.

 
 
Code: CascadingDropdown.html
  1. <!DOCTYPE html>  
  2. <html ng-app="app">  
  3.     <head>  
  4.         <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.9/angular.min.js"></script>  
  5.         <script>  
  6. angular.module("app", [])  
  7. .controller("myCtrl", function ($scope) {  
  8. $scope.County = [  
  9. { CountyName: 'India', countyNumber: '01' },  
  10. { CountyName: 'US', countyNumber: '02' },  
  11. { CountyName: 'UK', countyNumber: '03' }  
  12. ];  
  13. $scope.City = [  
  14. { CityName: 'Mumbai', CityNumber: '01' },  
  15. { CityName: 'Newyork', CityNumber: '02' },  
  16. { CityName: 'London', CityNumber: '03' }  
  17. ];  
  18. $scope.featuretype = [  
  19. { type: 'County', data: $scope.County, displayName: 'CountyName' },  
  20. { type: 'City', data: $scope.City, displayName: 'CityName' }  
  21. ];  
  22. });  
  23. </script>  
  24.     </head>  
  25.     <body>  
  26.         <div ng-app="app">  
  27.             <div ng-controller="myCtrl">  
  28. Select a Country or City:  
  29.                 <select id="FeatureTypeDropdown" ng-model="option1" ng-options="ft as ft.type for ft in featuretype">  
  30.                     <option value="">Select</option>  
  31.                 </select>  
  32.                 <select id="Select1" ng-model="county" ng-options="c as c[option1.displayName] for c in option1.data">  
  33.                     <option value="">Select</option>  
  34.                 </select>  
  35.             </div>  
  36.         </div>  
  37.     </body>  
  38. </html>

Code Clarification

Assigned some items to the scope and filtering the data based on the selection of the first dropdown.

Focussing an input TextBox in AngularJs

In AngularJs, the JavaScript codes are implemented in a different way. In earlier JavaScript, we were doing document.getElementById(“<controlName>).focus() or in jQuery $(“<IdOfthecontrol>”).focus().

Now, let us see how to write this.


Code: FocusingInput-2.html

 

  1. <!doctype html><html ng-app="sampleapp"><head><script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.4/angular.js"></script><script>  
  2. var myapp = angular.module('sampleapp', []);  
  3. myapp.controller('samplecontoller', function ($scope) {  
  4. });  
  5. angular.module('sampleapp').directive('focus',  
  6. function ($timeout) {  
  7. return {  
  8. scope: {  
  9. trigger: '@focus'  
  10. },  
  11. link: function (scope, element) {  
  12. scope.$watch('trigger', function (value) {  
  13. if (value === "true") {  
  14. $timeout(function () {  
  15. element[0].focus();  
  16. });  
  17. }  
  18. });  
  19. }  
  20. };  
  21. }  
  22. );  
  23. </script></head><body><div ng-controller="samplecontoller" style="border: 2px solid gray; width: 500px;">  
  24. <h1>Focusing The Textbox : </h1>  
  25. <b>With Out Focus :</b><input type="text">  
  26. <br><br><b>With Focus : </b>  
  27. <input type="text" focus="true">  
  28. <br><br></div>  
  29. </body>  
  30. </html>

Code Clarification

Written a custom directive named "focus" and called it with the TextBox that wanted to focus.
<input type="text" focus="true">

* Rating in a web page in AngularJs

Many of us know that web pages have rating or voting options. Let us see how to do this.

 
 

Code StarRating.html

 

  1. <!DOCTYPE html>  
  2. <html ng-app="app">  
  3.     <head lang="en">  
  4.         <meta charset="UTF-8">  
  5.             <title>Stare Rating for a Review</title>  
  6.             <style type="text/css">  
  7. .rating{  
  8. color: red;  
  9. margin: 0;  
  10. padding: 0;  
  11. }  
  12. ul.rating {  
  13. display: inline-block;  
  14. }  
  15. .rating li {  
  16. list-style-type: none;  
  17. display: inline-block;  
  18. padding: 1px;  
  19. text-align: center;  
  20. font-weight: bold;  
  21. cursor: pointer;  
  22. }  
  23. .rating .filled {  
  24. color: #21568b;  
  25. }  
  26. </style>  
  27.             <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"></script>  
  28.             <script src="../scripts/angular.min.js"></script>  
  29.             <script src="../scripts/angular.js"></script>  
  30.             <script type="text/javascript">  
  31. angular.module('app', [])  
  32. .controller('RatingCtrl', function ($scope) {  
  33. $scope.rating = 5;  
  34. $scope.rateFunction = function (rating) {  
  35. alert('Rating selected - ' + rating);  
  36. };  
  37. })  
  38. .directive('starRating',  
  39. function () {  
  40. return {  
  41. restrict: 'A',  
  42. template: '  
  43.                 <ul class="rating">'  
  44. + '   
  45.                     <li ng-repeat="star in stars" ng-class="star" ng-click="toggle($index)">'  
  46. + '\u2605'  
  47. + '</li>'  
  48. + '  
  49.                 </ul>',  
  50. scope: {  
  51. ratingValue: '=',  
  52. max: '=',  
  53. onRatingSelected: '&'  
  54. },  
  55. link: function (scope, elem, attrs) {  
  56. var updateStars = function () {  
  57. scope.stars = [];  
  58. for (var i = 0; i < scope.max; i++) {  
  59. scope.stars.push({  
  60. filled: i < scope.ratingValue  
  61. });  
  62. }  
  63. };  
  64. scope.toggle = function (index) {  
  65. scope.ratingValue = index + 1;  
  66. scope.onRatingSelected({  
  67. rating: index + 1  
  68. });  
  69. };  
  70. scope.$watch('ratingValue',  
  71. function (oldVal, newVal) {  
  72. if (newVal) {  
  73. updateStars();  
  74. }  
  75. }  
  76. );  
  77. }  
  78. };  
  79. }  
  80. );  
  81.             </script>  
  82.         </head>  
  83.         <body ng-app="app" ng-controller="RatingCtrl">  
  84.             <h3>Rating</h3>  
  85.             <div ng-init="rating = star.rating + 1"></div>  
  86.             <div class="star-rating" star-rating rating-value="rating" data-max="5" on-rating-selected="rateFunction(rating)"></div>  
  87.         </body>  
  88.     </html>
Code Clarification

Written a custom directive named "starRating" and called it for a div . Also, incremented or decremented the rating based on the user selection.

Open a Dialog on click of a Button in AngularJs

In many requirements, we have come across a situation that we wanted to show a dialog box in the page. Now, let us do it in AngularJs. 

 
Code openaDialogandfocus.html

 

  1. <!doctype html><html ng-app="app">  
  2. <head><script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.4/angular.js">  
  3. </script>  
  4. <script src="http://angular-ui.github.com/bootstrap/ui-bootstrap-tpls-0.1.0.js">  
  5. </script><link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap-combined.min.css" rel="stylesheet">  
  6. <script>  
  7. var app = angular.module('app', ['ui.bootstrap']);  
  8. var ModalDemoCtrl = function ($scope) {  
  9. $scope.open = function () {  
  10. $scope.shouldBeOpen = true;  
  11. };  
  12. $scope.close = function () {  
  13. $scope.closeMsg = 'I was closed at: ' + new Date();  
  14. $scope.shouldBeOpen = false;  
  15. };  
  16. };  
  17. app.directive('focusMe', function ($timeout, $parse) {  
  18. return {  
  19. link: function (scope, element, attrs) {  
  20. var model = $parse(attrs.focusMe);  
  21. scope.$watch(model, function (value) {  
  22. console.log('value=', value);  
  23. if (value === true) {  
  24. $timeout(function () {  
  25. element[0].focus();  
  26. });  
  27. }  
  28. });  
  29. element.bind('blur', function () {  
  30. console.log('blur')  
  31. scope.$apply(model.assign(scope, false));  
  32. })  
  33. }  
  34. };  
  35. });  
  36. </script></head><body><div ng-controller="ModalDemoCtrl">  
  37. <button class="btn" ng-click="open()">Click Here to Login</button>  
  38. <div modal="shouldBeOpen" close="close()">  
  39. <div class="modal-header">  
  40. <h4>Log In</h4></div><div class="modal-body">  
  41. <b>UserName: </b><input type="text" focus-me="shouldBeOpen">  
  42. <br /><b>Password :</b><input type="text" />  
  43. </div><div class="modal-footer">  
  44. <button class="btn btn-warning cancel" ng-click="close()">Log In</button>  
  45.     </div></div></div>  
  46.     </body>  
  47.     </html>
Code Clarification

This is a simple code that opens a dialog on the click of a button.

How to write Switch Case in AngularJs

Let us see an example to write a switch case in AngularJs.

 
Code: switchcase.html

 

  1. <!DOCTYPE html>  
  2. <html>  
  3.     <head>  
  4.         <title>Switch Case in AngularJS</title>  
  5.         <!--AngularJS CDN Link-->  
  6.         <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js"></script>  
  7.         <script type="text/javascript">  
  8. (function (angular) {  
  9. angular.module('modSwitch', [])  
  10. .controller('ControllerSwitch', ['$scope', function ($scope) {  
  11. $scope.options = ['ICCWC', 'ICCT20', 'IPL', 'CLT'];  
  12. $scope.selection = $scope.options[0];  
  13. }]);  
  14. })(window.angular);  
  15. </script>  
  16.     </head>  
  17.     <body ng-app="modSwitch">  
  18.         <div ng-controller="ControllerSwitch">  
  19.             <select ng-model="selection" ng-options="item for item in options"></select>  
  20.             <hr />  
  21.             <div ng-switch on="selection">  
  22.                 <div ng-switch-when="ICCWC">ICCWC Stands For ICC world cup .</div>  
  23.                 <div ng-switch-when="ICCT20">ICCT20 stands for 20-20 world cup.</div>  
  24.                 <div ng-switch-when="IPL">IPL stands for Indian Premiur League.</div>  
  25.                 <div ng-switch-when="CLT">CLT Stands for Champions League trophy</div>  
  26.             </div>  
  27.         </div>  
  28.     </body>  
  29. </html>

Code Clarification

We have a dropdown with some options and based on the selection we need to pass the model as the selection object and show it.

 

  1. div ng-switch on="selection">  
  2.   
  3. <div ng-switch-when="ICCWC">ICCWC Stands For ICC world cup </div>  

Allowing user to enter only numeric character in AngularJs

 

FocusingInput-2.html

 

  1. <!DOCTYPE html>  
  2. <html ng-app="myapp"  
  3.     xmlns="http://www.w3.org/1999/xhtml">  
  4.     <head>  
  5.         <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js"></script>  
  6.         <script>  
  7. var $scope;  
  8. var app = angular.module('myapp', []);  
  9. app.controller('Ctrl', function ($scope) {  
  10. $scope.wks = { number: 1, validity: true }  
  11. });  
  12. app.directive('isNumber', function () {  
  13. return {  
  14. require: 'ngModel',  
  15. link: function (scope) {  
  16. scope.$watch('wks.number', function (newValue, oldValue) {  
  17. var arr = String(newValue).split("");  
  18. if (arr.length === 0) return;  
  19. if (arr.length === 1 && (arr[0] == '-' || arr[0] === '.')) return;  
  20. if (arr.length === 2 && newValue === '-.') return;  
  21. if (isNaN(newValue)) {  
  22. scope.wks.number = oldValue;  
  23. }  
  24. });  
  25. }  
  26. };  
  27. });  
  28. </script>  
  29.     </head>  
  30.     <body ng-app="myapp">  
  31.         <form ng-app="myapp" name="myform" novalidate>  
  32.             <div ng-controller="Ctrl">  
  33.                 <input name="number" is-number ng-model="wks.number">  
  34.                     <span ng-show="!wks.validity">Value is invalid</span>  
  35.                 </div>  
  36.             </form>  
  37.         </body>  
  38.     </html>

Code Clarification

Created a custom directive named 'isNumber' and assigned it to the TextBox.

Showing number of characters left in a multiline TextBox in AngularJs

 

FocusingInput-2.html

 

  1. <!DOCTYPE html>  
  2. <html ng-app="myapp"  
  3.     xmlns="http://www.w3.org/1999/xhtml">  
  4.     <head>  
  5.         <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js"></script>  
  6.         <script>  
  7. var $scope;  
  8. var app = angular.module('myapp', []);  
  9. app.controller('Ctrl', function ($scope) {  
  10. $scope.wks = { number: 1, validity: true }  
  11. });  
  12. app.directive('isNumber', function () {  
  13. return {  
  14. require: 'ngModel',  
  15. link: function (scope) {  
  16. scope.$watch('wks.number', function (newValue, oldValue) {  
  17. var arr = String(newValue).split("");  
  18. if (arr.length === 0) return;  
  19. if (arr.length === 1 && (arr[0] == '-' || arr[0] === '.')) return;  
  20. if (arr.length === 2 && newValue === '-.') return;  
  21. if (isNaN(newValue)) {  
  22. scope.wks.number = oldValue;  
  23. }  
  24. });  
  25. }  
  26. };  
  27. });  
  28. </script>  
  29.     </head>  
  30.     <body ng-app="myapp">  
  31.         <form ng-app="myapp" name="myform" novalidate>  
  32.             <div ng-controller="Ctrl"></div>  
  33.             <textarea ng-model="test" ng-trim="false" maxlength="100"></textarea>  
  34.             <span>{{100 - test.length}} left</span>  
  35.         </form>  
  36.     </body>  
  37. </html>

Code Clarification

Created text areas that subtract the model left from the max length and show it.

Showing Data in Treeview Manner in AngularJs

In one of my pages in the project, we wanted to show a data such as treeview. Here is the demonstration.

 

Code: Index.html

  1. <!DOCTYPE html>  
  2. <html ng-app="treeview">  
  3.     <head>  
  4.         <meta charset="utf-8">  
  5.             <title>Example to Create Treeview using AngularJS</title>  
  6.             <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-rc.0/angular.min.js"></script>  
  7.             <script>    
  8. angular.module('treeview', [])    
  9. .directive('ngTree', function () {    
  10. return {    
  11. restrict: 'E',    
  12. transclude: true,    
  13. controller: function ($scope) {    
  14. $scope.showStates = function (item) {    
  15. item.active = !item.active;    
  16. };    
  17. $scope.items = [    
  18. {    
  19. country: "INDIA",    
  20. states: [    
  21. { state: "Delhi" },    
  22. { state: "Mumbai" },    
  23. { state: "bangalore" },    
  24. { state: "Chennai" },    
  25. { state: "Kolkata" }    
  26. ]    
  27. },    
  28. {    
  29. country: "UNITED STATES",    
  30. states: [    
  31. { state: "Alabama" },    
  32. { state: "California" },    
  33. { state: "Hawaii" },    
  34. { state: "Michigan" },    
  35. { state: "New York" },    
  36. { state: "Washington" }    
  37. ]    
  38. }    
  39. ];    
  40. },    
  41. templateUrl: 'treeview.html'    
  42. };    
  43. });    
  44. </script>  
  45.         </head>  
  46.         <body>  
  47.             <div style="width:500px ;border:1px solid gray;">  
  48.                 <b>Treeview structure Data in Angular Js</b>  
  49.                 <ng-tree></ng-tree>  
  50.             </div>  
  51.         </body>  
  52.     </html>
Treeview.html

 

  1. <ul>  
  2.     <li ng-repeat="item in items" ng-click="showStates(item)">  
  3.         <span>{{item.country}}</span>  
  4.         <ul>  
  5.             <li ng-repeat="subItem in item.states" ng-show="item.active">  
  6.                 <span>{{subItem.state}}</span>  
  7.             </li>  
  8.         </ul>  
  9.     </li>  
  10. </ul>  
  11. Code Clarification:  
  12. Created a custom directive named 'ngTree'and assigned it to the div as  
  13. <div style="width:500px ;border:1px solid gray;">  
  14.     <b>Treeview structure Data in Angular Js</b>  
  15.     <ng-tree></ng-tree>  
  16. </div> 

How to show data in Jqgrid in AngularJs

The most common requirement for any project is showing the data in a tabular fashion such as grid. Here is a sample to show the data in a jqgrid. Jqgrid is a powerful grid in terms of performance and functionality.

Code: JqgriddataBinding.html

 

  1. <!DOCTYPE html>  
  2. <html ng-app="myApp">  
  3.     <head>  
  4.         <script data-require="jquery@*" data-semver="2.0.3" src="http://code.jquery.com/jquery-2.0.3.min.js"></script>  
  5.         <link data-require="jqgrid@*" data-semver="4.5.2" rel="stylesheet" href="//cdn.jsdelivr.net/jqgrid/4.5.2/css/ui.jqgrid.css" />  
  6.         <script data-require="jqgrid@*" data-semver="4.5.2" src="//cdn.jsdelivr.net/jqgrid/4.5.2/jquery.jqGrid.js"></script>  
  7.         <script data-require="angular.js@*" data-semver="1.2.0-rc3-nonmin" src="http://code.angularjs.org/1.2.0-rc.3/angular.js"></script>  
  8.         <link rel="stylesheet" type="text/css" media="screen" href="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.10.3/themes/redmond/jquery-ui.css" />  
  9.         <style type="text/css"></style>  
  10.         <script>  
  11. var myApp = angular.module('myApp', []);  
  12. myApp.directive('ngJqGrid', function () {  
  13. return {  
  14. restrict: 'E',  
  15. scope: {  
  16. config: '=',  
  17. data: '=',  
  18. },  
  19. link: function (scope, element, attrs) {  
  20. var table;  
  21. scope.$watch('config', function (newValue) {  
  22. element.children().empty();  
  23. table = angular.element('  
  24.             <table></table>');  
  25. element.append(table);  
  26. $(table).jqGrid(newValue);  
  27. });  
  28. scope.$watch('data', function (newValue, oldValue) {  
  29. var i;  
  30. for (i = oldValue.length - 1; i >= 0; i--) {  
  31. $(table).jqGrid('delRowData', i);  
  32. }  
  33. for (i = 0; i < newValue.length; i++) {  
  34. $(table).jqGrid('addRowData', i, newValue[i]);  
  35. }  
  36. });  
  37. }  
  38. };  
  39. });  
  40. myApp.controller('MyController', function ($scope) {  
  41. $scope.config = {  
  42. datatype: "local",  
  43. height: 250,  
  44. colNames: ['Inv No', 'Date', 'Client', 'Amount', 'Tax', 'Total', 'Notes'],  
  45. colModel: [  
  46. { name: 'id', index: 'id', width: 60, sorttype: "int" },  
  47. { name: 'invdate', index: 'invdate', width: 90, sorttype: "date" },  
  48. { name: 'name', index: 'name', width: 100 },  
  49. { name: 'amount', index: 'amount', width: 80, align: "right", sorttype: "float" },  
  50. { name: 'tax', index: 'tax', width: 80, align: "right", sorttype: "float" },  
  51. { name: 'total', index: 'total', width: 80, align: "right", sorttype: "float" },  
  52. { name: 'note', index: 'note', width: 150, sortable: false }  
  53. ],  
  54. multiselect: true,  
  55. caption: "Binding A test data to JQgrid in Angular JS"  
  56. };  
  57. $scope.data = [  
  58. { id: "1", invdate: "2007-10-01", name: "test", note: "note", amount: "200.00", tax: "10.00", total: "210.00" },  
  59. { id: "2", invdate: "2007-10-02", name: "test2", note: "note2", amount: "300.00", tax: "20.00", total: "320.00" },  
  60. { id: "3", invdate: "2007-09-01", name: "test3", note: "note3", amount: "400.00", tax: "30.00", total: "430.00" },  
  61. { id: "4", invdate: "2007-10-04", name: "test", note: "note", amount: "200.00", tax: "10.00", total: "210.00" },  
  62. { id: "5", invdate: "2007-10-05", name: "test2", note: "note2", amount: "300.00", tax: "20.00", total: "320.00" },  
  63. { id: "6", invdate: "2007-09-06", name: "test3", note: "note3", amount: "400.00", tax: "30.00", total: "430.00" },  
  64. { id: "7", invdate: "2007-10-04", name: "test", note: "note", amount: "200.00", tax: "10.00", total: "210.00" },  
  65. { id: "8", invdate: "2007-10-03", name: "test2", note: "note2", amount: "300.00", tax: "20.00", total: "320.00" },  
  66. { id: "9", invdate: "2007-09-01", name: "test3", note: "note3", amount: "400.00", tax: "30.00", total: "430.00" }  
  67. ];  
  68. });  
  69.         </script>  
  70.     </head>  
  71.     <body ng-app="myApp" ng-controller="MyController">  
  72.         <ng-jq-grid config="config" data="data"></ng-jq-grid>  
  73.     </body>  
  74. </html>

Code Clarification

Created a custom directive named "ng-jq-grid" and assigned data to the scope in JSON format. In the link function, we are binding the following.

 

  1. link: function(scope, element, attrs)   
  2. {  
  3.     var table;  
  4.     scope.$watch('config', function(newValue)   
  5.     {  
  6.         element.children().empty();  
  7.         table = angular.element('<table></table>');  
  8.         element.append(table);  
  9.         $(table).jqGrid(newValue);  
  10.     });  
  11. }

We have now completed with 10 hands-on examples that are commonly used in any project.

In the next article, I will continue with the next 10 set of hands-on Tricks. I hope these hands-on samples will be useful. Thanks for reading!


Similar Articles