Upgraded Font Awesome to v6

This commit is contained in:
Bernd Bestel 2022-04-04 20:10:29 +02:00
parent d871fe7aa8
commit e336f24225
No known key found for this signature in database
GPG Key ID: 71BD34C0D4891300
85 changed files with 514 additions and 453 deletions

View File

@ -5,7 +5,7 @@
"@danielfarrell/bootstrap-combobox": "https://github.com/berrnd/bootstrap-combobox.git#master",
"@ericblade/quagga2": "^1.2.1",
"@fontsource/noto-sans": "^4.4.5",
"@fortawesome/fontawesome-free": "^5.14.0",
"@fortawesome/fontawesome-free": "^6.1.1",
"animate.css": "^3.7.2",
"bootbox": "^5.3.2",
"bootstrap": "^4.5.2",

View File

@ -169,9 +169,9 @@ function RefreshStatistics()
}
});
$("#info-due-today-batteries").html('<span class="d-block d-md-none">' + dueTodayCount + ' <i class="fas fa-clock"></i></span><span class="d-none d-md-block">' + __n(dueTodayCount, '%s battery is due to be charged today', '%s batteries are due to be charged today'));
$("#info-due-soon-batteries").html('<span class="d-block d-md-none">' + dueSoonCount + ' <i class="fas fa-clock"></i></span><span class="d-none d-md-block">' + __n(dueSoonCount, '%s battery is due to be charged', '%s batteries are due to be charged') + ' ' + __n(nextXDays, 'within the next day', 'within the next %s days'));
$("#info-overdue-batteries").html('<span class="d-block d-md-none">' + overdueCount + ' <i class="fas fa-times-circle"></i></span><span class="d-none d-md-block">' + __n(overdueCount, '%s battery is overdue to be charged', '%s batteries are overdue to be charged'));
$("#info-due-today-batteries").html('<span class="d-block d-md-none">' + dueTodayCount + ' <i class="fa-solid fa-clock"></i></span><span class="d-none d-md-block">' + __n(dueTodayCount, '%s battery is due to be charged today', '%s batteries are due to be charged today'));
$("#info-due-soon-batteries").html('<span class="d-block d-md-none">' + dueSoonCount + ' <i class="fa-solid fa-clock"></i></span><span class="d-none d-md-block">' + __n(dueSoonCount, '%s battery is due to be charged', '%s batteries are due to be charged') + ' ' + __n(nextXDays, 'within the next day', 'within the next %s days'));
$("#info-overdue-batteries").html('<span class="d-block d-md-none">' + overdueCount + ' <i class="fa-solid fa-times-circle"></i></span><span class="d-none d-md-block">' + __n(overdueCount, '%s battery is overdue to be charged', '%s batteries are overdue to be charged'));
},
function(xhr)
{

View File

@ -22,7 +22,7 @@
function(result)
{
Grocy.FrontendHelpers.EndUiBusy("batterytracking-form");
toastr.success(__t('Tracked charge cycle of battery %1$s on %2$s', batteryDetails.battery.name, $('#tracked_time').find('input').val()) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoChargeCycle(' + result.id + ')"><i class="fas fa-undo"></i> ' + __t("Undo") + '</a>');
toastr.success(__t('Tracked charge cycle of battery %1$s on %2$s', batteryDetails.battery.name, $('#tracked_time').find('input').val()) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoChargeCycle(' + result.id + ')"><i class="fa-solid fa-undo"></i> ' + __t("Undo") + '</a>');
Grocy.Components.BatteryCard.Refresh($('#battery_id').val());
$('#battery_id').val('');

View File

@ -270,10 +270,10 @@ function RefreshStatistics()
}
});
$("#info-due-today-chores").html('<span class="d-block d-md-none">' + dueTodayCount + ' <i class="fas fa-clock"></i></span><span class="d-none d-md-block">' + __n(dueTodayCount, '%s chore is due to be done today', '%s chores are due to be done today'));
$("#info-due-soon-chores").html('<span class="d-block d-md-none">' + dueSoonCount + ' <i class="fas fa-clock"></i></span><span class="d-none d-md-block">' + __n(dueSoonCount, '%s chore is due to be done', '%s chores are due to be done') + ' ' + __n(nextXDays, 'within the next day', 'within the next %s days'));
$("#info-overdue-chores").html('<span class="d-block d-md-none">' + overdueCount + ' <i class="fas fa-times-circle"></i></span><span class="d-none d-md-block">' + __n(overdueCount, '%s chore is overdue to be done', '%s chores are overdue to be done'));
$("#info-assigned-to-me-chores").html('<span class="d-block d-md-none">' + assignedToMeCount + ' <i class="fas fa-exclamation-circle"></i></span><span class="d-none d-md-block">' + __n(assignedToMeCount, '%s chore is assigned to me', '%s chores are assigned to me'));
$("#info-due-today-chores").html('<span class="d-block d-md-none">' + dueTodayCount + ' <i class="fa-solid fa-clock"></i></span><span class="d-none d-md-block">' + __n(dueTodayCount, '%s chore is due to be done today', '%s chores are due to be done today'));
$("#info-due-soon-chores").html('<span class="d-block d-md-none">' + dueSoonCount + ' <i class="fa-solid fa-clock"></i></span><span class="d-none d-md-block">' + __n(dueSoonCount, '%s chore is due to be done', '%s chores are due to be done') + ' ' + __n(nextXDays, 'within the next day', 'within the next %s days'));
$("#info-overdue-chores").html('<span class="d-block d-md-none">' + overdueCount + ' <i class="fa-solid fa-times-circle"></i></span><span class="d-none d-md-block">' + __n(overdueCount, '%s chore is overdue to be done', '%s chores are overdue to be done'));
$("#info-assigned-to-me-chores").html('<span class="d-block d-md-none">' + assignedToMeCount + ' <i class="fa-solid fa-exclamation-circle"></i></span><span class="d-none d-md-block">' + __n(assignedToMeCount, '%s chore is assigned to me', '%s chores are assigned to me'));
},
function(xhr)
{

View File

@ -27,7 +27,7 @@
Grocy.Components.UserfieldsForm.Save(function()
{
Grocy.FrontendHelpers.EndUiBusy("choretracking-form");
toastr.success(__t('Tracked execution of chore %1$s on %2$s', choreDetails.chore.name, Grocy.Components.DateTimePicker.GetValue()) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoChoreExecution(' + result.id + ')"><i class="fas fa-undo"></i> ' + __t("Undo") + '</a>');
toastr.success(__t('Tracked execution of chore %1$s on %2$s', choreDetails.chore.name, Grocy.Components.DateTimePicker.GetValue()) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoChoreExecution(' + result.id + ')"><i class="fa-solid fa-undo"></i> ' + __t("Undo") + '</a>');
Grocy.Components.ChoreCard.Refresh($('#chore_id').val());
$('#chore_id').val('');

View File

@ -234,7 +234,7 @@ $(document).on("click", "#barcodescanner-start-button", async function(e)
closeButton: true,
buttons: {
torch: {
label: '<i class="far fa-lightbulb"></i>',
label: '<i class="fa-regular fa-lightbulb"></i>',
className: 'btn-warning responsive-button torch',
callback: function()
{
@ -291,11 +291,11 @@ Grocy.Components.BarcodeScanner.Init = function()
{
if ($(this).hasAttr("disabled"))
{
$(this).after('<a id="barcodescanner-start-button" class="btn btn-sm btn-primary text-white disabled" data-target="' + $(this).attr("data-target") + '"><i class="fas fa-camera"></i></a>');
$(this).after('<a id="barcodescanner-start-button" class="btn btn-sm btn-primary text-white disabled" data-target="' + $(this).attr("data-target") + '"><i class="fa-solid fa-camera"></i></a>');
}
else
{
$(this).after('<a id="barcodescanner-start-button" class="btn btn-sm btn-primary text-white" data-target="' + $(this).attr("data-target") + '"><i class="fas fa-camera"></i></a>');
$(this).after('<a id="barcodescanner-start-button" class="btn btn-sm btn-primary text-white" data-target="' + $(this).attr("data-target") + '"><i class="fa-solid fa-camera"></i></a>');
}
Grocy.Components.BarcodeScanner.InitDone = true;

View File

@ -8,15 +8,15 @@ $('#calendar').datetimepicker(
calendarWeeks: true,
locale: moment.locale(),
icons: {
time: 'far fa-clock',
date: 'far fa-calendar',
up: 'fas fa-arrow-up',
down: 'fas fa-arrow-down',
previous: 'fas fa-chevron-left',
next: 'fas fa-chevron-right',
today: 'fas fa-calendar-check',
clear: 'far fa-trash-alt',
close: 'far fa-times-circle'
time: 'fa-regular fa-clock',
date: 'fa-regular fa-calendar',
up: 'fa-solid fa-arrow-up',
down: 'fa-solid fa-arrow-down',
previous: 'fa-solid fa-chevron-left',
next: 'fa-solid fa-chevron-right',
today: 'fa-solid fa-calendar-check',
clear: 'fa-regular fa-trash-alt',
close: 'fa-regular fa-times-circle'
},
keepOpen: true,
inline: true,

View File

@ -95,15 +95,15 @@ Grocy.Components.DateTimePicker.Init = function(reInit = false)
defaultDate: startDate,
useCurrent: false,
icons: {
time: 'far fa-clock',
date: 'far fa-calendar',
up: 'fas fa-arrow-up',
down: 'fas fa-arrow-down',
previous: 'fas fa-chevron-left',
next: 'fas fa-chevron-right',
today: 'fas fa-calendar-day',
clear: 'far fa-trash-alt',
close: 'fas fa-check'
time: 'fa-regular fa-clock',
date: 'fa-regular fa-calendar',
up: 'fa-solid fa-arrow-up',
down: 'fa-solid fa-arrow-down',
previous: 'fa-solid fa-chevron-left',
next: 'fa-solid fa-chevron-right',
today: 'fa-solid fa-calendar-day',
clear: 'fa-regular fa-trash-alt',
close: 'fa-solid fa-check'
},
sideBySide: true,
keyBinds: {

View File

@ -95,15 +95,15 @@ Grocy.Components.DateTimePicker2.Init = function(reInit = false)
defaultDate: startDate,
useCurrent: false,
icons: {
time: 'far fa-clock',
date: 'far fa-calendar',
up: 'fas fa-arrow-up',
down: 'fas fa-arrow-down',
previous: 'fas fa-chevron-left',
next: 'fas fa-chevron-right',
today: 'fas fa-calendar-day',
clear: 'far fa-trash-alt',
close: 'fas fa-check'
time: 'fa-regular fa-clock',
date: 'fa-regular fa-calendar',
up: 'fa-solid fa-arrow-up',
down: 'fa-solid fa-arrow-down',
previous: 'fa-solid fa-chevron-left',
next: 'fa-solid fa-chevron-right',
today: 'fa-solid fa-calendar-day',
clear: 'fa-regular fa-trash-alt',
close: 'fa-solid fa-check'
},
sideBySide: true,
keyBinds: {

View File

@ -255,7 +255,7 @@ $('#product_id_text_input').on('blur', function(e)
if (!Grocy.FeatureFlags.GROCY_FEATURE_FLAG_DISABLE_BROWSER_BARCODE_CAMERA_SCANNING)
{
buttons.retrycamerascanning = {
label: '<strong>C</strong> <i class="fas fa-camera"></i>',
label: '<strong>C</strong> <i class="fa-solid fa-camera"></i>',
className: 'btn-primary responsive-button retry-camera-scanning-button',
callback: function()
{

View File

@ -82,11 +82,11 @@
if (productDetails.product.enable_tare_weight_handling == 1 && !jsonData.exact_amount)
{
var successMessage = __t('Removed %1$s of %2$s from stock', Math.abs(jsonForm.amount - (parseFloat(productDetails.product.tare_weight) + parseFloat(productDetails.stock_amount))) + " " + __n(jsonForm.amount, productDetails.quantity_unit_stock.name, productDetails.quantity_unit_stock.name_plural, true), productDetails.product.name) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockTransaction(\'' + bookingResponse[0].transaction_id + '\')"><i class="fas fa-undo"></i> ' + __t("Undo") + '</a>';
var successMessage = __t('Removed %1$s of %2$s from stock', Math.abs(jsonForm.amount - (parseFloat(productDetails.product.tare_weight) + parseFloat(productDetails.stock_amount))) + " " + __n(jsonForm.amount, productDetails.quantity_unit_stock.name, productDetails.quantity_unit_stock.name_plural, true), productDetails.product.name) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockTransaction(\'' + bookingResponse[0].transaction_id + '\')"><i class="fa-solid fa-undo"></i> ' + __t("Undo") + '</a>';
}
else
{
var successMessage = __t('Removed %1$s of %2$s from stock', Math.abs(jsonForm.amount) + " " + __n(jsonForm.amount, productDetails.quantity_unit_stock.name, productDetails.quantity_unit_stock.name_plural, true), productDetails.product.name) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockTransaction(\'' + bookingResponse[0].transaction_id + '\')"><i class="fas fa-undo"></i> ' + __t("Undo") + '</a>';
var successMessage = __t('Removed %1$s of %2$s from stock', Math.abs(jsonForm.amount) + " " + __n(jsonForm.amount, productDetails.quantity_unit_stock.name, productDetails.quantity_unit_stock.name_plural, true), productDetails.product.name) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockTransaction(\'' + bookingResponse[0].transaction_id + '\')"><i class="fa-solid fa-undo"></i> ' + __t("Undo") + '</a>';
}
if (GetUriParam("embedded") !== undefined)
@ -187,7 +187,7 @@ $('#save-mark-as-open-button').on('click', function(e)
}
Grocy.FrontendHelpers.EndUiBusy("consume-form");
toastr.success(__t('Marked %1$s of %2$s as opened', parseFloat(jsonForm.amount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts }) + " " + __n(jsonForm.amount, productDetails.quantity_unit_stock.name, productDetails.quantity_unit_stock.name_plural, true), productDetails.product.name) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockTransaction(\'' + result[0].transaction_id + '\')"><i class="fas fa-undo"></i> ' + __t("Undo") + '</a>');
toastr.success(__t('Marked %1$s of %2$s as opened', parseFloat(jsonForm.amount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts }) + " " + __n(jsonForm.amount, productDetails.quantity_unit_stock.name, productDetails.quantity_unit_stock.name_plural, true), productDetails.product.name) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockTransaction(\'' + result[0].transaction_id + '\')"><i class="fa-solid fa-undo"></i> ' + __t("Undo") + '</a>');
if (BoolVal(Grocy.UserSettings.stock_default_consume_amount_use_quick_consume_amount))
{

View File

@ -121,7 +121,7 @@
Grocy.Api.Get('stock/products/' + jsonForm.product_id,
function(result)
{
var successMessage = __t('Stock amount of %1$s is now %2$s', result.product.name, result.stock_amount + " " + __n(result.stock_amount, result.quantity_unit_stock.name, result.quantity_unit_stock.name_plural, true)) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockTransaction(\'' + bookingResponse[0].transaction_id + '\')"><i class="fas fa-undo"></i> ' + __t("Undo") + '</a>';
var successMessage = __t('Stock amount of %1$s is now %2$s', result.product.name, result.stock_amount + " " + __n(result.stock_amount, result.quantity_unit_stock.name, result.quantity_unit_stock.name_plural, true)) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockTransaction(\'' + bookingResponse[0].transaction_id + '\')"><i class="fa-solid fa-undo"></i> ' + __t("Undo") + '</a>';
if (GetUriParam("embedded") !== undefined)
{

View File

@ -64,7 +64,7 @@ $(".calendar").each(function()
$(".calendar[data-primary-section='true'] .fc-day-header").prepend('\
<div class="btn-group mr-2 my-1 d-print-none"> \
<button type="button" class="btn btn-outline-dark btn-xs add-recipe-button" data-toggle="tooltip" title="' + __t('Add recipe') + '"><i class="fas fa-plus"></i></a></button> \
<button type="button" class="btn btn-outline-dark btn-xs add-recipe-button" data-toggle="tooltip" title="' + __t('Add recipe') + '"><i class="fa-solid fa-plus"></i></a></button> \
<button type="button" class="btn btn-outline-dark btn-xs dropdown-toggle dropdown-toggle-split" data-toggle="dropdown"></button> \
<div class="table-inline-menu dropdown-menu"> \
<a class="dropdown-item add-note-button" href="#"><span class="dropdown-item-text">' + __t('Add note') + '</span></a> \
@ -103,10 +103,10 @@ $(".calendar").each(function()
var weekRecipeOrderMissingButtonHtml = "";
if (Grocy.FeatureFlags.GROCY_FEATURE_FLAG_SHOPPINGLIST)
{
weekRecipeOrderMissingButtonHtml = '<a class="ml-1 btn btn-outline-primary btn-xs recipe-order-missing-button d-print-none ' + weekRecipeOrderMissingButtonDisabledClasses + '" href="#" data-toggle="tooltip" title="' + __t("Put missing products on shopping list") + '" data-recipe-id="' + weekRecipe.id.toString() + '" data-recipe-name="' + weekRecipe.name + '" data-recipe-type="' + weekRecipe.type + '"><i class="fas fa-cart-plus"></i></a>';
weekRecipeOrderMissingButtonHtml = '<a class="ml-1 btn btn-outline-primary btn-xs recipe-order-missing-button d-print-none ' + weekRecipeOrderMissingButtonDisabledClasses + '" href="#" data-toggle="tooltip" title="' + __t("Put missing products on shopping list") + '" data-recipe-id="' + weekRecipe.id.toString() + '" data-recipe-name="' + weekRecipe.name + '" data-recipe-type="' + weekRecipe.type + '"><i class="fa-solid fa-cart-plus"></i></a>';
}
weekRecipeConsumeButtonHtml = '<a class="ml-1 btn btn-outline-success btn-xs recipe-consume-button d-print-none ' + weekRecipeConsumeButtonDisabledClasses + '" href="#" data-toggle="tooltip" title="' + __t("Consume all ingredients needed by this weeks recipes or products") + '" data-recipe-id="' + weekRecipe.id.toString() + '" data-recipe-name="' + weekRecipe.name + '" data-recipe-type="' + weekRecipe.type + '"><i class="fas fa-utensils"></i></a>'
weekRecipeConsumeButtonHtml = '<a class="ml-1 btn btn-outline-success btn-xs recipe-consume-button d-print-none ' + weekRecipeConsumeButtonDisabledClasses + '" href="#" data-toggle="tooltip" title="' + __t("Consume all ingredients needed by this weeks recipes or products") + '" data-recipe-id="' + weekRecipe.id.toString() + '" data-recipe-name="' + weekRecipe.name + '" data-recipe-type="' + weekRecipe.type + '"><i class="fa-solid fa-utensils"></i></a>'
}
$(".calendar[data-primary-section='true'] .fc-header-toolbar .fc-center").html("<h4>" + weekCostsHtml + weekRecipeOrderMissingButtonHtml + weekRecipeConsumeButtonHtml + "</h4>");
},
@ -124,11 +124,11 @@ $(".calendar").each(function()
}
var additionalTitleCssClasses = "";
var doneButtonHtml = '<a class="ml-1 btn btn-outline-secondary btn-xs mealplan-entry-done-button" href="#" data-toggle="tooltip" title="' + __t("Mark this item as done") + '" data-mealplan-entry-id="' + mealPlanEntry.id.toString() + '"><i class="fas fa-check"></i></a>';
var doneButtonHtml = '<a class="ml-1 btn btn-outline-secondary btn-xs mealplan-entry-done-button" href="#" data-toggle="tooltip" title="' + __t("Mark this item as done") + '" data-mealplan-entry-id="' + mealPlanEntry.id.toString() + '"><i class="fa-solid fa-check"></i></a>';
if (BoolVal(mealPlanEntry.done))
{
additionalTitleCssClasses = "text-strike-through text-muted";
doneButtonHtml = '<a class="ml-1 btn btn-outline-secondary btn-xs mealplan-entry-undone-button" href="#" data-toggle="tooltip" title="' + __t("Mark this item as undone") + '" data-mealplan-entry-id="' + mealPlanEntry.id.toString() + '"><i class="fas fa-undo"></i></a>';
doneButtonHtml = '<a class="ml-1 btn btn-outline-secondary btn-xs mealplan-entry-undone-button" href="#" data-toggle="tooltip" title="' + __t("Mark this item as undone") + '" data-mealplan-entry-id="' + mealPlanEntry.id.toString() + '"><i class="fa-solid fa-undo"></i></a>';
}
if (event.type == "recipe")
@ -157,11 +157,11 @@ $(".calendar").each(function()
}
var fulfillmentInfoHtml = __t('Enough in stock');
var fulfillmentIconHtml = '<i class="fas fa-check text-success"></i>';
var fulfillmentIconHtml = '<i class="fa-solid fa-check text-success"></i>';
if (resolvedRecipe.need_fulfilled != 1)
{
fulfillmentInfoHtml = __t('Not enough in stock');
var fulfillmentIconHtml = '<i class="fas fa-times text-danger"></i>';
var fulfillmentIconHtml = '<i class="fa-solid fa-times text-danger"></i>';
}
var costsAndCaloriesPerServing = ""
if (Grocy.FeatureFlags.GROCY_FEATURE_FLAG_STOCK_PRICE_TRACKING)
@ -182,7 +182,7 @@ $(".calendar").each(function()
var shoppingListButtonHtml = "";
if (Grocy.FeatureFlags.GROCY_FEATURE_FLAG_SHOPPINGLIST)
{
shoppingListButtonHtml = '<a class="ml-1 btn btn-outline-primary btn-xs recipe-order-missing-button ' + recipeOrderMissingButtonDisabledClasses + '" href="#" data-toggle="tooltip" title="' + __t("Put missing products on shopping list") + '" data-recipe-id="' + recipe.id.toString() + '" data-mealplan-servings="' + mealPlanEntry.recipe_servings + '" data-recipe-name="' + recipe.name + '" data-recipe-type="' + recipe.type + '"><i class="fas fa-cart-plus"></i></a>';
shoppingListButtonHtml = '<a class="ml-1 btn btn-outline-primary btn-xs recipe-order-missing-button ' + recipeOrderMissingButtonDisabledClasses + '" href="#" data-toggle="tooltip" title="' + __t("Put missing products on shopping list") + '" data-recipe-id="' + recipe.id.toString() + '" data-mealplan-servings="' + mealPlanEntry.recipe_servings + '" data-recipe-name="' + recipe.name + '" data-recipe-type="' + recipe.type + '"><i class="fa-solid fa-cart-plus"></i></a>';
}
element.html('\
@ -192,10 +192,10 @@ $(".calendar").each(function()
<h5 class="small timeago-contextual text-truncate mb-1">' + fulfillmentIconHtml + " " + fulfillmentInfoHtml + '</h5> \
' + costsAndCaloriesPerServing + ' \
<h5 class="d-print-none"> \
<a class="ml-1 btn btn-outline-info btn-xs edit-meal-plan-entry-button" href="#" data-toggle="tooltip" title="' + __t("Edit this item") + '"><i class="fas fa-edit"></i></a> \
<a class="btn btn-outline-danger btn-xs remove-recipe-button" href="#" data-toggle="tooltip" title="' + __t("Delete this item") + '"><i class="fas fa-trash"></i></a> \
<a class="ml-1 btn btn-outline-info btn-xs edit-meal-plan-entry-button" href="#" data-toggle="tooltip" title="' + __t("Edit this item") + '"><i class="fa-solid fa-edit"></i></a> \
<a class="btn btn-outline-danger btn-xs remove-recipe-button" href="#" data-toggle="tooltip" title="' + __t("Delete this item") + '"><i class="fa-solid fa-trash"></i></a> \
' + shoppingListButtonHtml + ' \
<a class="btn btn-outline-success btn-xs recipe-consume-button ' + recipeConsumeButtonDisabledClasses + '" href="#" data-toggle="tooltip" title="' + __t("Consume all ingredients needed by this recipe") + '" data-recipe-id="' + internalShadowRecipe.id.toString() + '" data-mealplan-entry-id="' + mealPlanEntry.id.toString() + '" data-recipe-name="' + recipe.name + '" data-recipe-type="' + recipe.type + '"><i class="fas fa-utensils"></i></a> \
<a class="btn btn-outline-success btn-xs recipe-consume-button ' + recipeConsumeButtonDisabledClasses + '" href="#" data-toggle="tooltip" title="' + __t("Consume all ingredients needed by this recipe") + '" data-recipe-id="' + internalShadowRecipe.id.toString() + '" data-mealplan-entry-id="' + mealPlanEntry.id.toString() + '" data-recipe-name="' + recipe.name + '" data-recipe-type="' + recipe.type + '"><i class="fa-solid fa-utensils"></i></a> \
' + doneButtonHtml + ' \
</h5> \
</div>');
@ -233,11 +233,11 @@ $(".calendar").each(function()
}
fulfillmentInfoHtml = __t('Not enough in stock');
var fulfillmentIconHtml = '<i class="fas fa-times text-danger"></i>';
var fulfillmentIconHtml = '<i class="fa-solid fa-times text-danger"></i>';
if (parseFloat(productDetails.stock_amount_aggregated) >= parseFloat(mealPlanEntry.product_amount))
{
var fulfillmentInfoHtml = __t('Enough in stock');
var fulfillmentIconHtml = '<i class="fas fa-check text-success"></i>';
var fulfillmentIconHtml = '<i class="fa-solid fa-check text-success"></i>';
}
var costsAndCaloriesPerServing = ""
@ -253,7 +253,7 @@ $(".calendar").each(function()
var shoppingListButtonHtml = "";
if (Grocy.FeatureFlags.GROCY_FEATURE_FLAG_SHOPPINGLIST)
{
shoppingListButtonHtml = '<a class="btn btn-outline-primary btn-xs show-as-dialog-link ' + productOrderMissingButtonDisabledClasses + '" href="' + U("/shoppinglistitem/new?embedded&updateexistingproduct&product=") + mealPlanEntry.product_id + '&amount=' + mealPlanEntry.product_amount + '" data-toggle="tooltip" title="' + __t("Add to shopping list") + '" data-product-id="' + productDetails.product.id.toString() + '" data-product-name="' + productDetails.product.name + '" data-product-amount="' + mealPlanEntry.product_amount + '"><i class="fas fa-cart-plus"></i></a>';
shoppingListButtonHtml = '<a class="btn btn-outline-primary btn-xs show-as-dialog-link ' + productOrderMissingButtonDisabledClasses + '" href="' + U("/shoppinglistitem/new?embedded&updateexistingproduct&product=") + mealPlanEntry.product_id + '&amount=' + mealPlanEntry.product_amount + '" data-toggle="tooltip" title="' + __t("Add to shopping list") + '" data-product-id="' + productDetails.product.id.toString() + '" data-product-name="' + productDetails.product.name + '" data-product-amount="' + mealPlanEntry.product_amount + '"><i class="fa-solid fa-cart-plus"></i></a>';
}
element.html('\
@ -263,9 +263,9 @@ $(".calendar").each(function()
<h5 class="small timeago-contextual text-truncate mb-1">' + fulfillmentIconHtml + " " + fulfillmentInfoHtml + '</h5> \
' + costsAndCaloriesPerServing + ' \
<h5 class="d-print-none"> \
<a class="ml-1 btn btn-outline-danger btn-xs remove-product-button" href="#" data-toggle="tooltip" title="' + __t("Delete this item") + '"><i class="fas fa-trash"></i></a> \
<a class="btn btn-outline-info btn-xs edit-meal-plan-entry-button" href="#" data-toggle="tooltip" title="' + __t("Edit this item") + '"><i class="fas fa-edit"></i></a> \
<a class="ml-1 btn btn-outline-success btn-xs product-consume-button ' + productConsumeButtonDisabledClasses + '" href="#" data-toggle="tooltip" title="' + __t("Consume %1$s of %2$s", parseFloat(mealPlanEntry.product_amount).toLocaleString() + ' ' + __n(mealPlanEntry.product_amount, productDetails.quantity_unit_stock.name, productDetails.quantity_unit_stock.name_plural, true), productDetails.product.name) + '" data-product-id="' + productDetails.product.id.toString() + '" data-product-name="' + productDetails.product.name + '" data-product-amount="' + mealPlanEntry.product_amount + '" data-mealplan-entry-id="' + mealPlanEntry.id.toString() + '"><i class="fas fa-utensils"></i></a> \
<a class="ml-1 btn btn-outline-danger btn-xs remove-product-button" href="#" data-toggle="tooltip" title="' + __t("Delete this item") + '"><i class="fa-solid fa-trash"></i></a> \
<a class="btn btn-outline-info btn-xs edit-meal-plan-entry-button" href="#" data-toggle="tooltip" title="' + __t("Edit this item") + '"><i class="fa-solid fa-edit"></i></a> \
<a class="ml-1 btn btn-outline-success btn-xs product-consume-button ' + productConsumeButtonDisabledClasses + '" href="#" data-toggle="tooltip" title="' + __t("Consume %1$s of %2$s", parseFloat(mealPlanEntry.product_amount).toLocaleString() + ' ' + __n(mealPlanEntry.product_amount, productDetails.quantity_unit_stock.name, productDetails.quantity_unit_stock.name_plural, true), productDetails.product.name) + '" data-product-id="' + productDetails.product.id.toString() + '" data-product-name="' + productDetails.product.name + '" data-product-amount="' + mealPlanEntry.product_amount + '" data-mealplan-entry-id="' + mealPlanEntry.id.toString() + '"><i class="fa-solid fa-utensils"></i></a> \
' + shoppingListButtonHtml + ' \
' + doneButtonHtml + ' \
</h5> \
@ -282,8 +282,8 @@ $(".calendar").each(function()
<div> \
<h5 class="text-wrap text-break mb-1 ' + additionalTitleCssClasses + '">' + mealPlanEntry.note + '</h5> \
<h5 class="d-print-none"> \
<a class="ml-1 btn btn-outline-danger btn-xs remove-note-button" href="#" data-toggle="tooltip" title="' + __t("Delete this item") + '"><i class="fas fa-trash"></i></a> \
<a class="btn btn-outline-info btn-xs edit-meal-plan-entry-button" href="#" data-toggle="tooltip" title="' + __t("Edit this item") + '"><i class="fas fa-edit"></i></a> \
<a class="ml-1 btn btn-outline-danger btn-xs remove-note-button" href="#" data-toggle="tooltip" title="' + __t("Delete this item") + '"><i class="fa-solid fa-trash"></i></a> \
<a class="btn btn-outline-info btn-xs edit-meal-plan-entry-button" href="#" data-toggle="tooltip" title="' + __t("Edit this item") + '"><i class="fa-solid fa-edit"></i></a> \
' + doneButtonHtml + ' \
</h5> \
</div>');
@ -830,7 +830,7 @@ $(document).on('click', '.product-consume-button', function(e)
Grocy.Api.Get('stock/products/' + productId,
function(result)
{
var toastMessage = __t('Removed %1$s of %2$s from stock', consumeAmount.toString() + " " + __n(consumeAmount, result.quantity_unit_stock.name, result.quantity_unit_stock.name_plural, true), result.product.name) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockTransaction(\'' + bookingResponse[0].transaction_id + '\')"><i class="fas fa-undo"></i> ' + __t("Undo") + '</a>';
var toastMessage = __t('Removed %1$s of %2$s from stock', consumeAmount.toString() + " " + __n(consumeAmount, result.quantity_unit_stock.name, result.quantity_unit_stock.name_plural, true), result.product.name) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockTransaction(\'' + bookingResponse[0].transaction_id + '\')"><i class="fa-solid fa-undo"></i> ' + __t("Undo") + '</a>';
Grocy.Api.Put('objects/meal_plan/' + mealPlanEntryId, { "done": 1 },
function(result)

View File

@ -121,7 +121,7 @@ $('#save-purchase-button').on('click', function(e)
{
amountMessage = parseFloat(jsonForm.amount) - parseFloat(productDetails.stock_amount) - parseFloat(productDetails.product.tare_weight);
}
var successMessage = __t('Added %1$s of %2$s to stock', amountMessage + " " + __n(amountMessage, productDetails.quantity_unit_stock.name, productDetails.quantity_unit_stock.name_plural, true), productDetails.product.name) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockTransaction(\'' + result[0].transaction_id + '\')"><i class="fas fa-undo"></i> ' + __t("Undo") + '</a>';
var successMessage = __t('Added %1$s of %2$s to stock', amountMessage + " " + __n(amountMessage, productDetails.quantity_unit_stock.name, productDetails.quantity_unit_stock.name_plural, true), productDetails.product.name) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockTransaction(\'' + result[0].transaction_id + '\')"><i class="fa-solid fa-undo"></i> ' + __t("Undo") + '</a>';
if (Grocy.FeatureFlags.GROCY_FEATURE_FLAG_LABEL_PRINTER)
{

View File

@ -81,7 +81,7 @@ $(document).on('click', '.stock-consume-button', function(e)
Grocy.Api.Get('stock/products/' + productId,
function(result)
{
var toastMessage = __t('Removed %1$s of %2$s from stock', parseFloat(consumeAmount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts }) + " " + __n(consumeAmount, result.quantity_unit_stock.name, result.quantity_unit_stock.name_plural, true), result.product.name) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockBookingEntry(' + bookingResponse[0].id + ',' + stockRowId + ')"><i class="fas fa-undo"></i> ' + __t("Undo") + '</a>';
var toastMessage = __t('Removed %1$s of %2$s from stock', parseFloat(consumeAmount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts }) + " " + __n(consumeAmount, result.quantity_unit_stock.name, result.quantity_unit_stock.name_plural, true), result.product.name) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockBookingEntry(' + bookingResponse[0].id + ',' + stockRowId + ')"><i class="fa-solid fa-undo"></i> ' + __t("Undo") + '</a>';
if (wasSpoiled)
{
toastMessage += " (" + __t("Spoiled") + ")";
@ -128,7 +128,7 @@ $(document).on('click', '.product-open-button', function(e)
{
button.addClass("disabled");
Grocy.FrontendHelpers.EndUiBusy();
toastr.success(__t('Marked %1$s of %2$s as opened', 1 + " " + productQuName, productName) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockBookingEntry(' + bookingResponse[0].id + ',' + stockRowId + ')"><i class="fas fa-undo"></i> ' + __t("Undo") + '</a>');
toastr.success(__t('Marked %1$s of %2$s as opened', 1 + " " + productQuName, productName) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockBookingEntry(' + bookingResponse[0].id + ',' + stockRowId + ')"><i class="fa-solid fa-undo"></i> ' + __t("Undo") + '</a>');
RefreshStockEntryRow(stockRowId);
},
function(xhr)

View File

@ -44,7 +44,7 @@
Grocy.Api.Put("stock/entry/" + Grocy.EditObjectId, jsonData,
function(result)
{
var successMessage = __t('Stock entry successfully updated') + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockBookingEntry(\'' + result.id + '\',\'' + Grocy.EditObjectId + '\')"><i class="fas fa-undo"></i> ' + __t("Undo") + '</a>';
var successMessage = __t('Stock entry successfully updated') + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockBookingEntry(\'' + result.id + '\',\'' + Grocy.EditObjectId + '\')"><i class="fa-solid fa-undo"></i> ' + __t("Undo") + '</a>';
window.parent.postMessage(WindowMessageBag("StockEntryChanged", Grocy.EditObjectId), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("ShowSuccessMessage", successMessage), Grocy.BaseUrl);

View File

@ -147,11 +147,11 @@ $(document).on('click', '.product-consume-button', function(e)
{
if (result.product.enable_tare_weight_handling == 1)
{
var toastMessage = __t('Removed %1$s of %2$s from stock', parseFloat(originalTotalStockAmount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts }) + " " + __n(consumeAmount, result.quantity_unit_stock.name, result.quantity_unit_stock.name_plural, true), result.product.name) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockTransaction(\'' + bookingResponse[0].transaction_id + '\')"><i class="fas fa-undo"></i> ' + __t("Undo") + '</a>';
var toastMessage = __t('Removed %1$s of %2$s from stock', parseFloat(originalTotalStockAmount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts }) + " " + __n(consumeAmount, result.quantity_unit_stock.name, result.quantity_unit_stock.name_plural, true), result.product.name) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockTransaction(\'' + bookingResponse[0].transaction_id + '\')"><i class="fa-solid fa-undo"></i> ' + __t("Undo") + '</a>';
}
else
{
var toastMessage = __t('Removed %1$s of %2$s from stock', parseFloat(consumeAmount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts }) + " " + __n(consumeAmount, result.quantity_unit_stock.name, result.quantity_unit_stock.name_plural, true), result.product.name) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockTransaction(\'' + bookingResponse[0].transaction_id + '\')"><i class="fas fa-undo"></i> ' + __t("Undo") + '</a>';
var toastMessage = __t('Removed %1$s of %2$s from stock', parseFloat(consumeAmount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts }) + " " + __n(consumeAmount, result.quantity_unit_stock.name, result.quantity_unit_stock.name_plural, true), result.product.name) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockTransaction(\'' + bookingResponse[0].transaction_id + '\')"><i class="fa-solid fa-undo"></i> ' + __t("Undo") + '</a>';
}
if (wasSpoiled)
@ -207,7 +207,7 @@ $(document).on('click', '.product-open-button', function(e)
}
Grocy.FrontendHelpers.EndUiBusy();
toastr.success(__t('Marked %1$s of %2$s as opened', parseFloat(amount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts }) + " " + productQuName, productName) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockTransaction(\'' + bookingResponse[0].transaction_id + '\')"><i class="fas fa-undo"></i> ' + __t("Undo") + '</a>');
toastr.success(__t('Marked %1$s of %2$s as opened', parseFloat(amount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts }) + " " + productQuName, productName) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockTransaction(\'' + bookingResponse[0].transaction_id + '\')"><i class="fa-solid fa-undo"></i> ' + __t("Undo") + '</a>');
RefreshStatistics();
RefreshProductRow(productId);
},
@ -261,10 +261,10 @@ function RefreshStatistics()
Grocy.Api.Get('stock/volatile?due_soon_days=' + nextXDays,
function(result)
{
$("#info-duesoon-products").html('<span class="d-block d-md-none">' + result.due_products.length + ' <i class="fas fa-clock"></i></span><span class="d-none d-md-block">' + __n(result.due_products.length, '%s product is due', '%s products are due') + ' ' + __n(nextXDays, 'within the next day', 'within the next %s days') + '</span>');
$("#info-overdue-products").html('<span class="d-block d-md-none">' + result.overdue_products.length + ' <i class="fas fa-times-circle"></i></span><span class="d-none d-md-block">' + __n(result.overdue_products.length, '%s product is overdue', '%s products are overdue') + '</span>');
$("#info-expired-products").html('<span class="d-block d-md-none">' + result.expired_products.length + ' <i class="fas fa-times-circle"></i></span><span class="d-none d-md-block">' + __n(result.expired_products.length, '%s product is expired', '%s products are expired') + '</span>');
$("#info-missing-products").html('<span class="d-block d-md-none">' + result.missing_products.length + ' <i class="fas fa-exclamation-circle"></i></span><span class="d-none d-md-block">' + __n(result.missing_products.length, '%s product is below defined min. stock amount', '%s products are below defined min. stock amount') + '</span>');
$("#info-duesoon-products").html('<span class="d-block d-md-none">' + result.due_products.length + ' <i class="fa-solid fa-clock"></i></span><span class="d-none d-md-block">' + __n(result.due_products.length, '%s product is due', '%s products are due') + ' ' + __n(nextXDays, 'within the next day', 'within the next %s days') + '</span>');
$("#info-overdue-products").html('<span class="d-block d-md-none">' + result.overdue_products.length + ' <i class="fa-solid fa-times-circle"></i></span><span class="d-none d-md-block">' + __n(result.overdue_products.length, '%s product is overdue', '%s products are overdue') + '</span>');
$("#info-expired-products").html('<span class="d-block d-md-none">' + result.expired_products.length + ' <i class="fa-solid fa-times-circle"></i></span><span class="d-none d-md-block">' + __n(result.expired_products.length, '%s product is expired', '%s products are expired') + '</span>');
$("#info-missing-products").html('<span class="d-block d-md-none">' + result.missing_products.length + ' <i class="fa-solid fa-exclamation-circle"></i></span><span class="d-none d-md-block">' + __n(result.missing_products.length, '%s product is below defined min. stock amount', '%s products are below defined min. stock amount') + '</span>');
},
function(xhr)
{

View File

@ -213,9 +213,9 @@ function RefreshStatistics()
}
});
$("#info-due-today-tasks").html('<span class="d-block d-md-none">' + dueTodayCount + ' <i class="fas fa-clock"></i></span><span class="d-none d-md-block">' + __n(dueTodayCount, '%s task is due to be done today', '%s tasks are due to be done today'));
$("#info-due-soon-tasks").html('<span class="d-block d-md-none">' + dueSoonCount + ' <i class="fas fa-clock"></i></span><span class="d-none d-md-block">' + __n(dueSoonCount, '%s task is due to be done', '%s tasks are due to be done') + ' ' + __n(nextXDays, 'within the next day', 'within the next %s days'));
$("#info-overdue-tasks").html('<span class="d-block d-md-none">' + overdueCount + ' <i class="fas fa-times-circle"></i></span><span class="d-none d-md-block">' + __n(overdueCount, '%s task is overdue to be done', '%s tasks are overdue to be done'));
$("#info-due-today-tasks").html('<span class="d-block d-md-none">' + dueTodayCount + ' <i class="fa-solid fa-clock"></i></span><span class="d-none d-md-block">' + __n(dueTodayCount, '%s task is due to be done today', '%s tasks are due to be done today'));
$("#info-due-soon-tasks").html('<span class="d-block d-md-none">' + dueSoonCount + ' <i class="fa-solid fa-clock"></i></span><span class="d-none d-md-block">' + __n(dueSoonCount, '%s task is due to be done', '%s tasks are due to be done') + ' ' + __n(nextXDays, 'within the next day', 'within the next %s days'));
$("#info-overdue-tasks").html('<span class="d-block d-md-none">' + overdueCount + ' <i class="fa-solid fa-times-circle"></i></span><span class="d-none d-md-block">' + __n(overdueCount, '%s task is overdue to be done', '%s tasks are overdue to be done'));
},
function(xhr)
{

View File

@ -61,11 +61,11 @@
if (productDetails.product.enable_tare_weight_handling == 1)
{
var successMessage = __t('Transfered %1$s of %2$s from %3$s to %4$s', Math.abs(jsonForm.amount - parseFloat(productDetails.product.tare_weight)) + " " + __n(jsonForm.amount, productDetails.quantity_unit_stock.name, productDetails.quantity_unit_stock.name_plural, true), productDetails.product.name, $('option:selected', "#location_id_from").text(), $('option:selected', "#location_id_to").text()) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockTransaction(\'' + bookingResponse[0].transaction_id + '\')"><i class="fas fa-undo"></i> ' + __t("Undo") + '</a>';
var successMessage = __t('Transfered %1$s of %2$s from %3$s to %4$s', Math.abs(jsonForm.amount - parseFloat(productDetails.product.tare_weight)) + " " + __n(jsonForm.amount, productDetails.quantity_unit_stock.name, productDetails.quantity_unit_stock.name_plural, true), productDetails.product.name, $('option:selected', "#location_id_from").text(), $('option:selected', "#location_id_to").text()) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockTransaction(\'' + bookingResponse[0].transaction_id + '\')"><i class="fa-solid fa-undo"></i> ' + __t("Undo") + '</a>';
}
else
{
var successMessage = __t('Transfered %1$s of %2$s from %3$s to %4$s', Math.abs(jsonForm.amount) + " " + __n(jsonForm.amount, productDetails.quantity_unit_stock.name, productDetails.quantity_unit_stock.name_plural, true), productDetails.product.name, $('option:selected', "#location_id_from").text(), $('option:selected', "#location_id_to").text()) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockTransaction(\'' + bookingResponse[0].transaction_id + '\')"><i class="fas fa-undo"></i> ' + __t("Undo") + '</a>';
var successMessage = __t('Transfered %1$s of %2$s from %3$s to %4$s', Math.abs(jsonForm.amount) + " " + __n(jsonForm.amount, productDetails.quantity_unit_stock.name, productDetails.quantity_unit_stock.name_plural, true), productDetails.product.name, $('option:selected', "#location_id_from").text(), $('option:selected', "#location_id_to").text()) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockTransaction(\'' + bookingResponse[0].transaction_id + '\')"><i class="fa-solid fa-undo"></i> ' + __t("Undo") + '</a>';
}
if (GetUriParam("embedded") !== undefined)
@ -82,7 +82,7 @@
if (parseInt($("#location_id_from option:selected").attr("data-is-freezer")) === 0 && parseInt($("#location_id_to option:selected").attr("data-is-freezer")) === 1) // Frozen
{
toastr.info('<span>' + __t("Frozen") + "</span> <i class='fas fa-snowflake'></i>");
toastr.info('<span>' + __t("Frozen") + "</span> <i class='fa-solid fa-snowflake'></i>");
if (BoolVal(productDetails.product.should_not_be_frozen))
{
@ -91,7 +91,7 @@
}
if (parseInt($("#location_id_from option:selected").attr("data-is-freezer")) === 1 && parseInt($("#location_id_to option:selected").attr("data-is-freezer")) === 0) // Thawed
{
toastr.info('<span>' + __t("Thawed") + "</span> <i class='fas fa-fire-alt'></i>");
toastr.info('<span>' + __t("Thawed") + "</span> <i class='fa-solid fa-fire-alt'></i>");
}
$("#specific_stock_entry").find("option").remove().end().append("<option></option>");

View File

@ -190,7 +190,7 @@ class DemoDataGeneratorService extends BaseService
INSERT INTO equipment (name, description, instruction_manual_file_name) VALUES ('{$this->__t_sql('Coffee machine')}', '{$loremIpsumWithHtmlFormattings}', 'loremipsum.pdf'); --1
INSERT INTO equipment (name, description) VALUES ('{$this->__t_sql('Dishwasher')}', '{$loremIpsumWithHtmlFormattings}'); --2
INSERT INTO userentities (name, caption, description, show_in_sidebar_menu, icon_css_class) VALUES ('exampleuserentity', '{$this->__t_sql('Example userentity')}', '{$this->__t_sql('This is an example user entity...')}', 1, 'fas fa-smile'); --1
INSERT INTO userentities (name, caption, description, show_in_sidebar_menu, icon_css_class) VALUES ('exampleuserentity', '{$this->__t_sql('Example userentity')}', '{$this->__t_sql('This is an example user entity...')}', 1, 'fa-solid fa-smile'); --1
INSERT INTO userfields (entity, name, caption, type, show_as_column_in_tables) VALUES ('userentity-exampleuserentity', 'customfield1', '{$this->__t_sql('Custom field')} 1', 'text-single-line', 1); --1
INSERT INTO userfields (entity, name, caption, type, show_as_column_in_tables) VALUES ('userentity-exampleuserentity', 'customfield2', '{$this->__t_sql('Custom field')} 2', 'text-single-line', 1); --2

View File

@ -44,7 +44,7 @@
{{ $__t('Do you find grocy useful?') }}<br>
<a class="btn btn-sm btn-primary text-white mt-1"
href="https://grocy.info/#say-thanks"
target="_blank">{{ $__t('Say thanks') }} <i class="fas fa-heart"></i></a>
target="_blank">{{ $__t('Say thanks') }} <i class="fa-solid fa-heart"></i></a>
</p>
</div>
@ -84,7 +84,7 @@
<a href="https://github.com/grocy/grocy"
class="text-dark"
target="_blank">
<i class="fab fa-github"></i>
<i class="fa-brands fa-github"></i>
</a>
</p>
</div>

View File

@ -14,13 +14,13 @@
type="button"
data-toggle="collapse"
data-target="#table-filter-row">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</button>
<button class="btn btn-outline-dark d-md-none mt-2 order-1 order-md-3"
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
</div>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"
@ -45,7 +45,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
<span class="input-group-text"><i class="fa-solid fa-search"></i></span>
</div>
<input type="text"
id="search"
@ -85,7 +85,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#batteries-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th>{{ $__t('Name') }}</th>
<th>{{ $__t('Description') }}</th>
@ -106,7 +106,7 @@
href="{{ $U('/battery/') }}{{ $battery->id }}?embedded"
data-toggle="tooltip"
title="{{ $__t('Edit this item') }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<a class="btn btn-danger btn-sm battery-delete-button permission-MASTER_DATA_EDIT"
href="#"
@ -114,7 +114,7 @@
data-battery-name="{{ $battery->name }}"
data-toggle="tooltip"
title="{{ $__t('Delete this item') }}">
<i class="fas fa-trash"></i>
<i class="fa-solid fa-trash"></i>
</a>
</td>
<td>

View File

@ -13,7 +13,7 @@
type="button"
data-toggle="collapse"
data-target="#table-filter-row">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</button>
</div>
</div>
@ -26,7 +26,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
<span class="input-group-text"><i class="fa-solid fa-search"></i></span>
</div>
<input type="text"
id="search"
@ -37,7 +37,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-filter"></i>&nbsp;{{ $__t('Battery') }}</span>
<span class="input-group-text"><i class="fa-solid fa-filter"></i>&nbsp;{{ $__t('Battery') }}</span>
</div>
<select class="custom-control custom-select"
id="battery-filter">
@ -51,7 +51,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-clock"></i>&nbsp;{{ $__t('Date range') }}</span>
<span class="input-group-text"><i class="fa-solid fa-clock"></i>&nbsp;{{ $__t('Date range') }}</span>
</div>
<select class="custom-control custom-select"
id="daterange-filter">
@ -86,7 +86,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#batteries-journal-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th class="allow-grouping">{{ $__t('Battery') }}</th>
<th>{{ $__t('Tracked time') }}</th>
@ -103,7 +103,7 @@
data-toggle="tooltip"
data-placement="left"
title="{{ $__t('Undo charge cycle') }}">
<i class="fas fa-undo"></i>
<i class="fa-solid fa-undo"></i>
</a>
</td>
<td>

View File

@ -18,7 +18,7 @@
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"
id="related-links">
@ -44,7 +44,7 @@
data-toggle="collapse"
href="#table-filter-row"
role="button">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</a>
<a id="clear-filter-button"
class="btn btn-sm btn-outline-info mt-1"
@ -61,7 +61,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
<span class="input-group-text"><i class="fa-solid fa-search"></i></span>
</div>
<input type="text"
id="search"
@ -72,7 +72,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-filter"></i>&nbsp;{{ $__t('Status') }}</span>
<span class="input-group-text"><i class="fa-solid fa-filter"></i>&nbsp;{{ $__t('Status') }}</span>
</div>
<select class="custom-control custom-select"
id="status-filter">
@ -98,7 +98,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#batteries-overview-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th>{{ $__t('Battery') }}</th>
<th class="allow-grouping">{{ $__t('Used in') }}</th>
@ -124,13 +124,13 @@
title="{{ $__t('Track charge cycle') }}"
data-battery-id="{{ $currentBatteryEntry->battery_id }}"
data-battery-name="{{ FindObjectInArrayByPropertyValue($batteries, 'id', $currentBatteryEntry->battery_id)->name }}">
<i class="fas fa-car-battery"></i>
<i class="fa-solid fa-car-battery"></i>
</a>
<div class="dropdown d-inline-block">
<button class="btn btn-sm btn-light text-secondary"
type="button"
data-toggle="dropdown">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
<div class="table-inline-menu dropdown-menu dropdown-menu-right">
<a class="dropdown-item battery-name-cell"

View File

@ -102,7 +102,7 @@
<div class="title-related-links">
<h4>
<span class="ls-n1">{{ $__t('grocycode') }}</span>
<i class="fas fa-question-circle text-muted"
<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('grocycode is a unique referer to this %s in your grocy instance - print it onto a label and scan it like any other barcode', $__t('Battery')) }}"></i>

View File

@ -19,7 +19,7 @@
for="battery_id">
{{ $__t('Battery') }}
<i id="barcode-lookup-hint"
class="fas fa-barcode float-right mt-1"></i>
class="fa-solid fa-barcode float-right mt-1"></i>
</label>
<select class="form-control combobox barcodescanner-input"
id="battery_id"

View File

@ -24,7 +24,7 @@
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100 m-1 mt-md-0 mb-md-0 float-right"
id="related-links">

View File

@ -240,7 +240,7 @@
$chore->track_date_only == 1) checked @endif class="form-check-input custom-control-input" type="checkbox" id="track_date_only" name="track_date_only" value="1">
<label class="form-check-label custom-control-label"
for="track_date_only">{{ $__t('Track date only') }}
&nbsp;<i class="fas fa-question-circle text-muted"
&nbsp;<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('When enabled only the day of an execution is tracked, not the time') }}"></i>
@ -255,7 +255,7 @@
$chore->rollover == 1) checked @endif class="form-check-input custom-control-input" type="checkbox" id="rollover" name="rollover" value="1">
<label class="form-check-label custom-control-label"
for="rollover">{{ $__t('Due date rollover') }}
&nbsp;<i class="fas fa-question-circle text-muted"
&nbsp;<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('When enabled the chore can never be overdue, the due date will shift forward each day when due') }}"></i>
@ -315,7 +315,7 @@
<div class="title-related-links pb-4">
<h4>
<span class="ls-n1">{{ $__t('grocycode') }}</span>
<i class="fas fa-question-circle text-muted"
<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('grocycode is a unique referer to this %s in your grocy instance - print it onto a label and scan it like any other barcode', $__t('Chore')) }}"></i>

View File

@ -14,13 +14,13 @@
type="button"
data-toggle="collapse"
data-target="#table-filter-row">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</button>
<button class="btn btn-outline-dark d-md-none mt-2 order-1 order-md-3"
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
</div>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"
@ -45,7 +45,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
<span class="input-group-text"><i class="fa-solid fa-search"></i></span>
</div>
<input type="text"
id="search"
@ -86,7 +86,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#chores-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th>{{ $__t('Name') }}</th>
<th class="allow-grouping">{{ $__t('Period type') }}</th>
@ -106,7 +106,7 @@
href="{{ $U('/chore/') }}{{ $chore->id }}"
data-toggle="tooltip"
title="{{ $__t('Edit this item') }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<a class="btn btn-danger btn-sm chore-delete-button"
href="#"
@ -114,13 +114,13 @@
data-chore-name="{{ $chore->name }}"
data-toggle="tooltip"
title="{{ $__t('Delete this item') }}">
<i class="fas fa-trash"></i>
<i class="fa-solid fa-trash"></i>
</a>
<div class="dropdown d-inline-block">
<button class="btn btn-sm btn-light text-secondary"
type="button"
data-toggle="dropdown">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
<div class="table-inline-menu dropdown-menu dropdown-menu-right">
<a class="dropdown-item merge-chores-button"
@ -167,7 +167,7 @@
novalidate>
<div class="form-group">
<label for="merge-chores-keep">{{ $__t('Chore to keep') }}&nbsp;<i class="fas fa-question-circle text-muted"
<label for="merge-chores-keep">{{ $__t('Chore to keep') }}&nbsp;<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('After merging, this chore will be kept') }}"></i>
@ -182,7 +182,7 @@
</select>
</div>
<div class="form-group">
<label for="merge-chores-remove">{{ $__t('Chore to remove') }}&nbsp;<i class="fas fa-question-circle text-muted"
<label for="merge-chores-remove">{{ $__t('Chore to remove') }}&nbsp;<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('After merging, all occurences of this chore will be replaced by the kept chore (means this chore will not exist anymore)') }}"></i>

View File

@ -13,7 +13,7 @@
type="button"
data-toggle="collapse"
data-target="#table-filter-row">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</button>
</div>
</div>
@ -26,7 +26,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
<span class="input-group-text"><i class="fa-solid fa-search"></i></span>
</div>
<input type="text"
id="search"
@ -37,7 +37,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-filter"></i>&nbsp;{{ $__t('Chore') }}</span>
<span class="input-group-text"><i class="fa-solid fa-filter"></i>&nbsp;{{ $__t('Chore') }}</span>
</div>
<select class="custom-control custom-select"
id="chore-filter">
@ -51,7 +51,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-clock"></i>&nbsp;{{ $__t('Date range') }}</span>
<span class="input-group-text"><i class="fa-solid fa-clock"></i>&nbsp;{{ $__t('Date range') }}</span>
</div>
<select class="custom-control custom-select"
id="daterange-filter">
@ -86,7 +86,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#chores-journal-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th class="allow-grouping">{{ $__t('Chore') }}</th>
<th>{{ $__t('Tracked time') }}</th>
@ -110,7 +110,7 @@
data-toggle="tooltip"
data-placement="left"
title="{{ $__t('Undo chore execution') }}">
<i class="fas fa-undo"></i>
<i class="fa-solid fa-undo"></i>
</a>
</td>
<td>

View File

@ -18,7 +18,7 @@
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"
id="related-links">
@ -49,7 +49,7 @@
data-toggle="collapse"
href="#table-filter-row"
role="button">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</a>
<a id="clear-filter-button"
class="btn btn-sm btn-outline-info mt-1"
@ -66,7 +66,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
<span class="input-group-text"><i class="fa-solid fa-search"></i></span>
</div>
<input type="text"
id="search"
@ -77,7 +77,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-filter"></i>&nbsp;{{ $__t('Status') }}</span>
<span class="input-group-text"><i class="fa-solid fa-filter"></i>&nbsp;{{ $__t('Status') }}</span>
</div>
<select class="custom-control custom-select"
id="status-filter">
@ -94,7 +94,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-filter"></i>&nbsp;{{ $__t('Assignment') }}</span>
<span class="input-group-text"><i class="fa-solid fa-filter"></i>&nbsp;{{ $__t('Assignment') }}</span>
</div>
<select class="custom-control custom-select"
id="user-filter">
@ -120,7 +120,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#chores-overview-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th>{{ $__t('Chore') }}</th>
<th>{{ $__t('Next estimated tracking') }}</th>
@ -147,7 +147,7 @@
title="{{ $__t('Track chore execution') }}"
data-chore-id="{{ $curentChoreEntry->chore_id }}"
data-chore-name="{{ FindObjectInArrayByPropertyValue($chores, 'id', $curentChoreEntry->chore_id)->name }}">
<i class="fas fa-play"></i>
<i class="fa-solid fa-play"></i>
</a>
<a class="btn btn-secondary btn-sm track-chore-button skip permission-CHORE_TRACK_EXECUTION @if(FindObjectInArrayByPropertyValue($chores, 'id', $curentChoreEntry->chore_id)->period_type == \Grocy\Services\ChoresService::CHORE_PERIOD_TYPE_MANUALLY) disabled @endif"
href="#"
@ -156,13 +156,13 @@
title="{{ $__t('Skip next chore schedule') }}"
data-chore-id="{{ $curentChoreEntry->chore_id }}"
data-chore-name="{{ FindObjectInArrayByPropertyValue($chores, 'id', $curentChoreEntry->chore_id)->name }}">
<i class="fas fa-forward"></i>
<i class="fa-solid fa-forward"></i>
</a>
<div class="dropdown d-inline-block">
<button class="btn btn-sm btn-light text-secondary"
type="button"
data-toggle="dropdown">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
<div class="table-inline-menu dropdown-menu dropdown-menu-right">
<a class="dropdown-item reschedule-chore-button"
@ -225,7 +225,7 @@
class="text-muted"
data-toggle="tooltip"
title="{{ $__t('Rescheduled') }}">
<i class="far fa-clock"></i>
<i class="fa-regular fa-clock"></i>
</span>
@endif
</td>
@ -254,7 +254,7 @@
class="text-muted"
data-toggle="tooltip"
title="{{ $__t('Reassigned') }}">
<i class="fas fa-exchange-alt"></i>
<i class="fa-solid fa-exchange-alt"></i>
</span>
@endif
</span>

View File

@ -19,7 +19,7 @@
for="chore_id">
{{ $__t('Chore') }}
<i id="barcode-lookup-hint"
class="fas fa-barcode float-right mt-1"></i>
class="fa-solid fa-barcode float-right mt-1"></i>
</label>
<select class="form-control combobox barcodescanner-input"
id="chore_id"

View File

@ -12,7 +12,7 @@
href="#"
data-toggle="tooltip"
title="{{ $__t('Edit battery') }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<a id="batterycard-battery-journal-button"
class="btn btn-sm btn-outline-secondary py-0 mr-1 float-right disabled show-as-dialog-link"

View File

@ -6,7 +6,7 @@
<div class="card">
<div class="card-header">
<i class="fas fa-calendar"></i> {{ $__t('Calendar') }}
<i class="fa-solid fa-calendar"></i> {{ $__t('Calendar') }}
</div>
<div class="card-body">
<div id="calendar"

View File

@ -12,7 +12,7 @@
href="#"
data-toggle="tooltip"
title="{{ $__t('Edit chore') }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<a id="chorecard-chore-journal-button"
class="btn btn-sm btn-outline-secondary py-0 mr-1 float-right disabled show-as-dialog-link"

View File

@ -21,7 +21,7 @@
<div class="datetimepicker-wrapper form-group {{ $additionalGroupCssClasses }}">
<label for="{{ $id }}">{{ $__t($label) }}
@if(!empty($hint))
&nbsp;<i class="fas fa-question-circle text-muted"
&nbsp;<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $hint }}"></i>
@ -60,7 +60,7 @@
<div class="input-group-append"
data-target="#{{ $id }}"
data-toggle="datetimepicker">
<div class="input-group-text"><i class="fas fa-calendar"></i></div>
<div class="input-group-text"><i class="fa-solid fa-calendar"></i></div>
</div>
<div class="invalid-feedback">{{ $invalidFeedback }}</div>
</div>

View File

@ -21,7 +21,7 @@
<div class="datetimepicker2-wrapper form-group {{ $additionalGroupCssClasses }}">
<label for="{{ $id }}">{{ $__t($label) }}
@if(!empty($hint))
&nbsp;<i class="fas fa-question-circle text-muted"
&nbsp;<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $hint }}"></i>
@ -60,7 +60,7 @@
<div class="input-group-append"
data-target="#{{ $id }}"
data-toggle="datetimepicker">
<div class="input-group-text"><i class="fas fa-calendar"></i></div>
<div class="input-group-text"><i class="fa-solid fa-calendar"></i></div>
</div>
<div class="invalid-feedback">{{ $invalidFeedback }}</div>
</div>

View File

@ -16,7 +16,7 @@
data-prefill-by-id="{{ $prefillById }}">
<label for="location_id">{{ $__t('Location') }}
@if(!empty($hint))
<i class="fas fa-question-circle text-muted"
<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $hint }}"></i>

View File

@ -27,7 +27,7 @@
{{ $__t($label) }}
@if(!empty($hint) || !empty($hintId))
<i id="{{ $hintId }}"
class="fas fa-question-circle text-muted"
class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $hint }}"></i>
@ -60,10 +60,10 @@
@endif
autocomplete="off">
<div class="input-group-append">
<div class="input-group-text numberpicker-up-button"><i class="fas fa-arrow-up"></i></div>
<div class="input-group-text numberpicker-up-button"><i class="fa-solid fa-arrow-up"></i></div>
</div>
<div class="input-group-append">
<div class="input-group-text numberpicker-down-button"><i class="fas fa-arrow-down"></i></div>
<div class="input-group-text numberpicker-down-button"><i class="fa-solid fa-arrow-down"></i></div>
</div>
<div class="invalid-feedback">{{ $invalidFeedback }}</div>
</div>

View File

@ -13,7 +13,7 @@
href="#"
data-toggle="tooltip"
title="{{ $__t('Edit product') }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<a id="productcard-product-journal-button"
class="btn btn-sm btn-outline-secondary py-0 mr-1 float-right disabled show-as-dialog-link"
@ -46,7 +46,7 @@
<span id="productcard-product-stock-opened-amount"
class="small font-italic locale-number locale-number-quantity-amount"></span>
<span id="productcard-aggregated-amounts"
class="pl-2 text-secondary d-none"><i class="fas fa-custom-sigma-sign"></i> <span id="productcard-product-stock-amount-aggregated"
class="pl-2 text-secondary d-none"><i class="fa-solid fa-custom-sigma-sign"></i> <span id="productcard-product-stock-amount-aggregated"
class="locale-number locale-number-quantity-amount"></span> <span id="productcard-product-stock-qu-name-aggregated"></span> <span id="productcard-product-stock-opened-amount-aggregated locale-number locale-number-quantity-amount"
class="small font-italic"></span></span><br>

View File

@ -26,13 +26,13 @@
for="product_id">
{{ $__t($label) }}
@if(!$disallowAllProductWorkflows)
<i class="fas fa-question-circle text-muted"
<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('Type a new product name or barcode and hit TAB or ENTER to start a workflow') }}"></i>
@endif
@if(!empty($hint))
<i class="fas fa-question-circle text-muted"
<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $hint }}"></i>
@ -40,7 +40,7 @@
<span id="barcode-lookup-disabled-hint"
class="small text-muted d-none float-right"> {{ $__t('Barcode lookup is disabled') }}</span>
<i id="barcode-lookup-hint"
class="fas fa-barcode float-right mt-1"></i>
class="fa-solid fa-barcode float-right mt-1"></i>
</label>
<select class="form-control product-combobox barcodescanner-input"
id="product_id"

View File

@ -17,12 +17,12 @@
<label class="w-100"
for="recipe_id">{{ $__t('Recipe') }}
@if(!empty($hint))
<i class="fas fa-question-circle text-muted"
<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $hint }}"></i>
@endif
<i class="fas fa-barcode float-right mt-1"></i>
<i class="fa-solid fa-barcode float-right mt-1"></i>
</label>
<select class="form-control recipe-combobox barcodescanner-input"
id="recipe_id"

View File

@ -18,7 +18,7 @@ $excludeFieldTypes = [];
<td>
@if($userfieldObject !== null)
@if($userfield->type == \Grocy\Services\UserfieldsService::USERFIELD_TYPE_CHECKBOX)
@if($userfieldObject->value == 1)<i class="fas fa-check"></i>@endif
@if($userfieldObject->value == 1)<i class="fa-solid fa-check"></i>@endif
@elseif($userfield->type == \Grocy\Services\UserfieldsService::USERFIELD_TYPE_PRESET_CHECKLIST)
{!! str_replace(',', '<br>', $userfieldObject->value) !!}
@elseif($userfield->type == \Grocy\Services\UserfieldsService::USERFIELD_TYPE_LINK)

View File

@ -171,12 +171,12 @@
<div class="invalid-feedback">{{ $__t('Mandatory Userfield') }}</div>
</div>
<div class="input-group-append userfield-file-delete">
<span class="input-group-text"><i class="fas fa-trash"></i></span>
<span class="input-group-text"><i class="fa-solid fa-trash"></i></span>
</div>
<div class="input-group-append">
<a href="#"
target="_blank"
class="input-group-text userfield-file-show d-none discrete-link"><i class="fas fa-eye"></i></a>
class="input-group-text userfield-file-show d-none discrete-link"><i class="fa-solid fa-eye"></i></a>
</div>
</div>
</div>
@ -196,7 +196,7 @@
<div class="invalid-feedback">{{ $__t('Mandatory Userfield') }}</div>
</div>
<div class="input-group-append userfield-file-delete">
<span class="input-group-text"><i class="fas fa-trash"></i></span>
<span class="input-group-text"><i class="fa-solid fa-trash"></i></span>
</div>
</div>
<img src=""

View File

@ -23,7 +23,7 @@
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"
id="related-links">
@ -115,10 +115,22 @@
value="1">
<label class="form-check-label custom-control-label"
for="use_specific_stock_entry">{{ $__t('Use a specific stock item') }}
&nbsp;<i class="fas fa-question-circle text-muted"
&nbsp;<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('The first item in this list would be picked by the default rule which is "Opened first, then first due first, then first in first out"') }}"></i>
title="{{ $__t('The first item in this list would be picked by the default rule which is "
Opened
first,
then
first
due
first,
then
first
in
first
out"')
}}"></i>
</label>
</div>
<select disabled

View File

@ -14,13 +14,13 @@
type="button"
data-toggle="collapse"
data-target="#table-filter-row">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</button>
<button class="btn btn-outline-dark d-md-none mt-2 order-1 order-md-3"
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
</div>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"
@ -37,7 +37,7 @@
<div class="col">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
<span class="input-group-text"><i class="fa-solid fa-search"></i></span>
</div>
<input type="text"
id="search"
@ -65,7 +65,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#equipment-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th>{{ $__t('Name') }}</th>
@ -84,13 +84,13 @@
href="{{ $U('/equipment/') }}{{ $equipmentItem->id }}"
data-toggle="tooltip"
title="{{ $__t('Edit this item') }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<div class="dropdown d-inline-block">
<button class="btn btn-sm btn-light text-secondary"
type="button"
data-toggle="dropdown">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
<div class="table-inline-menu dropdown-menu dropdown-menu-right hide-on-fullscreen-card hide-when-embedded">
<a class="dropdown-item equipment-delete-button"
@ -151,7 +151,7 @@
href="#"
data-toggle="tooltip"
title="{{ $__t('Expand to fullscreen') }}">
<i class="fas fa-expand-arrows-alt"></i>
<i class="fa-solid fa-expand-arrows-alt"></i>
</a>
<a id="selectedEquipmentInstructionManualDownloadButton"
class="btn btn-sm btn-outline-secondary py-0 float-right mr-1"
@ -159,7 +159,7 @@
target="_blank"
data-toggle="tooltip"
title="{{ $__t('Download file') }}">
<i class="fas fa-file-download"></i>
<i class="fa-solid fa-file-download"></i>
</a>
</div>
<div class="card-body py-0 px-0">
@ -183,7 +183,7 @@
href="#"
data-toggle="tooltip"
title="{{ $__t('Expand to fullscreen') }}">
<i class="fas fa-expand-arrows-alt"></i>
<i class="fa-solid fa-expand-arrows-alt"></i>
</a>
<a id="file-userfield-{{$userfield->name}}-download-button"
class="btn btn-sm btn-outline-secondary py-0 float-right mr-1"
@ -191,7 +191,7 @@
target="_blank"
data-toggle="tooltip"
title="{{ $__t('Download file') }}">
<i class="fas fa-file-download"></i>
<i class="fa-solid fa-file-download"></i>
</a>
</div>
<div class="card-body py-0 px-0">
@ -217,7 +217,7 @@
href="#"
data-toggle="tooltip"
title="{{ $__t('Expand to fullscreen') }}">
<i class="fas fa-expand-arrows-alt"></i>
<i class="fa-solid fa-expand-arrows-alt"></i>
</a>
</div>
<div class="card-body">

View File

@ -93,7 +93,7 @@
</label>
</div>
<div class="input-group-append">
<span class="input-group-text"><i class="fas fa-trash"
<span class="input-group-text"><i class="fa-solid fa-trash"
id="delete-current-instruction-manual-button"></i></span>
</div>
</div>

View File

@ -86,7 +86,7 @@
'decimals' => $userSettings['stock_decimal_places_prices'],
'value' => '',
'hint' => $__t('Per stock quantity unit', GROCY_CURRENCY),
'additionalHtmlContextHelp' => '<i class="fas fa-question-circle text-muted"
'additionalHtmlContextHelp' => '<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="' . $__t('This will apply to added products') . '"></i>',
@ -116,7 +116,7 @@
<div class="form-group">
<label for="stock_label_type">
{{ $__t('Stock entry label') }}
<i class="fas fa-question-circle text-muted"
<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('This will apply to added products') }}"></i>
@ -135,7 +135,7 @@
<div class="form-group">
<label for="note">
{{ $__t('Note') }}
<i class="fas fa-question-circle text-muted"
<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('This will apply to added products') }}"></i>

View File

@ -51,7 +51,7 @@
rel="stylesheet">
<link href="{{ $U('/node_modules/startbootstrap-sb-admin/css/sb-admin.min.css?v=', true) }}{{ $version }}"
rel="stylesheet">
<link href="{{ $U('/node_modules/@fortawesome/fontawesome-free/css/all.css?v=', true) }}{{ $version }}"
<link href="{{ $U('/node_modules/@fortawesome/fontawesome-free/css/all.min.css?v=', true) }}{{ $version }}"
rel="stylesheet">
<link href="{{ $U('/node_modules/@danielfarrell/bootstrap-combobox/css/bootstrap-combobox.css?v=', true) }}{{ $version }}"
rel="stylesheet">
@ -131,7 +131,7 @@ $userSettings['night_mode_enabled_internal'] = false;
height="30"></a>
<span id="clock-container"
class="text-muted font-italic d-none">
<i class="far fa-clock"></i>
<i class="fa-regular fa-clock"></i>
<span id="clock-small"
class="d-inline d-sm-none"></span>
<span id="clock-big"
@ -158,7 +158,7 @@ $userSettings['night_mode_enabled_internal'] = false;
data-nav-for-page="stockoverview">
<a class="nav-link discrete-link"
href="{{ $U('/stockoverview') }}">
<i class="fas fa-box"></i>
<i class="fa-solid fa-box"></i>
<span class="nav-link-text">{{ $__t('Stock overview') }}</span>
</a>
</li>
@ -171,7 +171,7 @@ $userSettings['night_mode_enabled_internal'] = false;
data-nav-for-page="shoppinglist">
<a class="nav-link discrete-link"
href="{{ $U('/shoppinglist') }}">
<i class="fas fa-shopping-cart"></i>
<i class="fa-solid fa-shopping-cart"></i>
<span class="nav-link-text">{{ $__t('Shopping list') }}</span>
</a>
</li>
@ -185,7 +185,7 @@ $userSettings['night_mode_enabled_internal'] = false;
data-nav-for-page="recipes">
<a class="nav-link discrete-link"
href="{{ $U('/recipes') }}">
<i class="fas fa-pizza-slice"></i>
<i class="fa-solid fa-pizza-slice"></i>
<span class="nav-link-text">{{ $__t('Recipes') }}</span>
</a>
</li>
@ -197,7 +197,7 @@ $userSettings['night_mode_enabled_internal'] = false;
<a id="meal-plan-nav-link"
class="nav-link discrete-link"
href="{{ $U('/mealplan') }}">
<i class="fas fa-paper-plane"></i>
<i class="fa-solid fa-paper-plane"></i>
<span class="nav-link-text">{{ $__t('Meal plan') }}</span>
</a>
</li>
@ -211,7 +211,7 @@ $userSettings['night_mode_enabled_internal'] = false;
data-nav-for-page="choresoverview">
<a class="nav-link discrete-link"
href="{{ $U('/choresoverview') }}">
<i class="fas fa-home"></i>
<i class="fa-solid fa-home"></i>
<span class="nav-link-text">{{ $__t('Chores overview') }}</span>
</a>
</li>
@ -224,7 +224,7 @@ $userSettings['night_mode_enabled_internal'] = false;
data-nav-for-page="tasks">
<a class="nav-link discrete-link"
href="{{ $U('/tasks') }}">
<i class="fas fa-tasks"></i>
<i class="fa-solid fa-tasks"></i>
<span class="nav-link-text">{{ $__t('Tasks') }}</span>
</a>
</li>
@ -237,7 +237,7 @@ $userSettings['night_mode_enabled_internal'] = false;
data-nav-for-page="batteriesoverview">
<a class="nav-link discrete-link"
href="{{ $U('/batteriesoverview') }}">
<i class="fas fa-battery-half"></i>
<i class="fa-solid fa-battery-half"></i>
<span class="nav-link-text">{{ $__t('Batteries overview') }}</span>
</a>
</li>
@ -250,7 +250,7 @@ $userSettings['night_mode_enabled_internal'] = false;
data-nav-for-page="equipment">
<a class="nav-link discrete-link"
href="{{ $U('/equipment') }}">
<i class="fas fa-toolbox"></i>
<i class="fa-solid fa-toolbox"></i>
<span class="nav-link-text">{{ $__t('Equipment') }}</span>
</a>
</li>
@ -264,7 +264,7 @@ $userSettings['night_mode_enabled_internal'] = false;
data-nav-for-page="calendar">
<a class="nav-link discrete-link"
href="{{ $U('/calendar') }}">
<i class="fas fa-calendar-alt"></i>
<i class="fa-solid fa-calendar-days"></i>
<span class="nav-link-text">{{ $__t('Calendar') }}</span>
</a>
</li>
@ -279,7 +279,7 @@ $userSettings['night_mode_enabled_internal'] = false;
data-nav-for-page="purchase">
<a class="nav-link discrete-link"
href="{{ $U('/purchase') }}">
<i class="fas fa-cart-plus"></i>
<i class="fa-solid fa-cart-plus"></i>
<span class="nav-link-text">{{ $__t('Purchase') }}</span>
</a>
</li>
@ -290,7 +290,7 @@ $userSettings['night_mode_enabled_internal'] = false;
data-nav-for-page="consume">
<a class="nav-link discrete-link"
href="{{ $U('/consume') }}">
<i class="fas fa-utensils"></i>
<i class="fa-solid fa-utensils"></i>
<span class="nav-link-text">{{ $__t('Consume') }}</span>
</a>
</li>
@ -302,7 +302,7 @@ $userSettings['night_mode_enabled_internal'] = false;
data-nav-for-page="transfer">
<a class="nav-link discrete-link"
href="{{ $U('/transfer') }}">
<i class="fas fa-exchange-alt"></i>
<i class="fa-solid fa-exchange-alt"></i>
<span class="nav-link-text">{{ $__t('Transfer') }}</span>
</a>
</li>
@ -314,7 +314,7 @@ $userSettings['night_mode_enabled_internal'] = false;
data-nav-for-page="inventory">
<a class="nav-link discrete-link"
href="{{ $U('/inventory') }}">
<i class="fas fa-list"></i>
<i class="fa-solid fa-list"></i>
<span class="nav-link-text">{{ $__t('Inventory') }}</span>
</a>
</li>
@ -327,7 +327,7 @@ $userSettings['night_mode_enabled_internal'] = false;
data-nav-for-page="choretracking">
<a class="nav-link discrete-link"
href="{{ $U('/choretracking') }}">
<i class="fas fa-play"></i>
<i class="fa-solid fa-play"></i>
<span class="nav-link-text">{{ $__t('Chore tracking') }}</span>
</a>
</li>
@ -340,7 +340,7 @@ $userSettings['night_mode_enabled_internal'] = false;
data-nav-for-page="batterytracking">
<a class="nav-link discrete-link"
href="{{ $U('/batterytracking') }}">
<i class="fas fa-car-battery"></i>
<i class="fa-solid fa-car-battery"></i>
<span class="nav-link-text">{{ $__t('Battery tracking') }}</span>
</a>
</li>
@ -373,7 +373,7 @@ $userSettings['night_mode_enabled_internal'] = false;
<a class="nav-link nav-link-collapse collapsed discrete-link"
data-toggle="collapse"
href="#top-nav-manager-master-data">
<i class="fas fa-table"></i>
<i class="fa-solid fa-table"></i>
<span class="nav-link-text">{{ $__t('Manage master data') }}</span>
</a>
<ul id="top-nav-manager-master-data"
@ -468,7 +468,7 @@ $userSettings['night_mode_enabled_internal'] = false;
<li class="nav-item">
<a id="sidenavToggler"
class="nav-link text-center">
<i class="fas fa-angle-left"></i>
<i class="fa-solid fa-angle-left"></i>
</a>
</li>
</ul>
@ -480,7 +480,7 @@ $userSettings['night_mode_enabled_internal'] = false;
href="#"
data-toggle="dropdown">
@if(empty(GROCY_USER_PICTURE_FILE_NAME))
<i class="fas fa-user"></i>
<i class="fa-solid fa-user"></i>
@else
<img class="rounded-circle"
src="{{ $U('/files/userpictures/' . base64_encode(GROCY_USER_PICTURE_FILE_NAME) . '_' . base64_encode(GROCY_USER_PICTURE_FILE_NAME) . '?force_serve_as=picture&best_fit_width=32&best_fit_height=32') }}">
@ -490,14 +490,14 @@ $userSettings['night_mode_enabled_internal'] = false;
<div class="dropdown-menu dropdown-menu-right">
<a class="dropdown-item logout-button discrete-link"
href="{{ $U('/logout') }}"><i class="fas fa-sign-out-alt"></i>&nbsp;{{ $__t('Logout') }}</a>
href="{{ $U('/logout') }}"><i class="fa-solid fa-sign-out-alt"></i>&nbsp;{{ $__t('Logout') }}</a>
<div class="dropdown-divider"></div>
@if(!defined('GROCY_EXTERNALLY_MANAGED_AUTHENTICATION'))
<a class="dropdown-item logout-button discrete-link"
href="{{ $U('/user/' . GROCY_USER_ID . '?changepw=true') }}"><i class="fas fa-key"></i>&nbsp;{{ $__t('Change password') }}</a>
href="{{ $U('/user/' . GROCY_USER_ID . '?changepw=true') }}"><i class="fa-solid fa-key"></i>&nbsp;{{ $__t('Change password') }}</a>
@else
<a class="dropdown-item logout-button discrete-link"
href="{{ $U('/user/' . GROCY_USER_ID) }}"><i class="fas fa-key"></i>&nbsp;{{ $__t('Edit user') }}</a>
href="{{ $U('/user/' . GROCY_USER_ID) }}"><i class="fa-solid fa-key"></i>&nbsp;{{ $__t('Edit user') }}</a>
@endif
</div>
</li>
@ -507,7 +507,7 @@ $userSettings['night_mode_enabled_internal'] = false;
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle discrete-link"
href="#"
data-toggle="dropdown"><i class="fas fa-sliders-h"></i> <span class="d-inline d-lg-none">{{ $__t('View settings') }}</span></a>
data-toggle="dropdown"><i class="fa-solid fa-sliders-h"></i> <span class="d-inline d-lg-none">{{ $__t('View settings') }}</span></a>
<div class="dropdown-menu dropdown-menu-right">
<div class="dropdown-item">
@ -638,54 +638,54 @@ $userSettings['night_mode_enabled_internal'] = false;
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle discrete-link"
href="#"
data-toggle="dropdown"><i class="fas fa-wrench"></i> <span class="d-inline d-lg-none">{{ $__t('Settings') }}</span></a>
data-toggle="dropdown"><i class="fa-solid fa-wrench"></i> <span class="d-inline d-lg-none">{{ $__t('Settings') }}</span></a>
<div class="dropdown-menu dropdown-menu-right">
<a class="dropdown-item discrete-link"
href="{{ $U('/stocksettings') }}"><i class="fas fa-box"></i>&nbsp;{{ $__t('Stock settings') }}</a>
href="{{ $U('/stocksettings') }}"><i class="fa-solid fa-box"></i>&nbsp;{{ $__t('Stock settings') }}</a>
@if(GROCY_FEATURE_FLAG_SHOPPINGLIST)
<a class="dropdown-item discrete-link permission-SHOPPINGLIST"
href="{{ $U('/shoppinglistsettings') }}"><i class="fas fa-shopping-cart"></i>&nbsp;{{ $__t('Shopping list settings') }}</a>
href="{{ $U('/shoppinglistsettings') }}"><i class="fa-solid fa-shopping-cart"></i>&nbsp;{{ $__t('Shopping list settings') }}</a>
@endif
@if(GROCY_FEATURE_FLAG_RECIPES)
<a class="dropdown-item discrete-link permission-RECIPES"
href="{{ $U('/recipessettings') }}"><i class="fas fa-pizza-slice"></i>&nbsp;{{ $__t('Recipes settings') }}</a>
href="{{ $U('/recipessettings') }}"><i class="fa-solid fa-pizza-slice"></i>&nbsp;{{ $__t('Recipes settings') }}</a>
@endif
@if(GROCY_FEATURE_FLAG_CHORES)
<a class="dropdown-item discrete-link permission-CHORES"
href="{{ $U('/choressettings') }}"><i class="fas fa-home"></i>&nbsp;{{ $__t('Chores settings') }}</a>
href="{{ $U('/choressettings') }}"><i class="fa-solid fa-home"></i>&nbsp;{{ $__t('Chores settings') }}</a>
@endif
@if(GROCY_FEATURE_FLAG_TASKS)
<a class="dropdown-item discrete-link permission-TASKS"
href="{{ $U('/taskssettings') }}"><i class="fas fa-tasks"></i>&nbsp;{{ $__t('Tasks settings') }}</a>
href="{{ $U('/taskssettings') }}"><i class="fa-solid fa-tasks"></i>&nbsp;{{ $__t('Tasks settings') }}</a>
@endif
@if(GROCY_FEATURE_FLAG_BATTERIES)
<a class="dropdown-item discrete-link permission-BATTERIES"
href="{{ $U('/batteriessettings') }}"><i class="fas fa-battery-half"></i>&nbsp;{{ $__t('Batteries settings') }}</a>
href="{{ $U('/batteriessettings') }}"><i class="fa-solid fa-battery-half"></i>&nbsp;{{ $__t('Batteries settings') }}</a>
@endif
<div class="dropdown-divider"></div>
<a data-href="{{ $U('/usersettings') }}"
class="dropdown-item discrete-link link-return">
<i class="fas fa-user-cog"></i> {{ $__t('User settings') }}
<i class="fa-solid fa-user-cog"></i> {{ $__t('User settings') }}
</a>
@if(!GROCY_IS_EMBEDDED_INSTALL && !GROCY_DISABLE_AUTH)
<a class="dropdown-item discrete-link permission-USERS_READ"
href="{{ $U('/users') }}"><i class="fas fa-users"></i>&nbsp;{{ $__t('Manage users') }}</a>
href="{{ $U('/users') }}"><i class="fa-solid fa-users"></i>&nbsp;{{ $__t('Manage users') }}</a>
@endif
<div class="dropdown-divider"></div>
@if(!GROCY_DISABLE_AUTH)
<a class="dropdown-item discrete-link"
href="{{ $U('/manageapikeys') }}"><i class="fas fa-handshake"></i>&nbsp;{{ $__t('Manage API keys') }}</a>
href="{{ $U('/manageapikeys') }}"><i class="fa-solid fa-handshake"></i>&nbsp;{{ $__t('Manage API keys') }}</a>
@endif
<a class="dropdown-item discrete-link"
target="_blank"
href="{{ $U('/api') }}"><i class="fas fa-book"></i>&nbsp;{{ $__t('REST API browser') }}</a>
href="{{ $U('/api') }}"><i class="fa-solid fa-book"></i>&nbsp;{{ $__t('REST API browser') }}</a>
<a class="dropdown-item discrete-link"
href="{{ $U('/barcodescannertesting') }}"><i class="fas fa-barcode"></i>&nbsp;{{ $__t('Barcode scanner testing') }}</a>
href="{{ $U('/barcodescannertesting') }}"><i class="fa-solid fa-barcode"></i>&nbsp;{{ $__t('Barcode scanner testing') }}</a>
<div class="dropdown-divider"></div>
<a id="about-dialog-link"
class="dropdown-item discrete-link"
href="#"><i class="fas fa-info fa-fw"></i>&nbsp;{{ $__t('About grocy') }} (Version {{ $version }})</a>
href="#"><i class="fa-solid fa-info fa-fw"></i>&nbsp;{{ $__t('About grocy') }} (Version {{ $version }})</a>
</div>
</li>
</ul>

View File

@ -31,7 +31,7 @@
<div class="title-related-links d-print-none">
<h2 class="title">
@yield('title')
<i class="fas fa-question-circle text-muted small"
<i class="fa-solid fa-question-circle text-muted small"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it') }}"></i>
@ -44,7 +44,7 @@
<label class="form-check-label custom-control-label"
for="include-out-of-stock">
{{ $__t('Show only in-stock products') }}
<i class="fas fa-question-circle text-muted"
<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('Out of stock items will be shown at the products default location') }}"></i>
@ -55,7 +55,7 @@
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
</div>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"

View File

@ -59,7 +59,7 @@
$location->is_freezer == 1) checked @endif class="form-check-input custom-control-input" type="checkbox" id="is_freezer" name="is_freezer" value="1">
<label class="form-check-label custom-control-label"
for="is_freezer">{{ $__t('Is freezer') }}
&nbsp;<i class="fas fa-question-circle text-muted"
&nbsp;<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('When moving products from/to a freezer location, the products due date is automatically adjusted according to the product settings') }}"></i>

View File

@ -14,13 +14,13 @@
type="button"
data-toggle="collapse"
data-target="#table-filter-row">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</button>
<button class="btn btn-outline-dark d-md-none mt-2 order-1 order-md-3"
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
</div>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"
@ -45,7 +45,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
<span class="input-group-text"><i class="fa-solid fa-search"></i></span>
</div>
<input type="text"
id="search"
@ -75,7 +75,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#locations-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th>{{ $__t('Name') }}</th>
<th>{{ $__t('Description') }}</th>
@ -94,7 +94,7 @@
href="{{ $U('/location/') }}{{ $location->id }}?embedded"
data-toggle="tooltip"
title="{{ $__t('Edit this item') }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<a class="btn btn-danger btn-sm location-delete-button"
href="#"
@ -102,7 +102,7 @@
data-location-name="{{ $location->name }}"
data-toggle="tooltip"
title="{{ $__t('Delete this item') }}">
<i class="fas fa-trash"></i>
<i class="fa-solid fa-trash"></i>
</a>
</td>
<td>

View File

@ -44,7 +44,7 @@
<label class="form-check-label custom-control-label"
for="stay_logged_in">
{{ $__t('Stay logged in permanently') }}
<i class="fas fa-question-circle text-muted"
<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('When not set, you will get logged out at latest after 30 days') }}"></i>

View File

@ -23,13 +23,13 @@
type="button"
data-toggle="collapse"
data-target="#table-filter-row">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</button>
<button class="btn btn-outline-dark d-md-none mt-2 order-1 order-md-3"
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
</div>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"
@ -50,7 +50,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
<span class="input-group-text"><i class="fa-solid fa-search"></i></span>
</div>
<input type="text"
id="search"
@ -80,7 +80,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#apikeys-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th>{{ $__t('API key') }}</th>
<th class="allow-grouping">{{ $__t('User') }}</th>
@ -100,7 +100,7 @@
data-apikey-apikey="{{ $apiKey->api_key }}"
data-toggle="tooltip"
title="{{ $__t('Delete this item') }}">
<i class="fas fa-trash"></i>
<i class="fa-solid fa-trash"></i>
</a>
<a class="btn btn-info btn-sm apikey-show-qr-button"
href="#"
@ -108,7 +108,7 @@
data-apikey-type="{{ $apiKey->key_type }}"
data-toggle="tooltip"
title="{{ $__t('Show a QR-Code for this API key') }}">
<i class="fas fa-qrcode"></i>
<i class="fa-solid fa-qrcode"></i>
</a>
</td>
<td>

View File

@ -95,7 +95,7 @@
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
</div>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100 d-print-none"

View File

@ -14,13 +14,13 @@
type="button"
data-toggle="collapse"
data-target="#table-filter-row">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</button>
<button class="btn btn-outline-dark d-md-none mt-2 order-1 order-md-3"
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
</div>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"
@ -41,7 +41,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
<span class="input-group-text"><i class="fa-solid fa-search"></i></span>
</div>
<input type="text"
id="search"
@ -71,7 +71,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#mealplansections-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th>{{ $__t('Name') }}</th>
<th>{{ $__t('Sort number') }}</th>
@ -86,7 +86,7 @@
href="{{ $U('/mealplansection/') }}{{ $mealplanSection->id }}?embedded"
data-toggle="tooltip"
title="{{ $__t('Edit this item') }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<a class="btn btn-danger btn-sm mealplansection-delete-button"
href="#"
@ -94,7 +94,7 @@
data-mealplansection-name="{{ $mealplanSection->name }}"
data-toggle="tooltip"
title="{{ $__t('Delete this item') }}">
<i class="fas fa-trash"></i>
<i class="fa-solid fa-trash"></i>
</a>
</td>
<td>

View File

@ -50,7 +50,7 @@
value="{{ $product->id }}">
<div class="form-group">
<label for="name">{{ $__t('Barcode') }}&nbsp;<i class="fas fa-barcode"></i></label>
<label for="name">{{ $__t('Barcode') }}&nbsp;<i class="fa-solid fa-barcode"></i></label>
<div class="input-group">
<input type="text"
class="form-control barcodescanner-input"

View File

@ -19,7 +19,7 @@
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
</div>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"
@ -131,7 +131,7 @@
<div class="form-group">
<label for="default_consume_location_id">
{{ $__t('Default consume location') }}
<i class="fas fa-question-circle text-muted"
<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('Stock entries at this location will be consumed first') }}"></i>
@ -190,7 +190,7 @@
$product->cumulate_min_stock_amount_of_sub_products == 1) checked @endif class="form-check-input custom-control-input" type="checkbox" id="cumulate_min_stock_amount_of_sub_products" name="cumulate_min_stock_amount_of_sub_products" value="1">
<label class="form-check-label custom-control-label"
for="cumulate_min_stock_amount_of_sub_products">{{ $__t('Accumulate sub products min. stock amount') }}
&nbsp;<i class="fas fa-question-circle text-muted"
&nbsp;<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be missing, only this product') }}"></i>
@ -205,7 +205,7 @@
&&
$product->treat_opened_as_out_of_stock == 1) checked @endif class="form-check-input custom-control-input" type="checkbox" id="treat_opened_as_out_of_stock" name="treat_opened_as_out_of_stock" value="1">
<label class="form-check-label custom-control-label"
for="treat_opened_as_out_of_stock">{{ $__t('Treat opened as out of stock') }}&nbsp;<i class="fas fa-question-circle text-muted"
for="treat_opened_as_out_of_stock">{{ $__t('Treat opened as out of stock') }}&nbsp;<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('When enabled, opened items will be counted as missing for calculating if this product is below its minimum stock amount') }}"></i>
@ -218,7 +218,7 @@
<div class="form-group">
<label class="d-block my-0"
for="location_id">{{ $__t('Due date type') }}
<i class="fas fa-question-circle text-muted"
<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('Based on the selected type, the highlighting on the stock overview page will be different') }}"></i>
@ -234,7 +234,7 @@
$product->due_type == 1) checked @else checked @endif>
<label class="custom-control-label"
for="due-type-bestbefore">{{ $__t('Best before date') }}
<i class="fas fa-question-circle text-muted"
<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('Means that the product is maybe still safe to be consumed after its due date is reached') }}"></i>
@ -251,7 +251,7 @@
$product->due_type == 2) checked @endif>
<label class="custom-control-label"
for="due-type-expiration">{{ $__t('Expiration date') }}
<i class="fas fa-question-circle text-muted"
<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('Means that the product is not safe to be consumed after its due date is reached') }}"></i>
@ -319,7 +319,7 @@
&&
$product->should_not_be_frozen == 1) checked @endif class="form-check-input custom-control-input" type="checkbox" id="should_not_be_frozen" name="should_not_be_frozen" value="1">
<label class="form-check-label custom-control-label"
for="should_not_be_frozen">{{ $__t('Should not be frozen') }}&nbsp;<i class="fas fa-question-circle text-muted"
for="should_not_be_frozen">{{ $__t('Should not be frozen') }}&nbsp;<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('When enabled, on moving this product to a freezer location (so when freezing it), a warning will be shown') }}"></i>
@ -370,7 +370,7 @@
<div class="form-group">
<label for="qu_id_purchase">{{ $__t('Default quantity unit purchase') }}</label>
<i class="fas fa-question-circle text-muted"
<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('This is the default quantity unit used when adding this product to the shopping list') }}"></i>
@ -407,7 +407,7 @@
$product->enable_tare_weight_handling == 1) checked @endif class="form-check-input custom-control-input" type="checkbox" id="enable_tare_weight_handling" name="enable_tare_weight_handling" value="1">
<label class="form-check-label custom-control-label"
for="enable_tare_weight_handling">{{ $__t('Enable tare weight handling') }}
&nbsp;<i class="fas fa-question-circle text-muted"
&nbsp;<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below') }}"></i>
@ -437,7 +437,7 @@
$product->not_check_stock_fulfillment_for_recipes == 1) checked @endif class="form-check-input custom-control-input" type="checkbox" id="not_check_stock_fulfillment_for_recipes" name="not_check_stock_fulfillment_for_recipes" value="1">
<label class="form-check-label custom-control-label"
for="not_check_stock_fulfillment_for_recipes">{{ $__t('Disable stock fulfillment checking for this ingredient') }}
&nbsp;<i class="fas fa-question-circle text-muted"
&nbsp;<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('This will be used as the default setting when adding this product as a recipe ingredient') }}"></i>
@ -479,7 +479,7 @@
@if(GROCY_FEATURE_FLAG_LABEL_PRINTER)
<div class="form-group">
<label for="default_stock_label_type">{{ $__t('Default stock entry label') }}</label>
<i class="fas fa-question-circle text-muted"
<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('This is the default which will be prefilled on purchase') }}"></i>
@ -510,7 +510,7 @@
&&
$product->hide_on_stock_overview == 1) checked @endif class="form-check-input custom-control-input" type="checkbox" id="hide_on_stock_overview" name="hide_on_stock_overview" value="1">
<label class="form-check-label custom-control-label"
for="hide_on_stock_overview">{{ $__t('Never show on stock overview') }}&nbsp;<i class="fas fa-question-circle text-muted"
for="hide_on_stock_overview">{{ $__t('Never show on stock overview') }}&nbsp;<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('The stock overview page lists all products which are currently in-stock or below their min. stock amount - enable this to hide this product there always') }}"></i>
@ -524,7 +524,7 @@
&&
$product->no_own_stock == 1) checked @endif class="form-check-input custom-control-input" type="checkbox" id="no_own_stock" name="no_own_stock" value="1">
<label class="form-check-label custom-control-label"
for="no_own_stock">{{ $__t('Disable own stock') }}&nbsp;<i class="fas fa-question-circle text-muted"
for="no_own_stock">{{ $__t('Disable own stock') }}&nbsp;<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('When enabled, this product can\'t have own stock, means it will not be selectable on purchase (useful for parent products which are just used as a summary/total view of the child products)') }}"></i>
@ -558,7 +558,7 @@
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
@if($mode == "edit")
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"
@ -583,7 +583,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#barcode-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th>{{ $__t('Barcode') }}</th>
<th class="@if(!GROCY_FEATURE_FLAG_STOCK_PRICE_TRACKING) d-none @endif allow-grouping">{{ $__t('Store') }}</th>
@ -605,7 +605,7 @@
<td class="fit-content border-right">
<a class="btn btn-sm btn-info show-as-dialog-link @if($barcode->product_id == null) disabled @endif"
href="{{ $U('/productbarcodes/' . $barcode->id . '?embedded&product=' . $product->id ) }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<a class="btn btn-sm btn-danger barcode-delete-button @if($barcode->product_id == null) disabled @endif"
href="#"
@ -613,7 +613,7 @@
data-barcode="{{ $barcode->barcode }}"
data-product-barcode="{{ $product->barcode }}"
data-product-id="{{ $product->id }}">
<i class="fas fa-trash"></i>
<i class="fa-solid fa-trash"></i>
</a>
</td>
<td>
@ -660,7 +660,7 @@
<div class="title-related-links">
<h4>
<span class="ls-n1">{{ $__t('grocycode') }}</span>
<i class="fas fa-question-circle text-muted"
<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('grocycode is a unique referer to this %s in your grocy instance - print it onto a label and scan it like any other barcode', $__t('Product')) }}"></i>
@ -696,7 +696,7 @@
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
@if($mode == "edit")
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"
@ -720,7 +720,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#qu-conversions-table-products"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th class="allow-grouping">{{ $__t('Quantity unit from') }}</th>
<th class="allow-grouping">{{ $__t('Quantity unit to') }}</th>
@ -737,12 +737,12 @@
<td class="fit-content border-right">
<a class="btn btn-sm btn-info show-as-dialog-link @if($quConversion->product_id == null) disabled @endif"
href="{{ $U('/quantityunitconversion/' . $quConversion->id . '?embedded&product=' . $product->id ) }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<a class="btn btn-sm btn-danger qu-conversion-delete-button @if($quConversion->product_id == null) disabled @endif"
href="#"
data-qu-conversion-id="{{ $quConversion->id }}">
<i class="fas fa-trash"></i>
<i class="fa-solid fa-trash"></i>
</a>
</td>
<td>
@ -798,7 +798,7 @@
</label>
</div>
<div class="input-group-append">
<span class="input-group-text"><i class="fas fa-trash"
<span class="input-group-text"><i class="fa-solid fa-trash"
id="delete-current-product-picture-button"></i></span>
</div>
</div>

