diff --git a/app/assets/javascripts/darkswarm/controllers/shop_variant_controller.js.coffee b/app/assets/javascripts/darkswarm/controllers/shop_variant_controller.js.coffee index d6772d7e89..b47cba4aef 100644 --- a/app/assets/javascripts/darkswarm/controllers/shop_variant_controller.js.coffee +++ b/app/assets/javascripts/darkswarm/controllers/shop_variant_controller.js.coffee @@ -1,4 +1,4 @@ -angular.module('Darkswarm').controller "ShopVariantCtrl", ($scope, $modal, Cart) -> +angular.module('Darkswarm').controller "ShopVariantCtrl", ($scope, $modal, Cart, Shopfront) -> $scope.updateCart = (line_item) -> Cart.adjust($scope.variant.line_item) @@ -69,3 +69,6 @@ angular.module('Darkswarm').controller "ShopVariantCtrl", ($scope, $modal, Cart) $scope.addBulk = (quantity) -> $scope.add(quantity) $modal.open(templateUrl: "bulk_buy_modal.html", scope: $scope, windowClass: "product-bulk-modal") + + $scope.displayRemainingInStock = -> + Shopfront.shopfront.preferred_product_stock_display && $scope.available() <= 3 && !$scope.variant.line_item.quantity diff --git a/app/serializers/api/enterprise_shopfront_serializer.rb b/app/serializers/api/enterprise_shopfront_serializer.rb index 29197dcb38..e777318127 100644 --- a/app/serializers/api/enterprise_shopfront_serializer.rb +++ b/app/serializers/api/enterprise_shopfront_serializer.rb @@ -9,7 +9,7 @@ module Api :instagram, :linkedin, :twitter, :facebook, :is_primary_producer, :is_distributor, :phone, :visible, :email_address, :hash, :logo, :promo_image, :path, :category, :active, :producers, :orders_close_at, :hubs, :taxons, :supplied_taxons, :pickup, - :delivery + :delivery, :preferred_product_stock_display has_one :address, serializer: Api::AddressSerializer has_many :supplied_properties, serializer: Api::PropertySerializer diff --git a/app/views/shop/products/_shop_variant_no_group_buy.html.haml b/app/views/shop/products/_shop_variant_no_group_buy.html.haml index 2157f548c7..7885a2e6b4 100644 --- a/app/views/shop/products/_shop_variant_no_group_buy.html.haml +++ b/app/views/shop/products/_shop_variant_no_group_buy.html.haml @@ -13,6 +13,8 @@ %button.variant-quantity{type: "button", ng: {click: "add(1)", disabled: "!canAdd(1)"}} -# U+FF0B Fullwidth Plus Sign + + .variant-remaining-stock{ng: {if: "displayRemainingInStock()"}} + {{ "js.shopfront.variant.remaining_in_stock" | t:{quantity: available()} }} .variant-quantity-display{ng: {class: "{visible: variant.line_item.quantity}"}} {{ "js.shopfront.variant.quantity_in_cart" | t:{quantity: variant.line_item.quantity || 0} }} %input{type: :hidden, diff --git a/app/webpacker/css/darkswarm/_shop-inputs.scss b/app/webpacker/css/darkswarm/_shop-inputs.scss index bf902f55b9..98f4f7fecf 100644 --- a/app/webpacker/css/darkswarm/_shop-inputs.scss +++ b/app/webpacker/css/darkswarm/_shop-inputs.scss @@ -71,12 +71,15 @@ button.variant-quantity { } } -.variant-quantity-display { - display: inline-block; +.variant-quantity-display, .variant-remaining-stock { font-size: 0.875em; margin-top: 0.25em; text-align: center; width: 7rem; + display: inline-block; +} + +.variant-quantity-display { visibility: hidden; &.visible { @@ -84,6 +87,10 @@ button.variant-quantity { } } +.variant-remaining-stock { + color: $red-500; +} + button.bulk-buy.variant-quantity { background-color: transparent; border: .1em solid $grey-200; diff --git a/config/locales/en.yml b/config/locales/en.yml index b2ce5e425e..953b7afec5 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -3106,6 +3106,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using add_to_cart: "Add" in_cart: "in cart" quantity_in_cart: "%{quantity} in cart" + remaining_in_stock: "Only %{quantity} left" bulk_buy_modal: min_quantity: "Min quantity" max_quantity: "Max quantity"