This commit is contained in:
2025-02-26 14:53:02 +08:00
commit 0c985bcd3f
693 changed files with 69501 additions and 0 deletions

View File

@@ -0,0 +1,457 @@
/* _content/Blazor.Bootstrap/Components/Callout/Callout.razor.rz.scp.css */
.bb-callout[b-5p9xdwo7e3] {
--bs-link-color-rgb: var(--bb-callout-link);
--bs-code-color: var(--bb-callout-code-color);
padding: 1.25rem;
margin-top: 1.25rem;
margin-bottom: 1.25rem;
color: var(--bb-callout-color, inherit);
background-color: var(--bb-callout-bg, var(--bs-gray-100));
border-left: 0.25rem solid var(--bb-callout-border, var(--bs-gray-300))
}
.bb-callout h4[b-5p9xdwo7e3] {
margin-bottom: .25rem;
}
.bb-callout > :last-child[b-5p9xdwo7e3] {
margin-bottom: 0 !important;
}
.bb-callout + .bb-callout[b-5p9xdwo7e3] {
margin-top: -.25rem;
}
.bb-callout .highlight[b-5p9xdwo7e3] {
background-color: rgba(0,0,0,0.05)
}
.bb-callout-info[b-5p9xdwo7e3] {
--bb-callout-color: var(--bs-info-text-emphasis);
--bb-callout-bg: var(--bs-info-bg-subtle);
--bb-callout-border: var(--bs-info-border-subtle)
}
.bb-callout-warning[b-5p9xdwo7e3] {
--bb-callout-color: var(--bs-warning-text-emphasis);
--bb-callout-bg: var(--bs-warning-bg-subtle);
--bb-callout-border: var(--bs-warning-border-subtle)
}
.bb-callout-danger[b-5p9xdwo7e3] {
--bb-callout-color: var(--bs-danger-text-emphasis);
--bb-callout-bg: var(--bs-danger-bg-subtle);
--bb-callout-border: var(--bs-danger-border-subtle)
}
.bb-callout-success[b-5p9xdwo7e3] {
--bb-callout-color: var(--bs-success-text-emphasis);
--bb-callout-bg: var(--bs-success-bg-subtle);
--bb-callout-border: var(--bs-success-border-subtle)
}
/* _content/Blazor.Bootstrap/Components/Form/AutoComplete/AutoComplete.razor.rz.scp.css */
.autocomplete[b-zkhsnlgtvk] {
}
.autocomplete > .input-group > input[b-zkhsnlgtvk] {
border-top-right-radius: 0.25rem !important;
border-bottom-right-radius: 0.25rem !important;
padding-right: 2.75rem !important;
}
.autocomplete-list[b-zkhsnlgtvk] {
max-height: 200px;
overflow-y: auto;
width: 100%;
}
.autocomplete-item:focus[b-zkhsnlgtvk], .autocomplete-item:hover[b-zkhsnlgtvk] {
color: #1e2125;
background-color: #e9ecef;
cursor: pointer;
}
.dropdown-item:focus[b-zkhsnlgtvk], .dropdown-item:hover[b-zkhsnlgtvk] {
cursor: pointer;
}
.dropdown-item-highlight[b-zkhsnlgtvk] {
color: #1e2125;
background-color: #e9ecef;
cursor: pointer;
}
/* _content/Blazor.Bootstrap/Components/Ribbon/RibbonGroup.razor.rz.scp.css */
/* _content/Blazor.Bootstrap/Components/Ribbon/RibbonItem.razor.rz.scp.css */
.bb-ribbon-item[b-euvmgchcvy] {
cursor: pointer;
/*width: 64px;*/
}
.bb-ribbon-item:hover[b-euvmgchcvy] {
background-color: rgba(var(--bs-secondary-rgb), 0.10) !important;
}
.bb-ribbon-item.active[b-euvmgchcvy] {
}
/* _content/Blazor.Bootstrap/Components/Ribbon/RibbonItemGroup.razor.rz.scp.css */
/* _content/Blazor.Bootstrap/Components/Sidebar2/Sidebar2.razor.rz.scp.css */
.bb-sidebar2[b-hjh7gjrlxu] {
background-color: var(--bb-sidebar2-background-color);
border-right: 1px solid var(--bb-sidebar2-content-border-color);
}
.bb-sidebar2.collapsed[b-hjh7gjrlxu] {
width: var(--bb-sidebar2-collapsed-width);
}
.bb-sidebar2.collapsed .expanded-only[b-hjh7gjrlxu] {
display: none;
}
@media (min-width: 641px) {
.bb-sidebar2[b-hjh7gjrlxu] {
width: var(--bb-sidebar2-width);
position: sticky;
top: 0;
}
}
.bb-sidebar2-top-row[b-hjh7gjrlxu] {
height: 3.5rem;
background-color: var(--bb-sidebar2-top-row-background-color);
border-bottom: 1px solid var(--bb-sidebar2-top-row-border-color);
border-right: 1px solid var(--bb-sidebar2-top-row-border-color);
}
.navbar-toggler[b-hjh7gjrlxu] {
background-color: var(--bb-sidebar2-navbar-toggler-background-color);
color: rgb(var(--bb-sidebar2-nav-item-text-active-color-rgb));
padding: inherit !important;
padding-right: 0.25rem !important;
padding-left: 0.25rem !important;
line-height: inherit !important;
font-size: inherit !important;
}
.navbar-toggler-icon[b-hjh7gjrlxu] {
background-image: inherit !important;
color: var(--bb-sidebar2-navbar-toggler-icon-color) !important;
}
.navbar-toggler:focus[b-hjh7gjrlxu] {
box-shadow: none !important;
}
.navbar-brand[b-hjh7gjrlxu] {
font-size: 1.1rem;
}
.navbar-brand-icon[b-hjh7gjrlxu] {
color: var(--bb-sidebar2-brand-icon-color);
}
.navbar-brand-image[b-hjh7gjrlxu] {
height: var(--bb-sidebar2-brand-image-height);
}
.navbar-brand-image img[b-hjh7gjrlxu] {
width: var(--bb-sidebar2-brand-image-width);
height: var(--bb-sidebar2-brand-image-height);
vertical-align: initial !important;
}
.navbar-brand-text[b-hjh7gjrlxu] {
color: var(--bb-sidebar2-title-text-color);
font-weight: 600 !important;
}
.navbar-brand-badge[b-hjh7gjrlxu] {
color: var(--bb-sidebar2-title-badge-text-color);
background-color: var(--bb-sidebar2-title-badge-background-color);
}
@media (min-width: 641px) {
.navbar-toggler[b-hjh7gjrlxu] {
display: none;
}
.collapse[b-hjh7gjrlxu] {
/* Never collapse the sidebar for wide screens */
display: block;
}
.nav-scrollable[b-hjh7gjrlxu] {
/* Allow sidebar to scroll for tall menus */
height: calc(100vh - 3.5rem);
overflow-y: auto;
}
}
/* _content/Blazor.Bootstrap/Components/Sidebar2/Sidebar2Item.razor.rz.scp.css */
.bb-sidebar2.collapsed .expanded-only[b-3gpeuglz5y] {
display: none;
}
.bb-sidebar2.collapsed .bi.expanded-only[b-3gpeuglz5y] {
display: none !important;
}
.bb-sidebar2 .nav-link-icon[b-3gpeuglz5y] {
padding-bottom: 0.5rem;
padding-top: 0.5rem;
}
.bb-sidebar2 nav .nav-item[b-3gpeuglz5y] a {
color: var(--bb-sidebar2-nav-item-text-color);
align-items: center;
padding: 0.5rem 1rem;
}
.bb-sidebar2 nav .nav-item[b-3gpeuglz5y] a:hover {
background-color: var(--bb-sidebar2-nav-item-background-hover-color);
color: var(--bb-sidebar2-nav-item-text-hover-color);
}
.bb-sidebar2 nav .nav-item[b-3gpeuglz5y] a.active {
background-color: var(--bb-sidebar2-nav-item-background-hover-color);
color: var(--bb-sidebar2-nav-item-text-active-color);
font-weight: 600;
}
/* MDN REFERENCE: https://developer.mozilla.org/en-US/docs/Web/CSS/:has#browser_compatibility */
.bb-sidebar2 nav .nav-item.nav-item-group:has(.nav-link.active)[b-3gpeuglz5y] {
background-color: var(--bb-sidebar2-nav-item-group-background-color);
}
.bb-sidebar2 nav .nav-item.nav-item-group:has(.nav-item-group.active)[b-3gpeuglz5y] {
background-color: var(--bb-sidebar2-nav-item-group-background-color);
}
.bb-sidebar2 nav .nav-item.nav-item-group.active[b-3gpeuglz5y] {
background-color: var(--bb-sidebar2-nav-item-group-background-color);
}
/* _content/Blazor.Bootstrap/Components/Sidebar2/Sidebar2ItemGroup.razor.rz.scp.css */
/* _content/Blazor.Bootstrap/Components/Sidebar/Sidebar.razor.rz.scp.css */
.bb-sidebar[b-h9l5f7lx3r] {
background-color: var(--bb-sidebar-background-color);
}
.bb-sidebar.collapsed[b-h9l5f7lx3r] {
width: var(--bb-sidebar-collapsed-width);
}
.bb-sidebar.collapsed .expanded-only[b-h9l5f7lx3r] {
display: none;
}
@media (min-width: 641px) {
.bb-sidebar[b-h9l5f7lx3r] {
width: var(--bb-sidebar-width);
position: sticky;
top: 0;
}
}
.navbar-toggler[b-h9l5f7lx3r] {
background-color: var(--bb-sidebar-navbar-toggler-background-color);
color: rgb(var(--bb-sidebar-nav-item-text-active-color-rgb));
padding: inherit !important;
padding-right: 0.25rem !important;
padding-left: 0.25rem !important;
line-height: inherit !important;
font-size: inherit !important;
}
.navbar-toggler-icon[b-h9l5f7lx3r] {
background-image: inherit !important;
color: var(--bb-sidebar-navbar-toggler-icon-color) !important;
}
.navbar-toggler:focus[b-h9l5f7lx3r] {
box-shadow: none !important;
}
.bb-sidebar-top-row[b-h9l5f7lx3r] {
height: 3.5rem;
background-color: var(--bb-sidebar-top-row-background-color);
border-bottom: 1px solid var(--bb-sidebar-top-row-border-color);
border-right: 1px solid var(--bb-sidebar-top-row-border-color);
}
.bb-sidebar-content[b-h9l5f7lx3r] {
border-right: 1px solid var(--bb-sidebar-content-border-color);
}
.navbar-brand[b-h9l5f7lx3r] {
font-size: 1.1rem;
}
.navbar-brand-icon[b-h9l5f7lx3r] {
color: var(--bb-sidebar-brand-icon-color);
}
.navbar-brand-image[b-h9l5f7lx3r] {
height: var(--bb-sidebar-brand-image-height);
}
.navbar-brand-image img[b-h9l5f7lx3r] {
width: var(--bb-sidebar-brand-image-width);
height: var(--bb-sidebar-brand-image-height);
vertical-align: initial !important;
}
.navbar-brand-text[b-h9l5f7lx3r] {
color: var(--bb-sidebar-title-text-color);
font-weight: 600 !important;
}
.navbar-brand-badge[b-h9l5f7lx3r] {
color: var(--bb-sidebar-title-badge-text-color);
background-color: var(--bb-sidebar-title-badge-background-color);
}
@media (min-width: 641px) {
.navbar-toggler[b-h9l5f7lx3r] {
display: none;
}
.collapse[b-h9l5f7lx3r] {
/* Never collapse the sidebar for wide screens */
display: block;
}
.nav-scrollable[b-h9l5f7lx3r] {
/* Allow sidebar to scroll for tall menus */
height: calc(100vh - 3.5rem);
overflow-y: auto;
}
}
/* _content/Blazor.Bootstrap/Components/Sidebar/SidebarItem.razor.rz.scp.css */
.bb-sidebar.collapsed .expanded-only[b-jbgvk8pcne] {
display: none;
}
.bb-sidebar.collapsed .bi.expanded-only[b-jbgvk8pcne] {
display: none !important;
}
.bb-sidebar .nav-link-icon[b-jbgvk8pcne] {
padding-bottom: 0.5rem;
padding-top: 0.5rem;
}
.bb-sidebar nav .nav-item[b-jbgvk8pcne] a {
color: var(--bb-sidebar-nav-item-text-color);
align-items: center;
padding: 0.5rem 1rem;
}
.bb-sidebar nav .nav-item[b-jbgvk8pcne] a:hover {
background-color: var(--bb-sidebar-nav-item-background-hover-color);
color: var(--bb-sidebar-nav-item-text-hover-color);
}
.bb-sidebar nav .nav-item[b-jbgvk8pcne] a.active {
background-color: var(--bb-sidebar-nav-item-background-hover-color);
color: var(--bb-sidebar-nav-item-text-active-color);
font-weight: 600;
}
/* MDN REFERENCE: https://developer.mozilla.org/en-US/docs/Web/CSS/:has#browser_compatibility */
.bb-sidebar nav .nav-item.nav-item-group:has(.nav-link.active)[b-jbgvk8pcne] {
background-color: var(--bb-sidebar-nav-item-group-background-color);
}
/* _content/Blazor.Bootstrap/Components/Sidebar/SidebarItemGroup.razor.rz.scp.css */
/* _content/Blazor.Bootstrap/Components/SortableList/SortableList.razor.rz.scp.css */
[b-jo00jd6nmv] .bb-sortable-list-handle {
cursor: grab !important;
}
/* _content/Blazor.Bootstrap/Components/Spinner/Spinner.razor.rz.scp.css */
/* scss-docs-start spinner-dots-keyframes */
@keyframes spinner-dots-b-pp5swe6s25 {
0% {
opacity: 1;
}
50%, 100% {
opacity: .3;
}
}
/* scss-docs-end spinner-dots-keyframes */
.spinner-dots[b-pp5swe6s25] {
user-select: none;
}
.spinner-dots > circle:first-of-type[b-pp5swe6s25],
.spinner-dots > circle:last-of-type[b-pp5swe6s25],
.spinner-dots > circle:nth-of-type(2)[b-pp5swe6s25] {
fill: currentcolor;
animation: spinner-dots-b-pp5swe6s25 .75s infinite ease-in-out alternate;
}
.spinner-dots > circle:nth-of-type(2)[b-pp5swe6s25] {
animation-delay: .25s;
}
.spinner-dots > circle:last-of-type[b-pp5swe6s25] {
animation-delay: .5s;
}
/* Size: START */
/* default */
.spinner-border-sm[b-pp5swe6s25] {
--bs-spinner-width: 1rem;
--bs-spinner-height: 1rem;
--bs-spinner-border-width: 0.25em;
--bs-spinner-vertical-align: -0.125em;
}
/* custom CSS classes */
.spinner-border-md[b-pp5swe6s25] {
--bs-spinner-width: 2rem;
--bs-spinner-height: 2rem;
--bs-spinner-border-width: 0.25em;
--bs-spinner-vertical-align: -0.125em;
}
.spinner-border-lg[b-pp5swe6s25] {
--bs-spinner-width: 3rem;
--bs-spinner-height: 3rem;
--bs-spinner-border-width: 0.25em;
--bs-spinner-vertical-align: -0.125em;
}
.spinner-border-xl[b-pp5swe6s25] {
--bs-spinner-width: 4rem;
--bs-spinner-height: 4rem;
--bs-spinner-border-width: 0.25em;
--bs-spinner-vertical-align: -0.125em;
}
/* default */
.spinner-grow-sm[b-pp5swe6s25] {
--bs-spinner-width: 1rem;
--bs-spinner-height: 1rem;
--bs-spinner-border-width: 0.25em;
--bs-spinner-vertical-align: -0.125em;
}
/* custom CSS classes */
.spinner-grow-md[b-pp5swe6s25] {
--bs-spinner-width: 2rem;
--bs-spinner-height: 2rem;
--bs-spinner-border-width: 0.25em;
--bs-spinner-vertical-align: -0.125em;
}
.spinner-grow-lg[b-pp5swe6s25] {
--bs-spinner-width: 3rem;
--bs-spinner-height: 3rem;
--bs-spinner-border-width: 0.25em;
--bs-spinner-vertical-align: -0.125em;
}
.spinner-grow-xl[b-pp5swe6s25] {
--bs-spinner-width: 4rem;
--bs-spinner-height: 4rem;
--bs-spinner-border-width: 0.25em;
--bs-spinner-vertical-align: -0.125em;
}
/* Size: END */