View File

@ -14,13 +14,13 @@
type="button"
data-toggle="collapse"
data-target="#table-filter-row">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</button>
<button class="btn btn-outline-dark d-md-none mt-2 order-1 order-md-3"
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
</div>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"
@ -45,7 +45,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
<span class="input-group-text"><i class="fa-solid fa-search"></i></span>
</div>
<input type="text"
id="search"
@ -75,7 +75,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#productgroups-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th>{{ $__t('Name') }}</th>
<th>{{ $__t('Description') }}</th>
@ -94,7 +94,7 @@
href="{{ $U('/productgroup/') }}{{ $productGroup->id }}?embedded"
data-toggle="tooltip"
title="{{ $__t('Edit this item') }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<a class="btn btn-danger btn-sm product-group-delete-button"
href="#"
@ -102,7 +102,7 @@
data-group-name="{{ $productGroup->name }}"
data-toggle="tooltip"
title="{{ $__t('Delete this item') }}">
<i class="fas fa-trash"></i>
<i class="fa-solid fa-trash"></i>
</a>
</td>
<td>
@ -115,7 +115,7 @@
{{ count(FindAllObjectsInArrayByPropertyValue($products, 'product_group_id', $productGroup->id)) }}
<a class="btn btn-link btn-sm text-body"
href="{{ $U('/products?product-group=') . $productGroup->id }}">
<i class="fas fa-external-link-alt"></i>
<i class="fa-solid fa-external-link-alt"></i>
</a>
</td>

