Bootstrap 5.1 Version
https://getbootstrap.com/docs/5.1/getting-started/introduction/
angularjs CDN
https://angularjs.org/ Version 1.8.2 https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js
index.html
//index.html
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "UTF-8" name = "viewport" content = "width=device-width, initial-scale=1" />
<title>AngularJs Shopping Cart</title>
<link rel = "stylesheet" type = "text/css" href = "https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"/>
</head>
<body ng-app="shoppingcart" ng-controller="shoppingCTR">
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Cairocoders</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container">
<div class="row">
<h3 class = "text-primary">AngularJs Shopping Cart</h3>
<hr style = "border-top:1px dotted #ccc;"/>
<div id = "bg-background" class="col-8">
<h4>PRODUCTS<h4>
<hr style = "border-top:1px groovy #ccc;">
<div id = "product">
<div id = "p_list" ng-repeat = "product in products ">
<span style="font-size:16px;">{{product.p_name}}</span>
<center><img ng-src = "{{product.p_image}}"/></center>
<div><label style="font-size:14px;">Price: ₱{{product.p_price}}</label></div>
<center><button type = "button" class="btn btn-primary" ng-click = "add_cart(product)"> Add to cart</button></center>
</div>
</div>
</div>
<div class="col-4">
<div class = "panel panel-primary">
<div class = "panel-heading">
<h5>MY CART</h5>
</div>
<div class = "panel-body table-responsive">
<table class = "table">
<thead>
<tr>
<th>Product</th>
<th>Price</th>
<th></th>
</tr>
</thead>
<tbody>
<tr ng-repeat = "cart in carts" ng-init = "setTotals(cart)">
<td>{{cart.p_name}}</td>
<td>₱{{cart.p_price}}</td>
<td><button type = "button" ng-click = "remove_cart(cart)" class = "btn btn-danger"> X</button></td>
</tr>
<tr>
<td align = "right">Total</td>
<td>₱{{total}}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
<script>
var app = angular.module("shoppingcart", [])
.controller("shoppingCTR", function($scope){
$scope.carts=[];
$scope.products = [
{p_id: "1", p_name: "Dell Inspiron 15 3501", p_image: "images/1.jpg", p_price: 5900},
{p_id: "2", p_name: "Asus X515 11th Gen intel", p_image: "images/2.jpg", p_price: 6800},
{p_id: "3", p_name: "Lenovo IdealPad 3", p_image: "images/3.jpg", p_price: 4800},
];
$scope.add_cart = function(product){
if(product){
$scope.carts.push({p_id: product.p_id, p_name: product.p_name, p_price: product.p_price});
}
}
$scope.total = 0;
$scope.setTotals = function(cart){
if(cart){
$scope.total += cart.p_price;
}
}
$scope.remove_cart = function(cart){
if(cart){
$scope.carts.splice($scope.carts.indexOf(cart), 1);
$scope.total -= cart.p_price;
}
}
});
</script>
<style>
#bg-background{
background-color:#fff;
padding:10px;
border-radius:5px;
}
#product{
padding:5px;
clear:both;
}
#p_list{
width:200px;
max-width:200px;
height:260px;
padding:5px;
border:1px solid #000;
float:left;
margin:15px;
}
#p_list img{
height:150px;
width:150px;
}
</style>
</body>
</html>