View File

@@ -0,0 +1,550 @@
:root {
/* preload */
--bb-preload-modal-z-index: 2055;
--bb-preload-modal-backdrop-z-index: 2050;
/* confirm dialog */
--bb-confirm-dialog-z-index: 2045;
--bb-confirm-dialog-backdrop-z-index: 2040;
/* offcanvas */
--bb-offcanvas-close-icon-font-size: 2rem;
--bb-offcanvas-footer-padding-y: 1rem;
--bb-offcanvas-footer-padding-x: 1rem;
--bb-offcanvas-horizontal-width-sm: 300px;
--bb-offcanvas-horizontal-width-lg: 800px;
/* sidebar */
--bb-violet: #712cf9;
--bb-sidebar-width: 270px;
--bb-sidebar-collapsed-width: 50px;
--bb-sidebar-background-color: rgba(255, 255, 255, 1);
--bb-sidebar-top-row-background-color: var(--bb-violet);
--bb-sidebar-top-row-border-color: var(--bb-violet);
--bb-sidebar-title-text-color: rgb(255,255,255);
--bb-sidebar-brand-icon-color: rgb(255,255,255);
--bb-sidebar-brand-image-width: 24px;
--bb-sidebar-brand-image-height: 24px;
--bb-sidebar-title-badge-text-color: var(--bb-violet);
--bb-sidebar-title-badge-background-color: rgb(255,255,255);
--bb-sidebar-navbar-toggler-icon-color: var(--bb-violet);
--bb-sidebar-navbar-toggler-background-color: rgb(255,255,255);
--bb-sidebar-content-border-color: rgb(214,213,213);
--bb-sidebar-nav-item-text-color: rgba(0,0,0,0.9);
--bb-sidebar-nav-item-text-active-color-rgb: 112.520718,44.062154,249.437846;
--bb-sidebar-nav-item-text-hover-color: rgba(var(--bb-sidebar-nav-item-text-active-color-rgb),0.9);
--bb-sidebar-nav-item-text-active-color: rgba(var(--bb-sidebar-nav-item-text-active-color-rgb),0.9);
--bb-sidebar-nav-item-background-hover-color: rgba(var(--bb-sidebar-nav-item-text-active-color-rgb),0.08);
--bb-sidebar-nav-item-group-background-color: rgba(var(--bb-sidebar-nav-item-text-active-color-rgb),0.08);
/* custom tooltip */
--bb-tooltip-primary: var(--bs-primary);
--bb-tooltip-secondary: var(--bs-secondary);
--bb-tooltip-success: var(--bs-success);
--bb-tooltip-danger: var(--bs-danger);
--bb-tooltip-warning: var(--bs-warning);
--bb-tooltip-info: var(--bs-info);
--bb-tooltip-light: var(--bs-light);
--bb-tooltip-dark: var(--bs-dark);
--bb-tooltip-color-white: var(--bs-white);
--bb-tooltip-color-dark: var(--bs-black);
/* border */
--bs-border-radius-xs: 0.125rem;
--bs-border-radius-md: 0.375rem;
/* table */
--bb-table-sticky-background-color: #fff;
--bb-table-freeze-column-background-color: #efefef;
/* callout */
--bb-callout-link: 10, 88, 202;
--bb-callout-code-color: #ab296a;
/* sidebar2 */
--bb-sidebar2-width: 270px;
--bb-sidebar2-collapsed-width: 50px;
--bb-sidebar2-background-color: rgba(255, 255, 255, 1);
--bb-sidebar2-top-row-background-color: var(--bb-violet);
--bb-sidebar2-top-row-border-color: var(--bb-violet);
--bb-sidebar2-title-text-color: rgb(255,255,255);
--bb-sidebar2-brand-icon-color: rgb(255,255,255);
--bb-sidebar2-brand-image-width: 24px;
--bb-sidebar2-brand-image-height: 24px;
--bb-sidebar2-title-badge-text-color: var(--bb-violet);
--bb-sidebar2-title-badge-background-color: rgb(255,255,255);
--bb-sidebar2-navbar-toggler-icon-color: var(--bb-violet);
--bb-sidebar2-navbar-toggler-background-color: rgb(255,255,255);
--bb-sidebar2-content-border-color: rgb(214,213,213);
--bb-sidebar2-nav-item-text-color: rgba(0,0,0,0.9);
--bb-sidebar2-nav-item-text-active-color-rgb: 112.520718,44.062154,249.437846;
--bb-sidebar2-nav-item-text-hover-color: rgba(var(--bb-sidebar2-nav-item-text-active-color-rgb),0.9);
--bb-sidebar2-nav-item-text-active-color: rgba(var(--bb-sidebar2-nav-item-text-active-color-rgb),0.9);
--bb-sidebar2-nav-item-background-hover-color: rgba(var(--bb-sidebar2-nav-item-text-active-color-rgb),0.08);
--bb-sidebar2-nav-item-group-background-color: rgba(var(--bb-sidebar2-nav-item-text-active-color-rgb),0.08);
}
/* preload */
.modal-page-loading {
z-index: var(--bb-preload-modal-z-index) !important;
}
.modal-backdrop-page-loading {
z-index: var(--bb-preload-modal-backdrop-z-index) !important;
}
.modal-content-page-loading {
background-color: inherit !important;
border: inherit !important;
}
/* confirm dialog */
.modal-confirmation {
z-index: var(--bb-confirm-dialog-z-index) !important;
}
.modal-backdrop-confirmation {
z-index: var(--bb-confirm-dialog-backdrop-z-index) !important;
}
/* offcanvas */
.offcanvas-footer {
display: flex;
align-items: center;
padding: var(--bb-offcanvas-footer-padding-y) var(--bb-offcanvas-footer-padding-x);
}
.offcanvas-start.bb-offcanvas-sm,
.offcanvas-end.bb-offcanvas-sm {
width: var(--bb-offcanvas-horizontal-width-sm);
}
.offcanvas-start.bb-offcanvas-lg,
.offcanvas-end.bb-offcanvas-lg {
width: var(--bb-offcanvas-horizontal-width-lg);
}
/* grid - filters */
table button.dropdown-toggle.bb-grid-filter::after {
content: none !important;
}
.filter-symbol {
width: 2.25rem;
display: inline-block;
}
.bb-grid-pagination-text {
padding: .375rem;
}
/* grid - fixed header */
.bb-table {
/* NOTE: intentionally overriding the behavior */
--bs-table-color: inherit !important;
--bs-table-bg: inherit !important;
}
.bb-table-sticky {
border-collapse: collapse;
border-spacing: 0;
margin-bottom: 0rem;
}
.bb-table-sticky > thead > tr {
border-top-width: 0 !important;
border-bottom-width: 0 !important;
}
.bb-table-sticky > thead > tr > th {
background-color: var(--bb-table-sticky-background-color);
top: 0px;
position: sticky;
border-style: solid;
border-color: var(--bs-table-border-color);
box-shadow: inset 0 1px 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color);
}
.bb-table-sticky > thead > tr:nth-child(2) > th {
box-shadow: inset 0 0 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color);
}
/* below CSS is applicable, if filters are enabled. */
.bb-table-sticky > thead > tr:nth-child(2) > th {
top: 40px;
}
.bb-table-sticky > tbody > tr:nth-child(1) {
border-top-width: 0 !important;
}
.bb-table-sticky > thead > tr > th > div > ul.dropdown-menu.show {
top: 6px !important;
}
/* freeze columns */
table > thead > tr > th.freeze-column {
position: sticky;
background-color: var(--bb-table-freeze-column-background-color);
z-index: 5;
border-left-width: 0px !important;
border-right-width: 0px !important;
}
table > thead > tr:nth-child(2) > th.freeze-column {
position: sticky;
background-color: var(--bb-table-freeze-column-background-color);
z-index: 5;
}
/* freeze column left */
/* th: row-1 */
table > thead > tr > th:not(.freeze-column-right):first-child.freeze-column {
box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset 0 1px 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color);
}
table > thead > tr > th:not(.freeze-column-right).freeze-column {
box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset -1px 0 0 var(--bs-table-border-color), inset 0 1px 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color);
}
table > thead > tr > th:not(.freeze-column-right):last-child.freeze-column {
box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color), inset -1px 0 0 var(--bs-table-border-color);
}
/* th: row-2 */
table > thead > tr:nth-child(2) > th:not(.freeze-column-right):first-child.freeze-column {
box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset 0 0 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color);
}
table > thead > tr:nth-child(2) > th:not(.freeze-column-right).freeze-column {
box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset -1px 0 0 var(--bs-table-border-color), inset 0 0 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color);
}
table > thead > tr:nth-child(2) > th:not(.freeze-column-right):last-child.freeze-column {
box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset 0 0 0 var(--bs-table-border-color), inset -1px 0 0 var(--bs-table-border-color);
}
table > tbody > tr > td.freeze-column {
position: sticky;
background-color: var(--bb-table-freeze-column-background-color);
z-index: 4;
border-left-width: 0px !important;
border-right-width: 0px !important;
}
table > tbody > tr > td:not(.freeze-column-right):first-child.freeze-column {
box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset 0 0 0 var(--bs-table-border-color), inset 0 0 0 var(--bs-table-border-color);
}
table > tbody > tr > td:not(.freeze-column-right).freeze-column {
box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset 0 0 0 var(--bs-table-border-color), inset -1px 0 0 var(--bs-table-border-color);
}
table > tbody > tr > td:not(.freeze-column-right):last-child.freeze-column {
box-shadow: inset 0 0 0 var(--bs-table-border-color), inset 0 0 0 var(--bs-table-border-color), inset 0 0 0 var(--bs-table-border-color);
}
/* freeze column right */
table > thead > tr > th:is(.freeze-column-right) {
box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset 0 1px 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color);
}
table > thead > tr:nth-child(2) > th:is(.freeze-column-right) {
box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset 0 0 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color);
}
table > tbody > tr > td:is(.freeze-column-right) {
box-shadow: inset 1px 0 0 var(--bs-table-border-color);
}
/* below CSS is applicable, if scrollLeft > 0 */
/* thead: first-row -> first th */
table > thead > tr > th:not(.freeze-column-right):first-child.freeze-column-active {
box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset 0 1px 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color);
}
/* thead: second-row -> first th */
table > thead > tr:nth-child(2) > th:not(.freeze-column-right):first-child.freeze-column-active {
box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset 0 0 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color);
}
/* thead: first-row -> all th's */
table > thead > tr > th:not(.freeze-column-right).freeze-column-active {
box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset -1px 0 0 var(--bs-table-border-color), inset 0 1px 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color);
}
/* thead: second-row -> all th's */
table > thead > tr:nth-child(2) > th:not(.freeze-column-right).freeze-column-active {
box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset -1px 0 0 var(--bs-table-border-color), inset 0 0 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color);
}
/* thead: first-row -> all th's, right freeze columns only */
table > thead > tr > th:is(.freeze-column-right).freeze-column-active {
box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset 0 1px 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color);
}
/* thead: second-row -> all th's, right freeze columns only */
table > thead > tr:nth-child(2) > th:is(.freeze-column-right).freeze-column-active {
box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset 0 0 0 var(--bs-table-border-color), inset 0 -1px 0 var(--bs-table-border-color);
}
/* tbody: every row -> first td, except right freeze columns */
table > tbody > tr > td:not(.freeze-column-right):first-child.freeze-column-active {
box-shadow: inset 1px 0 0 var(--bs-table-border-color);
}
/* tbody: every row -> all td's, except right freeze columns */
table > tbody > tr > td:not(.freeze-column-right).freeze-column-active {
box-shadow: inset 1px 0 0 var(--bs-table-border-color), inset -1px 0 0 var(--bs-table-border-color);
}
/* tbody: every row -> all td's, right freeze columns only */
table > tbody > tr > td:is(.freeze-column-right).freeze-column-active {
box-shadow: inset 1px 0 0 var(--bs-table-border-color);
}
/* scrollbar */
.v-scroll-auto {
overflow-y: auto !important;
}
.scroll-hidden {
overflow: hidden;
}
.bb-scrollbar {
scrollbar-color: rgba(0,0,0,.2) transparent;
scrollbar-color: rgba(0, 0, 0, .2) transparent;
scrollbar-width: thin
}
.bb-scrollbar.scroll-auto-hide {
scrollbar-color: transparent transparent
}
.bb-scrollbar.scroll-auto-hide:hover {
scrollbar-color: rgba(0,0,0,.2) transparent;
scrollbar-color: rgba(0, 0, 0, .2) transparent
}
.bb-scrollbar::-webkit-scrollbar {
width: 18px;
height: 18px;
}
.bb-scrollbar::-webkit-scrollbar-thumb {
border: 6px solid transparent;
background: rgba(0,0,0,.2);
background: rgba(0, 0, 0, .2);
border-radius: 10px;
background-clip: padding-box
}
.bb-scrollbar::-webkit-scrollbar-corner {
background: transparent;
}
.bb-scrollbar::-webkit-scrollbar-thumb:vertical {
min-height: 30px
}
.bb-scrollbar::-webkit-scrollbar-thumb:horizontal {
min-width: 30px
}
.bb-scrollbar.scroll-auto-hide::-webkit-scrollbar-thumb {
background: transparent;
background-clip: padding-box
}
.bb-scrollbar.scroll-auto-hide:hover::-webkit-scrollbar-thumb {
background: rgba(0,0,0,.2);
background: rgba(0, 0, 0, .2);
background-clip: padding-box
}
.bb-scrollbar::-webkit-scrollbar-thumb {
border: 6px solid transparent;
background: rgba(0,0,0,.2);
background: rgba(0, 0, 0, .2);
border-radius: 10px;
background-clip: padding-box;
}
.bb-scrollbar::-webkit-scrollbar-thumb:hover {
background: rgba(0,0,0,.3);
background: rgba(0, 0, 0, .3);
background-clip: padding-box;
border: 4px solid transparent
}
.bb-scrollbar-hidden {
-ms-overflow-style: none;
scrollbar-width: none
}
.bb-scrollbar-hidden::-webkit-scrollbar {
width: 0
}
/* layout */
@media (min-width: 641px) {
.bb-page {
flex-direction: row !important;
}
.bb-top-row {
position: sticky;
top: 0;
z-index: 1;
}
.top-row, article {
padding-left: 2rem !important;
padding-right: 1.5rem !important;
}
}
.bb-page {
position: relative;
display: flex;
flex-direction: column;
}
main {
flex: 1;
overflow-x: hidden;
height: 100vh;
}
.main {
flex: 1;
overflow-x: hidden;
height: 100vh;
}
.bb-top-row {
background-color: #f7f7f7;
border-bottom: 1px solid #d6d5d5;
justify-content: flex-end;
height: 3.5rem;
display: flex;
align-items: center;
}
/* tooltip */
.bb-tooltip-primary {
--bs-tooltip-bg: var(--bb-tooltip-primary);
--bs-tooltip-color: var(--bb-tooltip-color-white);
}
.bb-tooltip-secondary {
--bs-tooltip-bg: var(--bb-tooltip-secondary);
--bs-tooltip-color: var(--bb-tooltip-color-white);
}
.bb-tooltip-success {
--bs-tooltip-bg: var(--bb-tooltip-success);
--bs-tooltip-color: var(--bb-tooltip-color-white);
}
.bb-tooltip-danger {
--bs-tooltip-bg: var(--bb-tooltip-danger);
--bs-tooltip-color: var(--bb-tooltip-color-white);
}
.bb-tooltip-warning {
--bs-tooltip-bg: var(--bb-tooltip-warning);
--bs-tooltip-color: var(--bb-tooltip-color-dark);
}
.bb-tooltip-info {
--bs-tooltip-bg: var(--bb-tooltip-info);
--bs-tooltip-color: var(--bb-tooltip-color-dark);
}
.bb-tooltip-light {
--bs-tooltip-bg: var(--bb-tooltip-light);
--bs-tooltip-color: var(--bb-tooltip-color-dark);
}
.bb-tooltip-dark {
--bs-tooltip-bg: var(--bb-tooltip-dark);
--bs-tooltip-color: var(--bb-tooltip-color-white);
}
/* button */
.btn-xs {
--bs-btn-padding-y: 0.125rem;
--bs-btn-padding-x: 0.25rem;
--bs-btn-font-size: 0.75rem;
--bs-btn-border-radius: var(--bs-border-radius-sm);
}
.btn-sm {
--bs-btn-padding-y: 0.25rem;
--bs-btn-padding-x: 0.5rem;
--bs-btn-font-size: 0.875rem;
--bs-btn-border-radius: var(--bs-border-radius-sm);
}
.btn-md {
--bs-btn-padding-y: 0.375rem;
--bs-btn-padding-x: 0.75rem;
--bs-btn-font-size: 1rem;
--bs-btn-border-radius: var(--bs-border-radius-md);
}
.btn-lg {
--bs-btn-padding-y: 0.5rem;
--bs-btn-padding-x: 1rem;
--bs-btn-font-size: 1.25rem;
--bs-btn-border-radius: var(--bs-border-radius-lg);
}
.btn-xl {
--bs-btn-padding-y: 0.625rem;
--bs-btn-padding-x: 1.25rem;
--bs-btn-font-size: 1.5rem;
--bs-btn-border-radius: var(--bs-border-radius-lg);
}
/* button > spinner */
.spinner-border-xs {
--bs-spinner-width: 0.5rem;
--bs-spinner-height: 0.5rem;
--bs-spinner-border-width: 0.125em;
--bs-spinner-vertical-align: 0;
}
.spinner-border-sm {
--bs-spinner-width: 0.75rem;
--bs-spinner-height: 0.75rem;
--bs-spinner-border-width: 0.15em;
--bs-spinner-vertical-align: 0;
}
.spinner-border-md {
--bs-spinner-width: 1rem;
--bs-spinner-height: 1rem;
--bs-spinner-border-width: 0.175em;
--bs-spinner-vertical-align: -0.125em;
}
.spinner-border-lg {
--bs-spinner-width: 1.25rem;
--bs-spinner-height: 1.25rem;
--bs-spinner-border-width: 0.2em;
--bs-spinner-vertical-align: -0.125em;
}
.spinner-border-xl {
--bs-spinner-width: 1.5rem;
--bs-spinner-height: 1.5rem;
--bs-spinner-border-width: 0.225em;
--bs-spinner-vertical-align: -0.125em;
}
/* range */
.bb-form-range-input {
appearance: auto !important;
}
.bb-range-data-list {
display: flex;
flex-direction: column;
justify-content: space-between;
writing-mode: vertical-lr;
width: 100%;
}
/* pdf viewer */
.pdf-viewer-dropdown-toggle::after {
content: inherit !important;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,267 @@
import * as pdfJS from './pdfjs-4.0.379.min.mjs';
import * as pdfWorker from './pdfjs-4.0.379.worker.min.mjs';
if (pdfJS != null && pdfWorker != null) {
pdfJS.GlobalWorkerOptions.workerSrc = pdfWorker;
}
function getCanvas(item) {
if (isDomSupported() && typeof item === 'string') {
item = document.getElementById(item);
} else if (item && item.length) {
// support for array based queries
item = item[0];
}
if (item && item.canvas !== undefined && item.canvas) {
// support for any object associated to a canvas (including a context2d)
item = item.canvas;
}
return item;
}
const getPdf = (key) => {
const canvas = getCanvas(key);
return Object.values(pdfInstances).filter((c) => c.canvas === canvas).pop();
};
const pdfInstances = {};
class Pdf {
static instances = pdfInstances;
static getPdf = getPdf;
constructor(item) {
const canvas = getCanvas(item);
//const existingPdf = getPdf(canvas);
this.id = canvas.id;
this.canvas = canvas;
this.ctx = canvas.getContext('2d');
this.pdfDoc = null;
this.pageNum = 1;
this.pagesCount = 0;
this.pageRendering = false;
this.pageNumPending = null;
this.scale = 1;
this.rotation = 0;
pdfInstances[this.id] = this;
}
}
export function firstPage(dotNetHelper, elementId) {
const pdf = getPdf(elementId);
if (pdf == null || pdf.pageNum === 1)
return;
if (pdf.pageNum > 1)
pdf.pageNum = 1;
queueRenderPage(pdf, pdf.pageNum);
setPdfViewerMetaData(dotNetHelper, pdf);
}
export function gotoPage(dotNetHelper, elementId, gotoPageNum) {
const pdf = getPdf(elementId);
if (pdf == null || gotoPageNum < 1 || gotoPageNum > pdf.pagesCount)
return;
pdf.pageNum = gotoPageNum;
queueRenderPage(pdf, pdf.pageNum);
setPdfViewerMetaData(dotNetHelper, pdf);
}
export function lastPage(dotNetHelper, elementId) {
const pdf = getPdf(elementId);
if (pdf == null || (pdf.pageNum === 1 && pdf.pageNum === pdf.pagesCount))
return;
if (pdf.pageNum < pdf.pagesCount)
pdf.pageNum = pdf.pagesCount;
queueRenderPage(pdf, pdf.pageNum);
setPdfViewerMetaData(dotNetHelper, pdf);
}
export function nextPage(dotNetHelper, elementId) {
const pdf = getPdf(elementId);
if (pdf == null || pdf.pageNum === pdf.pagesCount)
return;
if (pdf.pageNum < pdf.pagesCount)
pdf.pageNum += 1;
queueRenderPage(pdf, pdf.pageNum);
setPdfViewerMetaData(dotNetHelper, pdf);
}
export function previousPage(dotNetHelper, elementId) {
const pdf = getPdf(elementId);
if (pdf == null || pdf.pageNum === 0 || pdf.pageNum === 1)
return;
if (pdf.pageNum > 0)
pdf.pageNum -= 1;
queueRenderPage(pdf, pdf.pageNum);
setPdfViewerMetaData(dotNetHelper, pdf);
}
export async function print(dotNetHelper, elementId, url) {
const pdfDoc = await pdfJS.getDocument(url).promise;
const pageRange = [1, 2, 3, 4]; // TODO: update this
const iframeEl = document.createElement('iframe');
iframeEl.style = 'display:none';
document.body.appendChild(iframeEl);
for (const pageNumber of pageRange) {
const page = await pdfDoc.getPage(pageNumber);
const viewport = page.getViewport({ scale: 1.5 });
const canvas = document.createElement("canvas");
canvas.height = viewport.height;
canvas.width = viewport.width;
//canvas.style.height = `${viewport.height * 2}px`;
//canvas.style.width = `${viewport.width * 2}px`;
const ctx = canvas.getContext('2d');
const renderContext = {
//intent: 'print',
canvasContext: ctx,
viewport: viewport
};
await page.render(renderContext).promise;
const iframeDoc = iframeEl.contentWindow.document;
iframeDoc.body.appendChild(canvas);
}
setTimeout(() => {
iframeEl.contentWindow.print();
iframeEl.remove();
},
1000);
}
export function rotate(dotNetHelper, elementId, rotation) {
const pdf = getPdf(elementId);
if (pdf == null || Number.isNaN(rotation) || rotation % 90 !== 0)
return;
pdf.rotation = rotation;
queueRenderPage(pdf, pdf.pageNum);
}
export function zoomInOut(dotNetHelper, elementId, scale) {
const pdf = getPdf(elementId);
if (pdf == null)
return;
if (!Number.isNaN(scale))
pdf.scale = scale;
queueRenderPage(pdf, pdf.pageNum);
}
// resize
// print
// download
// zoomreset
/*
firstPageButton.disabled = this.pageNumber <= 1;
lastPageButton.disabled = this.pageNumber >= this.pagesCount;
pageRotateCwButton.disabled = this.pagesCount === 0;
pageRotateCcwButton.disabled = this.pagesCount === 0;
*/
export function initialize(dotNetHelper, elementId, scale, rotation, url) {
const pdf = new Pdf(elementId);
pdf.scale = scale;
pdf.rotation = rotation;
pdfJS.getDocument(url).promise.then(function (doc) {
pdf.pdfDoc = doc;
pdf.pagesCount = doc.numPages;
renderPage(pdf, pdf.pageNum);
dotNetHelper.invokeMethodAsync('DocumentLoaded', { pagesCount: pdf.pagesCount, pageNumber: pdf.pageNum });
});
}
function isDomSupported() {
return typeof window !== 'undefined' && typeof document !== 'undefined';
}
/**
* If another page rendering in progress, waits until the rendering is
* finished. Otherwise, executes rendering immediately.
*/
function queueRenderPage(pdf, num) {
if (pdf.pageRendering) {
pdf.pageNumPending = num;
} else {
renderPage(pdf, num);
}
}
/**
* Get page info from document, resize canvas accordingly, and render page.
* @param num Page number.
*/
function renderPage(pdf, num) {
pdf.pageRendering = true;
// Using promise to fetch the page
pdf.pdfDoc.getPage(num).then((page) => {
const viewport = page.getViewport({ scale: pdf.scale, rotation: pdf.rotation });
pdf.canvas.height = viewport.height;
pdf.canvas.width = viewport.width;
// Render PDF page into canvas context
const renderContext = {
canvasContext: pdf.ctx,
viewport: viewport
};
const renderTask = page.render(renderContext);
// Wait for rendering to finish
renderTask.promise.then(() => {
pdf.pageRendering = false;
if (pdf.pageNumPending !== null) {
// New page rendering is pending
renderPage(pdf, pdf.pageNumPending);
pdf.pageNumPending = null;
}
})
.catch((error) => {
// TODO: track exception
});
});
}
function setPdfViewerMetaData(dotNetHelper, pdf) {
if (dotNetHelper == null)
return;
dotNetHelper.invokeMethodAsync('SetPdfViewerMetaData', { pagesCount: pdf.pagesCount, pageNumber: pdf.pageNum });
}

View File

@@ -0,0 +1,49 @@
export function initialize(elementId, elementName, handle, group, allowSorting, pull, put, filter, dotNetHelper) {
let listGroupEl = document.getElementById(elementId);
if (listGroupEl == null)
return;
if (Sortable) {
const sortable = Sortable.create(listGroupEl, {
animation: 150,
filter: '.bb-sortable-list-item-disabled',
group: {
name: group,
pull: pull,
put: put
},
handle: handle, // handle's class
onAdd: (event) => {
event.item.remove();
dotNetHelper.invokeMethodAsync('OnAddJS', event.oldDraggableIndex, event.newDraggableIndex);
},
onRemove: (event) => {
if (event.pullMode === 'clone') {
event.clone.remove();
}
event.item.remove();
event.from.insertBefore(event.item, event.from.childNodes[event.oldIndex]);
let fromElName = '';
let toElName = '';
let fromEl = document.getElementById(event.from.id);
if (fromEl)
fromElName = fromEl.getAttribute('name');
let toEl = document.getElementById(event.to.id);
if (toEl)
toElName = toEl.getAttribute('name');
dotNetHelper.invokeMethodAsync('OnRemoveJS', event.oldDraggableIndex, event.newDraggableIndex, fromElName, toElName);
},
onUpdate: (event) => {
event.item.remove();
event.to.insertBefore(event.item, event.to.childNodes[event.oldIndex]);
dotNetHelper.invokeMethodAsync('OnUpdateJS', event.oldDraggableIndex, event.newDraggableIndex);
},
sort: allowSorting
});
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long