View File

@ -14,13 +14,13 @@
type="button"
data-toggle="collapse"
data-target="#table-filter-row">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</button>
<button class="btn btn-outline-dark d-md-none mt-2 order-1 order-md-3"
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
</div>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"
@ -49,7 +49,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
<span class="input-group-text"><i class="fa-solid fa-search"></i></span>
</div>
<input type="text"
id="search"
@ -60,7 +60,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-filter"></i>&nbsp;{{ $__t('Product group') }}</span>
<span class="input-group-text"><i class="fa-solid fa-filter"></i>&nbsp;{{ $__t('Product group') }}</span>
</div>
<select class="custom-control custom-select"
id="product-group-filter">
@ -115,7 +115,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#products-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th>{{ $__t('Name') }}</th>
<th class="@if(!GROCY_FEATURE_FLAG_STOCK_LOCATION_TRACKING) d-none @endif allow-grouping">{{ $__t('Location') }}</th>
@ -140,7 +140,7 @@
href="{{ $U('/product/') }}{{ $product->id }}"
data-toggle="tooltip"
title="{{ $__t('Edit this item') }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<a class="btn btn-danger btn-sm product-delete-button"
href="#"
@ -148,13 +148,13 @@
data-product-name="{{ $product->name }}"
data-toggle="tooltip"
title="{{ $__t('Delete this item') }}">
<i class="fas fa-trash"></i>
<i class="fa-solid fa-trash"></i>
</a>
<div class="dropdown d-inline-block">
<button class="btn btn-sm btn-light text-secondary"
type="button"
data-toggle="dropdown">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
<div class="table-inline-menu dropdown-menu dropdown-menu-right">
<a class="dropdown-item"
@ -174,7 +174,7 @@
<td>
{{ $product->name }}
@if(!empty($product->picture_file_name))
<i class="fas fa-image text-muted"
<i class="fa-solid fa-image text-muted"
data-toggle="tooltip"
title="{{ $__t('This product has a picture') }}"></i>
@endif
@ -237,7 +237,7 @@
novalidate>
<div class="form-group">
<label for="merge-products-keep">{{ $__t('Product to keep') }}&nbsp;<i class="fas fa-question-circle text-muted"
<label for="merge-products-keep">{{ $__t('Product to keep') }}&nbsp;<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('After merging, this product will be kept') }}"></i>
@ -252,7 +252,7 @@
</select>
</div>
<div class="form-group">
<label for="merge-products-remove">{{ $__t('Product to remove') }}&nbsp;<i class="fas fa-question-circle text-muted"
<label for="merge-products-remove">{{ $__t('Product to remove') }}&nbsp;<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('After merging, all occurences of this product will be replaced by the kept product (means this product will not exist anymore)') }}"></i>

