Compare commits
97 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c3c0ecfcf9 | |||
| aff6fffb1f | |||
| 9aaafece6a | |||
| fbeaba90ac | |||
| aaab18910b | |||
| 1936d43a04 | |||
| b347b975bc | |||
| aa2719c9eb | |||
| 7433f6a676 | |||
| 12b43c52c9 | |||
| 08bd55d759 | |||
| 5dfa7cc717 | |||
| bad3deff3a | |||
| 4d7632b64a | |||
| 13afd3f482 | |||
| f6f68d84a8 | |||
| dd52c1d8f5 | |||
| fcba37ca40 | |||
| 95eae4756e | |||
| de50098ac6 | |||
| 898a576812 | |||
| e0523bce40 | |||
| a33f1d1251 | |||
| 74fcc0b096 | |||
| 59f15c6c74 | |||
| ec68a41e93 | |||
| 8fd14ba2da | |||
| 9a129e7f57 | |||
| 6f56cd6758 | |||
| 3aee8ec236 | |||
| d74687ec5c | |||
| c786587a36 | |||
| 0dc136e0f3 | |||
| ecc84f119c | |||
| 3768a9de85 | |||
| 4369352269 | |||
| 4b7407019e | |||
| bd39ba1584 | |||
| 67d213eb79 | |||
| 33e84a30ed | |||
| 0be5ee5130 | |||
| 373ecc60d9 | |||
| 828460e317 | |||
| 027bda3cef | |||
| d20760d645 | |||
| 5540fa9226 | |||
| c12733570d | |||
| ce38fedfaf | |||
| 0843df6929 | |||
| a9853c1e46 | |||
| 07299178c8 | |||
| fa4480836f | |||
| f4a405f293 | |||
| e0f94fda68 | |||
| 0b29326d55 | |||
| 13dff4f2c5 | |||
| d4f640e062 | |||
| 317a5dff60 | |||
| 1d8d58f7ba | |||
| 2adb338fdd | |||
| e57e429115 | |||
| 321a7091c6 | |||
| 7e51b6b977 | |||
| 094bce95a1 | |||
| a052a589de | |||
| 7ebd686e8f | |||
| 2273cbfadb | |||
| 020fb301a5 | |||
| 227d5027aa | |||
| 7a8094d9d0 | |||
| 582b4bc584 | |||
| 24865ae12b | |||
| 142338cf80 | |||
| bfb6f1e21d | |||
| 593ecf9e7a | |||
| db077a34ac | |||
| c449bb0741 | |||
| c29dcd8fc9 | |||
| 2dde594e40 | |||
| bc458303fc | |||
| 62c1452702 | |||
| c5fd7bdf2f | |||
| 964ca83a5e | |||
| 3a14cdfa1f | |||
| b2bd46664a | |||
| 316c477eb0 | |||
| fcf271be58 | |||
| e4a1728762 | |||
| 6df43b66dc | |||
| 3bbab02331 | |||
| 018411ff17 | |||
| 375ac0f066 | |||
| cc374a1305 | |||
| 44c351f638 | |||
| c9804678ab | |||
| d1ed4b0813 | |||
| 3b2be606d5 |
@@ -0,0 +1,49 @@
|
||||
@inject DialogService DialogService
|
||||
|
||||
<RadzenTemplateForm TItem="Appointment" Data="@model" Submit=@OnSubmit>
|
||||
<RadzenStack Gap="1rem">
|
||||
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" Wrap="FlexWrap.Wrap">
|
||||
<RadzenLabel Text="Title" Style="width: 4rem;" />
|
||||
<RadzenTextBox @bind-Value="@model.Text" Name="Text" Style="width: 12rem;" />
|
||||
<RadzenRequiredValidator Component="Text" Text="Title is required" />
|
||||
</RadzenStack>
|
||||
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" Wrap="FlexWrap.Wrap">
|
||||
<RadzenLabel Text="Detail" Style="width: 4rem;" />
|
||||
<RadzenTextBox @bind-Value="@model.Detail" Name="Detail" Style="width: 12rem;" />
|
||||
<RadzenRequiredValidator Component="Detail" Text="Detail is required" />
|
||||
</RadzenStack>
|
||||
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" Wrap="FlexWrap.Wrap">
|
||||
<RadzenLabel Text="Start" Style="width: 4rem;" />
|
||||
<RadzenDatePicker @bind-Value="@model.Start" Name="Start" ShowTime="true" Style="width: 12rem;" />
|
||||
<RadzenRequiredValidator Component="Start" Text="Start is required" />
|
||||
</RadzenStack>
|
||||
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" Wrap="FlexWrap.Wrap">
|
||||
<RadzenLabel Text="End" Style="width: 4rem;" />
|
||||
<RadzenDatePicker Name="End" @bind-Value="@model.End" ShowTime="true" Style="width: 12rem;" />
|
||||
<RadzenRequiredValidator Component="End" Text="End is required" />
|
||||
</RadzenStack>
|
||||
<RadzenStack Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.End" >
|
||||
<RadzenButton ButtonType="ButtonType.Submit" Text="Save" />
|
||||
</RadzenStack>
|
||||
</RadzenStack>
|
||||
</RadzenTemplateForm>
|
||||
@code {
|
||||
[Parameter]
|
||||
public DateTime Start { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public DateTime End { get; set; }
|
||||
|
||||
Appointment model = new Appointment();
|
||||
|
||||
protected override void OnParametersSet()
|
||||
{
|
||||
model.Start = Start;
|
||||
model.End = End;
|
||||
}
|
||||
|
||||
void OnSubmit(Appointment model)
|
||||
{
|
||||
DialogService.Close(model);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
namespace EgwCoreLib.BlazorTest.Components
|
||||
{
|
||||
public class Appointment
|
||||
{
|
||||
public DateTime Start { get; set; }
|
||||
public DateTime End { get; set; }
|
||||
|
||||
public string Text { get; set; } = "";
|
||||
public string Detail { get; set; } = "";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
@inject DialogService DialogService
|
||||
|
||||
<RadzenTemplateForm TItem="Appointment" Data="@model" Submit=@OnSubmit>
|
||||
<RadzenStack Gap="1rem">
|
||||
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" Wrap="FlexWrap.Wrap">
|
||||
<RadzenLabel Text="Title" Style="width: 6rem;" />
|
||||
<RadzenTextBox @bind-Value="@model.Text" Name="Text" Style="width: 12rem;" />
|
||||
<RadzenRequiredValidator Component="Text" Text="Title is required" />
|
||||
</RadzenStack>
|
||||
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" Wrap="FlexWrap.Wrap">
|
||||
<RadzenLabel Text="Detail" Style="width: 6rem;" />
|
||||
<RadzenTextBox @bind-Value="@model.Detail" Name="Detail" Style="width: 12rem;" />
|
||||
<RadzenRequiredValidator Component="Detail" Text="Detail is required" />
|
||||
</RadzenStack>
|
||||
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" Wrap="FlexWrap.Wrap">
|
||||
<RadzenLabel Text="Start" Style="width: 6rem;" />
|
||||
<RadzenDatePicker @bind-Value="@model.Start" Name="Start" ShowTime="true" Style="width: 12rem;" />
|
||||
<RadzenRequiredValidator Component="Start" Text="Start is required" />
|
||||
</RadzenStack>
|
||||
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" Wrap="FlexWrap.Wrap">
|
||||
<RadzenLabel Text="End" Style="width: 6rem;" />
|
||||
<RadzenDatePicker Name="End" @bind-Value="@model.End" ShowTime="true" Style="width: 12rem;" />
|
||||
<RadzenRequiredValidator Component="End" Text="End is required" />
|
||||
</RadzenStack>
|
||||
<RadzenStack Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.End" >
|
||||
<RadzenButton ButtonType="ButtonType.Submit" Text="Save" />
|
||||
</RadzenStack>
|
||||
</RadzenStack>
|
||||
</RadzenTemplateForm>
|
||||
@code {
|
||||
[Parameter]
|
||||
public Appointment Appointment { get; set; }
|
||||
|
||||
Appointment model = new Appointment();
|
||||
|
||||
protected override void OnParametersSet()
|
||||
{
|
||||
model = Appointment;
|
||||
}
|
||||
|
||||
void OnSubmit(Appointment model)
|
||||
{
|
||||
DialogService.Close(model);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
@using Radzen
|
||||
@using System.Text.Json
|
||||
@inject IJSRuntime JSRuntime
|
||||
<RadzenCard Variant="Variant.Outlined" class="rz-mt-4">
|
||||
<RadzenStack Orientation="Orientation.Vertical" Gap="0.5rem" @attributes=@Attributes>
|
||||
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" JustifyContent="JustifyContent.SpaceBetween">
|
||||
<RadzenText TextStyle="TextStyle.Subtitle1" TagName="TagName.P" class="rz-m-0">Console log</RadzenText>
|
||||
<RadzenButton Click=@OnClearClick Text="Clear console" ButtonStyle="ButtonStyle.Base" Variant="Variant.Flat" Size="ButtonSize.Small" />
|
||||
</RadzenStack>
|
||||
<RadzenStack Orientation="Orientation.Vertical" Gap="0" ID="event-console" class="rz-pt-1" Style="border-top: var(--rz-grid-cell-border); min-height: 2rem; max-height: 12rem; overflow: auto;">
|
||||
@foreach (var message in messages)
|
||||
{
|
||||
<RadzenAlert ShowIcon="false" Variant="Variant.Flat" AlertStyle="message.AlertStyle" Size="AlertSize.ExtraSmall" Shade="Shade.Lighter" AllowClose="false" Style="font-size: 0.75rem">
|
||||
<span Style="opacity: 0.6;">@message.Date.ToString("HH:mm:ss.ff")</span> @message.Text
|
||||
</RadzenAlert>
|
||||
}
|
||||
</RadzenStack>
|
||||
</RadzenStack>
|
||||
</RadzenCard>
|
||||
|
||||
@code {
|
||||
|
||||
/* ------------------------------------------------
|
||||
* Radzen Blazor
|
||||
* https://www.radzen.com/blazor-components/
|
||||
* dettagli installazione:
|
||||
* NET6: https://blazor.radzen.com/get-started/net6-server
|
||||
* NET8: https://blazor.radzen.com/get-started/net8
|
||||
*
|
||||
* demo compo
|
||||
* https://github.com/radzenhq/radzen-blazor/blob/master/RadzenBlazorDemos/Shared/EventConsole.razor
|
||||
* ------------------------------------------------*/
|
||||
|
||||
class Message
|
||||
{
|
||||
public DateTime Date { get; set; }
|
||||
public string Text { get; set; }
|
||||
public AlertStyle AlertStyle { get; set; }
|
||||
}
|
||||
|
||||
[Parameter(CaptureUnmatchedValues = true)]
|
||||
public IDictionary<string, object> Attributes { get; set; }
|
||||
IList<Message> messages = new List<Message>();
|
||||
|
||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||
{
|
||||
if (!firstRender)
|
||||
{
|
||||
await JSRuntime.InvokeVoidAsync("eval", $"document.getElementById('event-console').scrollTop = document.getElementById('event-console').scrollHeight");
|
||||
}
|
||||
}
|
||||
|
||||
void OnClearClick()
|
||||
{
|
||||
Clear();
|
||||
}
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
messages.Clear();
|
||||
|
||||
InvokeAsync(StateHasChanged);
|
||||
}
|
||||
|
||||
public void Log(string message, AlertStyle alertStyle = AlertStyle.Info)
|
||||
{
|
||||
messages.Add(new Message { Date = DateTime.Now, Text = message, AlertStyle = alertStyle });
|
||||
|
||||
InvokeAsync(StateHasChanged);
|
||||
}
|
||||
|
||||
public void Log(object value)
|
||||
{
|
||||
Log(JsonSerializer.Serialize(value));
|
||||
}
|
||||
}
|
||||
@@ -7,16 +7,21 @@ namespace EgwCoreLib.BlazorTest.Data
|
||||
public static Dictionary<string, string> MenuList { get; set; } = new()
|
||||
{
|
||||
{"TestPdfViewer", "Test PdfViewer"},
|
||||
{"TestInput", "Test Input Ext"},
|
||||
{"TestQrDisplay", "Test QrDisplay"},
|
||||
{"TestGraphCompo", "Test Graph Compo"},
|
||||
{"TestBarcodeReader", "Test Barcode Read"},
|
||||
{"TestCalendario", "Test Calendario"},
|
||||
{"TestProgress", "Test Progress"},
|
||||
{"TestParetoProgress", "Test Pareto ProgressBar"},
|
||||
{"TestDialog", "Test Custom Dialog"},
|
||||
{"TestLoading", "Test Loading"},
|
||||
{"TestComponenti", "Test Componenti"},
|
||||
{"TestSvgDraw", "Test SVG draw"},
|
||||
{"TestGauges", "Test Gauges"},
|
||||
{"TestChart", "Test Chart.js"},
|
||||
{"TestRadzenSched", "Test Radzen Scheduler" },
|
||||
{"TestHwInfo", "Test HW Info" }
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
@@ -19,6 +19,14 @@
|
||||
<None Include="compilerconfig.json" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="DeviceId" Version="6.7.0" />
|
||||
<PackageReference Include="DeviceId.Windows" Version="6.6.0" />
|
||||
<PackageReference Include="DeviceId.Windows.Wmi" Version="6.6.0" />
|
||||
<PackageReference Include="Radzen.Blazor" Version="6.2.6" />
|
||||
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.6.0.2" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\EgwCoreLib.Razor\EgwCoreLib.Razor.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -5,36 +5,43 @@
|
||||
<div class="card my-2">
|
||||
<div class="card-header"><h4>Test Barcode Reader</h4></div>
|
||||
<div class="card-body">
|
||||
<BarcodeReader ScanResult="(e) => ScanDoneHandler(e)"
|
||||
ScanBtnTitle="Scan"
|
||||
ResetBtnTitle="Reset"
|
||||
CloseBtnTitle="Close"
|
||||
UseBuiltinDiv="false"
|
||||
@ref="barcodeReaderCustom"
|
||||
SelectDeviceBtnTitle="Select Device">
|
||||
</BarcodeReader>
|
||||
@if (ShowScanBarcode)
|
||||
{
|
||||
<BarcodeReader
|
||||
@ref="barcodeReaderCustom"
|
||||
ScanResult="(e) => ScanDoneHandler(e)"
|
||||
ScanBtnTitle="Scan"
|
||||
ResetBtnTitle="Reset"
|
||||
CloseBtnTitle="Close"
|
||||
UseBuiltinDiv="false"
|
||||
SelectDeviceBtnTitle="Select Device">
|
||||
</BarcodeReader>
|
||||
|
||||
<div @ref="barcodeReaderCustom.Element" class="d-flex justify-content-center">
|
||||
@* <div style="width: 480px; max-width: 100%"> *@
|
||||
<div class="col-12 col-md-8 col-lg-6">
|
||||
<button class="btn btn-outline-success p-2 m-1 w-25" data-action="startButton">Scan</button>
|
||||
<button class="btn btn-outline-success p-2 m-1 w-25" data-action="resetButton">Reset</button>
|
||||
<div @ref="barcodeReaderCustom.Element" class="d-flex justify-content-center">
|
||||
<div class="col-12 col-md-8 col-lg-6">
|
||||
<button class="btn btn-outline-success p-2 m-1 w-25" data-action="startButton">Scan</button>
|
||||
<button class="btn btn-outline-success p-2 m-1 w-25" data-action="resetButton">Reset</button>
|
||||
<button class="btn btn-outline-success p-2 m-1 w-25" @onclick="() => ToggleCodeScan()">Close</button>
|
||||
|
||||
<div data-action="sourceSelectPanel" style="display:none">
|
||||
<label for="sourceSelect">Source:</label>
|
||||
<select data-action="sourceSelect" style="max-width:100%" class="form-control">
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<video id="video" playsinline="true" autoplay="true" class="w-100 h-100 border rounded shadow" muted="true"></video>
|
||||
<div data-action="sourceSelectPanel" style="display:none">
|
||||
<label for="sourceSelect">Source:</label>
|
||||
<select data-action="sourceSelect" style="max-width:100%" class="form-control">
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<video id="video" playsinline="true" autoplay="true" class="w-100 h-100 border rounded shadow shadow-lg image-mirror" muted="true"></video>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<button class="btn btn-outline-success p-2 m-1 w-25" @onclick="() => ToggleCodeScan()">Open</button>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@code {
|
||||
private int currentCount = 0;
|
||||
|
||||
protected BarcodeReader barcodeReaderCustom { get; set; } = null!;
|
||||
protected Random rnd = new Random();
|
||||
@@ -42,36 +49,17 @@
|
||||
{
|
||||
await Task.Delay(1);
|
||||
}
|
||||
private void IncrementCount()
|
||||
{
|
||||
currentCount++;
|
||||
}
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
base.OnInitialized();
|
||||
listBord01 = new();
|
||||
listBord01.Add("");
|
||||
listBord01.Add("White");
|
||||
listBord01.Add("");
|
||||
listBord01.Add("");
|
||||
listBord02 = new();
|
||||
listBord02.Add("");
|
||||
listBord02.Add("White");
|
||||
listBord02.Add("");
|
||||
listBord02.Add("White");
|
||||
listBord03 = new();
|
||||
listBord03.Add("");
|
||||
listBord03.Add("White");
|
||||
listBord03.Add("");
|
||||
listBord03.Add("Blue");
|
||||
|
||||
}
|
||||
|
||||
|
||||
protected List<string> listBord01 { get; set; } = new();
|
||||
protected List<string> listBord02 { get; set; } = new();
|
||||
protected List<string> listBord03 { get; set; } = new();
|
||||
|
||||
protected string qrCodeVal { get; set; } = "https://office.egalware.com/WDC/UI";
|
||||
|
||||
protected void ToggleCodeScan()
|
||||
{
|
||||
ShowScanBarcode = !ShowScanBarcode;
|
||||
}
|
||||
private bool ShowScanBarcode = true;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
.image-mirror {
|
||||
transform: rotateY(180deg);
|
||||
-webkit-transform: rotateY(180deg);
|
||||
/* Safari and Chrome */
|
||||
-moz-transform: rotateY(180deg);
|
||||
/* Firefox */
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
.image-mirror {
|
||||
transform: rotateY(180deg);
|
||||
-webkit-transform: rotateY(180deg); /* Safari and Chrome */
|
||||
-moz-transform: rotateY(180deg); /* Firefox */
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
.image-mirror{transform:rotateY(180deg);-webkit-transform:rotateY(180deg);-moz-transform:rotateY(180deg);}
|
||||
@@ -6,40 +6,48 @@
|
||||
<div class="card-header">
|
||||
<h3>Test Calendario + Gauges</h3>
|
||||
</div>
|
||||
<div class="card-body py-1">
|
||||
|
||||
<div class="row bg-dark">
|
||||
<div class="col">
|
||||
<CircleGauge maxVal="480" currVal="240" Titolo="4:00" Testo="Lavorate"></CircleGauge>
|
||||
</div>
|
||||
<div class="col">
|
||||
<CircleGauge maxVal="480" currVal="360" Titolo="6:00" Testo="Lavorate"></CircleGauge>
|
||||
</div>
|
||||
<div class="col">
|
||||
<CircleGauge maxVal="480" currVal="480" Titolo="8:00" Testo="Lavorate"></CircleGauge>
|
||||
</div>
|
||||
<div class="col">
|
||||
<CircleGauge maxVal="480" currVal="600" Titolo="10:00" Testo="Lavorate"></CircleGauge>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body py-0">
|
||||
|
||||
<div class="row bg-dark py-3">
|
||||
<div class="col">
|
||||
<CalendarMonth DtRif="@dtCurr" MainCss="table table-dark table-borderless" DateSelected="DisplayDate" DateCheck="@DateCheck" SingleWeek="@singleWeek"></CalendarMonth>
|
||||
<div class="col-12 col-md-6">
|
||||
<CalendarWeek DateList="@ListDate" EventList="@EventListWeek" PercX="150" PercY="0" backToCalendar="ForceReloadWeek" EC_HeadDateSel="SetDayDetail"></CalendarWeek>
|
||||
</div>
|
||||
<div class="col-12 col-md-6">
|
||||
<div class="row bg-dark">
|
||||
<div class="col">
|
||||
<CircleGauge maxVal="480" currVal="240" Titolo="4:00" Testo="Lavorate"></CircleGauge>
|
||||
</div>
|
||||
<div class="col">
|
||||
<CircleGauge maxVal="480" currVal="360" Titolo="6:00" Testo="Lavorate"></CircleGauge>
|
||||
</div>
|
||||
<div class="col">
|
||||
<CircleGauge maxVal="480" currVal="480" Titolo="8:00" Testo="Lavorate"></CircleGauge>
|
||||
</div>
|
||||
<div class="col">
|
||||
<CircleGauge maxVal="480" currVal="600" Titolo="10:00" Testo="Lavorate"></CircleGauge>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row bg-dark py-3">
|
||||
<div class="col">
|
||||
<CalendarMonth DtRif="@dtCurr" MainCss="table table-dark table-borderless" DateSelected="DisplayDate" DateCheck="@DateCheck" SingleWeek="@singleWeek"></CalendarMonth>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-between">
|
||||
<div>
|
||||
<b>@($"{dtCurr:ddd dd.MM.yyyy}")</b>
|
||||
</div>
|
||||
<div>
|
||||
<button class="btn btn-primary" @onclick="() => resetCal()">Reset</button>
|
||||
</div>
|
||||
<div>
|
||||
single: <b>@singleWeek</b>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-between">
|
||||
<div>
|
||||
<b>@($"{dtCurr:ddd dd.MM.yyyy}")</b>
|
||||
</div>
|
||||
<div>
|
||||
<button class="btn btn-primary" @onclick="() => resetCal()">Reset</button>
|
||||
</div>
|
||||
<div>
|
||||
single: <b>@singleWeek</b>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
using EgwCoreLib.Razor.Data;
|
||||
|
||||
namespace EgwCoreLib.BlazorTest.Pages
|
||||
{
|
||||
public partial class TestCalendario
|
||||
@@ -8,15 +10,22 @@ namespace EgwCoreLib.BlazorTest.Pages
|
||||
{
|
||||
dtCurr = DateTime.Today;
|
||||
await Task.Delay(1);
|
||||
setupMonthSim();
|
||||
|
||||
// preparo calendario settimanale...
|
||||
setupWeekSim();
|
||||
}
|
||||
|
||||
private void setupMonthSim()
|
||||
{
|
||||
DateCheck = new Dictionary<DateTime, string>();
|
||||
Random rnd = new Random();
|
||||
// random colorate...
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
DateTime newDate = dtCurr.AddDays(rnd.Next(-5, 10)).Date;
|
||||
if (!DateCheck.ContainsKey(newDate))
|
||||
{
|
||||
DateCheck.Add(newDate, "bg-success text-light rounded-circle p-2");
|
||||
DateCheck.Add(newDate, "bg-danger text-light rounded-circle p-2");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -25,6 +34,61 @@ namespace EgwCoreLib.BlazorTest.Pages
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Forza ricaricamento week
|
||||
/// </summary>
|
||||
protected void ForceReloadWeek()
|
||||
{
|
||||
// preparo calendario settimanale...
|
||||
setupWeekSim();
|
||||
}
|
||||
|
||||
protected void SetDayDetail(DateTime selDate)
|
||||
{
|
||||
|
||||
var tmpDays = ListDate.Where(x => x.Equals(selDate)).ToList();
|
||||
var tmpEv = EventListWeek.Where(x => x.Inizio.Date.Equals(selDate)).ToList();
|
||||
// salvo valori simulati
|
||||
ListDate = tmpDays;
|
||||
EventListWeek = tmpEv;
|
||||
}
|
||||
|
||||
protected Random rnd = new Random();
|
||||
private void setupWeekSim()
|
||||
{
|
||||
DateTime oggi = DateTime.Today;
|
||||
var tmpDays = new List<DateTime>();
|
||||
var tmpEv = new List<CalendarEvent>();
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
tmpDays.Add(oggi.AddDays(i));
|
||||
// genero qualche evento da 0 a 6...
|
||||
int numEv = rnd.Next(0, 8);
|
||||
if (numEv > 0)
|
||||
{
|
||||
for (int e = 0; e < numEv; e++)
|
||||
{
|
||||
int inizio = rnd.Next(8, 12);
|
||||
int fine = inizio + rnd.Next(2,8);
|
||||
CalendarEvent newEv = new CalendarEvent()
|
||||
{
|
||||
CssClass = "bg-success opacity-25",
|
||||
Description = $"Permesso #{e}, testo molto lungo per provare andata a capo con o senza un segnaposto",
|
||||
Type = "PERM",
|
||||
Inizio = oggi.AddDays(i).AddHours(inizio),
|
||||
Fine = oggi.AddDays(i).AddHours(fine),
|
||||
Title = "O.S.",
|
||||
ToolTip = $"O.S. {oggi.AddDays(i).AddHours(inizio)} - {oggi.AddDays(i).AddHours(fine)}"
|
||||
};
|
||||
tmpEv.Add(newEv);
|
||||
}
|
||||
}
|
||||
}
|
||||
// salvo valori simulati
|
||||
ListDate = tmpDays;
|
||||
EventListWeek = tmpEv;
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
@@ -37,6 +101,9 @@ namespace EgwCoreLib.BlazorTest.Pages
|
||||
|
||||
private DateTime dtCurr { get; set; } = DateTime.Today;
|
||||
|
||||
private List<DateTime> ListDate { get; set; } = new List<DateTime>();
|
||||
private List<CalendarEvent> EventListWeek { get; set; } = new List<CalendarEvent>();
|
||||
|
||||
private bool singleWeek = false;
|
||||
|
||||
#endregion Private Properties
|
||||
@@ -46,7 +113,7 @@ namespace EgwCoreLib.BlazorTest.Pages
|
||||
private void DisplayDate(DateTime dtSel)
|
||||
{
|
||||
dtCurr = dtSel;
|
||||
singleWeek= true;
|
||||
singleWeek = true;
|
||||
}
|
||||
|
||||
private async Task resetCal()
|
||||
|
||||
@@ -44,13 +44,13 @@
|
||||
</div>
|
||||
<div class="col-2 text-center">
|
||||
<div>
|
||||
<Doughnut Id="00" Type="@Doughnut.ChartType.Doughnut" Data="@SimData()" BackgroundColor="@colors"></Doughnut>
|
||||
<Doughnut Id="00" Type="@Doughnut.ChartType.Doughnut" Data="@SimData()" BackgroundColor="@colors" BordWidth="1"></Doughnut>
|
||||
</div>
|
||||
<small>display con animazione</small>
|
||||
</div>
|
||||
<div class="col-2 text-center">
|
||||
<div>
|
||||
<Doughnut Id="03" Type="@Doughnut.ChartType.Doughnut" Data="@SimData()" BackgroundColor="@colors"></Doughnut>
|
||||
<Doughnut Id="03" Type="@Doughnut.ChartType.Doughnut" Data="@SimData()" BackgroundColor="@colors" BordWidth="3"></Doughnut>
|
||||
</div>
|
||||
<small>display con animazione</small>
|
||||
</div>
|
||||
|
||||
@@ -101,15 +101,15 @@ namespace EgwCoreLib.BlazorTest.Pages
|
||||
answ.Add(currColor);
|
||||
if (currColor > 7)
|
||||
{
|
||||
colors.Add(new DoughnutStyling("#28FF69", "ccc"));
|
||||
colors.Add(new DoughnutStyling("#28FF69", "#00AA00"));
|
||||
}
|
||||
else if (currColor > 3)
|
||||
{
|
||||
colors.Add(new DoughnutStyling("orange", "ccc"));
|
||||
colors.Add(new DoughnutStyling("orange", "#99AA00"));
|
||||
}
|
||||
else
|
||||
{
|
||||
colors.Add(new DoughnutStyling("red", "ccc"));
|
||||
colors.Add(new DoughnutStyling("red", "#FF6969"));
|
||||
}
|
||||
}
|
||||
return answ.ToArray();
|
||||
|
||||
@@ -1,18 +1,19 @@
|
||||
@page "/TestComponenti"
|
||||
@using static EgwCoreLib.Razor.Sorter
|
||||
|
||||
@inject NavigationManager NavMan
|
||||
@implements IDisposable
|
||||
|
||||
<PageTitle>Test</PageTitle>
|
||||
|
||||
<div class="card">
|
||||
<div class="card shadow">
|
||||
<div class="card-header">
|
||||
<h1>Test Componenti custom</h1>
|
||||
</div>
|
||||
<div class="card-body py-1">
|
||||
<div class="card-body py-4">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<div class="card">
|
||||
<div class="card shadow">
|
||||
<div class="card-header">
|
||||
Test Image
|
||||
</div>
|
||||
@@ -22,7 +23,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<div class="card">
|
||||
<div class="card shadow">
|
||||
<div class="card-header">
|
||||
Input password
|
||||
</div>
|
||||
@@ -45,13 +46,16 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<div class="card">
|
||||
<div class="card shadow">
|
||||
<div class="card-header">
|
||||
Input Speciali
|
||||
</div>
|
||||
<div class="card-body py-1">
|
||||
<small>Test copia clipboard, GUID (presudo)random</small>
|
||||
<CopyToClipboard Text="@textToCopy"></CopyToClipboard>
|
||||
<br />
|
||||
<small>Test copia clipboard, valore hidden</small>
|
||||
<CopyToClipboard Text="@textToCopy" ShowText="false"></CopyToClipboard>
|
||||
<hr />
|
||||
<small>Input numerico con gestione cifre (es x double)</small>
|
||||
<NumInput CssClass="form-control" @bind-Value="@valDecimale"></NumInput>
|
||||
@@ -62,7 +66,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<div class="card">
|
||||
<div class="card shadow">
|
||||
<div class="card-header">
|
||||
QueryString
|
||||
</div>
|
||||
@@ -125,19 +129,119 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<div class="card">
|
||||
<div class="card-header"><h4>Test toggler</h4></div>
|
||||
<div class="card-body">
|
||||
<Toggler SelFilter="@TogFilter"></Toggler>
|
||||
<br />
|
||||
<NumInput Value="@numero"></NumInput>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<div class="card">
|
||||
<div class="card-header"><h4>Test switch pager</h4></div>
|
||||
<div class="card-body">
|
||||
<span class="form-check form-switch">
|
||||
<label class="form-check-label">Small Pager</label>
|
||||
<input class="form-check-input" type="checkbox" @bind="@ShowSmallPager">
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<div class="card">
|
||||
<div class="card-header"><h4>Test Sorter</h4></div>
|
||||
<div class="card-body">
|
||||
<table class="table table-sm table-striped table-responsive-lg">
|
||||
<thead>
|
||||
|
||||
<tr>
|
||||
<th>
|
||||
Col A
|
||||
<Sorter ParamName="ColA" IsAsc="@sortAsc" CurrParam="@sortField" sortReq="SortRequested"></Sorter>
|
||||
</th>
|
||||
<th>
|
||||
ColB
|
||||
<Sorter ParamName="ColB" IsAsc="@sortAsc" CurrParam="@sortField" sortReq="SortRequested"></Sorter>
|
||||
</th>
|
||||
<th>
|
||||
Col C
|
||||
<Sorter ParamName="ColC" IsAsc="@sortAsc" CurrParam="@sortField" sortReq="SortRequested"></Sorter>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Sort param</td>
|
||||
<td>@sortField</td>
|
||||
<td>@sortAsc</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<div class="card">
|
||||
<div class="card-header"><h4>Test RadioButtons</h4></div>
|
||||
<div class="card-body">
|
||||
<div>Multi</div>
|
||||
<MultiButton ListValues="@ListButtons" EC_ValueChanged="SaveRBLSel"></MultiButton>
|
||||
<div>Single</div>
|
||||
<MultiButton ListValues="@ListChecks" ClassSel="btn-warning" ClassDesel="btn-secondary opacity-50" EC_ValueChanged="SaveRBLSel" MultiSel="false"></MultiButton>
|
||||
<hr />
|
||||
<p>@valSel</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
@if (ShowSmallPager)
|
||||
{
|
||||
<DataPager currPage="1" totalCount="@numero" NumPages="4" DisplSize="DataPager.ObjSize.small"></DataPager>
|
||||
}
|
||||
else
|
||||
{
|
||||
<DataPager currPage="1" totalCount="@numero"></DataPager>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@code {
|
||||
|
||||
protected void SaveRBLSel(MultiButton.ItemData newVal)
|
||||
{
|
||||
valSel = $"{newVal.Text}: sel: {newVal.Selected}";
|
||||
}
|
||||
|
||||
Toggler.SelectGlobalToggle TogFilter { get; set; } = new Toggler.SelectGlobalToggle();
|
||||
protected string textToCopy = $"{Guid.NewGuid()}";
|
||||
protected decimal valDecimale = 12345;
|
||||
|
||||
private string qsNome = "";
|
||||
private int qsIntero = -1;
|
||||
private int numero = 0;
|
||||
|
||||
private bool sortAsc = false;
|
||||
private string sortField = "";
|
||||
|
||||
protected void SortRequested(SortCallBack e)
|
||||
{
|
||||
if (sortField == e.ParamName)
|
||||
{
|
||||
sortAsc = e.IsAscending;
|
||||
}
|
||||
sortField = e.ParamName;
|
||||
}
|
||||
|
||||
private bool ShowSmallPager { get; set; } = false;
|
||||
|
||||
protected Random rnd = new Random();
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
@@ -145,6 +249,44 @@
|
||||
qsNome = NavMan.ExtractQueryStringByKey<string>("Nome");
|
||||
qsIntero = NavMan.ExtractQueryStringByKey<int>("Intero");
|
||||
NavMan.LocationChanged += LocationChanged;
|
||||
// toggler!
|
||||
TogFilter = new()
|
||||
{
|
||||
isActive = true,
|
||||
leftString = "opzione sx",
|
||||
rightString = "opzione dx"
|
||||
};
|
||||
|
||||
//test input
|
||||
numero = rnd.Next(100, 300);
|
||||
|
||||
// preparo buttons
|
||||
ListButtons = new List<MultiButton.ItemData>();
|
||||
for (int i = 1; i <= 4; i++)
|
||||
{
|
||||
ListButtons.Add(new MultiButton.ItemData()
|
||||
{
|
||||
CodItem = $"B{i:00}",
|
||||
Ordinal = i,
|
||||
Selected = false,
|
||||
Text = $"Btn_{i:00}",
|
||||
Tooltip = $"Toggle Button {i:00}"
|
||||
});
|
||||
}
|
||||
|
||||
// preparo checks
|
||||
ListChecks = new List<MultiButton.ItemData>();
|
||||
for (int i = 1; i <= 4; i++)
|
||||
{
|
||||
ListChecks.Add(new MultiButton.ItemData()
|
||||
{
|
||||
CodItem = $"B{i:00}",
|
||||
Ordinal = i,
|
||||
Selected = false,
|
||||
Text = $"Chk_{i:00}",
|
||||
Tooltip = $"Switch {i:00}"
|
||||
});
|
||||
}
|
||||
}
|
||||
async void LocationChanged(object sender, LocationChangedEventArgs e)
|
||||
{
|
||||
@@ -157,4 +299,10 @@
|
||||
{
|
||||
NavMan.LocationChanged -= LocationChanged;
|
||||
}
|
||||
|
||||
|
||||
private List<MultiButton.ItemData>? ListButtons = null;
|
||||
private string valSel = "";
|
||||
private List<MultiButton.ItemData>? ListChecks = null;
|
||||
private string checkSel = "";
|
||||
}
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
@page "/TestDialog"
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3>Pure Blazor Prompt Test</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
<button class="btn btn-primary" @onclick="ShowMessage">Show Message</button>
|
||||
<button class="btn btn-warning" @onclick="ShowConfirm">Show Confirm</button>
|
||||
<button class="btn btn-success" @onclick="ShowPrompt">Show Prompt</button>
|
||||
|
||||
<hr />
|
||||
<p>@resultMessage</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<BootstrapModal @ref="modal" Title=@cTitle Message=@cMessage Mode=@cMode Placeholder=@cPlaceholder UserInput=@cUserInput Size="BootstrapModal.ModalSize.Normal" UserOptions=@cOpt BigButtons=@cBigBtn TitleCss="bg-secondary bg-opacity-25 bg-gradient" />
|
||||
|
||||
@code {
|
||||
private BootstrapModal? modal;
|
||||
private string resultMessage = "";
|
||||
|
||||
private string cTitle = "";
|
||||
private string cMessage = "";
|
||||
private string cPlaceholder = "";
|
||||
private string cUserInput = "";
|
||||
private bool cBigBtn = false;
|
||||
private Dictionary<bool, string>? cOpt = null;
|
||||
private BootstrapModal.ModalMode cMode = BootstrapModal.ModalMode.ND;
|
||||
|
||||
|
||||
private async Task ShowMessage()
|
||||
{
|
||||
cTitle = "Information";
|
||||
cMessage = "This is a standard message.";
|
||||
cMode = BootstrapModal.ModalMode.Message;
|
||||
cOpt = null;
|
||||
cBigBtn = false;
|
||||
|
||||
await modal!.ShowAsync<bool>();
|
||||
resultMessage = "Message closed.";
|
||||
}
|
||||
|
||||
private async Task ShowConfirm()
|
||||
{
|
||||
cTitle = "Confirm Action";
|
||||
cMessage = "Are you sure you want to continue?";
|
||||
cMode = BootstrapModal.ModalMode.Confirm;
|
||||
cOpt = new();
|
||||
cOpt.Add(true, "Si");
|
||||
cOpt.Add(false, "No");
|
||||
cBigBtn = true;
|
||||
|
||||
bool confirmed = await modal!.ShowAsync<bool>();
|
||||
resultMessage = confirmed ? "User confirmed." : "User cancelled.";
|
||||
}
|
||||
private async Task ShowPrompt()
|
||||
{
|
||||
cTitle = "Enter Name";
|
||||
cMessage = "What is your name?";
|
||||
cPlaceholder = "Type your name...";
|
||||
cUserInput = "";
|
||||
cMode = BootstrapModal.ModalMode.Prompt;
|
||||
cOpt = null;
|
||||
cBigBtn = false;
|
||||
|
||||
string? name = await modal!.ShowAsync<string?>();
|
||||
resultMessage = name is null ? "User cancelled." : $"Hello, {name}!";
|
||||
}
|
||||
}
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
<PageTitle>Test</PageTitle>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header"><h4>Test Componenti Arrow SVG</h4></div>
|
||||
<div class="card shadow ">
|
||||
<div class="card-header"><h4>Test Grapth Compo: Arrow SVG</h4></div>
|
||||
<div class="card-body">
|
||||
<div class="row bg-secondary py-2">
|
||||
<div class="col">
|
||||
@@ -22,8 +22,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@code {
|
||||
|
||||
private int currentCount = 0;
|
||||
|
||||
protected Random rnd = new Random();
|
||||
@@ -46,10 +46,8 @@
|
||||
listBord03.Add("White");
|
||||
listBord03.Add("");
|
||||
listBord03.Add("Blue");
|
||||
|
||||
}
|
||||
|
||||
|
||||
protected List<string> listBord01 { get; set; } = new();
|
||||
protected List<string> listBord02 { get; set; } = new();
|
||||
protected List<string> listBord03 { get; set; } = new();
|
||||
|
||||
@@ -0,0 +1,237 @@
|
||||
@page "/TestHwInfo"
|
||||
@using DeviceId
|
||||
@using EgwCoreLib.Utils
|
||||
|
||||
@if (isLoading)
|
||||
{
|
||||
<LoadingData DisplaySize="LoadingData.CtrlSize.Large" DisplayMode="LoadingData.SpinMode.BounceLine"></LoadingData>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="row small" style="font-size: 0.8rem;">
|
||||
<div class="col-6">
|
||||
<ul class="list-group">
|
||||
<li class="list-group-item active">
|
||||
Device ID
|
||||
</li>
|
||||
@if (ListDevId != null && ListDevId.Count > 0)
|
||||
{
|
||||
@foreach (var item in ListDevId)
|
||||
{
|
||||
<li class="list-group-item d-flex justify-content-between">
|
||||
<div class="px-1">@item.Key</div>
|
||||
<div class="px-1">@item.Value</div>
|
||||
</li>
|
||||
}
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<ul class="list-group">
|
||||
<li class="list-group-item active">
|
||||
Sublicense
|
||||
</li>
|
||||
<li class="list-group-item d-flex justify-content-between">
|
||||
<div class="px-1">CodImpiego</div>
|
||||
<div class="px-1">@codImpiego</div>
|
||||
</li>
|
||||
<li class="list-group-item d-flex justify-content-between">
|
||||
<div class="px-1">Payload</div>
|
||||
<div class="px-1">@decVal</div>
|
||||
</li>
|
||||
<li class="list-group-item d-flex justify-content-between">
|
||||
<div class="px-1">AppKey</div>
|
||||
<div class="px-1">@appKey</div>
|
||||
</li>
|
||||
<li class="list-group-item d-flex justify-content-between">
|
||||
<button class="btn btn-info btn-sm w-100" @onclick="Regenerate">ReGen</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<ul class="list-group">
|
||||
<li class="list-group-item active">
|
||||
Machine Info
|
||||
</li>
|
||||
@if (ListAllMacInfo != null && ListAllMacInfo.Count > 0)
|
||||
{
|
||||
@foreach (var item in ListAllMacInfo)
|
||||
{
|
||||
<li class="list-group-item d-flex justify-content-between">
|
||||
<div class="px-1">@item.Key</div>
|
||||
<div class="px-1">@item.Value</div>
|
||||
</li>
|
||||
}
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
@if (ListUserInfo != null && ListUserInfo.Count > 0)
|
||||
{
|
||||
<ul class="list-group">
|
||||
<li class="list-group-item active">
|
||||
UserInfo
|
||||
</li>
|
||||
@foreach (var item in ListUserInfo)
|
||||
{
|
||||
<li class="list-group-item d-flex justify-content-between">
|
||||
<div class="px-1">@item.Key</div>
|
||||
<div class="px-1">@item.Value</div>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
}
|
||||
@if (ListNetInfo != null && ListNetInfo.Count > 0)
|
||||
{
|
||||
<br />
|
||||
<ul class="list-group">
|
||||
<li class="list-group-item active">
|
||||
NetInfo
|
||||
</li>
|
||||
@foreach (var item in ListNetInfo)
|
||||
{
|
||||
<li class="list-group-item d-flex justify-content-between">
|
||||
<div class="px-1">@item.Key</div>
|
||||
<div class="px-1">@item.Value</div>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
}
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<ul class="list-group">
|
||||
<li class="list-group-item active">
|
||||
CpuInfo
|
||||
</li>
|
||||
@foreach (var item in ListOsInfo)
|
||||
{
|
||||
<li class="list-group-item d-flex justify-content-between">
|
||||
<div class="px-1">@item.Key</div>
|
||||
<div class="px-1">@item.Value</div>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
<br />
|
||||
<ul class="list-group">
|
||||
<li class="list-group-item active">
|
||||
OsInfo
|
||||
</li>
|
||||
@foreach (var item in ListOsInfo)
|
||||
{
|
||||
<li class="list-group-item d-flex justify-content-between">
|
||||
<div class="px-1">@item.Key</div>
|
||||
<div class="px-1">@item.Value</div>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
<br />
|
||||
<ul class="list-group">
|
||||
<li class="list-group-item active">
|
||||
VolInfo
|
||||
</li>
|
||||
@foreach (var item in ListVolInfo)
|
||||
{
|
||||
<li class="list-group-item d-flex justify-content-between">
|
||||
<div class="px-1">@item.Key</div>
|
||||
<div class="px-1">@item.Value</div>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
}
|
||||
|
||||
@code {
|
||||
protected Dictionary<string, string> ListAllMacInfo { get; set; } = new Dictionary<string, string>();
|
||||
protected Dictionary<string, string> ListCpuInfo { get; set; } = new Dictionary<string, string>();
|
||||
protected Dictionary<string, string> ListDevId { get; set; } = new Dictionary<string, string>();
|
||||
protected Dictionary<string, string> ListNetInfo { get; set; } = new Dictionary<string, string>();
|
||||
protected Dictionary<string, string> ListOsInfo { get; set; } = new Dictionary<string, string>();
|
||||
protected Dictionary<string, string> ListUserInfo { get; set; } = new Dictionary<string, string>();
|
||||
protected Dictionary<string, string> ListVolInfo { get; set; } = new Dictionary<string, string>();
|
||||
|
||||
protected MachineDataValidator MDValidator { get; set; } = new MachineDataValidator();
|
||||
|
||||
protected SubLicManager SubLicManager { get; set; } = new SubLicManager();
|
||||
|
||||
protected string codImpiego = "";
|
||||
protected string appKey = "";
|
||||
protected string decVal = "";
|
||||
|
||||
private bool isLoading { get; set; } = true;
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
isLoading = true;
|
||||
await InvokeAsync(StateHasChanged);
|
||||
await Task.Run(() =>
|
||||
{
|
||||
GetInfo();
|
||||
});
|
||||
Regenerate();
|
||||
isLoading = false;
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
|
||||
protected void GetInfo()
|
||||
{
|
||||
string deviceId = "";
|
||||
deviceId = new DeviceIdBuilder()
|
||||
.OnWindows(windows => windows.AddWindowsDeviceId())
|
||||
.ToString();
|
||||
ListDevId.Add("DevId_01", deviceId);
|
||||
|
||||
deviceId = new DeviceIdBuilder()
|
||||
.AddMachineName()
|
||||
.AddOsVersion()
|
||||
// .AddFileToken("machine.uid")
|
||||
.ToString();
|
||||
ListDevId.Add("DevId_02", deviceId);
|
||||
|
||||
deviceId = new DeviceIdBuilder()
|
||||
.AddMachineName()
|
||||
.AddUserName()
|
||||
.AddOsVersion()
|
||||
.OnWindows(windows => windows
|
||||
.AddMacAddressFromWmi(excludeWireless: true, excludeNonPhysical: true)
|
||||
.AddProcessorId()
|
||||
.AddMotherboardSerialNumber()
|
||||
.AddSystemDriveSerialNumber())
|
||||
// .OnLinux(linux => linux
|
||||
// .AddMotherboardSerialNumber()
|
||||
// .AddSystemDriveSerialNumber())
|
||||
// .OnMac(mac => mac
|
||||
// .AddSystemDriveSerialNumber()
|
||||
// .AddPlatformSerialNumber())
|
||||
.ToString();
|
||||
ListDevId.Add("DevId_03", deviceId);
|
||||
|
||||
ListNetInfo = new Dictionary<string, string>(MachineDataValidator.netInfo);
|
||||
ListOsInfo = new Dictionary<string, string>(MachineDataValidator.osInfo);
|
||||
ListUserInfo = new Dictionary<string, string>(MachineDataValidator.userInfo);
|
||||
ListCpuInfo = new Dictionary<string, string>(MachineDataValidator.cpuInfo);
|
||||
ListVolInfo = new Dictionary<string, string>(MachineDataValidator.volInfo);
|
||||
|
||||
ListAllMacInfo = new Dictionary<string, string>(MachineDataValidator.userInfo);
|
||||
foreach (var item in MachineDataValidator.netInfo)
|
||||
{
|
||||
if (!ListAllMacInfo.ContainsKey(item.Key))
|
||||
{
|
||||
ListAllMacInfo.Add(item.Key, item.Value);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected void Regenerate()
|
||||
{
|
||||
isLoading = true;
|
||||
codImpiego = SubLicManager.CodImpiego();
|
||||
appKey = SubLicManager.GenKey(passphrase, false);
|
||||
decVal = SteamCrypto.DecryptString(appKey, passphrase);
|
||||
isLoading = false;
|
||||
}
|
||||
|
||||
private string passphrase = "SaltPass";
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
@page "/TestInput"
|
||||
|
||||
<PageTitle>TestInput</PageTitle>
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3>Test Input Specializzati</h3>
|
||||
</div>
|
||||
<div class="card-body py-1">
|
||||
<div class="row">
|
||||
<div class="col-4">
|
||||
<div class="fs-4">
|
||||
Decimal
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<InputDecimal Decimals="0" Step="0.001M" CssClass="form-control form-control-lg text-end w-auto" @bind-Value="@DecimalValue"></InputDecimal>
|
||||
<span class="input-group-text">Decimal 0</span>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<InputDecimal Decimals="3" Step="0.001M" CssClass="form-control form-control-lg text-end w-auto" @bind-Value="@DecimalValue"></InputDecimal>
|
||||
<span class="input-group-text">Decimal 3</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="fs-4">
|
||||
Percentage
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<InputPercent CssClass="form-control form-control-lg text-end w-auto" @bind-Value="@PercValue" Decimals="0"></InputPercent>
|
||||
<span class="input-group-text">Percent P0</span>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<InputPercent CssClass="form-control form-control-lg text-end w-auto" @bind-Value="@PercValue" Decimals="2"></InputPercent>
|
||||
<span class="input-group-text">Percent P2</span>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<InputPercent CssClass="form-control form-control-lg text-end w-auto" @bind-Value="@PercValue" Decimals="2" ForceInvariantParsing="true"></InputPercent>
|
||||
<span class="input-group-text">Percent P2 Invariant</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@code {
|
||||
private decimal DecimalValue = 0;
|
||||
private decimal PercValue = 0.123M;
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
@page "/TestParetoProgress"
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3>Test Pareto ProgressBar</h3>
|
||||
</div>
|
||||
<div class="card-body py-1">
|
||||
<div class="row">
|
||||
@foreach (var dataSet in ListParetoTime)
|
||||
{
|
||||
<div class="col-4">
|
||||
<ParetoProgress ParetoData="@dataSet" Title="Demo Progress" />
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@code {
|
||||
private List<Dictionary<string, int>> ListParetoTime = new();
|
||||
|
||||
|
||||
private Random rnd = new();
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
base.OnInitialized();
|
||||
ListParetoTime = new();
|
||||
// simulazione...
|
||||
for (int i = 0; i < 9; i++)
|
||||
{
|
||||
Dictionary<string, int> currSet = new();
|
||||
currSet.Add("success", rnd.Next(2, 10));
|
||||
currSet.Add("warning", rnd.Next(0, 10));
|
||||
currSet.Add("danger", rnd.Next(1, 10));
|
||||
ListParetoTime.Add(currSet);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,184 @@
|
||||
@page "/TestRadzenSched"
|
||||
@inject DialogService DialogService
|
||||
|
||||
<PageTitle>Test Radzen Scheduler</PageTitle>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h1>Test Radzen Scheduler</h1>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if (currView == "year" || currView == "planner")
|
||||
{
|
||||
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" Gap="0.5rem" class="rz-p-4 rz-mb-6 rz-border-radius-1" Style="border: var(--rz-grid-cell-border);">
|
||||
<RadzenLabel Text="Schedule Start Month:" />
|
||||
<RadzenSelectBar @bind-Value="@startMonth" TextProperty="Text" ValueProperty="Value" Data="@(Enum.GetValues(typeof(Month)).Cast<Month>().Select(t => new { Text = $"{t}", Value = t }))" Size="ButtonSize.Small" class="rz-display-none rz-display-xl-flex" />
|
||||
<RadzenDropDown @bind-Value="@startMonth" Change="StartMonthChange" TextProperty="Text" ValueProperty="Value" Data="@(Enum.GetValues(typeof(Month)).Cast<Month>().Select(t => new { Text = $"{t}", Value = t }))" class="rz-display-inline-flex rz-display-xl-none" />
|
||||
</RadzenStack>
|
||||
}
|
||||
else
|
||||
{
|
||||
<h3>@currView</h3>
|
||||
}
|
||||
<div style="@schedHeight">
|
||||
<RadzenScheduler @ref=@scheduler SlotRender=@OnSlotRender style="height: 100%;" TItem="Appointment" Data=@appointments StartProperty="Start" EndProperty="End"
|
||||
TextProperty="Text" SelectedIndex="2"
|
||||
SlotSelect=@OnSlotSelect AppointmentSelect=@OnAppointmentSelect AppointmentRender=@OnAppointmentRender
|
||||
AppointmentMove=@OnAppointmentMove LoadData=OnLoadData>
|
||||
<Template Context="appointments">
|
||||
<div>
|
||||
<strong>@appointments.Text</strong>
|
||||
</div>
|
||||
<small>
|
||||
@appointments.Detail
|
||||
</small>
|
||||
</Template>
|
||||
<ChildContent>
|
||||
<RadzenDayView />
|
||||
<RadzenWeekView />
|
||||
<RadzenMonthView />
|
||||
<RadzenYearPlannerView StartMonth="@startMonth" />
|
||||
@* <RadzenYearTimelineView StartMonth="@startMonth" /> *@
|
||||
<RadzenYearView StartMonth="@startMonth" />
|
||||
</ChildContent>
|
||||
</RadzenScheduler>
|
||||
</div>
|
||||
<EventConsole @ref=@console />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@code {
|
||||
|
||||
/* ------------------------------------------------
|
||||
* Radzen Blazor
|
||||
* https://www.radzen.com/blazor-components/
|
||||
*
|
||||
* dettagli installazione:
|
||||
* NET6: https://blazor.radzen.com/get-started/net6-server
|
||||
* NET8: https://blazor.radzen.com/get-started/net8
|
||||
*
|
||||
* Test componente Scheduler:
|
||||
* https://blazor.radzen.com/scheduler?theme=material3
|
||||
* https://blazor.radzen.com/docs/guides/components/scheduler.html
|
||||
* ------------------------------------------------*/
|
||||
|
||||
RadzenScheduler<Appointment> scheduler;
|
||||
EventConsole console;
|
||||
Dictionary<DateTime, string> events = new Dictionary<DateTime, string>();
|
||||
|
||||
Month startMonth = Month.January;
|
||||
|
||||
bool showSelMonth { get; set; } = true;
|
||||
|
||||
async Task StartMonthChange()
|
||||
{
|
||||
await scheduler.Reload();
|
||||
}
|
||||
|
||||
|
||||
IList<Appointment> appointments = new List<Appointment>
|
||||
{
|
||||
new Appointment { Start = DateTime.Today.AddDays(-2), End = DateTime.Today.AddDays(-2), Text = "Birthday", Detail="My Birthday" },
|
||||
new Appointment { Start = DateTime.Today.AddDays(-11), End = DateTime.Today.AddDays(-10), Text = "Day off", Detail="Rest required" },
|
||||
new Appointment { Start = DateTime.Today.AddDays(-10), End = DateTime.Today.AddDays(-8), Text = "Work from home", Detail="WIP from remote" },
|
||||
new Appointment { Start = DateTime.Today.AddHours(10), End = DateTime.Today.AddHours(12), Text = "Online meeting", Detail="Teams" },
|
||||
new Appointment { Start = DateTime.Today.AddHours(10), End = DateTime.Today.AddHours(13), Text = "Skype call", Detail="Google Meet?" },
|
||||
new Appointment { Start = DateTime.Today.AddHours(14), End = DateTime.Today.AddHours(14).AddMinutes(30), Text = "Dentist appointment", Detail="Anestetics" },
|
||||
new Appointment { Start = DateTime.Today.AddDays(1), End = DateTime.Today.AddDays(12), Text = "Vacation", Detail="Long awaited!!!" },
|
||||
};
|
||||
|
||||
void OnSlotRender(SchedulerSlotRenderEventArgs args)
|
||||
{
|
||||
// Highlight today in month view
|
||||
if (args.View.Text == "Month" && args.Start.Date == DateTime.Today)
|
||||
{
|
||||
args.Attributes["style"] = "background: var(--rz-scheduler-highlight-background-color, rgba(255,220,40,.2));";
|
||||
}
|
||||
|
||||
// Highlight working hours (9-18)
|
||||
if ((args.View.Text == "Week" || args.View.Text == "Day") && args.Start.Hour > 8 && args.Start.Hour < 19)
|
||||
{
|
||||
args.Attributes["style"] = "background: var(--rz-scheduler-highlight-background-color, rgba(255,220,40,.2));";
|
||||
}
|
||||
}
|
||||
|
||||
async Task OnSlotSelect(SchedulerSlotSelectEventArgs args)
|
||||
{
|
||||
console.Log($"SlotSelect: Start={args.Start} End={args.End}");
|
||||
|
||||
if (args.View.Text != "Year")
|
||||
{
|
||||
Appointment data = await DialogService.OpenAsync<AddAppointmentPage>("Add Appointment",
|
||||
new Dictionary<string, object> { { "Start", args.Start }, { "End", args.End } });
|
||||
|
||||
if (data != null)
|
||||
{
|
||||
appointments.Add(data);
|
||||
// Either call the Reload method or reassign the Data property of the Scheduler
|
||||
await scheduler.Reload();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async Task OnAppointmentSelect(SchedulerAppointmentSelectEventArgs<Appointment> args)
|
||||
{
|
||||
console.Log($"AppointmentSelect: Appointment={args.Data.Text}");
|
||||
|
||||
var copy = new Appointment
|
||||
{
|
||||
Start = args.Data.Start,
|
||||
End = args.Data.End,
|
||||
Text = args.Data.Text,
|
||||
Detail = args.Data.Detail
|
||||
};
|
||||
|
||||
var data = await DialogService.OpenAsync<EditAppointmentPage>("Edit Appointment", new Dictionary<string, object> { { "Appointment", copy } });
|
||||
|
||||
if (data != null)
|
||||
{
|
||||
// Update the appointment
|
||||
args.Data.Start = data.Start;
|
||||
args.Data.End = data.End;
|
||||
args.Data.Text = data.Text;
|
||||
args.Data.Detail = data.Detail;
|
||||
}
|
||||
|
||||
await scheduler.Reload();
|
||||
}
|
||||
|
||||
void OnAppointmentRender(SchedulerAppointmentRenderEventArgs<Appointment> args)
|
||||
{
|
||||
// Never call StateHasChanged in AppointmentRender - would lead to infinite loop
|
||||
|
||||
if (args.Data.Text == "Birthday")
|
||||
{
|
||||
args.Attributes["style"] = "background: red";
|
||||
}
|
||||
}
|
||||
|
||||
async Task OnAppointmentMove(SchedulerAppointmentMoveEventArgs args)
|
||||
{
|
||||
var draggedAppointment = appointments.FirstOrDefault(x => x == args.Appointment.Data);
|
||||
|
||||
if (draggedAppointment != null)
|
||||
{
|
||||
draggedAppointment.Start = draggedAppointment.Start + args.TimeSpan;
|
||||
|
||||
draggedAppointment.End = draggedAppointment.End + args.TimeSpan;
|
||||
|
||||
await scheduler.Reload();
|
||||
}
|
||||
}
|
||||
|
||||
async Task OnLoadData(SchedulerLoadDataEventArgs args)
|
||||
{
|
||||
await Task.Delay(1);
|
||||
currView = scheduler.SelectedView.Text.ToLowerInvariant();
|
||||
|
||||
schedHeight = (currView == "year" || currView == "planner") ? "height: 50rem;" : "height: 40rem;";
|
||||
// // Get the appointments for between the Start and End
|
||||
// data = await MyAppointmentService.GetData(args.Start, args.End);
|
||||
}
|
||||
private string currView { get; set; } = "";
|
||||
private string schedHeight { get; set; } = "height: 40rem;";
|
||||
}
|
||||
@@ -1,161 +0,0 @@
|
||||
@page "/TestOld"
|
||||
|
||||
<PageTitle>Test</PageTitle>
|
||||
|
||||
<h1>Test</h1>
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-2">
|
||||
<img src="_content/EgwCoreLib.Razor/images/LogoEgw.png" class="img-fluid" width="200" height="200" />
|
||||
<PasswordBox></PasswordBox>
|
||||
<PasswordBox ItemLabel="pwd"></PasswordBox>
|
||||
</div>
|
||||
<div class="col-10">
|
||||
<TestJsInterop></TestJsInterop>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<QrCodeDisplay rawCode="@qrCodeVal" ImgFormat="ZXing.BarcodeFormat.AZTEC"></QrCodeDisplay>
|
||||
</div>
|
||||
<div class="col">
|
||||
<QrCodeDisplay rawCode="@qrCodeVal" ImgFormat="ZXing.BarcodeFormat.QR_CODE"></QrCodeDisplay>
|
||||
</div>
|
||||
<div class="col">
|
||||
<QrCodeDisplay rawCode="@qrCodeVal" ImgFormat="ZXing.BarcodeFormat.DATA_MATRIX" Width="400" Height="200"></QrCodeDisplay>
|
||||
<QrCodeDisplay rawCode="@qrCodeVal" ImgFormat="ZXing.BarcodeFormat.PDF_417" Width="600" Height="200"></QrCodeDisplay>
|
||||
</div>
|
||||
<div class="col">
|
||||
<QrCodeDisplay rawCode="@qrCodeVal" ImgFormat="ZXing.BarcodeFormat.AZTEC"></QrCodeDisplay>
|
||||
</div>
|
||||
<div class="col">
|
||||
<QrCodeDisplay rawCode="@qrCodeVal" ImgFormat="ZXing.BarcodeFormat.QR_CODE"></QrCodeDisplay>
|
||||
</div>
|
||||
<div class="col">
|
||||
<QrCodeDisplay rawCode="@qrCodeVal" ImgFormat="ZXing.BarcodeFormat.DATA_MATRIX" Width="400" Height="200"></QrCodeDisplay>
|
||||
<QrCodeDisplay rawCode="@qrCodeVal" ImgFormat="ZXing.BarcodeFormat.PDF_417" Width="600" Height="200"></QrCodeDisplay>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
|
||||
<div class="row bg-secondary py-2">
|
||||
<div class="col">
|
||||
<StepArrow ObjId="123" StepText="Prova Arrow 01" BlockStyle="@($"fill: #123456;")" StrokeWidth="4" ObjW="650" ObjH="100" StrokeColors="@listBord01" TipAngle="90"></StepArrow>
|
||||
</div>
|
||||
<div class="col">
|
||||
<StepArrow ObjId="456" StepText="Prova Arrow 02" BlockStyle="@($"fill: #456789;")" StrokeWidth="4" ObjW="600" ObjH="100" StrokeColors="@listBord02" TipAngle="60"></StepArrow>
|
||||
</div>
|
||||
<div class="col">
|
||||
<StepArrow ObjId="456" StepText="Prova Arrow 03" BlockStyle="@($"fill: #6789AB;")" StrokeWidth="4" ObjW="500" ObjH="100" StrokeColors="@listBord03" TipAngle="120"></StepArrow>
|
||||
</div>
|
||||
<div class="col">
|
||||
<StepArrow ObjId="456" StepText="Prova Arrow 04" BlockStyle="@($"fill: #89ABCD;")" StrokeWidth="0" ObjW="700" ObjH="100" TipAngle="108"></StepArrow>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row bg-secondary py-2">
|
||||
<div class="col">
|
||||
<ProgBar singleLine="true" baseUM="$" currVal="@(rnd.Next(50,250))" maxVal="1000" redLim="200" yelLim="400" />
|
||||
</div>
|
||||
<div class="col">
|
||||
<ProgBar singleLine="true" baseUM="gg" currVal="@(rnd.Next(200,450))" maxVal="1000" redLim="200" yelLim="400" />
|
||||
</div>
|
||||
<div class="col">
|
||||
<ProgBar singleLine="true" baseUM="min" currVal="@(rnd.Next(400,650))" maxVal="1000" redLim="200" yelLim="400" />
|
||||
</div>
|
||||
<div class="col">
|
||||
<ProgBar singleLine="true" baseUM="px" currVal="@(rnd.Next(600,900))" maxVal="1000" redLim="200" yelLim="400" />
|
||||
</div>
|
||||
<div class="col">
|
||||
<ProgBar singleLine="true" baseUM="h" currVal="@(rnd.Next(500,1000))" maxVal="1000" redLim="200" yelLim="400" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="row bg-dark py-2">
|
||||
<div class="col">
|
||||
<ProgBar singleLine="false" baseUM="$" currVal="@(rnd.Next(50,250))" maxVal="1000" redLim="200" yelLim="400" />
|
||||
</div>
|
||||
<div class="col">
|
||||
<ProgBar singleLine="false" baseUM="gg" currVal="@(rnd.Next(200,450))" maxVal="1000" redLim="200" yelLim="400" />
|
||||
</div>
|
||||
<div class="col">
|
||||
<ProgBar singleLine="false" baseUM="min" currVal="@(rnd.Next(400,650))" maxVal="1000" redLim="200" yelLim="400" />
|
||||
</div>
|
||||
<div class="col">
|
||||
<ProgBar singleLine="false" baseUM="px" currVal="@(rnd.Next(600,900))" maxVal="1000" redLim="200" yelLim="400" />
|
||||
</div>
|
||||
<div class="col">
|
||||
<ProgBar singleLine="false" baseUM="h" currVal="@(rnd.Next(500,1000))" maxVal="1000" redLim="200" yelLim="400" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<BarcodeReader ScanResult="(e) => ScanDoneHandler(e)"
|
||||
ScanBtnTitle="Scan"
|
||||
ResetBtnTitle="Reset"
|
||||
CloseBtnTitle="Close"
|
||||
UseBuiltinDiv="false"
|
||||
@ref="barcodeReaderCustom"
|
||||
SelectDeviceBtnTitle="Select Device">
|
||||
</BarcodeReader>
|
||||
|
||||
<div @ref="barcodeReaderCustom.Element" class="d-flex justify-content-center">
|
||||
@* <div style="width: 480px; max-width: 100%"> *@
|
||||
<div class="col-12 col-md-8 col-lg-6">
|
||||
<button class="btn btn-outline-success p-2 m-1 w-25" data-action="startButton">Scan</button>
|
||||
<button class="btn btn-outline-success p-2 m-1 w-25" data-action="resetButton">Reset</button>
|
||||
|
||||
<div data-action="sourceSelectPanel" style="display:none">
|
||||
<label for="sourceSelect">Source:</label>
|
||||
<select data-action="sourceSelect" style="max-width:100%" class="form-control">
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<video id="video" playsinline="true" autoplay="true" class="w-100 h-100 border rounded shadow" muted="true"></video>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@code {
|
||||
private int currentCount = 0;
|
||||
|
||||
protected BarcodeReader barcodeReaderCustom { get; set; } = null!;
|
||||
protected Random rnd = new Random();
|
||||
protected async Task ScanDoneHandler(string value)
|
||||
{
|
||||
await Task.Delay(1);
|
||||
}
|
||||
private void IncrementCount()
|
||||
{
|
||||
currentCount++;
|
||||
}
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
base.OnInitialized();
|
||||
listBord01 = new();
|
||||
listBord01.Add("");
|
||||
listBord01.Add("White");
|
||||
listBord01.Add("");
|
||||
listBord01.Add("");
|
||||
listBord02 = new();
|
||||
listBord02.Add("");
|
||||
listBord02.Add("White");
|
||||
listBord02.Add("");
|
||||
listBord02.Add("White");
|
||||
listBord03 = new();
|
||||
listBord03.Add("");
|
||||
listBord03.Add("White");
|
||||
listBord03.Add("");
|
||||
listBord03.Add("Blue");
|
||||
|
||||
}
|
||||
|
||||
|
||||
protected List<string> listBord01 { get; set; } = new();
|
||||
protected List<string> listBord02 { get; set; } = new();
|
||||
protected List<string> listBord03 { get; set; } = new();
|
||||
|
||||
protected string qrCodeVal { get; set; } = "https://office.egalware.com/WDC/UI";
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
@using Microsoft.AspNetCore.Components.Web
|
||||
@using Radzen.Blazor
|
||||
@namespace EgwCoreLib.BlazorTest.Pages
|
||||
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
|
||||
|
||||
@@ -8,11 +9,12 @@
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<base href="~/" />
|
||||
<link rel="stylesheet" href="lib/bootstrap/css/bootstrap.css" />
|
||||
<link rel="stylesheet" href="lib/bootstrap/css/bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="lib/font-awesome/css/all.min.css" />
|
||||
<link rel="stylesheet" href="css/site.css" />
|
||||
<link rel="stylesheet" href="EgwCoreLib.BlazorTest.styles.css" />
|
||||
<component type="typeof(HeadOutlet)" render-mode="ServerPrerendered" />
|
||||
<component type="typeof(RadzenTheme)" render-mode="ServerPrerendered" param-Theme="@("material")" />
|
||||
</head>
|
||||
<body>
|
||||
@RenderBody()
|
||||
@@ -29,6 +31,7 @@
|
||||
</div>
|
||||
|
||||
<script src="lib/bootstrap/js/bootstrap.bundle.js"></script>
|
||||
<script src="lib/bootstrapModalHelper.js"></script>
|
||||
@* <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> *@
|
||||
<script src="~/lib/Chart.js/chart.umd.js"></script>
|
||||
|
||||
@@ -63,5 +66,6 @@
|
||||
@*Gestione ricollegamento successivo: https://learn.microsoft.com/en-us/aspnet/core/blazor/fundamentals/signalr?view=aspnetcore-6.0*@
|
||||
@* <script>Blazor.defaultReconnectionHandler._reconnectCallback = function (d) { document.location.reload(); }</script> *@
|
||||
|
||||
<script src="_content/Radzen.Blazor/Radzen.Blazor.js?v=@(typeof(Radzen.Colors).Assembly.GetName().Version)"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
using EgwCoreLib.BlazorTest;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.AspNetCore.Components.Web;
|
||||
using Microsoft.AspNetCore.Mvc.RazorPages;
|
||||
using Radzen;
|
||||
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
|
||||
@@ -8,6 +10,15 @@ var builder = WebApplication.CreateBuilder(args);
|
||||
builder.Services.AddRazorPages();
|
||||
builder.Services.AddServerSideBlazor();
|
||||
|
||||
// aggiunto compressione
|
||||
builder.Services.AddResponseCompression(options =>
|
||||
{
|
||||
options.EnableForHttps = true;
|
||||
});
|
||||
|
||||
// aggiungo componenti radzen
|
||||
builder.Services.AddRadzenComponents();
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
// Configure the HTTP request pipeline.
|
||||
@@ -18,11 +29,14 @@ if (!app.Environment.IsDevelopment())
|
||||
app.UseHsts();
|
||||
}
|
||||
|
||||
//// disabilita risposta compressa in debug
|
||||
//if (!app.Environment.IsDevelopment())
|
||||
//{
|
||||
// app.UseResponseCompression();
|
||||
//}
|
||||
|
||||
app.UsePathBase("/BlazorTest/");
|
||||
|
||||
// disabilita risposta compressa in debug
|
||||
if (!app.Environment.IsDevelopment())
|
||||
{
|
||||
app.UseResponseCompression();
|
||||
}
|
||||
|
||||
app.UseHttpsRedirection();
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
},
|
||||
"dotnetRunMessages": true,
|
||||
"applicationUrl": "https://localhost:7118;http://localhost:5145"
|
||||
"applicationUrl": "https://localhost:7118;http://localhost:5146"
|
||||
},
|
||||
"IIS Express": {
|
||||
"commandName": "IISExpress",
|
||||
@@ -22,7 +22,7 @@
|
||||
"launchUrl": "https://localhost:7118",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development",
|
||||
"ASPNETCORE_URLS": "https://localhost:7118;http://localhost:5145"
|
||||
"ASPNETCORE_URLS": "https://localhost:7118;http://localhost:5146"
|
||||
},
|
||||
"distributionName": ""
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
<article class="content px-2">
|
||||
@Body
|
||||
<RadzenComponents />
|
||||
</article>
|
||||
|
||||
<div class="fixed-bottom bottom-row">
|
||||
|
||||
@@ -10,4 +10,6 @@
|
||||
@using EgwCoreLib.BlazorTest.Components
|
||||
@using EgwCoreLib.BlazorTest.Shared
|
||||
@using EgwCoreLib.Razor
|
||||
@using EgwCoreLib.Razor.Data
|
||||
@using EgwCoreLib.Razor.Data
|
||||
@using Radzen
|
||||
@using Radzen.Blazor
|
||||
@@ -14,5 +14,13 @@
|
||||
{
|
||||
"outputFile": "Pages/TestGauges.razor.css",
|
||||
"inputFile": "Pages/TestGauges.razor.less"
|
||||
},
|
||||
{
|
||||
"outputFile": "Pages/TestBarcodeReader.razor.css",
|
||||
"inputFile": "Pages/TestBarcodeReader.razor.less"
|
||||
},
|
||||
{
|
||||
"outputFile": "Pages/BootstrapModal.razor.css",
|
||||
"inputFile": "Pages/BootstrapModal.razor.less"
|
||||
}
|
||||
]
|
||||
@@ -3,7 +3,7 @@
|
||||
"defaultProvider": "cdnjs",
|
||||
"libraries": [
|
||||
{
|
||||
"library": "bootstrap@5.2.3",
|
||||
"library": "bootstrap@5.3.8",
|
||||
"destination": "wwwroot/lib/bootstrap/"
|
||||
},
|
||||
{
|
||||
@@ -11,7 +11,6 @@
|
||||
"destination": "wwwroot/lib/font-awesome/"
|
||||
},
|
||||
{
|
||||
"provider": "cdnjs",
|
||||
"library": "Chart.js@4.4.1",
|
||||
"destination": "wwwroot/lib/Chart.js/"
|
||||
}
|
||||
|
||||
+111
-150
@@ -1,78 +1,8 @@
|
||||
/*!
|
||||
* Bootstrap Grid v5.2.3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2022 The Bootstrap Authors
|
||||
* Copyright 2011-2022 Twitter, Inc.
|
||||
* Bootstrap Grid v5.3.8 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2025 The Bootstrap Authors
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
:root {
|
||||
--bs-blue: #0d6efd;
|
||||
--bs-indigo: #6610f2;
|
||||
--bs-purple: #6f42c1;
|
||||
--bs-pink: #d63384;
|
||||
--bs-red: #dc3545;
|
||||
--bs-orange: #fd7e14;
|
||||
--bs-yellow: #ffc107;
|
||||
--bs-green: #198754;
|
||||
--bs-teal: #20c997;
|
||||
--bs-cyan: #0dcaf0;
|
||||
--bs-black: #000;
|
||||
--bs-white: #fff;
|
||||
--bs-gray: #6c757d;
|
||||
--bs-gray-dark: #343a40;
|
||||
--bs-gray-100: #f8f9fa;
|
||||
--bs-gray-200: #e9ecef;
|
||||
--bs-gray-300: #dee2e6;
|
||||
--bs-gray-400: #ced4da;
|
||||
--bs-gray-500: #adb5bd;
|
||||
--bs-gray-600: #6c757d;
|
||||
--bs-gray-700: #495057;
|
||||
--bs-gray-800: #343a40;
|
||||
--bs-gray-900: #212529;
|
||||
--bs-primary: #0d6efd;
|
||||
--bs-secondary: #6c757d;
|
||||
--bs-success: #198754;
|
||||
--bs-info: #0dcaf0;
|
||||
--bs-warning: #ffc107;
|
||||
--bs-danger: #dc3545;
|
||||
--bs-light: #f8f9fa;
|
||||
--bs-dark: #212529;
|
||||
--bs-primary-rgb: 13, 110, 253;
|
||||
--bs-secondary-rgb: 108, 117, 125;
|
||||
--bs-success-rgb: 25, 135, 84;
|
||||
--bs-info-rgb: 13, 202, 240;
|
||||
--bs-warning-rgb: 255, 193, 7;
|
||||
--bs-danger-rgb: 220, 53, 69;
|
||||
--bs-light-rgb: 248, 249, 250;
|
||||
--bs-dark-rgb: 33, 37, 41;
|
||||
--bs-white-rgb: 255, 255, 255;
|
||||
--bs-black-rgb: 0, 0, 0;
|
||||
--bs-body-color-rgb: 33, 37, 41;
|
||||
--bs-body-bg-rgb: 255, 255, 255;
|
||||
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
|
||||
--bs-body-font-family: var(--bs-font-sans-serif);
|
||||
--bs-body-font-size: 1rem;
|
||||
--bs-body-font-weight: 400;
|
||||
--bs-body-line-height: 1.5;
|
||||
--bs-body-color: #212529;
|
||||
--bs-body-bg: #fff;
|
||||
--bs-border-width: 1px;
|
||||
--bs-border-style: solid;
|
||||
--bs-border-color: #dee2e6;
|
||||
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
|
||||
--bs-border-radius: 0.375rem;
|
||||
--bs-border-radius-sm: 0.25rem;
|
||||
--bs-border-radius-lg: 0.5rem;
|
||||
--bs-border-radius-xl: 1rem;
|
||||
--bs-border-radius-2xl: 2rem;
|
||||
--bs-border-radius-pill: 50rem;
|
||||
--bs-link-color: #0d6efd;
|
||||
--bs-link-hover-color: #0a58ca;
|
||||
--bs-code-color: #d63384;
|
||||
--bs-highlight-bg: #fff3cd;
|
||||
}
|
||||
|
||||
.container,
|
||||
.container-fluid,
|
||||
.container-xxl,
|
||||
@@ -114,6 +44,15 @@
|
||||
max-width: 1320px;
|
||||
}
|
||||
}
|
||||
:root {
|
||||
--bs-breakpoint-xs: 0;
|
||||
--bs-breakpoint-sm: 576px;
|
||||
--bs-breakpoint-md: 768px;
|
||||
--bs-breakpoint-lg: 992px;
|
||||
--bs-breakpoint-xl: 1200px;
|
||||
--bs-breakpoint-xxl: 1400px;
|
||||
}
|
||||
|
||||
.row {
|
||||
--bs-gutter-x: 1.5rem;
|
||||
--bs-gutter-y: 0;
|
||||
@@ -134,7 +73,7 @@
|
||||
}
|
||||
|
||||
.col {
|
||||
flex: 1 0 0%;
|
||||
flex: 1 0 0;
|
||||
}
|
||||
|
||||
.row-cols-auto > * {
|
||||
@@ -154,7 +93,7 @@
|
||||
|
||||
.row-cols-3 > * {
|
||||
flex: 0 0 auto;
|
||||
width: 33.3333333333%;
|
||||
width: 33.33333333%;
|
||||
}
|
||||
|
||||
.row-cols-4 > * {
|
||||
@@ -169,7 +108,7 @@
|
||||
|
||||
.row-cols-6 > * {
|
||||
flex: 0 0 auto;
|
||||
width: 16.6666666667%;
|
||||
width: 16.66666667%;
|
||||
}
|
||||
|
||||
.col-auto {
|
||||
@@ -343,7 +282,7 @@
|
||||
|
||||
@media (min-width: 576px) {
|
||||
.col-sm {
|
||||
flex: 1 0 0%;
|
||||
flex: 1 0 0;
|
||||
}
|
||||
.row-cols-sm-auto > * {
|
||||
flex: 0 0 auto;
|
||||
@@ -359,7 +298,7 @@
|
||||
}
|
||||
.row-cols-sm-3 > * {
|
||||
flex: 0 0 auto;
|
||||
width: 33.3333333333%;
|
||||
width: 33.33333333%;
|
||||
}
|
||||
.row-cols-sm-4 > * {
|
||||
flex: 0 0 auto;
|
||||
@@ -371,7 +310,7 @@
|
||||
}
|
||||
.row-cols-sm-6 > * {
|
||||
flex: 0 0 auto;
|
||||
width: 16.6666666667%;
|
||||
width: 16.66666667%;
|
||||
}
|
||||
.col-sm-auto {
|
||||
flex: 0 0 auto;
|
||||
@@ -462,57 +401,57 @@
|
||||
margin-left: 91.66666667%;
|
||||
}
|
||||
.g-sm-0,
|
||||
.gx-sm-0 {
|
||||
.gx-sm-0 {
|
||||
--bs-gutter-x: 0;
|
||||
}
|
||||
.g-sm-0,
|
||||
.gy-sm-0 {
|
||||
.gy-sm-0 {
|
||||
--bs-gutter-y: 0;
|
||||
}
|
||||
.g-sm-1,
|
||||
.gx-sm-1 {
|
||||
.gx-sm-1 {
|
||||
--bs-gutter-x: 0.25rem;
|
||||
}
|
||||
.g-sm-1,
|
||||
.gy-sm-1 {
|
||||
.gy-sm-1 {
|
||||
--bs-gutter-y: 0.25rem;
|
||||
}
|
||||
.g-sm-2,
|
||||
.gx-sm-2 {
|
||||
.gx-sm-2 {
|
||||
--bs-gutter-x: 0.5rem;
|
||||
}
|
||||
.g-sm-2,
|
||||
.gy-sm-2 {
|
||||
.gy-sm-2 {
|
||||
--bs-gutter-y: 0.5rem;
|
||||
}
|
||||
.g-sm-3,
|
||||
.gx-sm-3 {
|
||||
.gx-sm-3 {
|
||||
--bs-gutter-x: 1rem;
|
||||
}
|
||||
.g-sm-3,
|
||||
.gy-sm-3 {
|
||||
.gy-sm-3 {
|
||||
--bs-gutter-y: 1rem;
|
||||
}
|
||||
.g-sm-4,
|
||||
.gx-sm-4 {
|
||||
.gx-sm-4 {
|
||||
--bs-gutter-x: 1.5rem;
|
||||
}
|
||||
.g-sm-4,
|
||||
.gy-sm-4 {
|
||||
.gy-sm-4 {
|
||||
--bs-gutter-y: 1.5rem;
|
||||
}
|
||||
.g-sm-5,
|
||||
.gx-sm-5 {
|
||||
.gx-sm-5 {
|
||||
--bs-gutter-x: 3rem;
|
||||
}
|
||||
.g-sm-5,
|
||||
.gy-sm-5 {
|
||||
.gy-sm-5 {
|
||||
--bs-gutter-y: 3rem;
|
||||
}
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.col-md {
|
||||
flex: 1 0 0%;
|
||||
flex: 1 0 0;
|
||||
}
|
||||
.row-cols-md-auto > * {
|
||||
flex: 0 0 auto;
|
||||
@@ -528,7 +467,7 @@
|
||||
}
|
||||
.row-cols-md-3 > * {
|
||||
flex: 0 0 auto;
|
||||
width: 33.3333333333%;
|
||||
width: 33.33333333%;
|
||||
}
|
||||
.row-cols-md-4 > * {
|
||||
flex: 0 0 auto;
|
||||
@@ -540,7 +479,7 @@
|
||||
}
|
||||
.row-cols-md-6 > * {
|
||||
flex: 0 0 auto;
|
||||
width: 16.6666666667%;
|
||||
width: 16.66666667%;
|
||||
}
|
||||
.col-md-auto {
|
||||
flex: 0 0 auto;
|
||||
@@ -631,57 +570,57 @@
|
||||
margin-left: 91.66666667%;
|
||||
}
|
||||
.g-md-0,
|
||||
.gx-md-0 {
|
||||
.gx-md-0 {
|
||||
--bs-gutter-x: 0;
|
||||
}
|
||||
.g-md-0,
|
||||
.gy-md-0 {
|
||||
.gy-md-0 {
|
||||
--bs-gutter-y: 0;
|
||||
}
|
||||
.g-md-1,
|
||||
.gx-md-1 {
|
||||
.gx-md-1 {
|
||||
--bs-gutter-x: 0.25rem;
|
||||
}
|
||||
.g-md-1,
|
||||
.gy-md-1 {
|
||||
.gy-md-1 {
|
||||
--bs-gutter-y: 0.25rem;
|
||||
}
|
||||
.g-md-2,
|
||||
.gx-md-2 {
|
||||
.gx-md-2 {
|
||||
--bs-gutter-x: 0.5rem;
|
||||
}
|
||||
.g-md-2,
|
||||
.gy-md-2 {
|
||||
.gy-md-2 {
|
||||
--bs-gutter-y: 0.5rem;
|
||||
}
|
||||
.g-md-3,
|
||||
.gx-md-3 {
|
||||
.gx-md-3 {
|
||||
--bs-gutter-x: 1rem;
|
||||
}
|
||||
.g-md-3,
|
||||
.gy-md-3 {
|
||||
.gy-md-3 {
|
||||
--bs-gutter-y: 1rem;
|
||||
}
|
||||
.g-md-4,
|
||||
.gx-md-4 {
|
||||
.gx-md-4 {
|
||||
--bs-gutter-x: 1.5rem;
|
||||
}
|
||||
.g-md-4,
|
||||
.gy-md-4 {
|
||||
.gy-md-4 {
|
||||
--bs-gutter-y: 1.5rem;
|
||||
}
|
||||
.g-md-5,
|
||||
.gx-md-5 {
|
||||
.gx-md-5 {
|
||||
--bs-gutter-x: 3rem;
|
||||
}
|
||||
.g-md-5,
|
||||
.gy-md-5 {
|
||||
.gy-md-5 {
|
||||
--bs-gutter-y: 3rem;
|
||||
}
|
||||
}
|
||||
@media (min-width: 992px) {
|
||||
.col-lg {
|
||||
flex: 1 0 0%;
|
||||
flex: 1 0 0;
|
||||
}
|
||||
.row-cols-lg-auto > * {
|
||||
flex: 0 0 auto;
|
||||
@@ -697,7 +636,7 @@
|
||||
}
|
||||
.row-cols-lg-3 > * {
|
||||
flex: 0 0 auto;
|
||||
width: 33.3333333333%;
|
||||
width: 33.33333333%;
|
||||
}
|
||||
.row-cols-lg-4 > * {
|
||||
flex: 0 0 auto;
|
||||
@@ -709,7 +648,7 @@
|
||||
}
|
||||
.row-cols-lg-6 > * {
|
||||
flex: 0 0 auto;
|
||||
width: 16.6666666667%;
|
||||
width: 16.66666667%;
|
||||
}
|
||||
.col-lg-auto {
|
||||
flex: 0 0 auto;
|
||||
@@ -800,57 +739,57 @@
|
||||
margin-left: 91.66666667%;
|
||||
}
|
||||
.g-lg-0,
|
||||
.gx-lg-0 {
|
||||
.gx-lg-0 {
|
||||
--bs-gutter-x: 0;
|
||||
}
|
||||
.g-lg-0,
|
||||
.gy-lg-0 {
|
||||
.gy-lg-0 {
|
||||
--bs-gutter-y: 0;
|
||||
}
|
||||
.g-lg-1,
|
||||
.gx-lg-1 {
|
||||
.gx-lg-1 {
|
||||
--bs-gutter-x: 0.25rem;
|
||||
}
|
||||
.g-lg-1,
|
||||
.gy-lg-1 {
|
||||
.gy-lg-1 {
|
||||
--bs-gutter-y: 0.25rem;
|
||||
}
|
||||
.g-lg-2,
|
||||
.gx-lg-2 {
|
||||
.gx-lg-2 {
|
||||
--bs-gutter-x: 0.5rem;
|
||||
}
|
||||
.g-lg-2,
|
||||
.gy-lg-2 {
|
||||
.gy-lg-2 {
|
||||
--bs-gutter-y: 0.5rem;
|
||||
}
|
||||
.g-lg-3,
|
||||
.gx-lg-3 {
|
||||
.gx-lg-3 {
|
||||
--bs-gutter-x: 1rem;
|
||||
}
|
||||
.g-lg-3,
|
||||
.gy-lg-3 {
|
||||
.gy-lg-3 {
|
||||
--bs-gutter-y: 1rem;
|
||||
}
|
||||
.g-lg-4,
|
||||
.gx-lg-4 {
|
||||
.gx-lg-4 {
|
||||
--bs-gutter-x: 1.5rem;
|
||||
}
|
||||
.g-lg-4,
|
||||
.gy-lg-4 {
|
||||
.gy-lg-4 {
|
||||
--bs-gutter-y: 1.5rem;
|
||||
}
|
||||
.g-lg-5,
|
||||
.gx-lg-5 {
|
||||
.gx-lg-5 {
|
||||
--bs-gutter-x: 3rem;
|
||||
}
|
||||
.g-lg-5,
|
||||
.gy-lg-5 {
|
||||
.gy-lg-5 {
|
||||
--bs-gutter-y: 3rem;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.col-xl {
|
||||
flex: 1 0 0%;
|
||||
flex: 1 0 0;
|
||||
}
|
||||
.row-cols-xl-auto > * {
|
||||
flex: 0 0 auto;
|
||||
@@ -866,7 +805,7 @@
|
||||
}
|
||||
.row-cols-xl-3 > * {
|
||||
flex: 0 0 auto;
|
||||
width: 33.3333333333%;
|
||||
width: 33.33333333%;
|
||||
}
|
||||
.row-cols-xl-4 > * {
|
||||
flex: 0 0 auto;
|
||||
@@ -878,7 +817,7 @@
|
||||
}
|
||||
.row-cols-xl-6 > * {
|
||||
flex: 0 0 auto;
|
||||
width: 16.6666666667%;
|
||||
width: 16.66666667%;
|
||||
}
|
||||
.col-xl-auto {
|
||||
flex: 0 0 auto;
|
||||
@@ -969,57 +908,57 @@
|
||||
margin-left: 91.66666667%;
|
||||
}
|
||||
.g-xl-0,
|
||||
.gx-xl-0 {
|
||||
.gx-xl-0 {
|
||||
--bs-gutter-x: 0;
|
||||
}
|
||||
.g-xl-0,
|
||||
.gy-xl-0 {
|
||||
.gy-xl-0 {
|
||||
--bs-gutter-y: 0;
|
||||
}
|
||||
.g-xl-1,
|
||||
.gx-xl-1 {
|
||||
.gx-xl-1 {
|
||||
--bs-gutter-x: 0.25rem;
|
||||
}
|
||||
.g-xl-1,
|
||||
.gy-xl-1 {
|
||||
.gy-xl-1 {
|
||||
--bs-gutter-y: 0.25rem;
|
||||
}
|
||||
.g-xl-2,
|
||||
.gx-xl-2 {
|
||||
.gx-xl-2 {
|
||||
--bs-gutter-x: 0.5rem;
|
||||
}
|
||||
.g-xl-2,
|
||||
.gy-xl-2 {
|
||||
.gy-xl-2 {
|
||||
--bs-gutter-y: 0.5rem;
|
||||
}
|
||||
.g-xl-3,
|
||||
.gx-xl-3 {
|
||||
.gx-xl-3 {
|
||||
--bs-gutter-x: 1rem;
|
||||
}
|
||||
.g-xl-3,
|
||||
.gy-xl-3 {
|
||||
.gy-xl-3 {
|
||||
--bs-gutter-y: 1rem;
|
||||
}
|
||||
.g-xl-4,
|
||||
.gx-xl-4 {
|
||||
.gx-xl-4 {
|
||||
--bs-gutter-x: 1.5rem;
|
||||
}
|
||||
.g-xl-4,
|
||||
.gy-xl-4 {
|
||||
.gy-xl-4 {
|
||||
--bs-gutter-y: 1.5rem;
|
||||
}
|
||||
.g-xl-5,
|
||||
.gx-xl-5 {
|
||||
.gx-xl-5 {
|
||||
--bs-gutter-x: 3rem;
|
||||
}
|
||||
.g-xl-5,
|
||||
.gy-xl-5 {
|
||||
.gy-xl-5 {
|
||||
--bs-gutter-y: 3rem;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1400px) {
|
||||
.col-xxl {
|
||||
flex: 1 0 0%;
|
||||
flex: 1 0 0;
|
||||
}
|
||||
.row-cols-xxl-auto > * {
|
||||
flex: 0 0 auto;
|
||||
@@ -1035,7 +974,7 @@
|
||||
}
|
||||
.row-cols-xxl-3 > * {
|
||||
flex: 0 0 auto;
|
||||
width: 33.3333333333%;
|
||||
width: 33.33333333%;
|
||||
}
|
||||
.row-cols-xxl-4 > * {
|
||||
flex: 0 0 auto;
|
||||
@@ -1047,7 +986,7 @@
|
||||
}
|
||||
.row-cols-xxl-6 > * {
|
||||
flex: 0 0 auto;
|
||||
width: 16.6666666667%;
|
||||
width: 16.66666667%;
|
||||
}
|
||||
.col-xxl-auto {
|
||||
flex: 0 0 auto;
|
||||
@@ -1138,51 +1077,51 @@
|
||||
margin-left: 91.66666667%;
|
||||
}
|
||||
.g-xxl-0,
|
||||
.gx-xxl-0 {
|
||||
.gx-xxl-0 {
|
||||
--bs-gutter-x: 0;
|
||||
}
|
||||
.g-xxl-0,
|
||||
.gy-xxl-0 {
|
||||
.gy-xxl-0 {
|
||||
--bs-gutter-y: 0;
|
||||
}
|
||||
.g-xxl-1,
|
||||
.gx-xxl-1 {
|
||||
.gx-xxl-1 {
|
||||
--bs-gutter-x: 0.25rem;
|
||||
}
|
||||
.g-xxl-1,
|
||||
.gy-xxl-1 {
|
||||
.gy-xxl-1 {
|
||||
--bs-gutter-y: 0.25rem;
|
||||
}
|
||||
.g-xxl-2,
|
||||
.gx-xxl-2 {
|
||||
.gx-xxl-2 {
|
||||
--bs-gutter-x: 0.5rem;
|
||||
}
|
||||
.g-xxl-2,
|
||||
.gy-xxl-2 {
|
||||
.gy-xxl-2 {
|
||||
--bs-gutter-y: 0.5rem;
|
||||
}
|
||||
.g-xxl-3,
|
||||
.gx-xxl-3 {
|
||||
.gx-xxl-3 {
|
||||
--bs-gutter-x: 1rem;
|
||||
}
|
||||
.g-xxl-3,
|
||||
.gy-xxl-3 {
|
||||
.gy-xxl-3 {
|
||||
--bs-gutter-y: 1rem;
|
||||
}
|
||||
.g-xxl-4,
|
||||
.gx-xxl-4 {
|
||||
.gx-xxl-4 {
|
||||
--bs-gutter-x: 1.5rem;
|
||||
}
|
||||
.g-xxl-4,
|
||||
.gy-xxl-4 {
|
||||
.gy-xxl-4 {
|
||||
--bs-gutter-y: 1.5rem;
|
||||
}
|
||||
.g-xxl-5,
|
||||
.gx-xxl-5 {
|
||||
.gx-xxl-5 {
|
||||
--bs-gutter-x: 3rem;
|
||||
}
|
||||
.g-xxl-5,
|
||||
.gy-xxl-5 {
|
||||
.gy-xxl-5 {
|
||||
--bs-gutter-y: 3rem;
|
||||
}
|
||||
}
|
||||
@@ -1202,6 +1141,10 @@
|
||||
display: grid !important;
|
||||
}
|
||||
|
||||
.d-inline-grid {
|
||||
display: inline-grid !important;
|
||||
}
|
||||
|
||||
.d-table {
|
||||
display: table !important;
|
||||
}
|
||||
@@ -1801,6 +1744,9 @@
|
||||
.d-sm-grid {
|
||||
display: grid !important;
|
||||
}
|
||||
.d-sm-inline-grid {
|
||||
display: inline-grid !important;
|
||||
}
|
||||
.d-sm-table {
|
||||
display: table !important;
|
||||
}
|
||||
@@ -2261,6 +2207,9 @@
|
||||
.d-md-grid {
|
||||
display: grid !important;
|
||||
}
|
||||
.d-md-inline-grid {
|
||||
display: inline-grid !important;
|
||||
}
|
||||
.d-md-table {
|
||||
display: table !important;
|
||||
}
|
||||
@@ -2721,6 +2670,9 @@
|
||||
.d-lg-grid {
|
||||
display: grid !important;
|
||||
}
|
||||
.d-lg-inline-grid {
|
||||
display: inline-grid !important;
|
||||
}
|
||||
.d-lg-table {
|
||||
display: table !important;
|
||||
}
|
||||
@@ -3181,6 +3133,9 @@
|
||||
.d-xl-grid {
|
||||
display: grid !important;
|
||||
}
|
||||
.d-xl-inline-grid {
|
||||
display: inline-grid !important;
|
||||
}
|
||||
.d-xl-table {
|
||||
display: table !important;
|
||||
}
|
||||
@@ -3641,6 +3596,9 @@
|
||||
.d-xxl-grid {
|
||||
display: grid !important;
|
||||
}
|
||||
.d-xxl-inline-grid {
|
||||
display: inline-grid !important;
|
||||
}
|
||||
.d-xxl-table {
|
||||
display: table !important;
|
||||
}
|
||||
@@ -4101,6 +4059,9 @@
|
||||
.d-print-grid {
|
||||
display: grid !important;
|
||||
}
|
||||
.d-print-inline-grid {
|
||||
display: inline-grid !important;
|
||||
}
|
||||
.d-print-table {
|
||||
display: table !important;
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+111
-150
@@ -1,78 +1,8 @@
|
||||
/*!
|
||||
* Bootstrap Grid v5.2.3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2022 The Bootstrap Authors
|
||||
* Copyright 2011-2022 Twitter, Inc.
|
||||
* Bootstrap Grid v5.3.8 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2025 The Bootstrap Authors
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
:root {
|
||||
--bs-blue: #0d6efd;
|
||||
--bs-indigo: #6610f2;
|
||||
--bs-purple: #6f42c1;
|
||||
--bs-pink: #d63384;
|
||||
--bs-red: #dc3545;
|
||||
--bs-orange: #fd7e14;
|
||||
--bs-yellow: #ffc107;
|
||||
--bs-green: #198754;
|
||||
--bs-teal: #20c997;
|
||||
--bs-cyan: #0dcaf0;
|
||||
--bs-black: #000;
|
||||
--bs-white: #fff;
|
||||
--bs-gray: #6c757d;
|
||||
--bs-gray-dark: #343a40;
|
||||
--bs-gray-100: #f8f9fa;
|
||||
--bs-gray-200: #e9ecef;
|
||||
--bs-gray-300: #dee2e6;
|
||||
--bs-gray-400: #ced4da;
|
||||
--bs-gray-500: #adb5bd;
|
||||
--bs-gray-600: #6c757d;
|
||||
--bs-gray-700: #495057;
|
||||
--bs-gray-800: #343a40;
|
||||
--bs-gray-900: #212529;
|
||||
--bs-primary: #0d6efd;
|
||||
--bs-secondary: #6c757d;
|
||||
--bs-success: #198754;
|
||||
--bs-info: #0dcaf0;
|
||||
--bs-warning: #ffc107;
|
||||
--bs-danger: #dc3545;
|
||||
--bs-light: #f8f9fa;
|
||||
--bs-dark: #212529;
|
||||
--bs-primary-rgb: 13, 110, 253;
|
||||
--bs-secondary-rgb: 108, 117, 125;
|
||||
--bs-success-rgb: 25, 135, 84;
|
||||
--bs-info-rgb: 13, 202, 240;
|
||||
--bs-warning-rgb: 255, 193, 7;
|
||||
--bs-danger-rgb: 220, 53, 69;
|
||||
--bs-light-rgb: 248, 249, 250;
|
||||
--bs-dark-rgb: 33, 37, 41;
|
||||
--bs-white-rgb: 255, 255, 255;
|
||||
--bs-black-rgb: 0, 0, 0;
|
||||
--bs-body-color-rgb: 33, 37, 41;
|
||||
--bs-body-bg-rgb: 255, 255, 255;
|
||||
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
|
||||
--bs-body-font-family: var(--bs-font-sans-serif);
|
||||
--bs-body-font-size: 1rem;
|
||||
--bs-body-font-weight: 400;
|
||||
--bs-body-line-height: 1.5;
|
||||
--bs-body-color: #212529;
|
||||
--bs-body-bg: #fff;
|
||||
--bs-border-width: 1px;
|
||||
--bs-border-style: solid;
|
||||
--bs-border-color: #dee2e6;
|
||||
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
|
||||
--bs-border-radius: 0.375rem;
|
||||
--bs-border-radius-sm: 0.25rem;
|
||||
--bs-border-radius-lg: 0.5rem;
|
||||
--bs-border-radius-xl: 1rem;
|
||||
--bs-border-radius-2xl: 2rem;
|
||||
--bs-border-radius-pill: 50rem;
|
||||
--bs-link-color: #0d6efd;
|
||||
--bs-link-hover-color: #0a58ca;
|
||||
--bs-code-color: #d63384;
|
||||
--bs-highlight-bg: #fff3cd;
|
||||
}
|
||||
|
||||
.container,
|
||||
.container-fluid,
|
||||
.container-xxl,
|
||||
@@ -114,6 +44,15 @@
|
||||
max-width: 1320px;
|
||||
}
|
||||
}
|
||||
:root {
|
||||
--bs-breakpoint-xs: 0;
|
||||
--bs-breakpoint-sm: 576px;
|
||||
--bs-breakpoint-md: 768px;
|
||||
--bs-breakpoint-lg: 992px;
|
||||
--bs-breakpoint-xl: 1200px;
|
||||
--bs-breakpoint-xxl: 1400px;
|
||||
}
|
||||
|
||||
.row {
|
||||
--bs-gutter-x: 1.5rem;
|
||||
--bs-gutter-y: 0;
|
||||
@@ -134,7 +73,7 @@
|
||||
}
|
||||
|
||||
.col {
|
||||
flex: 1 0 0%;
|
||||
flex: 1 0 0;
|
||||
}
|
||||
|
||||
.row-cols-auto > * {
|
||||
@@ -154,7 +93,7 @@
|
||||
|
||||
.row-cols-3 > * {
|
||||
flex: 0 0 auto;
|
||||
width: 33.3333333333%;
|
||||
width: 33.33333333%;
|
||||
}
|
||||
|
||||
.row-cols-4 > * {
|
||||
@@ -169,7 +108,7 @@
|
||||
|
||||
.row-cols-6 > * {
|
||||
flex: 0 0 auto;
|
||||
width: 16.6666666667%;
|
||||
width: 16.66666667%;
|
||||
}
|
||||
|
||||
.col-auto {
|
||||
@@ -343,7 +282,7 @@
|
||||
|
||||
@media (min-width: 576px) {
|
||||
.col-sm {
|
||||
flex: 1 0 0%;
|
||||
flex: 1 0 0;
|
||||
}
|
||||
.row-cols-sm-auto > * {
|
||||
flex: 0 0 auto;
|
||||
@@ -359,7 +298,7 @@
|
||||
}
|
||||
.row-cols-sm-3 > * {
|
||||
flex: 0 0 auto;
|
||||
width: 33.3333333333%;
|
||||
width: 33.33333333%;
|
||||
}
|
||||
.row-cols-sm-4 > * {
|
||||
flex: 0 0 auto;
|
||||
@@ -371,7 +310,7 @@
|
||||
}
|
||||
.row-cols-sm-6 > * {
|
||||
flex: 0 0 auto;
|
||||
width: 16.6666666667%;
|
||||
width: 16.66666667%;
|
||||
}
|
||||
.col-sm-auto {
|
||||
flex: 0 0 auto;
|
||||
@@ -462,57 +401,57 @@
|
||||
margin-right: 91.66666667%;
|
||||
}
|
||||
.g-sm-0,
|
||||
.gx-sm-0 {
|
||||
.gx-sm-0 {
|
||||
--bs-gutter-x: 0;
|
||||
}
|
||||
.g-sm-0,
|
||||
.gy-sm-0 {
|
||||
.gy-sm-0 {
|
||||
--bs-gutter-y: 0;
|
||||
}
|
||||
.g-sm-1,
|
||||
.gx-sm-1 {
|
||||
.gx-sm-1 {
|
||||
--bs-gutter-x: 0.25rem;
|
||||
}
|
||||
.g-sm-1,
|
||||
.gy-sm-1 {
|
||||
.gy-sm-1 {
|
||||
--bs-gutter-y: 0.25rem;
|
||||
}
|
||||
.g-sm-2,
|
||||
.gx-sm-2 {
|
||||
.gx-sm-2 {
|
||||
--bs-gutter-x: 0.5rem;
|
||||
}
|
||||
.g-sm-2,
|
||||
.gy-sm-2 {
|
||||
.gy-sm-2 {
|
||||
--bs-gutter-y: 0.5rem;
|
||||
}
|
||||
.g-sm-3,
|
||||
.gx-sm-3 {
|
||||
.gx-sm-3 {
|
||||
--bs-gutter-x: 1rem;
|
||||
}
|
||||
.g-sm-3,
|
||||
.gy-sm-3 {
|
||||
.gy-sm-3 {
|
||||
--bs-gutter-y: 1rem;
|
||||
}
|
||||
.g-sm-4,
|
||||
.gx-sm-4 {
|
||||
.gx-sm-4 {
|
||||
--bs-gutter-x: 1.5rem;
|
||||
}
|
||||
.g-sm-4,
|
||||
.gy-sm-4 {
|
||||
.gy-sm-4 {
|
||||
--bs-gutter-y: 1.5rem;
|
||||
}
|
||||
.g-sm-5,
|
||||
.gx-sm-5 {
|
||||
.gx-sm-5 {
|
||||
--bs-gutter-x: 3rem;
|
||||
}
|
||||
.g-sm-5,
|
||||
.gy-sm-5 {
|
||||
.gy-sm-5 {
|
||||
--bs-gutter-y: 3rem;
|
||||
}
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.col-md {
|
||||
flex: 1 0 0%;
|
||||
flex: 1 0 0;
|
||||
}
|
||||
.row-cols-md-auto > * {
|
||||
flex: 0 0 auto;
|
||||
@@ -528,7 +467,7 @@
|
||||
}
|
||||
.row-cols-md-3 > * {
|
||||
flex: 0 0 auto;
|
||||
width: 33.3333333333%;
|
||||
width: 33.33333333%;
|
||||
}
|
||||
.row-cols-md-4 > * {
|
||||
flex: 0 0 auto;
|
||||
@@ -540,7 +479,7 @@
|
||||
}
|
||||
.row-cols-md-6 > * {
|
||||
flex: 0 0 auto;
|
||||
width: 16.6666666667%;
|
||||
width: 16.66666667%;
|
||||
}
|
||||
.col-md-auto {
|
||||
flex: 0 0 auto;
|
||||
@@ -631,57 +570,57 @@
|
||||
margin-right: 91.66666667%;
|
||||
}
|
||||
.g-md-0,
|
||||
.gx-md-0 {
|
||||
.gx-md-0 {
|
||||
--bs-gutter-x: 0;
|
||||
}
|
||||
.g-md-0,
|
||||
.gy-md-0 {
|
||||
.gy-md-0 {
|
||||
--bs-gutter-y: 0;
|
||||
}
|
||||
.g-md-1,
|
||||
.gx-md-1 {
|
||||
.gx-md-1 {
|
||||
--bs-gutter-x: 0.25rem;
|
||||
}
|
||||
.g-md-1,
|
||||
.gy-md-1 {
|
||||
.gy-md-1 {
|
||||
--bs-gutter-y: 0.25rem;
|
||||
}
|
||||
.g-md-2,
|
||||
.gx-md-2 {
|
||||
.gx-md-2 {
|
||||
--bs-gutter-x: 0.5rem;
|
||||
}
|
||||
.g-md-2,
|
||||
.gy-md-2 {
|
||||
.gy-md-2 {
|
||||
--bs-gutter-y: 0.5rem;
|
||||
}
|
||||
.g-md-3,
|
||||
.gx-md-3 {
|
||||
.gx-md-3 {
|
||||
--bs-gutter-x: 1rem;
|
||||
}
|
||||
.g-md-3,
|
||||
.gy-md-3 {
|
||||
.gy-md-3 {
|
||||
--bs-gutter-y: 1rem;
|
||||
}
|
||||
.g-md-4,
|
||||
.gx-md-4 {
|
||||
.gx-md-4 {
|
||||
--bs-gutter-x: 1.5rem;
|
||||
}
|
||||
.g-md-4,
|
||||
.gy-md-4 {
|
||||
.gy-md-4 {
|
||||
--bs-gutter-y: 1.5rem;
|
||||
}
|
||||
.g-md-5,
|
||||
.gx-md-5 {
|
||||
.gx-md-5 {
|
||||
--bs-gutter-x: 3rem;
|
||||
}
|
||||
.g-md-5,
|
||||
.gy-md-5 {
|
||||
.gy-md-5 {
|
||||
--bs-gutter-y: 3rem;
|
||||
}
|
||||
}
|
||||
@media (min-width: 992px) {
|
||||
.col-lg {
|
||||
flex: 1 0 0%;
|
||||
flex: 1 0 0;
|
||||
}
|
||||
.row-cols-lg-auto > * {
|
||||
flex: 0 0 auto;
|
||||
@@ -697,7 +636,7 @@
|
||||
}
|
||||
.row-cols-lg-3 > * {
|
||||
flex: 0 0 auto;
|
||||
width: 33.3333333333%;
|
||||
width: 33.33333333%;
|
||||
}
|
||||
.row-cols-lg-4 > * {
|
||||
flex: 0 0 auto;
|
||||
@@ -709,7 +648,7 @@
|
||||
}
|
||||
.row-cols-lg-6 > * {
|
||||
flex: 0 0 auto;
|
||||
width: 16.6666666667%;
|
||||
width: 16.66666667%;
|
||||
}
|
||||
.col-lg-auto {
|
||||
flex: 0 0 auto;
|
||||
@@ -800,57 +739,57 @@
|
||||
margin-right: 91.66666667%;
|
||||
}
|
||||
.g-lg-0,
|
||||
.gx-lg-0 {
|
||||
.gx-lg-0 {
|
||||
--bs-gutter-x: 0;
|
||||
}
|
||||
.g-lg-0,
|
||||
.gy-lg-0 {
|
||||
.gy-lg-0 {
|
||||
--bs-gutter-y: 0;
|
||||
}
|
||||
.g-lg-1,
|
||||
.gx-lg-1 {
|
||||
.gx-lg-1 {
|
||||
--bs-gutter-x: 0.25rem;
|
||||
}
|
||||
.g-lg-1,
|
||||
.gy-lg-1 {
|
||||
.gy-lg-1 {
|
||||
--bs-gutter-y: 0.25rem;
|
||||
}
|
||||
.g-lg-2,
|
||||
.gx-lg-2 {
|
||||
.gx-lg-2 {
|
||||
--bs-gutter-x: 0.5rem;
|
||||
}
|
||||
.g-lg-2,
|
||||
.gy-lg-2 {
|
||||
.gy-lg-2 {
|
||||
--bs-gutter-y: 0.5rem;
|
||||
}
|
||||
.g-lg-3,
|
||||
.gx-lg-3 {
|
||||
.gx-lg-3 {
|
||||
--bs-gutter-x: 1rem;
|
||||
}
|
||||
.g-lg-3,
|
||||
.gy-lg-3 {
|
||||
.gy-lg-3 {
|
||||
--bs-gutter-y: 1rem;
|
||||
}
|
||||
.g-lg-4,
|
||||
.gx-lg-4 {
|
||||
.gx-lg-4 {
|
||||
--bs-gutter-x: 1.5rem;
|
||||
}
|
||||
.g-lg-4,
|
||||
.gy-lg-4 {
|
||||
.gy-lg-4 {
|
||||
--bs-gutter-y: 1.5rem;
|
||||
}
|
||||
.g-lg-5,
|
||||
.gx-lg-5 {
|
||||
.gx-lg-5 {
|
||||
--bs-gutter-x: 3rem;
|
||||
}
|
||||
.g-lg-5,
|
||||
.gy-lg-5 {
|
||||
.gy-lg-5 {
|
||||
--bs-gutter-y: 3rem;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.col-xl {
|
||||
flex: 1 0 0%;
|
||||
flex: 1 0 0;
|
||||
}
|
||||
.row-cols-xl-auto > * {
|
||||
flex: 0 0 auto;
|
||||
@@ -866,7 +805,7 @@
|
||||
}
|
||||
.row-cols-xl-3 > * {
|
||||
flex: 0 0 auto;
|
||||
width: 33.3333333333%;
|
||||
width: 33.33333333%;
|
||||
}
|
||||
.row-cols-xl-4 > * {
|
||||
flex: 0 0 auto;
|
||||
@@ -878,7 +817,7 @@
|
||||
}
|
||||
.row-cols-xl-6 > * {
|
||||
flex: 0 0 auto;
|
||||
width: 16.6666666667%;
|
||||
width: 16.66666667%;
|
||||
}
|
||||
.col-xl-auto {
|
||||
flex: 0 0 auto;
|
||||
@@ -969,57 +908,57 @@
|
||||
margin-right: 91.66666667%;
|
||||
}
|
||||
.g-xl-0,
|
||||
.gx-xl-0 {
|
||||
.gx-xl-0 {
|
||||
--bs-gutter-x: 0;
|
||||
}
|
||||
.g-xl-0,
|
||||
.gy-xl-0 {
|
||||
.gy-xl-0 {
|
||||
--bs-gutter-y: 0;
|
||||
}
|
||||
.g-xl-1,
|
||||
.gx-xl-1 {
|
||||
.gx-xl-1 {
|
||||
--bs-gutter-x: 0.25rem;
|
||||
}
|
||||
.g-xl-1,
|
||||
.gy-xl-1 {
|
||||
.gy-xl-1 {
|
||||
--bs-gutter-y: 0.25rem;
|
||||
}
|
||||
.g-xl-2,
|
||||
.gx-xl-2 {
|
||||
.gx-xl-2 {
|
||||
--bs-gutter-x: 0.5rem;
|
||||
}
|
||||
.g-xl-2,
|
||||
.gy-xl-2 {
|
||||
.gy-xl-2 {
|
||||
--bs-gutter-y: 0.5rem;
|
||||
}
|
||||
.g-xl-3,
|
||||
.gx-xl-3 {
|
||||
.gx-xl-3 {
|
||||
--bs-gutter-x: 1rem;
|
||||
}
|
||||
.g-xl-3,
|
||||
.gy-xl-3 {
|
||||
.gy-xl-3 {
|
||||
--bs-gutter-y: 1rem;
|
||||
}
|
||||
.g-xl-4,
|
||||
.gx-xl-4 {
|
||||
.gx-xl-4 {
|
||||
--bs-gutter-x: 1.5rem;
|
||||
}
|
||||
.g-xl-4,
|
||||
.gy-xl-4 {
|
||||
.gy-xl-4 {
|
||||
--bs-gutter-y: 1.5rem;
|
||||
}
|
||||
.g-xl-5,
|
||||
.gx-xl-5 {
|
||||
.gx-xl-5 {
|
||||
--bs-gutter-x: 3rem;
|
||||
}
|
||||
.g-xl-5,
|
||||
.gy-xl-5 {
|
||||
.gy-xl-5 {
|
||||
--bs-gutter-y: 3rem;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1400px) {
|
||||
.col-xxl {
|
||||
flex: 1 0 0%;
|
||||
flex: 1 0 0;
|
||||
}
|
||||
.row-cols-xxl-auto > * {
|
||||
flex: 0 0 auto;
|
||||
@@ -1035,7 +974,7 @@
|
||||
}
|
||||
.row-cols-xxl-3 > * {
|
||||
flex: 0 0 auto;
|
||||
width: 33.3333333333%;
|
||||
width: 33.33333333%;
|
||||
}
|
||||
.row-cols-xxl-4 > * {
|
||||
flex: 0 0 auto;
|
||||
@@ -1047,7 +986,7 @@
|
||||
}
|
||||
.row-cols-xxl-6 > * {
|
||||
flex: 0 0 auto;
|
||||
width: 16.6666666667%;
|
||||
width: 16.66666667%;
|
||||
}
|
||||
.col-xxl-auto {
|
||||
flex: 0 0 auto;
|
||||
@@ -1138,51 +1077,51 @@
|
||||
margin-right: 91.66666667%;
|
||||
}
|
||||
.g-xxl-0,
|
||||
.gx-xxl-0 {
|
||||
.gx-xxl-0 {
|
||||
--bs-gutter-x: 0;
|
||||
}
|
||||
.g-xxl-0,
|
||||
.gy-xxl-0 {
|
||||
.gy-xxl-0 {
|
||||
--bs-gutter-y: 0;
|
||||
}
|
||||
.g-xxl-1,
|
||||
.gx-xxl-1 {
|
||||
.gx-xxl-1 {
|
||||
--bs-gutter-x: 0.25rem;
|
||||
}
|
||||
.g-xxl-1,
|
||||
.gy-xxl-1 {
|
||||
.gy-xxl-1 {
|
||||
--bs-gutter-y: 0.25rem;
|
||||
}
|
||||
.g-xxl-2,
|
||||
.gx-xxl-2 {
|
||||
.gx-xxl-2 {
|
||||
--bs-gutter-x: 0.5rem;
|
||||
}
|
||||
.g-xxl-2,
|
||||
.gy-xxl-2 {
|
||||
.gy-xxl-2 {
|
||||
--bs-gutter-y: 0.5rem;
|
||||
}
|
||||
.g-xxl-3,
|
||||
.gx-xxl-3 {
|
||||
.gx-xxl-3 {
|
||||
--bs-gutter-x: 1rem;
|
||||
}
|
||||
.g-xxl-3,
|
||||
.gy-xxl-3 {
|
||||
.gy-xxl-3 {
|
||||
--bs-gutter-y: 1rem;
|
||||
}
|
||||
.g-xxl-4,
|
||||
.gx-xxl-4 {
|
||||
.gx-xxl-4 {
|
||||
--bs-gutter-x: 1.5rem;
|
||||
}
|
||||
.g-xxl-4,
|
||||
.gy-xxl-4 {
|
||||
.gy-xxl-4 {
|
||||
--bs-gutter-y: 1.5rem;
|
||||
}
|
||||
.g-xxl-5,
|
||||
.gx-xxl-5 {
|
||||
.gx-xxl-5 {
|
||||
--bs-gutter-x: 3rem;
|
||||
}
|
||||
.g-xxl-5,
|
||||
.gy-xxl-5 {
|
||||
.gy-xxl-5 {
|
||||
--bs-gutter-y: 3rem;
|
||||
}
|
||||
}
|
||||
@@ -1202,6 +1141,10 @@
|
||||
display: grid !important;
|
||||
}
|
||||
|
||||
.d-inline-grid {
|
||||
display: inline-grid !important;
|
||||
}
|
||||
|
||||
.d-table {
|
||||
display: table !important;
|
||||
}
|
||||
@@ -1801,6 +1744,9 @@
|
||||
.d-sm-grid {
|
||||
display: grid !important;
|
||||
}
|
||||
.d-sm-inline-grid {
|
||||
display: inline-grid !important;
|
||||
}
|
||||
.d-sm-table {
|
||||
display: table !important;
|
||||
}
|
||||
@@ -2261,6 +2207,9 @@
|
||||
.d-md-grid {
|
||||
display: grid !important;
|
||||
}
|
||||
.d-md-inline-grid {
|
||||
display: inline-grid !important;
|
||||
}
|
||||
.d-md-table {
|
||||
display: table !important;
|
||||
}
|
||||
@@ -2721,6 +2670,9 @@
|
||||
.d-lg-grid {
|
||||
display: grid !important;
|
||||
}
|
||||
.d-lg-inline-grid {
|
||||
display: inline-grid !important;
|
||||
}
|
||||
.d-lg-table {
|
||||
display: table !important;
|
||||
}
|
||||
@@ -3181,6 +3133,9 @@
|
||||
.d-xl-grid {
|
||||
display: grid !important;
|
||||
}
|
||||
.d-xl-inline-grid {
|
||||
display: inline-grid !important;
|
||||
}
|
||||
.d-xl-table {
|
||||
display: table !important;
|
||||
}
|
||||
@@ -3641,6 +3596,9 @@
|
||||
.d-xxl-grid {
|
||||
display: grid !important;
|
||||
}
|
||||
.d-xxl-inline-grid {
|
||||
display: inline-grid !important;
|
||||
}
|
||||
.d-xxl-table {
|
||||
display: table !important;
|
||||
}
|
||||
@@ -4101,6 +4059,9 @@
|
||||
.d-print-grid {
|
||||
display: grid !important;
|
||||
}
|
||||
.d-print-inline-grid {
|
||||
display: inline-grid !important;
|
||||
}
|
||||
.d-print-table {
|
||||
display: table !important;
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,10 +1,10 @@
|
||||
/*!
|
||||
* Bootstrap Reboot v5.2.3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2022 The Bootstrap Authors
|
||||
* Copyright 2011-2022 Twitter, Inc.
|
||||
* Bootstrap Reboot v5.3.8 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2025 The Bootstrap Authors
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
:root {
|
||||
:root,
|
||||
[data-bs-theme=light] {
|
||||
--bs-blue: #0d6efd;
|
||||
--bs-indigo: #6610f2;
|
||||
--bs-purple: #6f42c1;
|
||||
@@ -44,10 +44,32 @@
|
||||
--bs-danger-rgb: 220, 53, 69;
|
||||
--bs-light-rgb: 248, 249, 250;
|
||||
--bs-dark-rgb: 33, 37, 41;
|
||||
--bs-primary-text-emphasis: #052c65;
|
||||
--bs-secondary-text-emphasis: #2b2f32;
|
||||
--bs-success-text-emphasis: #0a3622;
|
||||
--bs-info-text-emphasis: #055160;
|
||||
--bs-warning-text-emphasis: #664d03;
|
||||
--bs-danger-text-emphasis: #58151c;
|
||||
--bs-light-text-emphasis: #495057;
|
||||
--bs-dark-text-emphasis: #495057;
|
||||
--bs-primary-bg-subtle: #cfe2ff;
|
||||
--bs-secondary-bg-subtle: #e2e3e5;
|
||||
--bs-success-bg-subtle: #d1e7dd;
|
||||
--bs-info-bg-subtle: #cff4fc;
|
||||
--bs-warning-bg-subtle: #fff3cd;
|
||||
--bs-danger-bg-subtle: #f8d7da;
|
||||
--bs-light-bg-subtle: #fcfcfd;
|
||||
--bs-dark-bg-subtle: #ced4da;
|
||||
--bs-primary-border-subtle: #9ec5fe;
|
||||
--bs-secondary-border-subtle: #c4c8cb;
|
||||
--bs-success-border-subtle: #a3cfbb;
|
||||
--bs-info-border-subtle: #9eeaf9;
|
||||
--bs-warning-border-subtle: #ffe69c;
|
||||
--bs-danger-border-subtle: #f1aeb5;
|
||||
--bs-light-border-subtle: #e9ecef;
|
||||
--bs-dark-border-subtle: #adb5bd;
|
||||
--bs-white-rgb: 255, 255, 255;
|
||||
--bs-black-rgb: 0, 0, 0;
|
||||
--bs-body-color-rgb: 33, 37, 41;
|
||||
--bs-body-bg-rgb: 255, 255, 255;
|
||||
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
|
||||
@@ -56,7 +78,28 @@
|
||||
--bs-body-font-weight: 400;
|
||||
--bs-body-line-height: 1.5;
|
||||
--bs-body-color: #212529;
|
||||
--bs-body-color-rgb: 33, 37, 41;
|
||||
--bs-body-bg: #fff;
|
||||
--bs-body-bg-rgb: 255, 255, 255;
|
||||
--bs-emphasis-color: #000;
|
||||
--bs-emphasis-color-rgb: 0, 0, 0;
|
||||
--bs-secondary-color: rgba(33, 37, 41, 0.75);
|
||||
--bs-secondary-color-rgb: 33, 37, 41;
|
||||
--bs-secondary-bg: #e9ecef;
|
||||
--bs-secondary-bg-rgb: 233, 236, 239;
|
||||
--bs-tertiary-color: rgba(33, 37, 41, 0.5);
|
||||
--bs-tertiary-color-rgb: 33, 37, 41;
|
||||
--bs-tertiary-bg: #f8f9fa;
|
||||
--bs-tertiary-bg-rgb: 248, 249, 250;
|
||||
--bs-heading-color: inherit;
|
||||
--bs-link-color: #0d6efd;
|
||||
--bs-link-color-rgb: 13, 110, 253;
|
||||
--bs-link-decoration: underline;
|
||||
--bs-link-hover-color: #0a58ca;
|
||||
--bs-link-hover-color-rgb: 10, 88, 202;
|
||||
--bs-code-color: #d63384;
|
||||
--bs-highlight-color: #212529;
|
||||
--bs-highlight-bg: #fff3cd;
|
||||
--bs-border-width: 1px;
|
||||
--bs-border-style: solid;
|
||||
--bs-border-color: #dee2e6;
|
||||
@@ -65,12 +108,76 @@
|
||||
--bs-border-radius-sm: 0.25rem;
|
||||
--bs-border-radius-lg: 0.5rem;
|
||||
--bs-border-radius-xl: 1rem;
|
||||
--bs-border-radius-2xl: 2rem;
|
||||
--bs-border-radius-xxl: 2rem;
|
||||
--bs-border-radius-2xl: var(--bs-border-radius-xxl);
|
||||
--bs-border-radius-pill: 50rem;
|
||||
--bs-link-color: #0d6efd;
|
||||
--bs-link-hover-color: #0a58ca;
|
||||
--bs-code-color: #d63384;
|
||||
--bs-highlight-bg: #fff3cd;
|
||||
--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
|
||||
--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
|
||||
--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
|
||||
--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||
--bs-focus-ring-width: 0.25rem;
|
||||
--bs-focus-ring-opacity: 0.25;
|
||||
--bs-focus-ring-color: rgba(13, 110, 253, 0.25);
|
||||
--bs-form-valid-color: #198754;
|
||||
--bs-form-valid-border-color: #198754;
|
||||
--bs-form-invalid-color: #dc3545;
|
||||
--bs-form-invalid-border-color: #dc3545;
|
||||
}
|
||||
|
||||
[data-bs-theme=dark] {
|
||||
color-scheme: dark;
|
||||
--bs-body-color: #dee2e6;
|
||||
--bs-body-color-rgb: 222, 226, 230;
|
||||
--bs-body-bg: #212529;
|
||||
--bs-body-bg-rgb: 33, 37, 41;
|
||||
--bs-emphasis-color: #fff;
|
||||
--bs-emphasis-color-rgb: 255, 255, 255;
|
||||
--bs-secondary-color: rgba(222, 226, 230, 0.75);
|
||||
--bs-secondary-color-rgb: 222, 226, 230;
|
||||
--bs-secondary-bg: #343a40;
|
||||
--bs-secondary-bg-rgb: 52, 58, 64;
|
||||
--bs-tertiary-color: rgba(222, 226, 230, 0.5);
|
||||
--bs-tertiary-color-rgb: 222, 226, 230;
|
||||
--bs-tertiary-bg: #2b3035;
|
||||
--bs-tertiary-bg-rgb: 43, 48, 53;
|
||||
--bs-primary-text-emphasis: #6ea8fe;
|
||||
--bs-secondary-text-emphasis: #a7acb1;
|
||||
--bs-success-text-emphasis: #75b798;
|
||||
--bs-info-text-emphasis: #6edff6;
|
||||
--bs-warning-text-emphasis: #ffda6a;
|
||||
--bs-danger-text-emphasis: #ea868f;
|
||||
--bs-light-text-emphasis: #f8f9fa;
|
||||
--bs-dark-text-emphasis: #dee2e6;
|
||||
--bs-primary-bg-subtle: #031633;
|
||||
--bs-secondary-bg-subtle: #161719;
|
||||
--bs-success-bg-subtle: #051b11;
|
||||
--bs-info-bg-subtle: #032830;
|
||||
--bs-warning-bg-subtle: #332701;
|
||||
--bs-danger-bg-subtle: #2c0b0e;
|
||||
--bs-light-bg-subtle: #343a40;
|
||||
--bs-dark-bg-subtle: #1a1d20;
|
||||
--bs-primary-border-subtle: #084298;
|
||||
--bs-secondary-border-subtle: #41464b;
|
||||
--bs-success-border-subtle: #0f5132;
|
||||
--bs-info-border-subtle: #087990;
|
||||
--bs-warning-border-subtle: #997404;
|
||||
--bs-danger-border-subtle: #842029;
|
||||
--bs-light-border-subtle: #495057;
|
||||
--bs-dark-border-subtle: #343a40;
|
||||
--bs-heading-color: inherit;
|
||||
--bs-link-color: #6ea8fe;
|
||||
--bs-link-hover-color: #8bb9fe;
|
||||
--bs-link-color-rgb: 110, 168, 254;
|
||||
--bs-link-hover-color-rgb: 139, 185, 254;
|
||||
--bs-code-color: #e685b5;
|
||||
--bs-highlight-color: #dee2e6;
|
||||
--bs-highlight-bg: #664d03;
|
||||
--bs-border-color: #495057;
|
||||
--bs-border-color-translucent: rgba(255, 255, 255, 0.15);
|
||||
--bs-form-valid-color: #75b798;
|
||||
--bs-form-valid-border-color: #75b798;
|
||||
--bs-form-invalid-color: #ea868f;
|
||||
--bs-form-invalid-border-color: #ea868f;
|
||||
}
|
||||
|
||||
*,
|
||||
@@ -102,7 +209,7 @@ hr {
|
||||
margin: 1rem 0;
|
||||
color: inherit;
|
||||
border: 0;
|
||||
border-top: 1px solid;
|
||||
border-top: var(--bs-border-width) solid;
|
||||
opacity: 0.25;
|
||||
}
|
||||
|
||||
@@ -111,6 +218,7 @@ h6, h5, h4, h3, h2, h1 {
|
||||
margin-bottom: 0.5rem;
|
||||
font-weight: 500;
|
||||
line-height: 1.2;
|
||||
color: var(--bs-heading-color);
|
||||
}
|
||||
|
||||
h1 {
|
||||
@@ -219,6 +327,7 @@ small {
|
||||
|
||||
mark {
|
||||
padding: 0.1875em;
|
||||
color: var(--bs-highlight-color);
|
||||
background-color: var(--bs-highlight-bg);
|
||||
}
|
||||
|
||||
@@ -239,11 +348,11 @@ sup {
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--bs-link-color);
|
||||
color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));
|
||||
text-decoration: underline;
|
||||
}
|
||||
a:hover {
|
||||
color: var(--bs-link-hover-color);
|
||||
--bs-link-color-rgb: var(--bs-link-hover-color-rgb);
|
||||
}
|
||||
|
||||
a:not([href]):not([class]), a:not([href]):not([class]):hover {
|
||||
@@ -310,7 +419,7 @@ table {
|
||||
caption {
|
||||
padding-top: 0.5rem;
|
||||
padding-bottom: 0.5rem;
|
||||
color: #6c757d;
|
||||
color: var(--bs-secondary-color);
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
@@ -407,8 +516,8 @@ legend {
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
font-size: calc(1.275rem + 0.3vw);
|
||||
line-height: inherit;
|
||||
font-size: calc(1.275rem + 0.3vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
legend {
|
||||
@@ -434,8 +543,12 @@ legend + * {
|
||||
}
|
||||
|
||||
[type=search] {
|
||||
outline-offset: -2px;
|
||||
-webkit-appearance: textfield;
|
||||
outline-offset: -2px;
|
||||
}
|
||||
[type=search]::-webkit-search-cancel-button {
|
||||
cursor: pointer;
|
||||
filter: grayscale(1);
|
||||
}
|
||||
|
||||
/* rtl:raw:
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+130
-17
@@ -1,10 +1,10 @@
|
||||
/*!
|
||||
* Bootstrap Reboot v5.2.3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2022 The Bootstrap Authors
|
||||
* Copyright 2011-2022 Twitter, Inc.
|
||||
* Bootstrap Reboot v5.3.8 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2025 The Bootstrap Authors
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
:root {
|
||||
:root,
|
||||
[data-bs-theme=light] {
|
||||
--bs-blue: #0d6efd;
|
||||
--bs-indigo: #6610f2;
|
||||
--bs-purple: #6f42c1;
|
||||
@@ -44,10 +44,32 @@
|
||||
--bs-danger-rgb: 220, 53, 69;
|
||||
--bs-light-rgb: 248, 249, 250;
|
||||
--bs-dark-rgb: 33, 37, 41;
|
||||
--bs-primary-text-emphasis: #052c65;
|
||||
--bs-secondary-text-emphasis: #2b2f32;
|
||||
--bs-success-text-emphasis: #0a3622;
|
||||
--bs-info-text-emphasis: #055160;
|
||||
--bs-warning-text-emphasis: #664d03;
|
||||
--bs-danger-text-emphasis: #58151c;
|
||||
--bs-light-text-emphasis: #495057;
|
||||
--bs-dark-text-emphasis: #495057;
|
||||
--bs-primary-bg-subtle: #cfe2ff;
|
||||
--bs-secondary-bg-subtle: #e2e3e5;
|
||||
--bs-success-bg-subtle: #d1e7dd;
|
||||
--bs-info-bg-subtle: #cff4fc;
|
||||
--bs-warning-bg-subtle: #fff3cd;
|
||||
--bs-danger-bg-subtle: #f8d7da;
|
||||
--bs-light-bg-subtle: #fcfcfd;
|
||||
--bs-dark-bg-subtle: #ced4da;
|
||||
--bs-primary-border-subtle: #9ec5fe;
|
||||
--bs-secondary-border-subtle: #c4c8cb;
|
||||
--bs-success-border-subtle: #a3cfbb;
|
||||
--bs-info-border-subtle: #9eeaf9;
|
||||
--bs-warning-border-subtle: #ffe69c;
|
||||
--bs-danger-border-subtle: #f1aeb5;
|
||||
--bs-light-border-subtle: #e9ecef;
|
||||
--bs-dark-border-subtle: #adb5bd;
|
||||
--bs-white-rgb: 255, 255, 255;
|
||||
--bs-black-rgb: 0, 0, 0;
|
||||
--bs-body-color-rgb: 33, 37, 41;
|
||||
--bs-body-bg-rgb: 255, 255, 255;
|
||||
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
|
||||
@@ -56,7 +78,28 @@
|
||||
--bs-body-font-weight: 400;
|
||||
--bs-body-line-height: 1.5;
|
||||
--bs-body-color: #212529;
|
||||
--bs-body-color-rgb: 33, 37, 41;
|
||||
--bs-body-bg: #fff;
|
||||
--bs-body-bg-rgb: 255, 255, 255;
|
||||
--bs-emphasis-color: #000;
|
||||
--bs-emphasis-color-rgb: 0, 0, 0;
|
||||
--bs-secondary-color: rgba(33, 37, 41, 0.75);
|
||||
--bs-secondary-color-rgb: 33, 37, 41;
|
||||
--bs-secondary-bg: #e9ecef;
|
||||
--bs-secondary-bg-rgb: 233, 236, 239;
|
||||
--bs-tertiary-color: rgba(33, 37, 41, 0.5);
|
||||
--bs-tertiary-color-rgb: 33, 37, 41;
|
||||
--bs-tertiary-bg: #f8f9fa;
|
||||
--bs-tertiary-bg-rgb: 248, 249, 250;
|
||||
--bs-heading-color: inherit;
|
||||
--bs-link-color: #0d6efd;
|
||||
--bs-link-color-rgb: 13, 110, 253;
|
||||
--bs-link-decoration: underline;
|
||||
--bs-link-hover-color: #0a58ca;
|
||||
--bs-link-hover-color-rgb: 10, 88, 202;
|
||||
--bs-code-color: #d63384;
|
||||
--bs-highlight-color: #212529;
|
||||
--bs-highlight-bg: #fff3cd;
|
||||
--bs-border-width: 1px;
|
||||
--bs-border-style: solid;
|
||||
--bs-border-color: #dee2e6;
|
||||
@@ -65,12 +108,76 @@
|
||||
--bs-border-radius-sm: 0.25rem;
|
||||
--bs-border-radius-lg: 0.5rem;
|
||||
--bs-border-radius-xl: 1rem;
|
||||
--bs-border-radius-2xl: 2rem;
|
||||
--bs-border-radius-xxl: 2rem;
|
||||
--bs-border-radius-2xl: var(--bs-border-radius-xxl);
|
||||
--bs-border-radius-pill: 50rem;
|
||||
--bs-link-color: #0d6efd;
|
||||
--bs-link-hover-color: #0a58ca;
|
||||
--bs-code-color: #d63384;
|
||||
--bs-highlight-bg: #fff3cd;
|
||||
--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
|
||||
--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
|
||||
--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
|
||||
--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||
--bs-focus-ring-width: 0.25rem;
|
||||
--bs-focus-ring-opacity: 0.25;
|
||||
--bs-focus-ring-color: rgba(13, 110, 253, 0.25);
|
||||
--bs-form-valid-color: #198754;
|
||||
--bs-form-valid-border-color: #198754;
|
||||
--bs-form-invalid-color: #dc3545;
|
||||
--bs-form-invalid-border-color: #dc3545;
|
||||
}
|
||||
|
||||
[data-bs-theme=dark] {
|
||||
color-scheme: dark;
|
||||
--bs-body-color: #dee2e6;
|
||||
--bs-body-color-rgb: 222, 226, 230;
|
||||
--bs-body-bg: #212529;
|
||||
--bs-body-bg-rgb: 33, 37, 41;
|
||||
--bs-emphasis-color: #fff;
|
||||
--bs-emphasis-color-rgb: 255, 255, 255;
|
||||
--bs-secondary-color: rgba(222, 226, 230, 0.75);
|
||||
--bs-secondary-color-rgb: 222, 226, 230;
|
||||
--bs-secondary-bg: #343a40;
|
||||
--bs-secondary-bg-rgb: 52, 58, 64;
|
||||
--bs-tertiary-color: rgba(222, 226, 230, 0.5);
|
||||
--bs-tertiary-color-rgb: 222, 226, 230;
|
||||
--bs-tertiary-bg: #2b3035;
|
||||
--bs-tertiary-bg-rgb: 43, 48, 53;
|
||||
--bs-primary-text-emphasis: #6ea8fe;
|
||||
--bs-secondary-text-emphasis: #a7acb1;
|
||||
--bs-success-text-emphasis: #75b798;
|
||||
--bs-info-text-emphasis: #6edff6;
|
||||
--bs-warning-text-emphasis: #ffda6a;
|
||||
--bs-danger-text-emphasis: #ea868f;
|
||||
--bs-light-text-emphasis: #f8f9fa;
|
||||
--bs-dark-text-emphasis: #dee2e6;
|
||||
--bs-primary-bg-subtle: #031633;
|
||||
--bs-secondary-bg-subtle: #161719;
|
||||
--bs-success-bg-subtle: #051b11;
|
||||
--bs-info-bg-subtle: #032830;
|
||||
--bs-warning-bg-subtle: #332701;
|
||||
--bs-danger-bg-subtle: #2c0b0e;
|
||||
--bs-light-bg-subtle: #343a40;
|
||||
--bs-dark-bg-subtle: #1a1d20;
|
||||
--bs-primary-border-subtle: #084298;
|
||||
--bs-secondary-border-subtle: #41464b;
|
||||
--bs-success-border-subtle: #0f5132;
|
||||
--bs-info-border-subtle: #087990;
|
||||
--bs-warning-border-subtle: #997404;
|
||||
--bs-danger-border-subtle: #842029;
|
||||
--bs-light-border-subtle: #495057;
|
||||
--bs-dark-border-subtle: #343a40;
|
||||
--bs-heading-color: inherit;
|
||||
--bs-link-color: #6ea8fe;
|
||||
--bs-link-hover-color: #8bb9fe;
|
||||
--bs-link-color-rgb: 110, 168, 254;
|
||||
--bs-link-hover-color-rgb: 139, 185, 254;
|
||||
--bs-code-color: #e685b5;
|
||||
--bs-highlight-color: #dee2e6;
|
||||
--bs-highlight-bg: #664d03;
|
||||
--bs-border-color: #495057;
|
||||
--bs-border-color-translucent: rgba(255, 255, 255, 0.15);
|
||||
--bs-form-valid-color: #75b798;
|
||||
--bs-form-valid-border-color: #75b798;
|
||||
--bs-form-invalid-color: #ea868f;
|
||||
--bs-form-invalid-border-color: #ea868f;
|
||||
}
|
||||
|
||||
*,
|
||||
@@ -102,7 +209,7 @@ hr {
|
||||
margin: 1rem 0;
|
||||
color: inherit;
|
||||
border: 0;
|
||||
border-top: 1px solid;
|
||||
border-top: var(--bs-border-width) solid;
|
||||
opacity: 0.25;
|
||||
}
|
||||
|
||||
@@ -111,6 +218,7 @@ h6, h5, h4, h3, h2, h1 {
|
||||
margin-bottom: 0.5rem;
|
||||
font-weight: 500;
|
||||
line-height: 1.2;
|
||||
color: var(--bs-heading-color);
|
||||
}
|
||||
|
||||
h1 {
|
||||
@@ -219,6 +327,7 @@ small {
|
||||
|
||||
mark {
|
||||
padding: 0.1875em;
|
||||
color: var(--bs-highlight-color);
|
||||
background-color: var(--bs-highlight-bg);
|
||||
}
|
||||
|
||||
@@ -239,11 +348,11 @@ sup {
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--bs-link-color);
|
||||
color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));
|
||||
text-decoration: underline;
|
||||
}
|
||||
a:hover {
|
||||
color: var(--bs-link-hover-color);
|
||||
--bs-link-color-rgb: var(--bs-link-hover-color-rgb);
|
||||
}
|
||||
|
||||
a:not([href]):not([class]), a:not([href]):not([class]):hover {
|
||||
@@ -310,7 +419,7 @@ table {
|
||||
caption {
|
||||
padding-top: 0.5rem;
|
||||
padding-bottom: 0.5rem;
|
||||
color: #6c757d;
|
||||
color: var(--bs-secondary-color);
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
@@ -407,8 +516,8 @@ legend {
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
font-size: calc(1.275rem + 0.3vw);
|
||||
line-height: inherit;
|
||||
font-size: calc(1.275rem + 0.3vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
legend {
|
||||
@@ -434,8 +543,12 @@ legend + * {
|
||||
}
|
||||
|
||||
[type=search] {
|
||||
outline-offset: -2px;
|
||||
-webkit-appearance: textfield;
|
||||
outline-offset: -2px;
|
||||
}
|
||||
[type=search]::-webkit-search-cancel-button {
|
||||
cursor: pointer;
|
||||
filter: grayscale(1);
|
||||
}
|
||||
|
||||
[type="tel"],
|
||||
|
||||
File diff suppressed because one or more lines are too long
+3
-4
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1193
-53
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
+3
-4
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1193
-53
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
+3
-4
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1890
-720
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1893
-714
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+732
-1495
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+693
-1448
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+697
-1452
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -20,7 +20,6 @@
|
||||
--#{$prefix}accordion-btn-icon-transform: #{$accordion-icon-transform};
|
||||
--#{$prefix}accordion-btn-icon-transition: #{$accordion-icon-transition};
|
||||
--#{$prefix}accordion-btn-active-icon: #{escape-svg($accordion-button-active-icon)};
|
||||
--#{$prefix}accordion-btn-focus-border-color: #{$accordion-button-focus-border-color};
|
||||
--#{$prefix}accordion-btn-focus-box-shadow: #{$accordion-button-focus-box-shadow};
|
||||
--#{$prefix}accordion-body-padding-x: #{$accordion-body-padding-x};
|
||||
--#{$prefix}accordion-body-padding-y: #{$accordion-body-padding-y};
|
||||
@@ -74,7 +73,6 @@
|
||||
|
||||
&:focus {
|
||||
z-index: 3;
|
||||
border-color: var(--#{$prefix}accordion-btn-focus-border-color);
|
||||
outline: 0;
|
||||
box-shadow: var(--#{$prefix}accordion-btn-focus-box-shadow);
|
||||
}
|
||||
@@ -92,7 +90,7 @@
|
||||
&:first-of-type {
|
||||
@include border-top-radius(var(--#{$prefix}accordion-border-radius));
|
||||
|
||||
.accordion-button {
|
||||
> .accordion-header .accordion-button {
|
||||
@include border-top-radius(var(--#{$prefix}accordion-inner-border-radius));
|
||||
}
|
||||
}
|
||||
@@ -105,13 +103,13 @@
|
||||
&:last-of-type {
|
||||
@include border-bottom-radius(var(--#{$prefix}accordion-border-radius));
|
||||
|
||||
.accordion-button {
|
||||
> .accordion-header .accordion-button {
|
||||
&.collapsed {
|
||||
@include border-bottom-radius(var(--#{$prefix}accordion-inner-border-radius));
|
||||
}
|
||||
}
|
||||
|
||||
.accordion-collapse {
|
||||
> .accordion-collapse {
|
||||
@include border-bottom-radius(var(--#{$prefix}accordion-border-radius));
|
||||
}
|
||||
}
|
||||
@@ -127,11 +125,7 @@
|
||||
// Remove borders and border-radius to keep accordion items edge-to-edge.
|
||||
|
||||
.accordion-flush {
|
||||
.accordion-collapse {
|
||||
border-width: 0;
|
||||
}
|
||||
|
||||
.accordion-item {
|
||||
> .accordion-item {
|
||||
border-right: 0;
|
||||
border-left: 0;
|
||||
@include border-radius(0);
|
||||
@@ -139,11 +133,21 @@
|
||||
&:first-child { border-top: 0; }
|
||||
&:last-child { border-bottom: 0; }
|
||||
|
||||
.accordion-button {
|
||||
&,
|
||||
&.collapsed {
|
||||
@include border-radius(0);
|
||||
}
|
||||
// stylelint-disable selector-max-class
|
||||
> .accordion-collapse,
|
||||
> .accordion-header .accordion-button,
|
||||
> .accordion-header .accordion-button.collapsed {
|
||||
@include border-radius(0);
|
||||
}
|
||||
// stylelint-enable selector-max-class
|
||||
}
|
||||
}
|
||||
|
||||
@if $enable-dark-mode {
|
||||
@include color-mode(dark) {
|
||||
.accordion-button::after {
|
||||
--#{$prefix}accordion-btn-icon: #{escape-svg($accordion-button-icon-dark)};
|
||||
--#{$prefix}accordion-btn-active-icon: #{escape-svg($accordion-button-active-icon-dark)};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
--#{$prefix}alert-border-color: transparent;
|
||||
--#{$prefix}alert-border: #{$alert-border-width} solid var(--#{$prefix}alert-border-color);
|
||||
--#{$prefix}alert-border-radius: #{$alert-border-radius};
|
||||
--#{$prefix}alert-link-color: inherit;
|
||||
// scss-docs-end alert-css-vars
|
||||
|
||||
position: relative;
|
||||
@@ -32,6 +33,7 @@
|
||||
// Provide class for links that match alerts
|
||||
.alert-link {
|
||||
font-weight: $alert-link-font-weight;
|
||||
color: var(--#{$prefix}alert-link-color);
|
||||
}
|
||||
|
||||
|
||||
@@ -54,18 +56,13 @@
|
||||
|
||||
|
||||
// scss-docs-start alert-modifiers
|
||||
// Generate contextual modifier classes for colorizing the alert.
|
||||
|
||||
@each $state, $value in $theme-colors {
|
||||
$alert-background: shift-color($value, $alert-bg-scale);
|
||||
$alert-border: shift-color($value, $alert-border-scale);
|
||||
$alert-color: shift-color($value, $alert-color-scale);
|
||||
|
||||
@if (contrast-ratio($alert-background, $alert-color) < $min-contrast-ratio) {
|
||||
$alert-color: mix($value, color-contrast($alert-background), abs($alert-color-scale));
|
||||
}
|
||||
// Generate contextual modifier classes for colorizing the alert
|
||||
@each $state in map-keys($theme-colors) {
|
||||
.alert-#{$state} {
|
||||
@include alert-variant($alert-background, $alert-border, $alert-color);
|
||||
--#{$prefix}alert-color: var(--#{$prefix}#{$state}-text-emphasis);
|
||||
--#{$prefix}alert-bg: var(--#{$prefix}#{$state}-bg-subtle);
|
||||
--#{$prefix}alert-border-color: var(--#{$prefix}#{$state}-border-subtle);
|
||||
--#{$prefix}alert-link-color: var(--#{$prefix}#{$state}-text-emphasis);
|
||||
}
|
||||
}
|
||||
// scss-docs-end alert-modifiers
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
// Prevent double borders when buttons are next to each other
|
||||
> :not(.btn-check:first-child) + .btn,
|
||||
> .btn-group:not(:first-child) {
|
||||
margin-left: -$btn-border-width;
|
||||
margin-left: calc(-1 * #{$btn-border-width}); // stylelint-disable-line function-disallowed-list
|
||||
}
|
||||
|
||||
// Reset rounded corners
|
||||
@@ -126,7 +126,7 @@
|
||||
|
||||
> .btn:not(:first-child),
|
||||
> .btn-group:not(:first-child) {
|
||||
margin-top: -$btn-border-width;
|
||||
margin-top: calc(-1 * #{$btn-border-width}); // stylelint-disable-line function-disallowed-list
|
||||
}
|
||||
|
||||
// Reset rounded corners
|
||||
@@ -135,7 +135,12 @@
|
||||
@include border-bottom-radius(0);
|
||||
}
|
||||
|
||||
> .btn ~ .btn,
|
||||
// The top radius should be 0 if the button is:
|
||||
// - the "third or more" child
|
||||
// - the second child and the previous element isn't `.btn-check` (making it the first child visually)
|
||||
// - part of a btn-group which isn't the first child
|
||||
> .btn:nth-child(n + 3),
|
||||
> :not(.btn-check) + .btn,
|
||||
> .btn-group:not(:first-child) > .btn {
|
||||
@include border-top-radius(0);
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
@include rfs($btn-font-size, --#{$prefix}btn-font-size);
|
||||
--#{$prefix}btn-font-weight: #{$btn-font-weight};
|
||||
--#{$prefix}btn-line-height: #{$btn-line-height};
|
||||
--#{$prefix}btn-color: #{$body-color};
|
||||
--#{$prefix}btn-color: #{$btn-color};
|
||||
--#{$prefix}btn-bg: transparent;
|
||||
--#{$prefix}btn-border-width: #{$btn-border-width};
|
||||
--#{$prefix}btn-border-color: transparent;
|
||||
@@ -100,6 +100,15 @@
|
||||
}
|
||||
}
|
||||
|
||||
.btn-check:checked:focus-visible + & {
|
||||
// Avoid using mixin so we can pass custom focus shadow properly
|
||||
@if $enable-shadows {
|
||||
box-shadow: var(--#{$prefix}btn-active-shadow), var(--#{$prefix}btn-focus-box-shadow);
|
||||
} @else {
|
||||
box-shadow: var(--#{$prefix}btn-focus-box-shadow);
|
||||
}
|
||||
}
|
||||
|
||||
&:disabled,
|
||||
&.disabled,
|
||||
fieldset:disabled & {
|
||||
@@ -169,8 +178,8 @@
|
||||
--#{$prefix}btn-active-border-color: transparent;
|
||||
--#{$prefix}btn-disabled-color: #{$btn-link-disabled-color};
|
||||
--#{$prefix}btn-disabled-border-color: transparent;
|
||||
--#{$prefix}btn-box-shadow: none;
|
||||
--#{$prefix}btn-focus-shadow-rgb: #{to-rgb(mix(color-contrast($primary), $primary, 15%))};
|
||||
--#{$prefix}btn-box-shadow: 0 0 0 #000; // Can't use `none` as keyword negates all values when used with multiple shadows
|
||||
--#{$prefix}btn-focus-shadow-rgb: #{$btn-link-focus-shadow-rgb};
|
||||
|
||||
text-decoration: $link-decoration;
|
||||
@if $enable-gradients {
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
--#{$prefix}card-spacer-y: #{$card-spacer-y};
|
||||
--#{$prefix}card-spacer-x: #{$card-spacer-x};
|
||||
--#{$prefix}card-title-spacer-y: #{$card-title-spacer-y};
|
||||
--#{$prefix}card-title-color: #{$card-title-color};
|
||||
--#{$prefix}card-subtitle-color: #{$card-subtitle-color};
|
||||
--#{$prefix}card-border-width: #{$card-border-width};
|
||||
--#{$prefix}card-border-color: #{$card-border-color};
|
||||
--#{$prefix}card-border-radius: #{$card-border-radius};
|
||||
@@ -28,6 +30,7 @@
|
||||
flex-direction: column;
|
||||
min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106
|
||||
height: var(--#{$prefix}card-height);
|
||||
color: var(--#{$prefix}body-color);
|
||||
word-wrap: break-word;
|
||||
background-color: var(--#{$prefix}card-bg);
|
||||
background-clip: border-box;
|
||||
@@ -73,11 +76,13 @@
|
||||
|
||||
.card-title {
|
||||
margin-bottom: var(--#{$prefix}card-title-spacer-y);
|
||||
color: var(--#{$prefix}card-title-color);
|
||||
}
|
||||
|
||||
.card-subtitle {
|
||||
margin-top: calc(-.5 * var(--#{$prefix}card-title-spacer-y)); // stylelint-disable-line function-disallowed-list
|
||||
margin-bottom: 0;
|
||||
color: var(--#{$prefix}card-subtitle-color);
|
||||
}
|
||||
|
||||
.card-text:last-child {
|
||||
@@ -188,8 +193,7 @@
|
||||
// The child selector allows nested `.card` within `.card-group`
|
||||
// to display properly.
|
||||
> .card {
|
||||
// Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
|
||||
flex: 1 0 0%;
|
||||
flex: 1 0 0;
|
||||
margin-bottom: 0;
|
||||
|
||||
+ .card {
|
||||
@@ -202,13 +206,13 @@
|
||||
&:not(:last-child) {
|
||||
@include border-end-radius(0);
|
||||
|
||||
.card-img-top,
|
||||
.card-header {
|
||||
> .card-img-top,
|
||||
> .card-header {
|
||||
// stylelint-disable-next-line property-disallowed-list
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
.card-img-bottom,
|
||||
.card-footer {
|
||||
> .card-img-bottom,
|
||||
> .card-footer {
|
||||
// stylelint-disable-next-line property-disallowed-list
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
@@ -217,13 +221,13 @@
|
||||
&:not(:first-child) {
|
||||
@include border-start-radius(0);
|
||||
|
||||
.card-img-top,
|
||||
.card-header {
|
||||
> .card-img-top,
|
||||
> .card-header {
|
||||
// stylelint-disable-next-line property-disallowed-list
|
||||
border-top-left-radius: 0;
|
||||
}
|
||||
.card-img-bottom,
|
||||
.card-footer {
|
||||
> .card-img-bottom,
|
||||
> .card-footer {
|
||||
// stylelint-disable-next-line property-disallowed-list
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
|
||||
@@ -99,6 +99,7 @@
|
||||
color: $carousel-control-color;
|
||||
text-align: center;
|
||||
background: none;
|
||||
filter: var(--#{$prefix}carousel-control-icon-filter);
|
||||
border: 0;
|
||||
opacity: $carousel-control-opacity;
|
||||
@include transition($carousel-control-transition);
|
||||
@@ -132,19 +133,11 @@
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
|
||||
/* rtl:options: {
|
||||
"autoRename": true,
|
||||
"stringMap":[ {
|
||||
"name" : "prev-next",
|
||||
"search" : "prev",
|
||||
"replace" : "next"
|
||||
} ]
|
||||
} */
|
||||
.carousel-control-prev-icon {
|
||||
background-image: escape-svg($carousel-control-prev-icon-bg);
|
||||
background-image: escape-svg($carousel-control-prev-icon-bg) #{"/*rtl:" + escape-svg($carousel-control-next-icon-bg) + "*/"};
|
||||
}
|
||||
.carousel-control-next-icon {
|
||||
background-image: escape-svg($carousel-control-next-icon-bg);
|
||||
background-image: escape-svg($carousel-control-next-icon-bg) #{"/*rtl:" + escape-svg($carousel-control-prev-icon-bg) + "*/"};
|
||||
}
|
||||
|
||||
// Optional indicator pips/controls
|
||||
@@ -165,7 +158,6 @@
|
||||
margin-right: $carousel-control-width;
|
||||
margin-bottom: 1rem;
|
||||
margin-left: $carousel-control-width;
|
||||
list-style: none;
|
||||
|
||||
[data-bs-target] {
|
||||
box-sizing: content-box;
|
||||
@@ -177,7 +169,7 @@
|
||||
margin-left: $carousel-indicator-spacer;
|
||||
text-indent: -999px;
|
||||
cursor: pointer;
|
||||
background-color: $carousel-indicator-active-bg;
|
||||
background-color: var(--#{$prefix}carousel-indicator-active-bg);
|
||||
background-clip: padding-box;
|
||||
border: 0;
|
||||
// Use transparent borders to increase the hit area by 10px on top and bottom.
|
||||
@@ -204,23 +196,31 @@
|
||||
left: (100% - $carousel-caption-width) * .5;
|
||||
padding-top: $carousel-caption-padding-y;
|
||||
padding-bottom: $carousel-caption-padding-y;
|
||||
color: $carousel-caption-color;
|
||||
color: var(--#{$prefix}carousel-caption-color);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
// Dark mode carousel
|
||||
|
||||
@mixin carousel-dark() {
|
||||
--#{$prefix}carousel-indicator-active-bg: #{$carousel-indicator-active-bg-dark};
|
||||
--#{$prefix}carousel-caption-color: #{$carousel-caption-color-dark};
|
||||
--#{$prefix}carousel-control-icon-filter: #{$carousel-control-icon-filter-dark};
|
||||
}
|
||||
|
||||
.carousel-dark {
|
||||
.carousel-control-prev-icon,
|
||||
.carousel-control-next-icon {
|
||||
filter: $carousel-dark-control-icon-filter;
|
||||
}
|
||||
@include carousel-dark();
|
||||
}
|
||||
|
||||
.carousel-indicators [data-bs-target] {
|
||||
background-color: $carousel-dark-indicator-active-bg;
|
||||
}
|
||||
:root,
|
||||
[data-bs-theme="light"] {
|
||||
--#{$prefix}carousel-indicator-active-bg: #{$carousel-indicator-active-bg};
|
||||
--#{$prefix}carousel-caption-color: #{$carousel-caption-color};
|
||||
--#{$prefix}carousel-control-icon-filter: #{$carousel-control-icon-filter};
|
||||
}
|
||||
|
||||
.carousel-caption {
|
||||
color: $carousel-dark-caption-color;
|
||||
@if $enable-dark-mode {
|
||||
@include color-mode(dark, true) {
|
||||
@include carousel-dark();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,37 +4,63 @@
|
||||
// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
|
||||
|
||||
.btn-close {
|
||||
// scss-docs-start close-css-vars
|
||||
--#{$prefix}btn-close-color: #{$btn-close-color};
|
||||
--#{$prefix}btn-close-bg: #{ escape-svg($btn-close-bg) };
|
||||
--#{$prefix}btn-close-opacity: #{$btn-close-opacity};
|
||||
--#{$prefix}btn-close-hover-opacity: #{$btn-close-hover-opacity};
|
||||
--#{$prefix}btn-close-focus-shadow: #{$btn-close-focus-shadow};
|
||||
--#{$prefix}btn-close-focus-opacity: #{$btn-close-focus-opacity};
|
||||
--#{$prefix}btn-close-disabled-opacity: #{$btn-close-disabled-opacity};
|
||||
// scss-docs-end close-css-vars
|
||||
|
||||
box-sizing: content-box;
|
||||
width: $btn-close-width;
|
||||
height: $btn-close-height;
|
||||
padding: $btn-close-padding-y $btn-close-padding-x;
|
||||
color: $btn-close-color;
|
||||
background: transparent escape-svg($btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements
|
||||
color: var(--#{$prefix}btn-close-color);
|
||||
background: transparent var(--#{$prefix}btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements
|
||||
filter: var(--#{$prefix}btn-close-filter);
|
||||
border: 0; // for button elements
|
||||
@include border-radius();
|
||||
opacity: $btn-close-opacity;
|
||||
opacity: var(--#{$prefix}btn-close-opacity);
|
||||
|
||||
// Override <a>'s hover style
|
||||
&:hover {
|
||||
color: $btn-close-color;
|
||||
color: var(--#{$prefix}btn-close-color);
|
||||
text-decoration: none;
|
||||
opacity: $btn-close-hover-opacity;
|
||||
opacity: var(--#{$prefix}btn-close-hover-opacity);
|
||||
}
|
||||
|
||||
&:focus {
|
||||
outline: 0;
|
||||
box-shadow: $btn-close-focus-shadow;
|
||||
opacity: $btn-close-focus-opacity;
|
||||
box-shadow: var(--#{$prefix}btn-close-focus-shadow);
|
||||
opacity: var(--#{$prefix}btn-close-focus-opacity);
|
||||
}
|
||||
|
||||
&:disabled,
|
||||
&.disabled {
|
||||
pointer-events: none;
|
||||
user-select: none;
|
||||
opacity: $btn-close-disabled-opacity;
|
||||
opacity: var(--#{$prefix}btn-close-disabled-opacity);
|
||||
}
|
||||
}
|
||||
|
||||
.btn-close-white {
|
||||
filter: $btn-close-white-filter;
|
||||
@mixin btn-close-white() {
|
||||
--#{$prefix}btn-close-filter: #{$btn-close-filter-dark};
|
||||
}
|
||||
|
||||
.btn-close-white {
|
||||
@include btn-close-white();
|
||||
}
|
||||
|
||||
:root,
|
||||
[data-bs-theme="light"] {
|
||||
--#{$prefix}btn-close-filter: #{$btn-close-filter};
|
||||
}
|
||||
|
||||
@if $enable-dark-mode {
|
||||
@include color-mode(dark, true) {
|
||||
@include btn-close-white();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -184,6 +184,7 @@
|
||||
white-space: nowrap; // prevent links from randomly breaking onto new lines
|
||||
background-color: transparent; // For `<button>`s
|
||||
border: 0; // For `<button>`s
|
||||
@include border-radius(var(--#{$prefix}dropdown-item-border-radius, 0));
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
|
||||
@@ -157,7 +157,7 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003
|
||||
|
||||
@each $color in $foregrounds {
|
||||
$contrast-ratio: contrast-ratio($background, $color);
|
||||
@if $contrast-ratio > $min-contrast-ratio {
|
||||
@if $contrast-ratio >= $min-contrast-ratio {
|
||||
@return $color;
|
||||
} @else if $contrast-ratio > $max-ratio {
|
||||
$max-ratio: $contrast-ratio;
|
||||
@@ -177,7 +177,7 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003
|
||||
@return if($l1 > $l2, divide($l1 + .05, $l2 + .05), divide($l2 + .05, $l1 + .05));
|
||||
}
|
||||
|
||||
// Return WCAG2.1 relative luminance
|
||||
// Return WCAG2.2 relative luminance
|
||||
// See https://www.w3.org/TR/WCAG/#dfn-relative-luminance
|
||||
// See https://www.w3.org/TR/WCAG/#dfn-contrast-ratio
|
||||
@function luminance($color) {
|
||||
@@ -188,7 +188,7 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003
|
||||
);
|
||||
|
||||
@each $name, $value in $rgb {
|
||||
$value: if(divide($value, 255) < .03928, divide(divide($value, 255), 12.92), nth($_luminance-list, $value + 1));
|
||||
$value: if(divide($value, 255) < .04045, divide(divide($value, 255), 12.92), nth($_luminance-list, $value + 1));
|
||||
$rgb: map-merge($rgb, ($name: $value));
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,12 @@
|
||||
//
|
||||
// Rows contain your columns.
|
||||
|
||||
:root {
|
||||
@each $name, $value in $grid-breakpoints {
|
||||
--#{$prefix}breakpoint-#{$name}: #{$value};
|
||||
}
|
||||
}
|
||||
|
||||
@if $enable-grid-classes {
|
||||
.row {
|
||||
@include make-row();
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
@import "helpers/clearfix";
|
||||
@import "helpers/color-bg";
|
||||
@import "helpers/colored-links";
|
||||
@import "helpers/focus-ring";
|
||||
@import "helpers/icon-link";
|
||||
@import "helpers/ratio";
|
||||
@import "helpers/position";
|
||||
@import "helpers/stacks";
|
||||
|
||||
@@ -43,31 +43,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
// Interactive list items
|
||||
//
|
||||
// Use anchor or button elements instead of `li`s or `div`s to create interactive
|
||||
// list items. Includes an extra `.active` modifier class for selected items.
|
||||
|
||||
.list-group-item-action {
|
||||
width: 100%; // For `<button>`s (anchors become 100% by default though)
|
||||
color: var(--#{$prefix}list-group-action-color);
|
||||
text-align: inherit; // For `<button>`s (anchors inherit)
|
||||
|
||||
// Hover state
|
||||
&:hover,
|
||||
&:focus {
|
||||
z-index: 1; // Place hover/focus items above their siblings for proper border styling
|
||||
color: var(--#{$prefix}list-group-action-hover-color);
|
||||
text-decoration: none;
|
||||
background-color: var(--#{$prefix}list-group-action-hover-bg);
|
||||
}
|
||||
|
||||
&:active {
|
||||
color: var(--#{$prefix}list-group-action-active-color);
|
||||
background-color: var(--#{$prefix}list-group-action-active-bg);
|
||||
}
|
||||
}
|
||||
|
||||
// Individual list items
|
||||
//
|
||||
// Use on `li`s or `div`s within the `.list-group` parent.
|
||||
@@ -115,6 +90,33 @@
|
||||
}
|
||||
}
|
||||
|
||||
// Interactive list items
|
||||
//
|
||||
// Use anchor or button elements instead of `li`s or `div`s to create interactive
|
||||
// list items. Includes an extra `.active` modifier class for selected items.
|
||||
|
||||
.list-group-item-action {
|
||||
width: 100%; // For `<button>`s (anchors become 100% by default though)
|
||||
color: var(--#{$prefix}list-group-action-color);
|
||||
text-align: inherit; // For `<button>`s (anchors inherit)
|
||||
|
||||
&:not(.active) {
|
||||
// Hover state
|
||||
&:hover,
|
||||
&:focus {
|
||||
z-index: 1; // Place hover/focus items above their siblings for proper border styling
|
||||
color: var(--#{$prefix}list-group-action-hover-color);
|
||||
text-decoration: none;
|
||||
background-color: var(--#{$prefix}list-group-action-hover-bg);
|
||||
}
|
||||
|
||||
&:active {
|
||||
color: var(--#{$prefix}list-group-action-active-color);
|
||||
background-color: var(--#{$prefix}list-group-action-active-bg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Horizontal
|
||||
//
|
||||
// Change the layout of list group items from vertical (default) to horizontal.
|
||||
@@ -180,13 +182,18 @@
|
||||
// Add modifier classes to change text and background color on individual items.
|
||||
// Organizationally, this must come after the `:hover` states.
|
||||
|
||||
@each $state, $value in $theme-colors {
|
||||
$list-group-variant-bg: shift-color($value, $list-group-item-bg-scale);
|
||||
$list-group-variant-color: shift-color($value, $list-group-item-color-scale);
|
||||
@if (contrast-ratio($list-group-variant-bg, $list-group-variant-color) < $min-contrast-ratio) {
|
||||
$list-group-variant-color: mix($value, color-contrast($list-group-variant-bg), abs($list-group-item-color-scale));
|
||||
@each $state in map-keys($theme-colors) {
|
||||
.list-group-item-#{$state} {
|
||||
--#{$prefix}list-group-color: var(--#{$prefix}#{$state}-text-emphasis);
|
||||
--#{$prefix}list-group-bg: var(--#{$prefix}#{$state}-bg-subtle);
|
||||
--#{$prefix}list-group-border-color: var(--#{$prefix}#{$state}-border-subtle);
|
||||
--#{$prefix}list-group-action-hover-color: var(--#{$prefix}emphasis-color);
|
||||
--#{$prefix}list-group-action-hover-bg: var(--#{$prefix}#{$state}-border-subtle);
|
||||
--#{$prefix}list-group-action-active-color: var(--#{$prefix}emphasis-color);
|
||||
--#{$prefix}list-group-action-active-bg: var(--#{$prefix}#{$state}-border-subtle);
|
||||
--#{$prefix}list-group-active-color: var(--#{$prefix}#{$state}-bg-subtle);
|
||||
--#{$prefix}list-group-active-bg: var(--#{$prefix}#{$state}-text-emphasis);
|
||||
--#{$prefix}list-group-active-border-color: var(--#{$prefix}#{$state}-text-emphasis);
|
||||
}
|
||||
|
||||
@include list-group-item-variant($state, $list-group-variant-bg, $list-group-variant-color);
|
||||
}
|
||||
// scss-docs-end list-group-modifiers
|
||||
|
||||
@@ -6,6 +6,90 @@
|
||||
$theme-colors-rgb: map-loop($theme-colors, to-rgb, "$value") !default;
|
||||
// scss-docs-end theme-colors-rgb
|
||||
|
||||
// scss-docs-start theme-text-map
|
||||
$theme-colors-text: (
|
||||
"primary": $primary-text-emphasis,
|
||||
"secondary": $secondary-text-emphasis,
|
||||
"success": $success-text-emphasis,
|
||||
"info": $info-text-emphasis,
|
||||
"warning": $warning-text-emphasis,
|
||||
"danger": $danger-text-emphasis,
|
||||
"light": $light-text-emphasis,
|
||||
"dark": $dark-text-emphasis,
|
||||
) !default;
|
||||
// scss-docs-end theme-text-map
|
||||
|
||||
// scss-docs-start theme-bg-subtle-map
|
||||
$theme-colors-bg-subtle: (
|
||||
"primary": $primary-bg-subtle,
|
||||
"secondary": $secondary-bg-subtle,
|
||||
"success": $success-bg-subtle,
|
||||
"info": $info-bg-subtle,
|
||||
"warning": $warning-bg-subtle,
|
||||
"danger": $danger-bg-subtle,
|
||||
"light": $light-bg-subtle,
|
||||
"dark": $dark-bg-subtle,
|
||||
) !default;
|
||||
// scss-docs-end theme-bg-subtle-map
|
||||
|
||||
// scss-docs-start theme-border-subtle-map
|
||||
$theme-colors-border-subtle: (
|
||||
"primary": $primary-border-subtle,
|
||||
"secondary": $secondary-border-subtle,
|
||||
"success": $success-border-subtle,
|
||||
"info": $info-border-subtle,
|
||||
"warning": $warning-border-subtle,
|
||||
"danger": $danger-border-subtle,
|
||||
"light": $light-border-subtle,
|
||||
"dark": $dark-border-subtle,
|
||||
) !default;
|
||||
// scss-docs-end theme-border-subtle-map
|
||||
|
||||
$theme-colors-text-dark: null !default;
|
||||
$theme-colors-bg-subtle-dark: null !default;
|
||||
$theme-colors-border-subtle-dark: null !default;
|
||||
|
||||
@if $enable-dark-mode {
|
||||
// scss-docs-start theme-text-dark-map
|
||||
$theme-colors-text-dark: (
|
||||
"primary": $primary-text-emphasis-dark,
|
||||
"secondary": $secondary-text-emphasis-dark,
|
||||
"success": $success-text-emphasis-dark,
|
||||
"info": $info-text-emphasis-dark,
|
||||
"warning": $warning-text-emphasis-dark,
|
||||
"danger": $danger-text-emphasis-dark,
|
||||
"light": $light-text-emphasis-dark,
|
||||
"dark": $dark-text-emphasis-dark,
|
||||
) !default;
|
||||
// scss-docs-end theme-text-dark-map
|
||||
|
||||
// scss-docs-start theme-bg-subtle-dark-map
|
||||
$theme-colors-bg-subtle-dark: (
|
||||
"primary": $primary-bg-subtle-dark,
|
||||
"secondary": $secondary-bg-subtle-dark,
|
||||
"success": $success-bg-subtle-dark,
|
||||
"info": $info-bg-subtle-dark,
|
||||
"warning": $warning-bg-subtle-dark,
|
||||
"danger": $danger-bg-subtle-dark,
|
||||
"light": $light-bg-subtle-dark,
|
||||
"dark": $dark-bg-subtle-dark,
|
||||
) !default;
|
||||
// scss-docs-end theme-bg-subtle-dark-map
|
||||
|
||||
// scss-docs-start theme-border-subtle-dark-map
|
||||
$theme-colors-border-subtle-dark: (
|
||||
"primary": $primary-border-subtle-dark,
|
||||
"secondary": $secondary-border-subtle-dark,
|
||||
"success": $success-border-subtle-dark,
|
||||
"info": $info-border-subtle-dark,
|
||||
"warning": $warning-border-subtle-dark,
|
||||
"danger": $danger-border-subtle-dark,
|
||||
"light": $light-border-subtle-dark,
|
||||
"dark": $dark-border-subtle-dark,
|
||||
) !default;
|
||||
// scss-docs-end theme-border-subtle-dark-map
|
||||
}
|
||||
|
||||
// Utilities maps
|
||||
//
|
||||
// Extends the default `$theme-colors` maps to help create our utilities.
|
||||
@@ -25,6 +109,17 @@ $utilities-text: map-merge(
|
||||
)
|
||||
) !default;
|
||||
$utilities-text-colors: map-loop($utilities-text, rgba-css-var, "$key", "text") !default;
|
||||
|
||||
$utilities-text-emphasis-colors: (
|
||||
"primary-emphasis": var(--#{$prefix}primary-text-emphasis),
|
||||
"secondary-emphasis": var(--#{$prefix}secondary-text-emphasis),
|
||||
"success-emphasis": var(--#{$prefix}success-text-emphasis),
|
||||
"info-emphasis": var(--#{$prefix}info-text-emphasis),
|
||||
"warning-emphasis": var(--#{$prefix}warning-text-emphasis),
|
||||
"danger-emphasis": var(--#{$prefix}danger-text-emphasis),
|
||||
"light-emphasis": var(--#{$prefix}light-text-emphasis),
|
||||
"dark-emphasis": var(--#{$prefix}dark-text-emphasis)
|
||||
) !default;
|
||||
// scss-docs-end utilities-text-colors
|
||||
|
||||
// scss-docs-start utilities-bg-colors
|
||||
@@ -37,18 +132,43 @@ $utilities-bg: map-merge(
|
||||
)
|
||||
) !default;
|
||||
$utilities-bg-colors: map-loop($utilities-bg, rgba-css-var, "$key", "bg") !default;
|
||||
|
||||
$utilities-bg-subtle: (
|
||||
"primary-subtle": var(--#{$prefix}primary-bg-subtle),
|
||||
"secondary-subtle": var(--#{$prefix}secondary-bg-subtle),
|
||||
"success-subtle": var(--#{$prefix}success-bg-subtle),
|
||||
"info-subtle": var(--#{$prefix}info-bg-subtle),
|
||||
"warning-subtle": var(--#{$prefix}warning-bg-subtle),
|
||||
"danger-subtle": var(--#{$prefix}danger-bg-subtle),
|
||||
"light-subtle": var(--#{$prefix}light-bg-subtle),
|
||||
"dark-subtle": var(--#{$prefix}dark-bg-subtle)
|
||||
) !default;
|
||||
// scss-docs-end utilities-bg-colors
|
||||
|
||||
// scss-docs-start utilities-border-colors
|
||||
$utilities-border: map-merge(
|
||||
$utilities-colors,
|
||||
(
|
||||
"black": to-rgb($black),
|
||||
"white": to-rgb($white)
|
||||
)
|
||||
) !default;
|
||||
$utilities-border-colors: map-loop($utilities-border, rgba-css-var, "$key", "border") !default;
|
||||
|
||||
$utilities-border-subtle: (
|
||||
"primary-subtle": var(--#{$prefix}primary-border-subtle),
|
||||
"secondary-subtle": var(--#{$prefix}secondary-border-subtle),
|
||||
"success-subtle": var(--#{$prefix}success-border-subtle),
|
||||
"info-subtle": var(--#{$prefix}info-border-subtle),
|
||||
"warning-subtle": var(--#{$prefix}warning-border-subtle),
|
||||
"danger-subtle": var(--#{$prefix}danger-border-subtle),
|
||||
"light-subtle": var(--#{$prefix}light-border-subtle),
|
||||
"dark-subtle": var(--#{$prefix}dark-border-subtle)
|
||||
) !default;
|
||||
// scss-docs-end utilities-border-colors
|
||||
|
||||
$utilities-links-underline: map-loop($utilities-colors, rgba-css-var, "$key", "link-underline") !default;
|
||||
|
||||
$negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;
|
||||
|
||||
$gutters: $spacers !default;
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
// Helpers
|
||||
@import "mixins/breakpoints";
|
||||
@import "mixins/color-mode";
|
||||
@import "mixins/color-scheme";
|
||||
@import "mixins/image";
|
||||
@import "mixins/resize";
|
||||
@@ -21,13 +22,11 @@
|
||||
@import "mixins/utilities";
|
||||
|
||||
// Components
|
||||
@import "mixins/alert";
|
||||
@import "mixins/backdrop";
|
||||
@import "mixins/buttons";
|
||||
@import "mixins/caret";
|
||||
@import "mixins/pagination";
|
||||
@import "mixins/lists";
|
||||
@import "mixins/list-group";
|
||||
@import "mixins/forms";
|
||||
@import "mixins/table-variants";
|
||||
|
||||
|
||||
@@ -59,8 +59,8 @@
|
||||
|
||||
// When fading in the modal, animate it to slide down
|
||||
.modal.fade & {
|
||||
@include transition($modal-transition);
|
||||
transform: $modal-fade-transform;
|
||||
@include transition($modal-transition);
|
||||
}
|
||||
.modal.show & {
|
||||
transform: $modal-show-transform;
|
||||
@@ -126,14 +126,17 @@
|
||||
display: flex;
|
||||
flex-shrink: 0;
|
||||
align-items: center;
|
||||
justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends
|
||||
padding: var(--#{$prefix}modal-header-padding);
|
||||
border-bottom: var(--#{$prefix}modal-header-border-width) solid var(--#{$prefix}modal-header-border-color);
|
||||
@include border-top-radius(var(--#{$prefix}modal-inner-border-radius));
|
||||
|
||||
.btn-close {
|
||||
padding: calc(var(--#{$prefix}modal-header-padding-y) * .5) calc(var(--#{$prefix}modal-header-padding-x) * .5);
|
||||
margin: calc(-.5 * var(--#{$prefix}modal-header-padding-y)) calc(-.5 * var(--#{$prefix}modal-header-padding-x)) calc(-.5 * var(--#{$prefix}modal-header-padding-y)) auto;
|
||||
// Split properties to avoid invalid calc() function if value is 0
|
||||
margin-top: calc(-.5 * var(--#{$prefix}modal-header-padding-y));
|
||||
margin-right: calc(-.5 * var(--#{$prefix}modal-header-padding-x));
|
||||
margin-bottom: calc(-.5 * var(--#{$prefix}modal-header-padding-y));
|
||||
margin-left: auto;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
font-weight: var(--#{$prefix}nav-link-font-weight);
|
||||
color: var(--#{$prefix}nav-link-color);
|
||||
text-decoration: if($link-decoration == none, null, none);
|
||||
background: none;
|
||||
border: 0;
|
||||
@include transition($nav-link-transition);
|
||||
|
||||
&:hover,
|
||||
@@ -36,8 +38,14 @@
|
||||
text-decoration: if($link-hover-decoration == underline, none, null);
|
||||
}
|
||||
|
||||
&:focus-visible {
|
||||
outline: 0;
|
||||
box-shadow: $nav-link-focus-box-shadow;
|
||||
}
|
||||
|
||||
// Disabled state lightens text
|
||||
&.disabled {
|
||||
&.disabled,
|
||||
&:disabled {
|
||||
color: var(--#{$prefix}nav-link-disabled-color);
|
||||
pointer-events: none;
|
||||
cursor: default;
|
||||
@@ -63,7 +71,6 @@
|
||||
|
||||
.nav-link {
|
||||
margin-bottom: calc(-1 * var(--#{$prefix}nav-tabs-border-width)); // stylelint-disable-line function-disallowed-list
|
||||
background: none;
|
||||
border: var(--#{$prefix}nav-tabs-border-width) solid transparent;
|
||||
@include border-top-radius(var(--#{$prefix}nav-tabs-border-radius));
|
||||
|
||||
@@ -73,13 +80,6 @@
|
||||
isolation: isolate;
|
||||
border-color: var(--#{$prefix}nav-tabs-link-hover-border-color);
|
||||
}
|
||||
|
||||
&.disabled,
|
||||
&:disabled {
|
||||
color: var(--#{$prefix}nav-link-disabled-color);
|
||||
background-color: transparent;
|
||||
border-color: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
.nav-link.active,
|
||||
@@ -110,15 +110,7 @@
|
||||
// scss-docs-end nav-pills-css-vars
|
||||
|
||||
.nav-link {
|
||||
background: none;
|
||||
border: 0;
|
||||
@include border-radius(var(--#{$prefix}nav-pills-border-radius));
|
||||
|
||||
&:disabled {
|
||||
color: var(--#{$prefix}nav-link-disabled-color);
|
||||
background-color: transparent;
|
||||
border-color: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
.nav-link.active,
|
||||
@@ -129,6 +121,39 @@
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Underline
|
||||
//
|
||||
|
||||
.nav-underline {
|
||||
// scss-docs-start nav-underline-css-vars
|
||||
--#{$prefix}nav-underline-gap: #{$nav-underline-gap};
|
||||
--#{$prefix}nav-underline-border-width: #{$nav-underline-border-width};
|
||||
--#{$prefix}nav-underline-link-active-color: #{$nav-underline-link-active-color};
|
||||
// scss-docs-end nav-underline-css-vars
|
||||
|
||||
gap: var(--#{$prefix}nav-underline-gap);
|
||||
|
||||
.nav-link {
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
border-bottom: var(--#{$prefix}nav-underline-border-width) solid transparent;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
border-bottom-color: currentcolor;
|
||||
}
|
||||
}
|
||||
|
||||
.nav-link.active,
|
||||
.show > .nav-link {
|
||||
font-weight: $font-weight-bold;
|
||||
color: var(--#{$prefix}nav-underline-link-active-color);
|
||||
border-bottom-color: currentcolor;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Justified variants
|
||||
//
|
||||
@@ -144,8 +169,8 @@
|
||||
.nav-justified {
|
||||
> .nav-link,
|
||||
.nav-item {
|
||||
flex-basis: 0;
|
||||
flex-grow: 1;
|
||||
flex-basis: 0;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,9 +100,11 @@
|
||||
margin-bottom: 0;
|
||||
list-style: none;
|
||||
|
||||
.show > .nav-link,
|
||||
.nav-link.active {
|
||||
color: var(--#{$prefix}navbar-active-color);
|
||||
.nav-link {
|
||||
&.active,
|
||||
&.show {
|
||||
color: var(--#{$prefix}navbar-active-color);
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
@@ -137,8 +139,8 @@
|
||||
// the default flexbox row orientation. Requires the use of `flex-wrap: wrap`
|
||||
// on the `.navbar` parent.
|
||||
.navbar-collapse {
|
||||
flex-basis: 100%;
|
||||
flex-grow: 1;
|
||||
flex-basis: 100%;
|
||||
// For always expanded or extra full navbars, ensure content aligns itself
|
||||
// properly vertically. Can be easily overridden with flex utilities.
|
||||
align-items: center;
|
||||
@@ -264,7 +266,8 @@
|
||||
@include deprecate("`.navbar-light`", "v5.2.0", "v6.0.0", true);
|
||||
}
|
||||
|
||||
.navbar-dark {
|
||||
.navbar-dark,
|
||||
.navbar[data-bs-theme="dark"] {
|
||||
// scss-docs-start navbar-dark-css-vars
|
||||
--#{$prefix}navbar-color: #{$navbar-dark-color};
|
||||
--#{$prefix}navbar-hover-color: #{$navbar-dark-hover-color};
|
||||
@@ -276,3 +279,11 @@
|
||||
--#{$prefix}navbar-toggler-icon-bg: #{escape-svg($navbar-dark-toggler-icon-bg)};
|
||||
// scss-docs-end navbar-dark-css-vars
|
||||
}
|
||||
|
||||
@if $enable-dark-mode {
|
||||
@include color-mode(dark) {
|
||||
.navbar-toggler-icon {
|
||||
--#{$prefix}navbar-toggler-icon-bg: #{escape-svg($navbar-dark-toggler-icon-bg)};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
--#{$prefix}offcanvas-border-width: #{$offcanvas-border-width};
|
||||
--#{$prefix}offcanvas-border-color: #{$offcanvas-border-color};
|
||||
--#{$prefix}offcanvas-box-shadow: #{$offcanvas-box-shadow};
|
||||
--#{$prefix}offcanvas-transition: #{transform $offcanvas-transition-duration ease-in-out};
|
||||
--#{$prefix}offcanvas-title-line-height: #{$offcanvas-title-line-height};
|
||||
// scss-docs-end offcanvas-css-vars
|
||||
}
|
||||
|
||||
@@ -42,7 +44,7 @@
|
||||
background-clip: padding-box;
|
||||
outline: 0;
|
||||
@include box-shadow(var(--#{$prefix}offcanvas-box-shadow));
|
||||
@include transition(transform $offcanvas-transition-duration ease-in-out);
|
||||
@include transition(var(--#{$prefix}offcanvas-transition));
|
||||
|
||||
&.offcanvas-start {
|
||||
top: 0;
|
||||
@@ -121,20 +123,21 @@
|
||||
.offcanvas-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: var(--#{$prefix}offcanvas-padding-y) var(--#{$prefix}offcanvas-padding-x);
|
||||
|
||||
.btn-close {
|
||||
padding: calc(var(--#{$prefix}offcanvas-padding-y) * .5) calc(var(--#{$prefix}offcanvas-padding-x) * .5);
|
||||
// Split properties to avoid invalid calc() function if value is 0
|
||||
margin-top: calc(-.5 * var(--#{$prefix}offcanvas-padding-y));
|
||||
margin-right: calc(-.5 * var(--#{$prefix}offcanvas-padding-x));
|
||||
margin-bottom: calc(-.5 * var(--#{$prefix}offcanvas-padding-y));
|
||||
margin-left: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.offcanvas-title {
|
||||
margin-bottom: 0;
|
||||
line-height: $offcanvas-title-line-height;
|
||||
line-height: var(--#{$prefix}offcanvas-title-line-height);
|
||||
}
|
||||
|
||||
.offcanvas-body {
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
margin-left: $pagination-margin-start;
|
||||
}
|
||||
|
||||
@if $pagination-margin-start == ($pagination-border-width * -1) {
|
||||
@if $pagination-margin-start == calc(-1 * #{$pagination-border-width}) {
|
||||
&:first-child {
|
||||
.page-link {
|
||||
@include border-start-radius(var(--#{$prefix}pagination-border-radius));
|
||||
|
||||
@@ -3,12 +3,13 @@
|
||||
// scss-docs-start progress-keyframes
|
||||
@if $enable-transitions {
|
||||
@keyframes progress-bar-stripes {
|
||||
0% { background-position-x: $progress-height; }
|
||||
0% { background-position-x: var(--#{$prefix}progress-height); }
|
||||
}
|
||||
}
|
||||
// scss-docs-end progress-keyframes
|
||||
|
||||
.progress {
|
||||
.progress,
|
||||
.progress-stacked {
|
||||
// scss-docs-start progress-css-vars
|
||||
--#{$prefix}progress-height: #{$progress-height};
|
||||
@include rfs($progress-font-size, --#{$prefix}progress-font-size);
|
||||
@@ -46,6 +47,14 @@
|
||||
background-size: var(--#{$prefix}progress-height) var(--#{$prefix}progress-height);
|
||||
}
|
||||
|
||||
.progress-stacked > .progress {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.progress-stacked > .progress > .progress-bar {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@if $enable-transitions {
|
||||
.progress-bar-animated {
|
||||
animation: $progress-bar-animation-timing progress-bar-stripes;
|
||||
|
||||
@@ -87,7 +87,7 @@ hr {
|
||||
font-style: $headings-font-style;
|
||||
font-weight: $headings-font-weight;
|
||||
line-height: $headings-line-height;
|
||||
color: $headings-color;
|
||||
color: var(--#{$prefix}heading-color);
|
||||
}
|
||||
|
||||
h1 {
|
||||
@@ -217,6 +217,7 @@ small {
|
||||
|
||||
mark {
|
||||
padding: $mark-padding;
|
||||
color: var(--#{$prefix}highlight-color);
|
||||
background-color: var(--#{$prefix}highlight-bg);
|
||||
}
|
||||
|
||||
@@ -241,11 +242,11 @@ sup { top: -.5em; }
|
||||
// Links
|
||||
|
||||
a {
|
||||
color: var(--#{$prefix}link-color);
|
||||
color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, 1));
|
||||
text-decoration: $link-decoration;
|
||||
|
||||
&:hover {
|
||||
color: var(--#{$prefix}link-hover-color);
|
||||
--#{$prefix}link-color-rgb: var(--#{$prefix}link-hover-color-rgb);
|
||||
text-decoration: $link-hover-decoration;
|
||||
}
|
||||
}
|
||||
@@ -498,9 +499,9 @@ legend {
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
margin-bottom: $legend-margin-bottom;
|
||||
@include font-size($legend-font-size);
|
||||
font-weight: $legend-font-weight;
|
||||
line-height: inherit;
|
||||
@include font-size($legend-font-size);
|
||||
|
||||
+ * {
|
||||
clear: left; // 2
|
||||
@@ -524,15 +525,21 @@ legend {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
// 1. Correct the outline style in Safari.
|
||||
// 2. This overrides the extra rounded corners on search inputs in iOS so that our
|
||||
// 1. This overrides the extra rounded corners on search inputs in iOS so that our
|
||||
// `.form-control` class can properly style them. Note that this cannot simply
|
||||
// be added to `.form-control` as it's not specific enough. For details, see
|
||||
// https://github.com/twbs/bootstrap/issues/11586.
|
||||
// 2. Correct the outline style in Safari.
|
||||
|
||||
[type="search"] {
|
||||
outline-offset: -2px; // 1
|
||||
-webkit-appearance: textfield; // 2
|
||||
-webkit-appearance: textfield; // 1
|
||||
outline-offset: -2px; // 2
|
||||
|
||||
// 3. Better affordance and consistent appearance for search cancel button
|
||||
&::-webkit-search-cancel-button {
|
||||
cursor: pointer;
|
||||
filter: grayscale(1);
|
||||
}
|
||||
}
|
||||
|
||||
// 1. A few input types should stay LTR
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
:root {
|
||||
:root,
|
||||
[data-bs-theme="light"] {
|
||||
// Note: Custom variable values only support SassScript inside `#{}`.
|
||||
|
||||
// Colors
|
||||
@@ -21,10 +22,20 @@
|
||||
--#{$prefix}#{$color}-rgb: #{$value};
|
||||
}
|
||||
|
||||
@each $color, $value in $theme-colors-text {
|
||||
--#{$prefix}#{$color}-text-emphasis: #{$value};
|
||||
}
|
||||
|
||||
@each $color, $value in $theme-colors-bg-subtle {
|
||||
--#{$prefix}#{$color}-bg-subtle: #{$value};
|
||||
}
|
||||
|
||||
@each $color, $value in $theme-colors-border-subtle {
|
||||
--#{$prefix}#{$color}-border-subtle: #{$value};
|
||||
}
|
||||
|
||||
--#{$prefix}white-rgb: #{to-rgb($white)};
|
||||
--#{$prefix}black-rgb: #{to-rgb($black)};
|
||||
--#{$prefix}body-color-rgb: #{to-rgb($body-color)};
|
||||
--#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};
|
||||
|
||||
// Fonts
|
||||
|
||||
@@ -39,17 +50,50 @@
|
||||
@if $font-size-root != null {
|
||||
--#{$prefix}root-font-size: #{$font-size-root};
|
||||
}
|
||||
--#{$prefix}body-font-family: #{$font-family-base};
|
||||
--#{$prefix}body-font-family: #{inspect($font-family-base)};
|
||||
@include rfs($font-size-base, --#{$prefix}body-font-size);
|
||||
--#{$prefix}body-font-weight: #{$font-weight-base};
|
||||
--#{$prefix}body-line-height: #{$line-height-base};
|
||||
--#{$prefix}body-color: #{$body-color};
|
||||
@if $body-text-align != null {
|
||||
--#{$prefix}body-text-align: #{$body-text-align};
|
||||
}
|
||||
|
||||
--#{$prefix}body-color: #{$body-color};
|
||||
--#{$prefix}body-color-rgb: #{to-rgb($body-color)};
|
||||
--#{$prefix}body-bg: #{$body-bg};
|
||||
--#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};
|
||||
|
||||
--#{$prefix}emphasis-color: #{$body-emphasis-color};
|
||||
--#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};
|
||||
|
||||
--#{$prefix}secondary-color: #{$body-secondary-color};
|
||||
--#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};
|
||||
--#{$prefix}secondary-bg: #{$body-secondary-bg};
|
||||
--#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};
|
||||
|
||||
--#{$prefix}tertiary-color: #{$body-tertiary-color};
|
||||
--#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};
|
||||
--#{$prefix}tertiary-bg: #{$body-tertiary-bg};
|
||||
--#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};
|
||||
// scss-docs-end root-body-variables
|
||||
|
||||
--#{$prefix}heading-color: #{$headings-color};
|
||||
|
||||
--#{$prefix}link-color: #{$link-color};
|
||||
--#{$prefix}link-color-rgb: #{to-rgb($link-color)};
|
||||
--#{$prefix}link-decoration: #{$link-decoration};
|
||||
|
||||
--#{$prefix}link-hover-color: #{$link-hover-color};
|
||||
--#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};
|
||||
|
||||
@if $link-hover-decoration != null {
|
||||
--#{$prefix}link-hover-decoration: #{$link-hover-decoration};
|
||||
}
|
||||
|
||||
--#{$prefix}code-color: #{$code-color};
|
||||
--#{$prefix}highlight-color: #{$mark-color};
|
||||
--#{$prefix}highlight-bg: #{$mark-bg};
|
||||
|
||||
// scss-docs-start root-border-var
|
||||
--#{$prefix}border-width: #{$border-width};
|
||||
--#{$prefix}border-style: #{$border-style};
|
||||
@@ -60,14 +104,84 @@
|
||||
--#{$prefix}border-radius-sm: #{$border-radius-sm};
|
||||
--#{$prefix}border-radius-lg: #{$border-radius-lg};
|
||||
--#{$prefix}border-radius-xl: #{$border-radius-xl};
|
||||
--#{$prefix}border-radius-2xl: #{$border-radius-2xl};
|
||||
--#{$prefix}border-radius-xxl: #{$border-radius-xxl};
|
||||
--#{$prefix}border-radius-2xl: var(--#{$prefix}border-radius-xxl); // Deprecated in v5.3.0 for consistency
|
||||
--#{$prefix}border-radius-pill: #{$border-radius-pill};
|
||||
// scss-docs-end root-border-var
|
||||
|
||||
--#{$prefix}link-color: #{$link-color};
|
||||
--#{$prefix}link-hover-color: #{$link-hover-color};
|
||||
--#{$prefix}box-shadow: #{$box-shadow};
|
||||
--#{$prefix}box-shadow-sm: #{$box-shadow-sm};
|
||||
--#{$prefix}box-shadow-lg: #{$box-shadow-lg};
|
||||
--#{$prefix}box-shadow-inset: #{$box-shadow-inset};
|
||||
|
||||
--#{$prefix}code-color: #{$code-color};
|
||||
// Focus styles
|
||||
// scss-docs-start root-focus-variables
|
||||
--#{$prefix}focus-ring-width: #{$focus-ring-width};
|
||||
--#{$prefix}focus-ring-opacity: #{$focus-ring-opacity};
|
||||
--#{$prefix}focus-ring-color: #{$focus-ring-color};
|
||||
// scss-docs-end root-focus-variables
|
||||
|
||||
--#{$prefix}highlight-bg: #{$mark-bg};
|
||||
// scss-docs-start root-form-validation-variables
|
||||
--#{$prefix}form-valid-color: #{$form-valid-color};
|
||||
--#{$prefix}form-valid-border-color: #{$form-valid-border-color};
|
||||
--#{$prefix}form-invalid-color: #{$form-invalid-color};
|
||||
--#{$prefix}form-invalid-border-color: #{$form-invalid-border-color};
|
||||
// scss-docs-end root-form-validation-variables
|
||||
}
|
||||
|
||||
@if $enable-dark-mode {
|
||||
@include color-mode(dark, true) {
|
||||
color-scheme: dark;
|
||||
|
||||
// scss-docs-start root-dark-mode-vars
|
||||
--#{$prefix}body-color: #{$body-color-dark};
|
||||
--#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};
|
||||
--#{$prefix}body-bg: #{$body-bg-dark};
|
||||
--#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};
|
||||
|
||||
--#{$prefix}emphasis-color: #{$body-emphasis-color-dark};
|
||||
--#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};
|
||||
|
||||
--#{$prefix}secondary-color: #{$body-secondary-color-dark};
|
||||
--#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};
|
||||
--#{$prefix}secondary-bg: #{$body-secondary-bg-dark};
|
||||
--#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};
|
||||
|
||||
--#{$prefix}tertiary-color: #{$body-tertiary-color-dark};
|
||||
--#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};
|
||||
--#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};
|
||||
--#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};
|
||||
|
||||
@each $color, $value in $theme-colors-text-dark {
|
||||
--#{$prefix}#{$color}-text-emphasis: #{$value};
|
||||
}
|
||||
|
||||
@each $color, $value in $theme-colors-bg-subtle-dark {
|
||||
--#{$prefix}#{$color}-bg-subtle: #{$value};
|
||||
}
|
||||
|
||||
@each $color, $value in $theme-colors-border-subtle-dark {
|
||||
--#{$prefix}#{$color}-border-subtle: #{$value};
|
||||
}
|
||||
|
||||
--#{$prefix}heading-color: #{$headings-color-dark};
|
||||
|
||||
--#{$prefix}link-color: #{$link-color-dark};
|
||||
--#{$prefix}link-hover-color: #{$link-hover-color-dark};
|
||||
--#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};
|
||||
--#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};
|
||||
|
||||
--#{$prefix}code-color: #{$code-color-dark};
|
||||
--#{$prefix}highlight-color: #{$mark-color-dark};
|
||||
--#{$prefix}highlight-bg: #{$mark-bg-dark};
|
||||
|
||||
--#{$prefix}border-color: #{$border-color-dark};
|
||||
--#{$prefix}border-color-translucent: #{$border-color-translucent-dark};
|
||||
|
||||
--#{$prefix}form-valid-color: #{$form-valid-color-dark};
|
||||
--#{$prefix}form-valid-border-color: #{$form-valid-border-color-dark};
|
||||
--#{$prefix}form-invalid-color: #{$form-invalid-color-dark};
|
||||
--#{$prefix}form-invalid-border-color: #{$form-invalid-border-color-dark};
|
||||
// scss-docs-end root-dark-mode-vars
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
.spinner-grow,
|
||||
.spinner-border {
|
||||
display: inline-block;
|
||||
flex-shrink: 0;
|
||||
width: var(--#{$prefix}spinner-width);
|
||||
height: var(--#{$prefix}spinner-height);
|
||||
vertical-align: var(--#{$prefix}spinner-vertical-align);
|
||||
|
||||
@@ -3,6 +3,12 @@
|
||||
//
|
||||
|
||||
.table {
|
||||
// Reset needed for nesting tables
|
||||
--#{$prefix}table-color-type: initial;
|
||||
--#{$prefix}table-bg-type: initial;
|
||||
--#{$prefix}table-color-state: initial;
|
||||
--#{$prefix}table-bg-state: initial;
|
||||
// End of reset
|
||||
--#{$prefix}table-color: #{$table-color};
|
||||
--#{$prefix}table-bg: #{$table-bg};
|
||||
--#{$prefix}table-border-color: #{$table-border-color};
|
||||
@@ -16,7 +22,6 @@
|
||||
|
||||
width: 100%;
|
||||
margin-bottom: $spacer;
|
||||
color: var(--#{$prefix}table-color);
|
||||
vertical-align: $table-cell-vertical-align;
|
||||
border-color: var(--#{$prefix}table-border-color);
|
||||
|
||||
@@ -27,9 +32,11 @@
|
||||
// stylelint-disable-next-line selector-max-universal
|
||||
> :not(caption) > * > * {
|
||||
padding: $table-cell-padding-y $table-cell-padding-x;
|
||||
// Following the precept of cascades: https://codepen.io/miriamsuzanne/full/vYNgodb
|
||||
color: var(--#{$prefix}table-color-state, var(--#{$prefix}table-color-type, var(--#{$prefix}table-color)));
|
||||
background-color: var(--#{$prefix}table-bg);
|
||||
border-bottom-width: $table-border-width;
|
||||
box-shadow: inset 0 0 0 9999px var(--#{$prefix}table-accent-bg);
|
||||
box-shadow: inset 0 0 0 9999px var(--#{$prefix}table-bg-state, var(--#{$prefix}table-bg-type, var(--#{$prefix}table-accent-bg)));
|
||||
}
|
||||
|
||||
> tbody {
|
||||
@@ -42,7 +49,7 @@
|
||||
}
|
||||
|
||||
.table-group-divider {
|
||||
border-top: ($table-border-width * 2) solid $table-group-separator-color;
|
||||
border-top: calc(#{$table-border-width} * 2) solid $table-group-separator-color; // stylelint-disable-line function-disallowed-list
|
||||
}
|
||||
|
||||
//
|
||||
@@ -72,7 +79,7 @@
|
||||
//
|
||||
// When borders are added on all sides of the cells, the corners can render odd when
|
||||
// these borders do not have the same color or if they are semi-transparent.
|
||||
// Therefor we add top and border bottoms to the `tr`s and left and right borders
|
||||
// Therefore we add top and border bottoms to the `tr`s and left and right borders
|
||||
// to the `td`s or `th`s
|
||||
|
||||
.table-bordered {
|
||||
@@ -104,16 +111,16 @@
|
||||
// For rows
|
||||
.table-striped {
|
||||
> tbody > tr:nth-of-type(#{$table-striped-order}) > * {
|
||||
--#{$prefix}table-accent-bg: var(--#{$prefix}table-striped-bg);
|
||||
color: var(--#{$prefix}table-striped-color);
|
||||
--#{$prefix}table-color-type: var(--#{$prefix}table-striped-color);
|
||||
--#{$prefix}table-bg-type: var(--#{$prefix}table-striped-bg);
|
||||
}
|
||||
}
|
||||
|
||||
// For columns
|
||||
.table-striped-columns {
|
||||
> :not(caption) > tr > :nth-child(#{$table-striped-columns-order}) {
|
||||
--#{$prefix}table-accent-bg: var(--#{$prefix}table-striped-bg);
|
||||
color: var(--#{$prefix}table-striped-color);
|
||||
--#{$prefix}table-color-type: var(--#{$prefix}table-striped-color);
|
||||
--#{$prefix}table-bg-type: var(--#{$prefix}table-striped-bg);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -122,8 +129,8 @@
|
||||
// The `.table-active` class can be added to highlight rows or cells
|
||||
|
||||
.table-active {
|
||||
--#{$prefix}table-accent-bg: var(--#{$prefix}table-active-bg);
|
||||
color: var(--#{$prefix}table-active-color);
|
||||
--#{$prefix}table-color-state: var(--#{$prefix}table-active-color);
|
||||
--#{$prefix}table-bg-state: var(--#{$prefix}table-active-bg);
|
||||
}
|
||||
|
||||
// Hover effect
|
||||
@@ -132,8 +139,8 @@
|
||||
|
||||
.table-hover {
|
||||
> tbody > tr:hover > * {
|
||||
--#{$prefix}table-accent-bg: var(--#{$prefix}table-hover-bg);
|
||||
color: var(--#{$prefix}table-hover-color);
|
||||
--#{$prefix}table-color-state: var(--#{$prefix}table-hover-color);
|
||||
--#{$prefix}table-bg-state: var(--#{$prefix}table-hover-bg);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
|
||||
z-index: var(--#{$prefix}tooltip-zindex);
|
||||
display: block;
|
||||
padding: var(--#{$prefix}tooltip-arrow-height);
|
||||
margin: var(--#{$prefix}tooltip-margin);
|
||||
@include deprecate("`$tooltip-margin`", "v5", "v5.x", true);
|
||||
// Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
|
||||
@@ -45,7 +44,7 @@
|
||||
}
|
||||
|
||||
.bs-tooltip-top .tooltip-arrow {
|
||||
bottom: 0;
|
||||
bottom: calc(-1 * var(--#{$prefix}tooltip-arrow-height)); // stylelint-disable-line function-disallowed-list
|
||||
|
||||
&::before {
|
||||
top: -1px;
|
||||
@@ -56,7 +55,7 @@
|
||||
|
||||
/* rtl:begin:ignore */
|
||||
.bs-tooltip-end .tooltip-arrow {
|
||||
left: 0;
|
||||
left: calc(-1 * var(--#{$prefix}tooltip-arrow-height)); // stylelint-disable-line function-disallowed-list
|
||||
width: var(--#{$prefix}tooltip-arrow-height);
|
||||
height: var(--#{$prefix}tooltip-arrow-width);
|
||||
|
||||
@@ -70,7 +69,7 @@
|
||||
/* rtl:end:ignore */
|
||||
|
||||
.bs-tooltip-bottom .tooltip-arrow {
|
||||
top: 0;
|
||||
top: calc(-1 * var(--#{$prefix}tooltip-arrow-height)); // stylelint-disable-line function-disallowed-list
|
||||
|
||||
&::before {
|
||||
bottom: -1px;
|
||||
@@ -81,7 +80,7 @@
|
||||
|
||||
/* rtl:begin:ignore */
|
||||
.bs-tooltip-start .tooltip-arrow {
|
||||
right: 0;
|
||||
right: calc(-1 * var(--#{$prefix}tooltip-arrow-height)); // stylelint-disable-line function-disallowed-list
|
||||
width: var(--#{$prefix}tooltip-arrow-height);
|
||||
height: var(--#{$prefix}tooltip-arrow-width);
|
||||
|
||||
|
||||
@@ -34,11 +34,11 @@
|
||||
// Type display classes
|
||||
@each $display, $font-size in $display-font-sizes {
|
||||
.display-#{$display} {
|
||||
@include font-size($font-size);
|
||||
font-family: $display-font-family;
|
||||
font-style: $display-font-style;
|
||||
font-weight: $display-font-weight;
|
||||
line-height: $display-line-height;
|
||||
@include font-size($font-size);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,20 @@ $utilities: map-merge(
|
||||
)
|
||||
),
|
||||
// scss-docs-end utils-float
|
||||
// Object Fit utilities
|
||||
// scss-docs-start utils-object-fit
|
||||
"object-fit": (
|
||||
responsive: true,
|
||||
property: object-fit,
|
||||
values: (
|
||||
contain: contain,
|
||||
cover: cover,
|
||||
fill: fill,
|
||||
scale: scale-down,
|
||||
none: none,
|
||||
)
|
||||
),
|
||||
// scss-docs-end utils-object-fit
|
||||
// Opacity utilities
|
||||
// scss-docs-start utils-opacity
|
||||
"opacity": (
|
||||
@@ -40,6 +54,14 @@ $utilities: map-merge(
|
||||
property: overflow,
|
||||
values: auto hidden visible scroll,
|
||||
),
|
||||
"overflow-x": (
|
||||
property: overflow-x,
|
||||
values: auto hidden visible scroll,
|
||||
),
|
||||
"overflow-y": (
|
||||
property: overflow-y,
|
||||
values: auto hidden visible scroll,
|
||||
),
|
||||
// scss-docs-end utils-overflow
|
||||
// scss-docs-start utils-display
|
||||
"display": (
|
||||
@@ -47,7 +69,7 @@ $utilities: map-merge(
|
||||
print: true,
|
||||
property: display,
|
||||
class: d,
|
||||
values: inline inline-block block grid table table-row table-cell flex inline-flex none
|
||||
values: inline inline-block block grid inline-grid table table-row table-cell flex inline-flex none
|
||||
),
|
||||
// scss-docs-end utils-display
|
||||
// scss-docs-start utils-shadow
|
||||
@@ -55,13 +77,21 @@ $utilities: map-merge(
|
||||
property: box-shadow,
|
||||
class: shadow,
|
||||
values: (
|
||||
null: $box-shadow,
|
||||
sm: $box-shadow-sm,
|
||||
lg: $box-shadow-lg,
|
||||
null: var(--#{$prefix}box-shadow),
|
||||
sm: var(--#{$prefix}box-shadow-sm),
|
||||
lg: var(--#{$prefix}box-shadow-lg),
|
||||
none: none,
|
||||
)
|
||||
),
|
||||
// scss-docs-end utils-shadow
|
||||
// scss-docs-start utils-focus-ring
|
||||
"focus-ring": (
|
||||
css-var: true,
|
||||
css-variable-name: focus-ring-color,
|
||||
class: focus-ring,
|
||||
values: map-loop($theme-colors-rgb, rgba-css-var, "$key", "focus-ring")
|
||||
),
|
||||
// scss-docs-end utils-focus-ring
|
||||
// scss-docs-start utils-position
|
||||
"position": (
|
||||
property: position,
|
||||
@@ -141,9 +171,13 @@ $utilities: map-merge(
|
||||
),
|
||||
values: $utilities-border-colors
|
||||
),
|
||||
"subtle-border-color": (
|
||||
property: border-color,
|
||||
class: border,
|
||||
values: $utilities-border-subtle
|
||||
),
|
||||
"border-width": (
|
||||
css-var: true,
|
||||
css-variable-name: border-width,
|
||||
property: border-width,
|
||||
class: border,
|
||||
values: $border-widths
|
||||
),
|
||||
@@ -450,6 +484,18 @@ $utilities: map-merge(
|
||||
class: gap,
|
||||
values: $spacers
|
||||
),
|
||||
"row-gap": (
|
||||
responsive: true,
|
||||
property: row-gap,
|
||||
class: row-gap,
|
||||
values: $spacers
|
||||
),
|
||||
"column-gap": (
|
||||
responsive: true,
|
||||
property: column-gap,
|
||||
class: column-gap,
|
||||
values: $spacers
|
||||
),
|
||||
// scss-docs-end utils-spacing
|
||||
// Text
|
||||
// scss-docs-start utils-text
|
||||
@@ -473,11 +519,12 @@ $utilities: map-merge(
|
||||
property: font-weight,
|
||||
class: fw,
|
||||
values: (
|
||||
light: $font-weight-light,
|
||||
lighter: $font-weight-lighter,
|
||||
light: $font-weight-light,
|
||||
normal: $font-weight-normal,
|
||||
bold: $font-weight-bold,
|
||||
medium: $font-weight-medium,
|
||||
semibold: $font-weight-semibold,
|
||||
bold: $font-weight-bold,
|
||||
bolder: $font-weight-bolder
|
||||
)
|
||||
),
|
||||
@@ -535,9 +582,12 @@ $utilities: map-merge(
|
||||
values: map-merge(
|
||||
$utilities-text-colors,
|
||||
(
|
||||
"muted": $text-muted,
|
||||
"muted": var(--#{$prefix}secondary-color), // deprecated
|
||||
"black-50": rgba($black, .5), // deprecated
|
||||
"white-50": rgba($white, .5), // deprecated
|
||||
"body-secondary": var(--#{$prefix}secondary-color),
|
||||
"body-tertiary": var(--#{$prefix}tertiary-color),
|
||||
"body-emphasis": var(--#{$prefix}emphasis-color),
|
||||
"reset": inherit,
|
||||
)
|
||||
)
|
||||
@@ -552,7 +602,62 @@ $utilities: map-merge(
|
||||
100: 1
|
||||
)
|
||||
),
|
||||
"text-color": (
|
||||
property: color,
|
||||
class: text,
|
||||
values: $utilities-text-emphasis-colors
|
||||
),
|
||||
// scss-docs-end utils-color
|
||||
// scss-docs-start utils-links
|
||||
"link-opacity": (
|
||||
css-var: true,
|
||||
class: link-opacity,
|
||||
state: hover,
|
||||
values: (
|
||||
10: .1,
|
||||
25: .25,
|
||||
50: .5,
|
||||
75: .75,
|
||||
100: 1
|
||||
)
|
||||
),
|
||||
"link-offset": (
|
||||
property: text-underline-offset,
|
||||
class: link-offset,
|
||||
state: hover,
|
||||
values: (
|
||||
1: .125em,
|
||||
2: .25em,
|
||||
3: .375em,
|
||||
)
|
||||
),
|
||||
"link-underline": (
|
||||
property: text-decoration-color,
|
||||
class: link-underline,
|
||||
local-vars: (
|
||||
"link-underline-opacity": 1
|
||||
),
|
||||
values: map-merge(
|
||||
$utilities-links-underline,
|
||||
(
|
||||
null: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-underline-opacity, 1)),
|
||||
)
|
||||
)
|
||||
),
|
||||
"link-underline-opacity": (
|
||||
css-var: true,
|
||||
class: link-underline-opacity,
|
||||
state: hover,
|
||||
values: (
|
||||
0: 0,
|
||||
10: .1,
|
||||
25: .25,
|
||||
50: .5,
|
||||
75: .75,
|
||||
100: 1
|
||||
),
|
||||
),
|
||||
// scss-docs-end utils-links
|
||||
// scss-docs-start utils-bg-color
|
||||
"background-color": (
|
||||
property: background-color,
|
||||
@@ -563,7 +668,9 @@ $utilities: map-merge(
|
||||
values: map-merge(
|
||||
$utilities-bg-colors,
|
||||
(
|
||||
"transparent": transparent
|
||||
"transparent": transparent,
|
||||
"body-secondary": rgba(var(--#{$prefix}secondary-bg-rgb), var(--#{$prefix}bg-opacity)),
|
||||
"body-tertiary": rgba(var(--#{$prefix}tertiary-bg-rgb), var(--#{$prefix}bg-opacity)),
|
||||
)
|
||||
)
|
||||
),
|
||||
@@ -578,6 +685,11 @@ $utilities: map-merge(
|
||||
100: 1
|
||||
)
|
||||
),
|
||||
"subtle-background-color": (
|
||||
property: background-color,
|
||||
class: bg,
|
||||
values: $utilities-bg-subtle
|
||||
),
|
||||
// scss-docs-end utils-bg-color
|
||||
"gradient": (
|
||||
property: background-image,
|
||||
@@ -606,7 +718,7 @@ $utilities: map-merge(
|
||||
2: var(--#{$prefix}border-radius),
|
||||
3: var(--#{$prefix}border-radius-lg),
|
||||
4: var(--#{$prefix}border-radius-xl),
|
||||
5: var(--#{$prefix}border-radius-2xl),
|
||||
5: var(--#{$prefix}border-radius-xxl),
|
||||
circle: 50%,
|
||||
pill: var(--#{$prefix}border-radius-pill)
|
||||
)
|
||||
@@ -614,22 +726,62 @@ $utilities: map-merge(
|
||||
"rounded-top": (
|
||||
property: border-top-left-radius border-top-right-radius,
|
||||
class: rounded-top,
|
||||
values: (null: var(--#{$prefix}border-radius))
|
||||
values: (
|
||||
null: var(--#{$prefix}border-radius),
|
||||
0: 0,
|
||||
1: var(--#{$prefix}border-radius-sm),
|
||||
2: var(--#{$prefix}border-radius),
|
||||
3: var(--#{$prefix}border-radius-lg),
|
||||
4: var(--#{$prefix}border-radius-xl),
|
||||
5: var(--#{$prefix}border-radius-xxl),
|
||||
circle: 50%,
|
||||
pill: var(--#{$prefix}border-radius-pill)
|
||||
)
|
||||
),
|
||||
"rounded-end": (
|
||||
property: border-top-right-radius border-bottom-right-radius,
|
||||
class: rounded-end,
|
||||
values: (null: var(--#{$prefix}border-radius))
|
||||
values: (
|
||||
null: var(--#{$prefix}border-radius),
|
||||
0: 0,
|
||||
1: var(--#{$prefix}border-radius-sm),
|
||||
2: var(--#{$prefix}border-radius),
|
||||
3: var(--#{$prefix}border-radius-lg),
|
||||
4: var(--#{$prefix}border-radius-xl),
|
||||
5: var(--#{$prefix}border-radius-xxl),
|
||||
circle: 50%,
|
||||
pill: var(--#{$prefix}border-radius-pill)
|
||||
)
|
||||
),
|
||||
"rounded-bottom": (
|
||||
property: border-bottom-right-radius border-bottom-left-radius,
|
||||
class: rounded-bottom,
|
||||
values: (null: var(--#{$prefix}border-radius))
|
||||
values: (
|
||||
null: var(--#{$prefix}border-radius),
|
||||
0: 0,
|
||||
1: var(--#{$prefix}border-radius-sm),
|
||||
2: var(--#{$prefix}border-radius),
|
||||
3: var(--#{$prefix}border-radius-lg),
|
||||
4: var(--#{$prefix}border-radius-xl),
|
||||
5: var(--#{$prefix}border-radius-xxl),
|
||||
circle: 50%,
|
||||
pill: var(--#{$prefix}border-radius-pill)
|
||||
)
|
||||
),
|
||||
"rounded-start": (
|
||||
property: border-bottom-left-radius border-top-left-radius,
|
||||
class: rounded-start,
|
||||
values: (null: var(--#{$prefix}border-radius))
|
||||
values: (
|
||||
null: var(--#{$prefix}border-radius),
|
||||
0: 0,
|
||||
1: var(--#{$prefix}border-radius-sm),
|
||||
2: var(--#{$prefix}border-radius),
|
||||
3: var(--#{$prefix}border-radius-lg),
|
||||
4: var(--#{$prefix}border-radius-xl),
|
||||
5: var(--#{$prefix}border-radius-xxl),
|
||||
circle: 50%,
|
||||
pill: var(--#{$prefix}border-radius-pill)
|
||||
)
|
||||
),
|
||||
// scss-docs-end utils-border-radius
|
||||
// scss-docs-start utils-visibility
|
||||
@@ -640,8 +792,15 @@ $utilities: map-merge(
|
||||
visible: visible,
|
||||
invisible: hidden,
|
||||
)
|
||||
)
|
||||
),
|
||||
// scss-docs-end utils-visibility
|
||||
// scss-docs-start utils-zindex
|
||||
"z-index": (
|
||||
property: z-index,
|
||||
class: z,
|
||||
values: $zindex-levels,
|
||||
)
|
||||
// scss-docs-end utils-zindex
|
||||
),
|
||||
$utilities
|
||||
);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user