View File

@ -23,7 +23,7 @@
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"
id="related-links">

View File

@ -110,7 +110,7 @@
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"
id="related-links">
@ -130,7 +130,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#qu-conversions-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th>{{ $__t('Factor') }}</th>
<th>{{ $__t('Unit') }}</th>
@ -144,12 +144,12 @@
<a class="btn btn-sm btn-info show-as-dialog-link"
href="{{ $U('/quantityunitconversion/' . $defaultQuConversion->id . '?embedded&qu-unit=' . $quantityUnit->id ) }}"
data-qu-conversion-id="{{ $defaultQuConversion->id }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<a class="btn btn-sm btn-danger qu-conversion-delete-button"
href="#"
data-qu-conversion-id="{{ $defaultQuConversion->id }}">
<i class="fas fa-trash"></i>
<i class="fa-solid fa-trash"></i>
</a>
</td>
<td>

View File

@ -14,13 +14,13 @@
type="button"
data-toggle="collapse"
data-target="#table-filter-row">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</button>
<button class="btn btn-outline-dark d-md-none mt-2 order-1 order-md-3"
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
</div>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"
@ -45,7 +45,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
<span class="input-group-text"><i class="fa-solid fa-search"></i></span>
</div>
<input type="text"
id="search"
@ -75,7 +75,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#quantityunits-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th>{{ $__t('Name') }}</th>
<th>{{ $__t('Description') }}</th>
@ -93,7 +93,7 @@
href="{{ $U('/quantityunit/') }}{{ $quantityunit->id }}"
data-toggle="tooltip"
title="{{ $__t('Edit this item') }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<a class="btn btn-danger btn-sm quantityunit-delete-button"
href="#"
@ -101,7 +101,7 @@
data-quantityunit-name="{{ $quantityunit->name }}"
data-toggle="tooltip"
title="{{ $__t('Delete this item') }}">
<i class="fas fa-trash"></i>
<i class="fa-solid fa-trash"></i>
</a>
</td>
<td>

View File

@ -70,10 +70,42 @@
<label class="form-check-label custom-control-label"
for="not_check_shoppinglist">
{{ $__t('Do not check against the shopping list when adding missing items to it') }}&nbsp;
<i class="fas fa-question-circle text-muted"
<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('By default the amount to be added to the shopping list is "needed amount - stock amount - shopping list amount" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list') }}"></i>
title="{{ $__t('By default the amount to be added to the shopping list is "
needed
amount
-
stock
amount
-
shopping
list
amount"
-
when
this
is
enabled,
it
is
only
checked
against
the
stock
amount,
not
against
what
is
already
on
the
shopping
list')
}}"></i>
</label>
</div>
</div>
@ -120,7 +152,7 @@
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"
id="related-links">
@ -142,7 +174,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#recipes-pos-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th>{{ $__t('Product') }}</th>
<th>{{ $__t('Amount') }}</th>
@ -160,13 +192,13 @@
href="#"
data-recipe-pos-id="{{ $recipePosition->id }}"
data-product-id="{{ $recipePosition->product_id }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<a class="btn btn-sm btn-danger recipe-pos-delete-button"
href="#"
data-recipe-pos-id="{{ $recipePosition->id }}"
data-recipe-pos-name="{{ FindObjectInArrayByPropertyValue($products, 'id', $recipePosition->product_id)->name }}">
<i class="fas fa-trash"></i>
<i class="fa-solid fa-trash"></i>
</a>
</td>
<td>
@ -180,9 +212,9 @@
// => So at least don't crash this view by just assuming 0 if that's the case
if (!is_numeric($recipePosition->amount))
{
$recipePosition->amount = 0;
$recipePosition->amount = 0;
}
$product = FindObjectInArrayByPropertyValue($products, 'id', $recipePosition->product_id);
$productQuConversions = FindAllObjectsInArrayByPropertyValue($quantityUnitConversionsResolved, 'product_id', $product->id);
$productQuConversions = FindAllObjectsInArrayByPropertyValue($productQuConversions, 'from_qu_id', $product->qu_id_stock);
@ -210,7 +242,7 @@
data-placement="top"
title="{{ $__t('Show notes') }}"
data-recipe-pos-note="{{ $recipePosition->note }}">
<i class="fas fa-eye"></i>
<i class="fa-solid fa-eye"></i>
</a>
</td>
<td>
@ -234,7 +266,7 @@
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"
id="related-links">
@ -254,7 +286,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#recipes-includes-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th>{{ $__t('Recipe') }}</th>
<th>{{ $__t('Servings') }}</th>
@ -270,13 +302,13 @@
data-recipe-include-id="{{ $recipeNesting->id }}"
data-recipe-included-recipe-id="{{ $recipeNesting->includes_recipe_id }}"
data-recipe-included-recipe-servings="{{ $recipeNesting->servings }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<a class="btn btn-sm btn-danger recipe-include-delete-button"
href="#"
data-recipe-include-id="{{ $recipeNesting->id }}"
data-recipe-include-name="{{ FindObjectInArrayByPropertyValue($recipes, 'id', $recipeNesting->includes_recipe_id)->name }}">
<i class="fas fa-trash"></i>
<i class="fa-solid fa-trash"></i>
</a>
</td>
<td>
@ -318,7 +350,7 @@
</label>
</div>
<div class="input-group-append">
<span class="input-group-text"><i class="fas fa-trash"
<span class="input-group-text"><i class="fa-solid fa-trash"
id="delete-current-recipe-picture-button"></i></span>
</div>
</div>
@ -336,13 +368,13 @@
@endif
</div>
</div>
<div class="row">
<div class="col">
<div class="title-related-links">
<h4>
<span class="ls-n1">{{ $__t('grocycode') }}</span>
<i class="fas fa-question-circle text-muted"
<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('grocycode is a unique referer to this %s in your grocy instance - print it onto a label and scan it like any other barcode', $__t('Recipe')) }}"></i>

View File

@ -56,7 +56,7 @@
&&
$recipePos->only_check_single_unit_in_stock == 1) checked @endif class="form-check-input custom-control-input" type="checkbox" id="only_check_single_unit_in_stock" name="only_check_single_unit_in_stock" value="1">
<label class="form-check-label custom-control-label"
for="only_check_single_unit_in_stock">{{ $__t('Only check if any amount is in stock') }}&nbsp;<i class="fas fa-question-circle text-muted"
for="only_check_single_unit_in_stock">{{ $__t('Only check if any amount is in stock') }}&nbsp;<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('A different amount/unit can then be used below while for stock fulfillment checking it is sufficient when any amount of the product in stock') }}"></i></label>
@ -72,7 +72,7 @@
))
<div class="form-group">
<label for="variable_amount">{{ $__t('Variable amount') }}&nbsp;<i class="fas fa-question-circle text-muted"
<label for="variable_amount">{{ $__t('Variable amount') }}&nbsp;<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking') }}"></i></label>
@ -94,7 +94,7 @@
</div>
<div class="form-group">
<label for="ingredient_group">{{ $__t('Group') }}&nbsp;<i class="fas fa-question-circle text-muted"
<label for="ingredient_group">{{ $__t('Group') }}&nbsp;<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('This will be used as a headline to group ingredients together') }}"></i></label>

View File

@ -29,13 +29,13 @@
type="button"
data-toggle="collapse"
data-target="#table-filter-row">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</button>
<button class="btn btn-outline-dark d-md-none mt-2 order-1 order-md-3"
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
</div>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"
@ -52,7 +52,7 @@
<div class="col-12 col-md-5 col-xl-5">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
<span class="input-group-text"><i class="fa-solid fa-search"></i></span>
</div>
<input type="text"
id="search"
@ -64,7 +64,7 @@
<div class="col-12 col-md-5 col-xl-5">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-filter"></i>&nbsp;{{ $__t('Status') }}</span>
<span class="input-group-text"><i class="fa-solid fa-filter"></i>&nbsp;{{ $__t('Status') }}</span>
</div>
<select class="custom-control custom-select"
id="status-filter">
@ -114,13 +114,13 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#recipes-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th>{{ $__t('Name') }}</th>
<th class="allow-grouping">{{ $__t('Desired servings') }}</th>
<th class="allow-grouping">
{{ $__t('Due score') }}
<i class="fas fa-question-circle text-muted small"
<i class="fa-solid fa-question-circle text-muted small"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('The higher this number is, the more ingredients currently in stock are due soon, overdue or already expired') }}"></i>
@ -147,13 +147,13 @@
href="{{ $U('/recipe/') }}{{ $recipe->id }}"
data-toggle="tooltip"
title="{{ $__t('Edit this item') }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<div class="dropdown d-inline-block">
<button class="btn btn-sm btn-light text-secondary"
type="button"
data-toggle="dropdown">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
<div class="table-inline-menu dropdown-menu dropdown-menu-right hide-on-fullscreen-card hide-when-embedded">
<a class="dropdown-item recipe-delete"
@ -196,7 +196,7 @@
{{ FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->due_score }}
</td>
<td class="@if(!GROCY_FEATURE_FLAG_STOCK) d-none @endif">
@if(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->need_fulfilled == 1)<i class="fas fa-check text-success"></i>@elseif(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->need_fulfilled_with_shopping_list == 1)<i class="fas fa-exclamation text-warning"></i>@else<i class="fas fa-times text-danger"></i>@endif
@if(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->need_fulfilled == 1)<i class="fa-solid fa-check text-success"></i>@elseif(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->need_fulfilled_with_shopping_list == 1)<i class="fa-solid fa-exclamation text-warning"></i>@else<i class="fa-solid fa-times text-danger"></i>@endif
<span class="timeago-contextual">@if(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->need_fulfilled == 1){{ $__t('Enough in stock') }}@elseif(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->need_fulfilled_with_shopping_list == 1){{ $__n(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->missing_products_count, 'Not enough in stock, %s ingredient missing but already on the shopping list', 'Not enough in stock, %s ingredients missing but already on the shopping list') }}@else{{ $__n(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->missing_products_count, 'Not enough in stock, %s ingredient missing', 'Not enough in stock, %s ingredients missing') }}@endif</span>
</td>
<td class="d-none">
@ -241,7 +241,7 @@
<div class="card-body text-center">
<h5 class="card-title mb-1">{{ $recipe->name }}</h5>
<p class="card-text">
@if(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->need_fulfilled == 1)<i class="fas fa-check text-success"></i>@elseif(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->need_fulfilled_with_shopping_list == 1)<i class="fas fa-exclamation text-warning"></i>@else<i class="fas fa-times text-danger"></i>@endif
@if(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->need_fulfilled == 1)<i class="fa-solid fa-check text-success"></i>@elseif(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->need_fulfilled_with_shopping_list == 1)<i class="fa-solid fa-exclamation text-warning"></i>@else<i class="fa-solid fa-times text-danger"></i>@endif
<span class="timeago-contextual">@if(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->need_fulfilled == 1){{ $__t('Enough in stock') }}@elseif(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->need_fulfilled_with_shopping_list == 1){{ $__n(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->missing_products_count, 'Not enough in stock, %s ingredient missing but already on the shopping list', 'Not enough in stock, %s ingredients missing but already on the shopping list') }}@else{{ $__n(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->missing_products_count, 'Not enough in stock, %s ingredient missing', 'Not enough in stock, %s ingredients missing') }}@endif</span>
</p>
<p class="card-text mt-2">
@ -251,13 +251,13 @@
data-recipe-name="{{ $recipe->name }}"
data-toggle="tooltip"
title="{{ $__t('Delete this item') }}">
<i class="fas fa-trash"></i>
<i class="fa-solid fa-trash"></i>
</a>
<a class="btn btn-outline-info btn-xs hide-when-embedded hide-on-fullscreen-card"
href="{{ $U('/recipe/') }}{{ $recipe->id }}"
data-toggle="tooltip"
title="{{ $__t('Edit this item') }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
</p>
</div>
@ -311,7 +311,7 @@
title="{{ $__t('Consume all ingredients needed by this recipe') }}"
data-recipe-id="{{ $recipe->id }}"
data-recipe-name="{{ $recipe->name }}">
<i class="fas fa-utensils"></i>
<i class="fa-solid fa-utensils"></i>
</a>
<a class="btn @if(!GROCY_FEATURE_FLAG_STOCK) d-none @endif recipe-shopping-list @if(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->need_fulfilled_with_shopping_list == 1) disabled @endif"
href="#"
@ -319,20 +319,20 @@
title="{{ $__t('Put missing products on shopping list') }}"
data-recipe-id="{{ $recipe->id }}"
data-recipe-name="{{ $recipe->name }}">
<i class="fas fa-cart-plus"></i>
<i class="fa-solid fa-cart-plus"></i>
</a>
<a class="btn recipe-fullscreen hide-when-embedded"
id="selectedRecipeToggleFullscreenButton"
href="#"
data-toggle="tooltip"
title="{{ $__t('Expand to fullscreen') }}">
<i class="fas fa-expand-arrows-alt"></i>
<i class="fa-solid fa-expand-arrows-alt"></i>
</a>
<a class="btn recipe-print"
href="#"
data-toggle="tooltip"
title="{{ $__t('Print') }}">
<i class="fas fa-print"></i>
<i class="fa-solid fa-print"></i>
</a>
</div>
</div>
@ -347,7 +347,7 @@
title="{{ $__t('Consume all ingredients needed by this recipe') }}"
data-recipe-id="{{ $recipe->id }}"
data-recipe-name="{{ $recipe->name }}">
<i class="fas fa-utensils"></i>
<i class="fa-solid fa-utensils"></i>
</a>
<a class="btn recipe-shopping-list @if(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->need_fulfilled_with_shopping_list == 1) disabled @endif"
href="#"
@ -355,19 +355,19 @@
title="{{ $__t('Put missing products on shopping list') }}"
data-recipe-id="{{ $recipe->id }}"
data-recipe-name="{{ $recipe->name }}">
<i class="fas fa-cart-plus"></i>
<i class="fa-solid fa-cart-plus"></i>
</a>
<a class=" btnrecipe-fullscreen hide-when-embedded"
href="#"
data-toggle="tooltip"
title="{{ $__t('Expand to fullscreen') }}">
<i class="fas fa-expand-arrows-alt"></i>
<i class="fa-solid fa-expand-arrows-alt"></i>
</a>
<a class="btn recipe-print PrintRecipe"
href="#"
data-toggle="tooltip"
title="{{ $__t('Print') }}">
<i class="fas fa-print"></i>
<i class="fa-solid fa-print"></i>
</a>
</div>
</div>
@ -381,7 +381,7 @@
@if(!empty($calories) && intval($calories) > 0)
<div class="col-4">
<label>{{ $__t('Energy (kcal)') }}</label>&nbsp;
<i class="fas fa-question-circle text-muted d-print-none"
<i class="fa-solid fa-question-circle text-muted d-print-none"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('per serving') }}"></i>
@ -391,7 +391,7 @@
@if(GROCY_FEATURE_FLAG_STOCK_PRICE_TRACKING)
<div class="col-4">
<label>{{ $__t('Costs') }}&nbsp;
<i class="fas fa-question-circle text-muted d-print-none"
<i class="fa-solid fa-question-circle text-muted d-print-none"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('Based on the prices of the default consume rule (Opened first, then first due first, then first in first out) for in-stock ingredients and on the last price for missing ones') }}"></i>
@ -474,7 +474,7 @@
data-toggle="tooltip"
data-placement="right"
title="{{ $__t('Mark this item as done') }}">
<i class="far fa-check-circle"></i>
<i class="fa-regular fa-check-circle"></i>
</a>
@endif
@php
@ -497,7 +497,7 @@
</span>
@if(GROCY_FEATURE_FLAG_STOCK)
<span class="d-print-none">
@if($selectedRecipePosition->need_fulfilled == 1)<i class="fas fa-check text-success"></i>@elseif($selectedRecipePosition->need_fulfilled_with_shopping_list == 1)<i class="fas fa-exclamation text-warning"></i>@else<i class="fas fa-times text-danger"></i>@endif
@if($selectedRecipePosition->need_fulfilled == 1)<i class="fa-solid fa-check text-success"></i>@elseif($selectedRecipePosition->need_fulfilled_with_shopping_list == 1)<i class="fa-solid fa-exclamation text-warning"></i>@else<i class="fa-solid fa-times text-danger"></i>@endif
<span class="timeago-contextual">@if(FindObjectInArrayByPropertyValue($recipePositionsResolved, 'recipe_pos_id', $selectedRecipePosition->id)->need_fulfilled == 1) {{ $__t('Enough in stock') }} @else {{ $__t('Not enough in stock, %1$s missing, %2$s already on shopping list', round($selectedRecipePosition->missing_amount, 2), round($selectedRecipePosition->amount_on_shopping_list, 2)) }} @endif</span>
</span>
@endif
@ -507,7 +507,7 @@
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('The parent product %1$s is currently not in stock, %2$s is the current next sub product based on the default consume rule (Opened first, then first due first, then first in first out)', FindObjectInArrayByPropertyValue($products, 'id', $selectedRecipePosition->product_id)->name, FindObjectInArrayByPropertyValue($products, 'id', $selectedRecipePosition->product_id_effective)->name) }}">
<i class="fas fa-exchange-alt"></i> {{ FindObjectInArrayByPropertyValue($products, 'id', $selectedRecipePosition->product_id_effective)->name }}
<i class="fa-solid fa-exchange-alt"></i> {{ FindObjectInArrayByPropertyValue($products, 'id', $selectedRecipePosition->product_id_effective)->name }}
</span>
@endif
@if($selectedRecipePosition->need_fulfilled == 1 && GROCY_FEATURE_FLAG_STOCK_PRICE_TRACKING) <span class="float-right font-italic ml-2 locale-number locale-number-currency">{{ $selectedRecipePosition->costs }}</span> @endif

View File

@ -37,7 +37,7 @@
<label class="form-check-label custom-control-label"
for="recipes_show_ingredient_checkbox">
{{ $__t('Show a little checkbox next to each ingredient to mark it as done') }}
<i class="fas fa-question-circle text-muted"
<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('The ingredient is crossed out when clicked, the status is not saved, means reset when the page is reloaded') }}"></i>

View File

@ -35,13 +35,13 @@
type="button"
data-toggle="collapse"
data-target="#table-filter-row">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</button>
<button class="btn btn-outline-dark d-md-none mt-2 order-1 order-md-3"
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
</div>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"
@ -85,7 +85,7 @@
class="border-top border-bottom my-2 py-1">
<div id="table-filter-row"
data-status-filter="belowminstockamount"
class="collapse normal-message status-filter-message responsive-button @if(!GROCY_FEATURE_FLAG_STOCK) d-none @else d-md-inline-block @endif"><span class="d-block d-md-none">{{count($missingProducts)}} <i class="fas fa-exclamation-circle"></i></span><span class="d-none d-md-block">{{ $__n(count($missingProducts), '%s product is below defined min. stock amount', '%s products are below defined min. stock amount') }}</span></div>
class="collapse normal-message status-filter-message responsive-button @if(!GROCY_FEATURE_FLAG_STOCK) d-none @else d-md-inline-block @endif"><span class="d-block d-md-none">{{count($missingProducts)}} <i class="fa-solid fa-exclamation-circle"></i></span><span class="d-none d-md-block">{{ $__n(count($missingProducts), '%s product is below defined min. stock amount', '%s products are below defined min. stock amount') }}</span></div>
<div id="related-links"
class="float-right mt-1 collapse d-md-block">
<a class="btn btn-primary responsive-button btn-sm mb-1 show-as-dialog-link d-none d-md-inline-block"
@ -122,7 +122,7 @@
<div class="col-12 col-md-5">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
<span class="input-group-text"><i class="fa-solid fa-search"></i></span>
</div>
<input type="text"
id="search"
@ -133,7 +133,7 @@
<div class="col-12 col-md-4 col-lg-5">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-filter"></i>&nbsp;{{ $__t('Status') }}</span>
<span class="input-group-text"><i class="fa-solid fa-filter"></i>&nbsp;{{ $__t('Status') }}</span>
</div>
<select class="custom-control custom-select"
id="status-filter">
@ -168,7 +168,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#shoppinglist-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th class="allow-grouping">{{ $__t('Product') }} / <em>{{ $__t('Note') }}</em></th>
<th>{{ $__t('Amount') }}</th>
@ -200,14 +200,14 @@
data-toggle="tooltip"
data-placement="right"
title="{{ $__t('Mark this item as done') }}">
<i class="fas fa-check"></i>
<i class="fa-solid fa-check"></i>
</a>
<a class="btn btn-sm btn-info show-as-dialog-link"
href="{{ $U('/shoppinglistitem/' . $listItem->id . '?embedded&list=' . $selectedShoppingListId ) }}"
data-toggle="tooltip"
data-placement="right"
title="{{ $__t('Edit this item') }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<a class="btn btn-sm btn-danger shoppinglist-delete-button"
href="#"
@ -215,12 +215,12 @@
data-toggle="tooltip"
data-placement="right"
title="{{ $__t('Delete this item') }}">
<i class="fas fa-trash"></i>
<i class="fa-solid fa-trash"></i>
</a>
<a class="btn btn-sm btn-primary @if(!GROCY_FEATURE_FLAG_STOCK) d-none @endif @if(empty($listItem->product_id)) disabled @else shopping-list-stock-add-workflow-list-item-button @endif"
href="{{ $U('/purchase?embedded&flow=shoppinglistitemtostock&product=') }}{{ $listItem->product_id }}&amount={{ $listItem->amount }}&listitemid={{ $listItem->id }}&quId={{ $listItem->qu_id }}"
@if(!empty($listItem->product_id)) data-toggle="tooltip" title="{{ $__t('Add this item to stock') }}" @endif>
<i class="fas fa-box"></i>
<i class="fa-solid fa-box"></i>
</a>
</td>
<td class="product-name-cell cursor-link"

View File

@ -14,13 +14,13 @@
type="button"
data-toggle="collapse"
data-target="#table-filter-row">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</button>
<button class="btn btn-outline-dark d-md-none mt-2 order-1 order-md-3"
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
</div>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"
@ -45,7 +45,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
<span class="input-group-text"><i class="fa-solid fa-search"></i></span>
</div>
<input type="text"
id="search"
@ -75,7 +75,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#shoppinglocations-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th>{{ $__t('Name') }}</th>
<th>{{ $__t('Description') }}</th>
@ -94,7 +94,7 @@
href="{{ $U('/shoppinglocation/') }}{{ $shoppinglocation->id }}?embedded"
data-toggle="tooltip"
title="{{ $__t('Edit this item') }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<a class="btn btn-danger btn-sm shoppinglocation-delete-button"
href="#"
@ -102,7 +102,7 @@
data-shoppinglocation-name="{{ $shoppinglocation->name }}"
data-toggle="tooltip"
title="{{ $__t('Delete this item') }}">
<i class="fas fa-trash"></i>
<i class="fa-solid fa-trash"></i>
</a>
</td>
<td>

View File

@ -21,7 +21,7 @@
type="button"
data-toggle="collapse"
data-target="#table-filter-row">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</button>
</div>
</div>
@ -43,7 +43,7 @@
<div class="col-12 col-md-6 col-xl-3 mt-auto">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-filter"></i>&nbsp;{{ $__t('Location') }}</span>
<span class="input-group-text"><i class="fa-solid fa-filter"></i>&nbsp;{{ $__t('Location') }}</span>
</div>
<select class="custom-control custom-select"
id="location-filter">
@ -77,7 +77,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#stockentries-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th class="d-none">Hidden product_id</th> <!-- This must be in the first column for searching -->
<th class="allow-grouping">{{ $__t('Product') }}</th>
@ -121,7 +121,7 @@
data-product-name="{{ FindObjectInArrayByPropertyValue($products, 'id', $stockEntry->product_id)->name }}"
data-product-qu-name="{{ FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $stockEntry->product_id)->qu_id_stock)->name }}"
data-consume-amount="{{ $stockEntry->amount }}">
<i class="fas fa-utensils"></i>
<i class="fa-solid fa-utensils"></i>
</a>
@if(GROCY_FEATURE_FLAG_STOCK_PRODUCT_OPENED_TRACKING)
<a class="btn btn-success btn-sm product-open-button @if($stockEntry->open == 1 || FindObjectInArrayByPropertyValue($products, 'id', $stockEntry->product_id)->enable_tare_weight_handling == 1) disabled @endif"
@ -134,7 +134,7 @@
data-product-qu-name="{{ FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $stockEntry->product_id)->qu_id_stock)->name }}"
data-stock-id="{{ $stockEntry->stock_id }}"
data-stockrow-id="{{ $stockEntry->id }}">
<i class="fas fa-box-open"></i>
<i class="fa-solid fa-box-open"></i>
</a>
@endif
<a class="btn btn-info btn-sm show-as-dialog-link"
@ -142,44 +142,44 @@
data-toggle="tooltip"
data-placement="left"
title="{{ $__t('Edit stock entry') }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<div class="dropdown d-inline-block">
<button class="btn btn-sm btn-light text-secondary"
type="button"
data-toggle="dropdown">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
<div class="dropdown-menu">
@if(GROCY_FEATURE_FLAG_SHOPPINGLIST)
<a class="dropdown-item show-as-dialog-link"
type="button"
href="{{ $U('/shoppinglistitem/new?embedded&updateexistingproduct&product=' . $stockEntry->product_id ) }}">
<i class="fas fa-shopping-cart"></i> {{ $__t('Add to shopping list') }}
<i class="fa-solid fa-shopping-cart"></i> {{ $__t('Add to shopping list') }}
</a>
<div class="dropdown-divider"></div>
@endif
<a class="dropdown-item show-as-dialog-link"
type="button"
href="{{ $U('/purchase?embedded&product=' . $stockEntry->product_id ) }}">
<i class="fas fa-cart-plus"></i> {{ $__t('Purchase') }}
<i class="fa-solid fa-cart-plus"></i> {{ $__t('Purchase') }}
</a>
<a class="dropdown-item show-as-dialog-link"
type="button"
href="{{ $U('/consume?embedded&product=' . $stockEntry->product_id . '&locationId=' . $stockEntry->location_id . '&stockId=' . $stockEntry->stock_id) }}">
<i class="fas fa-utensils"></i> {{ $__t('Consume') }}
<i class="fa-solid fa-utensils"></i> {{ $__t('Consume') }}
</a>
@if(GROCY_FEATURE_FLAG_STOCK_LOCATION_TRACKING)
<a class="dropdown-item show-as-dialog-link"
type="button"
href="{{ $U('/transfer?embedded&product=' . $stockEntry->product_id . '&locationId=' . $stockEntry->location_id . '&stockId=' . $stockEntry->stock_id) }}">
<i class="fas fa-exchange-alt"></i> {{ $__t('Transfer') }}
<i class="fa-solid fa-exchange-alt"></i> {{ $__t('Transfer') }}
</a>
@endif
<a class="dropdown-item show-as-dialog-link"
type="button"
href="{{ $U('/inventory?embedded&product=' . $stockEntry->product_id ) }}">
<i class="fas fa-list"></i> {{ $__t('Inventory') }}
<i class="fa-solid fa-list"></i> {{ $__t('Inventory') }}
</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item stock-consume-button stock-consume-button-spoiled"

View File

@ -12,13 +12,13 @@
type="button"
data-toggle="collapse"
data-target="#table-filter-row">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</button>
<button class="btn btn-outline-dark d-md-none mt-2 order-1 order-md-3 hide-when-embedded"
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
</div>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"
@ -37,7 +37,7 @@
<div class="col-12 col-md-6 col-xl-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
<span class="input-group-text"><i class="fa-solid fa-search"></i></span>
</div>
<input type="text"
id="search"
@ -48,7 +48,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-filter"></i>&nbsp;{{ $__t('Product') }}</span>
<span class="input-group-text"><i class="fa-solid fa-filter"></i>&nbsp;{{ $__t('Product') }}</span>
</div>
<select class="custom-control custom-select"
id="product-filter">
@ -62,7 +62,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-filter"></i>&nbsp;{{ $__t('Transaction type') }}</span>
<span class="input-group-text"><i class="fa-solid fa-filter"></i>&nbsp;{{ $__t('Transaction type') }}</span>
</div>
<select class="custom-control custom-select"
id="transaction-type-filter">
@ -77,7 +77,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-filter"></i>&nbsp;{{ $__t('Location') }}</span>
<span class="input-group-text"><i class="fa-solid fa-filter"></i>&nbsp;{{ $__t('Location') }}</span>
</div>
<select class="custom-control custom-select"
id="location-filter">
@ -92,7 +92,7 @@
<div class="col-12 col-md-6 col-xl-2 mt-1">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-filter"></i>&nbsp;{{ $__t('User') }}</span>
<span class="input-group-text"><i class="fa-solid fa-filter"></i>&nbsp;{{ $__t('User') }}</span>
</div>
<select class="custom-control custom-select"
id="user-filter">
@ -106,7 +106,7 @@
<div class="col-12 col-md-6 col-xl-3 mt-1">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-clock"></i>&nbsp;{{ $__t('Date range') }}</span>
<span class="input-group-text"><i class="fa-solid fa-clock"></i>&nbsp;{{ $__t('Date range') }}</span>
</div>
<select class="custom-control custom-select"
id="daterange-filter">
@ -141,7 +141,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#stock-journal-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th class="allow-grouping">{{ $__t('Product') }}</th>
<th>{{ $__t('Amount') }}</th>
@ -168,7 +168,7 @@
data-toggle="tooltip"
data-placement="left"
title="{{ $__t('Undo transaction') }}">
<i class="fas fa-undo"></i>
<i class="fa-solid fa-undo"></i>
</a>
</td>
<td>

View File

@ -13,7 +13,7 @@
type="button"
data-toggle="collapse"
data-target="#table-filter-row">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</button>
</div>
</div>
@ -26,7 +26,7 @@
<div class="col-12 col-md-6 col-xl-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
<span class="input-group-text"><i class="fa-solid fa-search"></i></span>
</div>
<input type="text"
id="search"
@ -37,7 +37,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-filter"></i>&nbsp;{{ $__t('Product') }}</span>
<span class="input-group-text"><i class="fa-solid fa-filter"></i>&nbsp;{{ $__t('Product') }}</span>
</div>
<select class="custom-control custom-select"
id="product-filter">
@ -51,7 +51,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-filter"></i>&nbsp;{{ $__t('Transaction type') }}</span>
<span class="input-group-text"><i class="fa-solid fa-filter"></i>&nbsp;{{ $__t('Transaction type') }}</span>
</div>
<select class="custom-control custom-select"
id="transaction-type-filter">
@ -65,7 +65,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-filter"></i>&nbsp;{{ $__t('User') }}</span>
<span class="input-group-text"><i class="fa-solid fa-filter"></i>&nbsp;{{ $__t('User') }}</span>
</div>
<select class="custom-control custom-select"
id="user-filter">
@ -98,7 +98,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#stock-journal-summary-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th class="allow-grouping">{{ $__t('Product') }}</th>
<th class="allow-grouping">{{ $__t('Transaction type') }}</th>

View File

@ -28,7 +28,7 @@
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"
id="related-links">
@ -69,7 +69,7 @@
data-toggle="collapse"
href="#table-filter-row"
role="button">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</a>
<a id="clear-filter-button"
class="btn btn-sm btn-outline-info mt-1"
@ -85,7 +85,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
<span class="input-group-text"><i class="fa-solid fa-search"></i></span>
</div>
<input type="text"
id="search"
@ -97,7 +97,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-filter"></i>&nbsp;{{ $__t('Location') }}</span>
<span class="input-group-text"><i class="fa-solid fa-filter"></i>&nbsp;{{ $__t('Location') }}</span>
</div>
<select class="custom-control custom-select"
id="location-filter">
@ -112,7 +112,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-filter"></i>&nbsp;{{ $__t('Product group') }}</span>
<span class="input-group-text"><i class="fa-solid fa-filter"></i>&nbsp;{{ $__t('Product group') }}</span>
</div>
<select class="custom-control custom-select"
id="product-group-filter">
@ -126,7 +126,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-filter"></i>&nbsp;{{ $__t('Status') }}</span>
<span class="input-group-text"><i class="fa-solid fa-filter"></i>&nbsp;{{ $__t('Status') }}</span>
</div>
<select class="custom-control custom-select"
id="status-filter">
@ -155,7 +155,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#stock-overview-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th>{{ $__t('Product') }}</th>
<th class="allow-grouping">{{ $__t('Product group') }}</th>
@ -196,7 +196,7 @@
data-product-name="{{ $currentStockEntry->product_name }}"
data-product-qu-name="{{ $currentStockEntry->qu_unit_name }}"
data-consume-amount="{{ $currentStockEntry->quick_consume_amount }}">
<i class="fas fa-utensils"></i> <span class="locale-number locale-number-quantity-amount">{{ $currentStockEntry->quick_consume_amount }}</span>
<i class="fa-solid fa-utensils"></i> <span class="locale-number locale-number-quantity-amount">{{ $currentStockEntry->quick_consume_amount }}</span>
</a>
<a id="product-{{ $currentStockEntry->product_id }}-consume-all-button"
class="permission-STOCK_CONSUME btn btn-danger btn-sm product-consume-button @if($currentStockEntry->amount_aggregated == 0) disabled @endif"
@ -209,7 +209,7 @@
data-product-qu-name="{{ $currentStockEntry->qu_unit_name }}"
data-consume-amount="@if($currentStockEntry->enable_tare_weight_handling == 1){{$currentStockEntry->tare_weight}}@else{{$currentStockEntry->amount}}@endif"
data-original-total-stock-amount="{{$currentStockEntry->amount}}">
<i class="fas fa-utensils"></i> {{ $__t('All') }}
<i class="fa-solid fa-utensils"></i> {{ $__t('All') }}
</a>
@if(GROCY_FEATURE_FLAG_STOCK_PRODUCT_OPENED_TRACKING)
<a class="btn btn-success btn-sm product-open-button @if($currentStockEntry->amount_aggregated < $currentStockEntry->quick_consume_amount || $currentStockEntry->amount_aggregated == $currentStockEntry->amount_opened_aggregated || $currentStockEntry->enable_tare_weight_handling == 1) disabled @endif"
@ -221,45 +221,45 @@
data-product-name="{{ $currentStockEntry->product_name }}"
data-product-qu-name="{{ $currentStockEntry->qu_unit_name }}"
data-open-amount="{{ $currentStockEntry->quick_consume_amount }}">
<i class="fas fa-box-open"></i> <span class="locale-number locale-number-quantity-amount">{{ $currentStockEntry->quick_consume_amount }}</span>
<i class="fa-solid fa-box-open"></i> <span class="locale-number locale-number-quantity-amount">{{ $currentStockEntry->quick_consume_amount }}</span>
</a>
@endif
<div class="dropdown d-inline-block">
<button class="btn btn-sm btn-light text-secondary"
type="button"
data-toggle="dropdown">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
<div class="table-inline-menu dropdown-menu dropdown-menu-right">
@if(GROCY_FEATURE_FLAG_SHOPPINGLIST)
<a class="dropdown-item show-as-dialog-link permission-SHOPPINGLIST_ITEMS_ADD"
type="button"
href="{{ $U('/shoppinglistitem/new?embedded&updateexistingproduct&product=' . $currentStockEntry->product_id ) }}">
<span class="dropdown-item-icon"><i class="fas fa-shopping-cart"></i></span> <span class="dropdown-item-text">{{ $__t('Add to shopping list') }}</span>
<span class="dropdown-item-icon"><i class="fa-solid fa-shopping-cart"></i></span> <span class="dropdown-item-text">{{ $__t('Add to shopping list') }}</span>
</a>
<div class="dropdown-divider"></div>
@endif
<a class="dropdown-item show-as-dialog-link permission-STOCK_PURCHASE"
type="button"
href="{{ $U('/purchase?embedded&product=' . $currentStockEntry->product_id ) }}">
<span class="dropdown-item-icon"><i class="fas fa-cart-plus"></i></span> <span class="dropdown-item-text">{{ $__t('Purchase') }}</span>
<span class="dropdown-item-icon"><i class="fa-solid fa-cart-plus"></i></span> <span class="dropdown-item-text">{{ $__t('Purchase') }}</span>
</a>
<a class="dropdown-item show-as-dialog-link permission-STOCK_CONSUME @if($currentStockEntry->amount_aggregated <= 0) disabled @endif"
type="button"
href="{{ $U('/consume?embedded&product=' . $currentStockEntry->product_id ) }}">
<span class="dropdown-item-icon"><i class="fas fa-utensils"></i></span> <span class="dropdown-item-text">{{ $__t('Consume') }}</span>
<span class="dropdown-item-icon"><i class="fa-solid fa-utensils"></i></span> <span class="dropdown-item-text">{{ $__t('Consume') }}</span>
</a>
@if(GROCY_FEATURE_FLAG_STOCK_LOCATION_TRACKING)
<a class="dropdown-item show-as-dialog-link permission-STOCK_TRANSFER @if($currentStockEntry->amount <= 0) disabled @endif"
type="button"
href="{{ $U('/transfer?embedded&product=' . $currentStockEntry->product_id) }}">
<span class="dropdown-item-icon"><i class="fas fa-exchange-alt"></i></span> <span class="dropdown-item-text">{{ $__t('Transfer') }}</span>
<span class="dropdown-item-icon"><i class="fa-solid fa-exchange-alt"></i></span> <span class="dropdown-item-text">{{ $__t('Transfer') }}</span>
</a>
@endif
<a class="dropdown-item show-as-dialog-link permission-STOCK_INVENTORY"
type="button"
href="{{ $U('/inventory?embedded&product=' . $currentStockEntry->product_id ) }}">
<span class="dropdown-item-icon"><i class="fas fa-list"></i></span> <span class="dropdown-item-text">{{ $__t('Inventory') }}</span>
<span class="dropdown-item-icon"><i class="fa-solid fa-list"></i></span> <span class="dropdown-item-text">{{ $__t('Inventory') }}</span>
</a>
@if(GROCY_FEATURE_FLAG_RECIPES)
<a class="dropdown-item"
@ -330,7 +330,7 @@
</span>
@if($currentStockEntry->is_aggregated_amount == 1)
<span class="@if($currentStockEntry->product_no_own_stock == 0) pl-1 @endif text-secondary">
<i class="fas fa-custom-sigma-sign"></i> <span id="product-{{ $currentStockEntry->product_id }}-amount-aggregated"
<i class="fa-solid fa-custom-sigma-sign"></i> <span id="product-{{ $currentStockEntry->product_id }}-amount-aggregated"
class="locale-number locale-number-quantity-amount">{{ $currentStockEntry->amount_aggregated }}</span> {{ $__n($currentStockEntry->amount_aggregated, $currentStockEntry->qu_unit_name, $currentStockEntry->qu_unit_name_plural, true) }}
@if($currentStockEntry->amount_opened_aggregated > 0)
<span id="product-{{ $currentStockEntry->product_id }}-opened-amount-aggregated"
@ -345,7 +345,7 @@
<span class="text-muted cursor-normal"
data-toggle="tooltip"
title="{{ $__t('This product is currently on a shopping list') }}">
<i class="fas fa-shopping-cart"></i>
<i class="fa-solid fa-shopping-cart"></i>
</span>
@endif
@endif

View File

@ -190,7 +190,7 @@
<label class="form-check-label custom-control-label"
for="stock_auto_decimal_separator_prices">
{{ $__t('Add decimal separator automatically for price inputs') }}
<i class="fas fa-question-circle text-muted"
<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('When enabled, you always have to enter the value including decimal places, the decimal separator will be automatically added based on the amount of allowed decimal places') }}"></i>

View File

@ -14,13 +14,13 @@
type="button"
data-toggle="collapse"
data-target="#table-filter-row">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</button>
<button class="btn btn-outline-dark d-md-none mt-2 order-1 order-md-3"
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
</div>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100"
@ -45,7 +45,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
<span class="input-group-text"><i class="fa-solid fa-search"></i></span>
</div>
<input type="text"
id="search"
@ -75,7 +75,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#taskcategories-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th>{{ $__t('Name') }}</th>
<th>{{ $__t('Description') }}</th>
@ -94,7 +94,7 @@
href="{{ $U('/taskcategory/') }}{{ $taskCategory->id }}?embedded"
data-toggle="tooltip"
title="{{ $__t('Edit this item') }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<a class="btn btn-danger btn-sm task-category-delete-button"
href="#"
@ -102,7 +102,7 @@
data-category-name="{{ $taskCategory->name }}"
data-toggle="tooltip"
title="{{ $__t('Delete this item') }}">
<i class="fas fa-trash"></i>
<i class="fa-solid fa-trash"></i>
</a>
</td>
<td>

View File

@ -18,7 +18,7 @@
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100 m-1 mt-md-0 mb-md-0 float-right"
id="related-links">
@ -44,7 +44,7 @@
data-toggle="collapse"
href="#table-filter-row"
role="button">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</a>
<a id="clear-filter-button"
class="btn btn-sm btn-outline-info mt-1"
@ -61,7 +61,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
<span class="input-group-text"><i class="fa-solid fa-search"></i></span>
</div>
<input type="text"
id="search"
@ -72,7 +72,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-filter"></i>&nbsp;{{ $__t('Status') }}</span>
<span class="input-group-text"><i class="fa-solid fa-filter"></i>&nbsp;{{ $__t('Status') }}</span>
</div>
<select class="custom-control custom-select"
id="status-filter">
@ -109,7 +109,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#tasks-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th>{{ $__t('Task') }}</th>
<th class="allow-grouping">{{ $__t('Due') }}</th>
@ -138,7 +138,7 @@
title="{{ $__t('Mark task as completed') }}"
data-task-id="{{ $task->id }}"
data-task-name="{{ $task->name }}">
<i class="fas fa-check"></i>
<i class="fa-solid fa-check"></i>
</a>
@else
<a class="btn btn-secondary btn-sm undo-task-button"
@ -148,14 +148,14 @@
title="{{ $__t('Undo task', $task->name) }}"
data-task-id="{{ $task->id }}"
data-task-name="{{ $task->name }}">
<i class="fas fa-undo"></i>
<i class="fa-solid fa-undo"></i>
</a>
@endif
<a class="btn btn-info btn-sm show-as-dialog-link"
href="{{ $U('/task/') }}{{ $task->id }}?embedded"
data-toggle="tooltip"
title="{{ $__t('Edit this item') }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<a class="btn btn-sm btn-danger delete-task-button"
href="#"
@ -163,7 +163,7 @@
data-task-name="{{ $task->name }}"
data-toggle="tooltip"
title="{{ $__t('Delete this item') }}">
<i class="fas fa-trash"></i>
<i class="fa-solid fa-trash"></i>
</a>
</td>
<td id="task-{{ $task->id }}-name"

View File

@ -71,10 +71,22 @@
value="1">
<label class="form-check-label custom-control-label"
for="use_specific_stock_entry">{{ $__t('Use a specific stock item') }}
&nbsp;<i class="fas fa-question-circle text-muted"
&nbsp;<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('The first item in this list would be picked by the default rule which is "Opened first, then first due first, then first in first out"') }}"></i>
title="{{ $__t('The first item in this list would be picked by the default rule which is "
Opened
first,
then
first
due
first,
then
first
in
first
out"')
}}"></i>
</label>
</div>
<select disabled

View File

@ -14,13 +14,13 @@
type="button"
data-toggle="collapse"
data-target="#table-filter-row">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</button>
<button class="btn btn-outline-dark d-md-none mt-2 order-1 order-md-3"
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
</div>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100 m-1 mt-md-0 mb-md-0 float-right"
@ -41,7 +41,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
<span class="input-group-text"><i class="fa-solid fa-search"></i></span>
</div>
<input type="text"
id="search"
@ -71,7 +71,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#userentities-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th>{{ $__t('Name') }}</th>
<th>{{ $__t('Caption') }}</th>
@ -85,7 +85,7 @@
href="{{ $U('/userentity/') }}{{ $userentity->id }}?embedded"
data-toggle="tooltip"
title="{{ $__t('Edit this item') }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<a class="btn btn-danger btn-sm userentity-delete-button"
href="#"
@ -93,7 +93,7 @@
data-userentity-name="{{ $userentity->name }}"
data-toggle="tooltip"
title="{{ $__t('Delete this item') }}">
<i class="fas fa-trash"></i>
<i class="fa-solid fa-trash"></i>
</a>
<a class="btn btn-secondary btn-sm"
href="{{ $U('/userfields?entity=userentity-') }}{{ $userentity->name }}">

View File

@ -84,11 +84,16 @@
id="icon_css_class"
name="icon_css_class"
value="@if($mode == 'edit'){{ $userentity->icon_css_class }}@endif"
placeholder='{{ $__t('For example') }} "fas fa-smile"'>
placeholder='{{ $__t('
For
example')
}} "fa-solid fa-smile"'>
</div>
<button id="save-userentity-button"
class="btn btn-success">{{ $__t('Save') }}</button>
class="btn btn-success">{{ $__t('
Save')
}}</button>
</form>
</div>

View File

@ -51,7 +51,7 @@
<div class="form-group">
<label for="name">
{{ $__t('Name') }}
<i class="fas fa-question-circle text-muted"
<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('This is the internal field name, e. g. for the API') }}"></i>
@ -69,7 +69,7 @@
<div class="form-group">
<label for="name">
{{ $__t('Caption') }}
<i class="fas fa-question-circle text-muted"
<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('This is used to display the field on the frontend') }}"></i>
@ -150,7 +150,7 @@
<label class="form-check-label custom-control-label"
for="input_required">
{{ $__t('Mandatory') }}
&nbsp;<i class="fas fa-question-circle text-muted"
&nbsp;<i class="fa-solid fa-question-circle text-muted"
data-toggle="tooltip"
data-trigger="hover click"
title="{{ $__t('When enabled, then this field must be filled on the destination form') }}"></i>

View File

@ -14,13 +14,13 @@
type="button"
data-toggle="collapse"
data-target="#table-filter-row">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</button>
<button class="btn btn-outline-dark d-md-none mt-2 order-1 order-md-3"
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
</div>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100 m-1 mt-md-0 mb-md-0 float-right"
@ -42,7 +42,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
<span class="input-group-text"><i class="fa-solid fa-search"></i></span>
</div>
<input type="text"
id="search"
@ -53,7 +53,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-filter"></i>&nbsp;{{ $__t('Entity') }}</span>
<span class="input-group-text"><i class="fa-solid fa-filter"></i>&nbsp;{{ $__t('Entity') }}</span>
</div>
<select class="custom-control custom-select"
id="entity-filter">
@ -86,7 +86,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#userfields-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th class="allow-grouping">{{ $__t('Entity') }}</th>
<th>{{ $__t('Name') }}</th>
@ -103,7 +103,7 @@
href="{{ $U('/userfield/') }}{{ $userfield->id }}?embedded"
data-toggle="tooltip"
title="{{ $__t('Edit this item') }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<a class="btn btn-danger btn-sm userfield-delete-button"
href="#"
@ -111,7 +111,7 @@
data-userfield-name="{{ $userfield->name }}"
data-toggle="tooltip"
title="{{ $__t('Delete this item') }}">
<i class="fas fa-trash"></i>
<i class="fa-solid fa-trash"></i>
</a>
</td>
<td>

View File

@ -130,7 +130,7 @@
</label>
</div>
<div class="input-group-append">
<span class="input-group-text"><i class="fas fa-trash"
<span class="input-group-text"><i class="fa-solid fa-trash"
id="delete-current-user-picture-button"></i></span>
</div>
</div>

View File

@ -19,13 +19,13 @@
type="button"
data-toggle="collapse"
data-target="#table-filter-row">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</button>
<button class="btn btn-outline-dark d-md-none mt-2 order-1 order-md-3"
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
</div>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100 m-1 mt-md-0 mb-md-0 float-right"
@ -50,7 +50,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
<span class="input-group-text"><i class="fa-solid fa-search"></i></span>
</div>
<input type="text"
id="search"
@ -91,14 +91,14 @@
href="{{ $U('/userobject/' . $userentity->name . '/') }}{{ $userobject->id }}?embedded"
data-toggle="tooltip"
title="{{ $__t('Edit this item') }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<a class="btn btn-danger btn-sm userobject-delete-button"
href="#"
data-userobject-id="{{ $userobject->id }}"
data-toggle="tooltip"
title="{{ $__t('Delete this item') }}">
<i class="fas fa-trash"></i>
<i class="fa-solid fa-trash"></i>
</a>
</td>

View File

@ -14,13 +14,13 @@
type="button"
data-toggle="collapse"
data-target="#table-filter-row">
<i class="fas fa-filter"></i>
<i class="fa-solid fa-filter"></i>
</button>
<button class="btn btn-outline-dark d-md-none mt-2 order-1 order-md-3"
type="button"
data-toggle="collapse"
data-target="#related-links">
<i class="fas fa-ellipsis-v"></i>
<i class="fa-solid fa-ellipsis-v"></i>
</button>
</div>
<div class="related-links collapse d-md-flex order-2 width-xs-sm-100 m-1 mt-md-0 mb-md-0 float-right"
@ -45,7 +45,7 @@
<div class="col-12 col-md-6 col-xl-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
<span class="input-group-text"><i class="fa-solid fa-search"></i></span>
</div>
<input type="text"
id="search"
@ -75,7 +75,7 @@
data-toggle="tooltip"
title="{{ $__t('Table options') }}"
data-table-selector="#users-table"
href="#"><i class="fas fa-eye"></i></a>
href="#"><i class="fa-solid fa-eye"></i></a>
</th>
<th>{{ $__t('Username') }}</th>
<th>{{ $__t('First name') }}</th>
@ -94,13 +94,13 @@
href="{{ $U('/user/') }}{{ $user->id }}"
data-toggle="tooltip"
title="{{ $__t('Edit this item') }}">
<i class="fas fa-edit"></i>
<i class="fa-solid fa-edit"></i>
</a>
<a class="btn btn-info btn-sm"
href="{{ $U('/user/' . $user->id . '/permissions') }}"
data-toggle="tooltip"
title="{{ $__t('Configure user permissions') }}">
<i class="fas fa-lock"></i>
<i class="fa-solid fa-lock"></i>
</a>
<a class="btn btn-danger btn-sm user-delete-button @if($user->id == GROCY_USER_ID) disabled @endif"
href="#"
@ -108,7 +108,7 @@
data-user-username="{{ $user->username }}"
data-toggle="tooltip"
title="{{ $__t('Delete this item') }}">
<i class="fas fa-trash"></i>
<i class="fa-solid fa-trash"></i>
</a>
</td>
<td>

View File

@ -33,10 +33,10 @@
resolved "https://registry.yarnpkg.com/@fontsource/noto-sans/-/noto-sans-4.5.3.tgz#124c4475a885257b65fe4167af6615ab1bba477b"
integrity sha512-pBKuG/g7pMv1dCJ+x3piXqRfWuE/quPlPYaeGf3FwKUBGZyHl4LvM4bA8YmSlQzoMvH/MhcnvVHBhQ5x0fhseA==
"@fortawesome/fontawesome-free@^5.14.0":
version "5.15.4"
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz#ecda5712b61ac852c760d8b3c79c96adca5554e5"
integrity sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg==
"@fortawesome/fontawesome-free@^6.1.1":
version "6.1.1"
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-6.1.1.tgz#bf5d45611ab74890be386712a0e5d998c65ee2a1"
integrity sha512-J/3yg2AIXc9wznaVqpHVX3Wa5jwKovVF0AMYSnbmcXTiL3PpRPfF58pzWucCwEiCJBp+hCNRLWClTomD8SseKg==
ajv@^6.12.3:
version "6.12.6"