@table-bro/native 0.0.0-stage → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +100 -2
- package/THIRD_PARTY_NOTICES.md +69 -0
- package/dist/table-bro.native.d.ts +213 -0
- package/dist/table-bro.native.esm.js +114 -0
- package/dist/table-bro.native.esm.js.map +1 -0
- package/dist/table-bro.native.min.css +1 -0
- package/dist/table-bro.native.umd.js +114 -0
- package/dist/table-bro.native.umd.js.map +1 -0
- package/package.json +75 -4
- package/styles/_table-bro.api.scss +3 -0
- package/styles/_table-bro.native.api.scss +5 -0
- package/styles/mixins/_text-ellipsis.scss +5 -0
- package/styles/mixins/_visually-hidden.scss +14 -0
- package/styles/skin/shared/_variables.scss +94 -0
- package/styles/skin/shared/mixins/_custom-properties.scss +39 -0
- package/styles/skin/shared/mixins/_progress-bar.scss +27 -0
- package/styles/skin/shared/mixins/_shared.scss +79 -0
- package/styles/skin/shared/mixins/_skin-colors.scss +64 -0
- package/styles/skin/shared/mixins/_slide-toggle.scss +5 -0
- package/styles/skin/shared/mixins/_sort-header.scss +11 -0
- package/styles/skin/shared/mixins/_toolbar.scss +61 -0
- package/styles/skin/shared/table-bro/_details.scss +11 -0
- package/styles/skin/shared/table-bro/_filter-drawer.scss +62 -0
- package/styles/skin/shared/table-bro/_shadows.scss +19 -0
- package/styles/skin/shared/table-bro/_state.scss +38 -0
- package/styles/skin/shared/table-bro/_table.scss +70 -0
- package/styles/skin/shared/table-bro/_text-ellipsis.scss +14 -0
- package/styles/skin/vanilla-js/native/_themes.scss +45 -0
- package/styles/skin/vanilla-js/native/_variables.scss +54 -0
- package/styles/skin/vanilla-js/native/components/bootstrap-based/_paginator.scss +50 -0
- package/styles/skin/vanilla-js/native/components/bootstrap-based/_toolbar.scss +107 -0
- package/styles/skin/vanilla-js/native/table-bro/_button.scss +36 -0
- package/styles/skin/vanilla-js/native/table-bro/_filter-drawer.scss +10 -0
- package/styles/skin/vanilla-js/native/table-bro/_progress-bar.scss +45 -0
- package/styles/skin/vanilla-js/native/table-bro/_table.scss +16 -0
- package/styles/skin/vanilla-js/native/table-bro/_toolbar-search.scss +17 -0
- package/styles/skin/vanilla-js/native/table-bro/_toolbar.scss +31 -0
- package/styles/skin/vanilla-js/shared/_bootstrap-adapter.scss +9 -0
- package/styles/skin/vanilla-js/shared/_skin.scss +76 -0
- package/styles/skin/vanilla-js/shared/components/bootstrap-based/_button.scss +9 -0
- package/styles/skin/vanilla-js/shared/components/material-based/_paginator.scss +62 -0
- package/styles/skin/vanilla-js/shared/components/material-based/_sort-header.scss +149 -0
- package/styles/skin/vanilla-js/shared/components/material-based/_table.scss +11 -0
- package/styles/skin/vanilla-js/shared/table-bro/_filter-drawer.scss +13 -0
- package/styles/skin/vanilla-js/shared/table-bro/_paginator.scss +5 -0
- package/styles/skin/vanilla-js/shared/table-bro/_toolbar-search.scss +31 -0
- package/styles/skin/vanilla-js/shared/table-bro/_toolbar.scss +39 -0
- package/styles/skin/vanilla-js/shared/vendor-extensions/material-based/_paginator.scss +12 -0
- package/styles/table-bro.native.scss +43 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
@use "../variables" as *;
|
|
2
|
+
@use "shared-selector-map" as *;
|
|
3
|
+
|
|
4
|
+
// The component and its shadow take the same corners: the shadow follows the rounded shape of the component
|
|
5
|
+
@mixin toolbar_or_paginator-container($container-selector, $shadow-selector, $component-selector, $component-height, $component-z-index, $border-radius: null) {
|
|
6
|
+
#{$container-selector} {
|
|
7
|
+
width: $bro-table-width;
|
|
8
|
+
|
|
9
|
+
#{$shadow-selector} {
|
|
10
|
+
z-index: $bro-shadow-z-index;
|
|
11
|
+
left: var(--bro-shadow-size);
|
|
12
|
+
|
|
13
|
+
height: $component-height;
|
|
14
|
+
|
|
15
|
+
border-radius: $border-radius;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
#{$component-selector} {
|
|
19
|
+
position: relative;
|
|
20
|
+
z-index: $component-z-index;
|
|
21
|
+
left: var(--bro-shadow-size);
|
|
22
|
+
|
|
23
|
+
border-radius: $border-radius;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@mixin skin_toolbar($toolbar-selector) {
|
|
30
|
+
#{$bro-table-toolbar_container} {
|
|
31
|
+
top: 0;
|
|
32
|
+
|
|
33
|
+
.bro-toolbar {
|
|
34
|
+
display: block;
|
|
35
|
+
|
|
36
|
+
height: $bro-toolbar-height;
|
|
37
|
+
|
|
38
|
+
> nav {
|
|
39
|
+
box-sizing: border-box;
|
|
40
|
+
height: 100%;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// The menus of the toolbar lie above the filter drawer next to the table (the scale of the layers, skin/shared/_variables.scss).
|
|
46
|
+
// The toolbar has the top corners of the table.
|
|
47
|
+
@include toolbar_or_paginator-container($bro-table-toolbar_container, $bro-table-toolbar_shadow, $toolbar-selector, $bro-toolbar-height, $bro-toolbar-z-index, var(--bro-corner-radius) var(--bro-corner-radius) 0 0);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
@mixin skin_table-header() {
|
|
51
|
+
@include toolbar_or_paginator-container($bro-table-header_container, $bro-table-header_shadow, $bro-table-header, var(--bro-header-height), $bro-header-paginator-z-index);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
@mixin skin_paginator($paginator-selector) {
|
|
55
|
+
#{$bro-paginator-container} {
|
|
56
|
+
top: calc(var(--bro-shadow-size) * -2);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// The paginator has the bottom corners of the table
|
|
60
|
+
@include toolbar_or_paginator-container($bro-paginator-container, $bro-paginator-shadow, $paginator-selector, $bro-paginator-height, $bro-header-paginator-z-index, 0 0 var(--bro-corner-radius) var(--bro-corner-radius));
|
|
61
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
@use "../variables" as *;
|
|
2
|
+
|
|
3
|
+
// The table with the filter drawer carries the class of the skin itself:
|
|
4
|
+
// table-bro-filter-drawer-container#{&} is table-bro-filter-drawer-container.nv and the like
|
|
5
|
+
@mixin styles {
|
|
6
|
+
// The drawer lies above a table that does not fit its narrowed regions, and the scrim of the modal drawer between them
|
|
7
|
+
@at-root table-bro-filter-drawer-container#{&} {
|
|
8
|
+
> .bro-filter-drawer-scrim {
|
|
9
|
+
z-index: $bro-filter-drawer-scrim-z-index;
|
|
10
|
+
|
|
11
|
+
background: $bro-scrim-color;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
> .bro-filter-drawer-card {
|
|
15
|
+
z-index: $bro-filter-drawer-card-z-index;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
> .bro-filter-drawer-header,
|
|
19
|
+
> [slot="filters"] {
|
|
20
|
+
z-index: $bro-filter-drawer-content-z-index;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// The modal drawer and its scrim lie over the whole table, its toolbar too
|
|
24
|
+
&[modal] {
|
|
25
|
+
> .bro-filter-drawer-scrim {
|
|
26
|
+
z-index: $bro-modal-filter-drawer-scrim-z-index;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
> .bro-filter-drawer-card {
|
|
30
|
+
z-index: $bro-modal-filter-drawer-card-z-index;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
> .bro-filter-drawer-header,
|
|
34
|
+
> [slot="filters"] {
|
|
35
|
+
z-index: $bro-modal-filter-drawer-content-z-index;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// The filters of the application under the header
|
|
40
|
+
> [slot="filters"] > * {
|
|
41
|
+
padding: $bro-row-horizontal-padding;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// The filters of the application under the header in the card of mat-drawer of the mat skin
|
|
46
|
+
.bro-filter-drawer-card > .bro-filter-drawer-header ~ * {
|
|
47
|
+
padding: $bro-row-horizontal-padding;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.bro-filter-drawer-header {
|
|
51
|
+
.bro-toolbar {
|
|
52
|
+
display: block;
|
|
53
|
+
|
|
54
|
+
height: $bro-toolbar-height;
|
|
55
|
+
|
|
56
|
+
> nav {
|
|
57
|
+
box-sizing: border-box;
|
|
58
|
+
height: 100%;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
@use "../variables" as *;
|
|
2
|
+
@use "shared-selector-map" as *;
|
|
3
|
+
|
|
4
|
+
@mixin styles {
|
|
5
|
+
#{$bro-shadow} {
|
|
6
|
+
padding-right: var(--bro-shadow-size);
|
|
7
|
+
padding-left: var(--bro-shadow-size);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
#{$bro-table-shadows} {
|
|
11
|
+
z-index: $bro-shadow-z-index;
|
|
12
|
+
|
|
13
|
+
width: calc(100% - var(--bro-shadow-size) * 2);
|
|
14
|
+
|
|
15
|
+
.bro-row {
|
|
16
|
+
height: var(--bro-row-height);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
@use 'sass:math';
|
|
2
|
+
@use "../variables" as *;
|
|
3
|
+
@use "shared-selector-map" as *;
|
|
4
|
+
|
|
5
|
+
@mixin styles {
|
|
6
|
+
$bro-state-icon-rotate-offset: math.ceil(math.sqrt(2) * $bro-state-icon-size) - $bro-state-icon-size;
|
|
7
|
+
|
|
8
|
+
#{$bro-state-container} {
|
|
9
|
+
padding-right: $bro-state-icon-rotate-offset;
|
|
10
|
+
padding-left: $bro-state-icon-rotate-offset;
|
|
11
|
+
|
|
12
|
+
font-size: $bro-state-message-font-size;
|
|
13
|
+
line-height: $bro-state-line-height;
|
|
14
|
+
|
|
15
|
+
.bro-state-icon {
|
|
16
|
+
top: $bro-state-line-height;
|
|
17
|
+
|
|
18
|
+
width: $bro-state-icon-size;
|
|
19
|
+
height: $bro-state-icon-size;
|
|
20
|
+
|
|
21
|
+
margin-right: $bro-state-icon-margin-right;
|
|
22
|
+
|
|
23
|
+
font-size: $bro-state-icon-size;
|
|
24
|
+
line-height: $bro-state-line-height;
|
|
25
|
+
|
|
26
|
+
& > svg {
|
|
27
|
+
width: $bro-state-icon-size;
|
|
28
|
+
height: $bro-state-icon-size;
|
|
29
|
+
|
|
30
|
+
vertical-align: top;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
lottie-player {
|
|
35
|
+
height: $bro-state-icon-size * 3;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// The skin class is on the table element itself: table-bro#{&} is table-bro.nv and the like
|
|
2
|
+
// The visible table starts one shadow size into the element and keeps its width, so a full width leaves room
|
|
3
|
+
// for both shadows
|
|
4
|
+
|
|
5
|
+
@use "../variables" as *;
|
|
6
|
+
@use "shared-selector-map" as *;
|
|
7
|
+
@use "../mixins/toolbar" as *;
|
|
8
|
+
|
|
9
|
+
@mixin styles {
|
|
10
|
+
@at-root table-bro#{&} {
|
|
11
|
+
@if $bro-table-width == 100% {
|
|
12
|
+
width: calc(100% - var(--bro-shadow-size) * 2);
|
|
13
|
+
} @else {
|
|
14
|
+
width: $bro-table-width;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// A narrower table would wrap its paginator; a narrow screen is for the adaptive layout of the next versions
|
|
18
|
+
min-width: var(--bro-table-min-width);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@at-root table-bro#{&} table {
|
|
22
|
+
th.bro-header-cell,
|
|
23
|
+
td.bro-cell {
|
|
24
|
+
box-sizing: border-box;
|
|
25
|
+
|
|
26
|
+
padding: 0 0 0 $bro-row-horizontal-padding;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// The last column keeps the same space at the right edge of the table, as Material gives it: a value at the right
|
|
30
|
+
// edge of its column does not touch the edge of the table
|
|
31
|
+
th.bro-header-cell:last-child,
|
|
32
|
+
td.bro-cell:last-child {
|
|
33
|
+
padding-right: $bro-row-horizontal-padding;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
@include skin_table-header();
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
#{$bro-table-body_container} {
|
|
42
|
+
// The body runs on under the paginator by one shadow size, with the rows of the next page; the rounded bottom
|
|
43
|
+
// corners of the paginator would show them. Under the paginator the body ends above its corners, and beside it
|
|
44
|
+
// the shadow of the body keeps its size. An extension of the layout of the body that draws its own decorations of the
|
|
45
|
+
// rows hides the rows out of the window itself, so they stay whole
|
|
46
|
+
$cut: max(0px, var(--bro-shadow-size) + var(--bro-corner-radius) - #{$bro-paginator-height});
|
|
47
|
+
|
|
48
|
+
z-index: $bro-table-container-z-index;
|
|
49
|
+
top: calc(var(--bro-shadow-size) * -1);
|
|
50
|
+
|
|
51
|
+
clip-path: polygon(0 0, 100% 0, 100% 100%, calc(100% - var(--bro-shadow-size)) 100%, calc(100% - var(--bro-shadow-size)) calc(100% - #{$cut}), var(--bro-shadow-size) calc(100% - #{$cut}), var(--bro-shadow-size) 100%, 0 100%);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
#{$bro-table-body} {
|
|
55
|
+
z-index: $bro-table-container-z-index;
|
|
56
|
+
|
|
57
|
+
> .bro-table {
|
|
58
|
+
z-index: $bro-table-container-z-index;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
#{$bro-table-body},
|
|
63
|
+
#{$bro-table-shadows} {
|
|
64
|
+
padding-top: var(--bro-shadow-size);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
#{$bro-table-aux} {
|
|
68
|
+
top: var(--bro-shadow-size);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
@use "../variables" as *;
|
|
2
|
+
@use "shared-selector-map" as *;
|
|
3
|
+
@use "../../../mixins/text-ellipsis" as *;
|
|
4
|
+
|
|
5
|
+
@mixin styles {
|
|
6
|
+
#{$bro-cell_text-ellipsis-container} {
|
|
7
|
+
line-height: 1.5;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// The width of the row counter column of the skin; the skin class is on the table element itself
|
|
11
|
+
@at-root table-bro#{&} {
|
|
12
|
+
@include bro-text-ellipsis-width('.bro-cell-number', $bro-cell-number-width);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
@use "variables" as *;
|
|
2
|
+
@use "../../shared/mixins/skin-colors" as *;
|
|
3
|
+
|
|
4
|
+
$bro-border-color: #dee2e6;
|
|
5
|
+
$bro-border-color-dark: #495057;
|
|
6
|
+
|
|
7
|
+
@mixin styles {
|
|
8
|
+
// The table has the text and the color scheme of its theme: native controls follow the scheme, and a table with
|
|
9
|
+
// a theme of its own does not take the text of a page of the other theme
|
|
10
|
+
#{$bro-skin} {
|
|
11
|
+
color: #212529;
|
|
12
|
+
|
|
13
|
+
color-scheme: light;
|
|
14
|
+
|
|
15
|
+
@include bro-table-theme(
|
|
16
|
+
'.bro-table',
|
|
17
|
+
'.bro-toolbar',
|
|
18
|
+
#fff,
|
|
19
|
+
$bro-border-color,
|
|
20
|
+
#212529,
|
|
21
|
+
rgba(#212529, .75)
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Apply the dark theme only when the `.bro-dark-theme` CSS class is applied
|
|
26
|
+
// to an ancestor element of the components (such as `body`) or to the table host.
|
|
27
|
+
// A table with its own light theme, the class bro-light-theme, stays light under a dark ancestor
|
|
28
|
+
.bro-dark-theme {
|
|
29
|
+
#{$bro-skin}:not(.bro-light-theme),
|
|
30
|
+
&#{$bro-skin} {
|
|
31
|
+
color: #dee2e6;
|
|
32
|
+
|
|
33
|
+
color-scheme: dark;
|
|
34
|
+
|
|
35
|
+
@include bro-table-theme(
|
|
36
|
+
'.bro-table',
|
|
37
|
+
'.bro-toolbar',
|
|
38
|
+
#2b3035,
|
|
39
|
+
$bro-border-color-dark,
|
|
40
|
+
#dee2e6,
|
|
41
|
+
rgba(#dee2e6, .75)
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// The values of the native skin for the variables every skin has (skin/shared/_variables.scss)
|
|
2
|
+
@forward "../../shared/variables" with (
|
|
3
|
+
$bro-skin: '.nv',
|
|
4
|
+
|
|
5
|
+
$bro-table-width: 100% !default, // or px-value, or 100%;
|
|
6
|
+
|
|
7
|
+
$bro-table-header-height: 40px !default,
|
|
8
|
+
$bro-table-row-height: 40px !default,
|
|
9
|
+
$bro-row-horizontal-padding: 1.25rem !default,
|
|
10
|
+
|
|
11
|
+
$bro-table-shadow-size: 48px !default,
|
|
12
|
+
|
|
13
|
+
$bro-toolbar-height: 64px !default,
|
|
14
|
+
$bro-paginator-height: 56px !default,
|
|
15
|
+
$bro-table-min-width: 594px !default,
|
|
16
|
+
|
|
17
|
+
$bro-corner-radius: 12px !default, // the corner-medium of Material 3, as its cards
|
|
18
|
+
|
|
19
|
+
$bro-filter-drawer-width: 320px !default,
|
|
20
|
+
$bro-filter-drawer-corner-radius: 16px !default, // the corner-large of Material 3, as its side sheets
|
|
21
|
+
$bro-scrim-color: rgba(#000, .32) !default, // the scrim of Material 3
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
$bro-global-progress: 10px !default,
|
|
25
|
+
$bro-details-progress: 6px !default,
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
// Layers
|
|
29
|
+
$bro-table-container-z-index: 2 !default,
|
|
30
|
+
$bro-shadow-z-index: -1 !default,
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
// Read by the table script (skin/shared/mixins/_custom-properties.scss)
|
|
34
|
+
$bro-refresh-overlay-opacity: .5 !default,
|
|
35
|
+
$bro-refresh-overlay-opacity-dark: .5 !default,
|
|
36
|
+
$bro-column-width-duration: 500ms !default, // read by the CSS alone
|
|
37
|
+
$bro-details-duration: 350ms !default,
|
|
38
|
+
$bro-details-easing: cubic-bezier(.37, 0, .63, 1) !default, // the curve of easeInOutSine
|
|
39
|
+
$bro-filter-drawer-duration: 400ms !default,
|
|
40
|
+
$bro-kinetic-time-constant: 280ms !default, // the time constant of the exponential decay, not its duration
|
|
41
|
+
$bro-state-icon-duration: 500ms !default,
|
|
42
|
+
$bro-state-message-duration: 750ms !default,
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
// State
|
|
46
|
+
$bro-state-icon-size: 28px !default,
|
|
47
|
+
$bro-state-icon-margin-right: 16px !default,
|
|
48
|
+
$bro-state-line-height: 33px !default,
|
|
49
|
+
$bro-state-message-font-size: 28px !default,
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
// Table cells
|
|
53
|
+
$bro-cell-number-width: 45px !default
|
|
54
|
+
);
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
@use "../../variables" as *;
|
|
2
|
+
|
|
3
|
+
$bro-margin: 0.5rem;
|
|
4
|
+
$bro-padding: $bro-margin;
|
|
5
|
+
|
|
6
|
+
$bro-link-color: #00e;
|
|
7
|
+
$bro-link-color-dark: #7dafff;
|
|
8
|
+
|
|
9
|
+
@mixin styles {
|
|
10
|
+
.bro-pagination { // copies styles of bs `.pagination`
|
|
11
|
+
display: flex;
|
|
12
|
+
|
|
13
|
+
// The links have no padding of their own: the last one stands as far from the edge as the links of Bootstrap do
|
|
14
|
+
margin-right: 0.75rem;
|
|
15
|
+
margin-bottom: 0;
|
|
16
|
+
padding-left: 0;
|
|
17
|
+
|
|
18
|
+
list-style: none;
|
|
19
|
+
|
|
20
|
+
cursor: pointer;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.bro-page-link {
|
|
24
|
+
position: relative;
|
|
25
|
+
|
|
26
|
+
display: block;
|
|
27
|
+
|
|
28
|
+
color: $bro-link-color;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.bro-dark-theme #{$bro-skin}:not(.bro-light-theme),
|
|
32
|
+
#{$bro-skin}.bro-dark-theme {
|
|
33
|
+
.bro-page-link {
|
|
34
|
+
color: $bro-link-color-dark;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.bro-page-item {
|
|
39
|
+
&:not(:first-child) .bro-page-link {
|
|
40
|
+
margin-left: $bro-margin;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// The paginator gives the class disabled to the item of a page that does not exist; after the colors of the themes
|
|
44
|
+
&.disabled .bro-page-link {
|
|
45
|
+
color: GrayText;
|
|
46
|
+
|
|
47
|
+
pointer-events: none;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
@use "../../variables" as *;
|
|
2
|
+
@use "paginator" as *;
|
|
3
|
+
@use "../../../shared/table-bro/toolbar" as *;
|
|
4
|
+
|
|
5
|
+
$bro-margin: 0.5rem;
|
|
6
|
+
$bro-padding: $bro-margin;
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
/** Bootstrap-based (5.3) styles: */
|
|
10
|
+
.bro-navbar {
|
|
11
|
+
position: relative;
|
|
12
|
+
|
|
13
|
+
display: flex;
|
|
14
|
+
|
|
15
|
+
padding: $bro-padding;
|
|
16
|
+
|
|
17
|
+
flex-wrap: wrap; // allow us to do the line break for collapsing content
|
|
18
|
+
align-items: center;
|
|
19
|
+
justify-content: space-between; // space out brand from logo
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
div.bro-toolbar-content { // styles of `.container-fluid`
|
|
23
|
+
display: flex;
|
|
24
|
+
|
|
25
|
+
width: 100%;
|
|
26
|
+
|
|
27
|
+
flex-wrap: inherit;
|
|
28
|
+
align-items: center;
|
|
29
|
+
justify-content: space-between;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
.bro-navbar-brand {
|
|
34
|
+
margin-right: $bro-padding;
|
|
35
|
+
padding-top: $bro-padding;
|
|
36
|
+
padding-bottom: $bro-padding;
|
|
37
|
+
|
|
38
|
+
font-weight: bold;
|
|
39
|
+
|
|
40
|
+
white-space: nowrap;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
ul.bro-navbar-nav {
|
|
44
|
+
display: flex;
|
|
45
|
+
|
|
46
|
+
// The links have no padding of their own: the last one stands as far from the edge as the links of Bootstrap do
|
|
47
|
+
margin-right: 0.75rem;
|
|
48
|
+
margin-bottom: 0;
|
|
49
|
+
padding-left: 0;
|
|
50
|
+
|
|
51
|
+
flex-direction: column; // cannot use `inherit` to get the `.navbar`s value
|
|
52
|
+
|
|
53
|
+
list-style: none;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.bro-navbar-collapse {
|
|
57
|
+
flex-grow: 1;
|
|
58
|
+
flex-basis: 100%;
|
|
59
|
+
|
|
60
|
+
// For always expanded or extra full navbars, ensure content aligns itself
|
|
61
|
+
// properly vertically. Can be easily overridden with flex utilities.
|
|
62
|
+
align-items: center;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.bro-navbar-expand {
|
|
66
|
+
flex-wrap: nowrap;
|
|
67
|
+
justify-content: flex-start;
|
|
68
|
+
|
|
69
|
+
.bro-navbar-nav {
|
|
70
|
+
flex-direction: row;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.bro-navbar-collapse {
|
|
74
|
+
display: flex;
|
|
75
|
+
|
|
76
|
+
flex-basis: auto;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
/** Custom styles: */
|
|
82
|
+
.bro-nav-item {
|
|
83
|
+
&:not(:first-child) .bro-nav-link {
|
|
84
|
+
margin-left: $bro-margin;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
select {
|
|
88
|
+
width: 60px;
|
|
89
|
+
|
|
90
|
+
margin-left: $bro-margin;
|
|
91
|
+
|
|
92
|
+
// The native select of WebKit keeps a wider place for its arrow than the one of Chrome, and 60px cut its title to
|
|
93
|
+
// "Mo": there it takes the width of its title. Only WebKit knows the system font -apple-system-body
|
|
94
|
+
@supports (font: -apple-system-body) {
|
|
95
|
+
width: auto;
|
|
96
|
+
|
|
97
|
+
field-sizing: content;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
@include toolbar-links('.bro-nav-link', $bro-link-color);
|
|
103
|
+
|
|
104
|
+
.bro-dark-theme #{$bro-skin}:not(.bro-light-theme),
|
|
105
|
+
#{$bro-skin}.bro-dark-theme {
|
|
106
|
+
@include toolbar-links('.bro-nav-link', $bro-link-color-dark);
|
|
107
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
@use "../components/bootstrap-based/paginator" as *;
|
|
2
|
+
|
|
3
|
+
@mixin styles {
|
|
4
|
+
bro-button {
|
|
5
|
+
a {
|
|
6
|
+
color: $bro-link-color;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
// A link with an icon is one box, so the outline of its focus is one rectangle around the title and the icon,
|
|
10
|
+
// not the box of the text with the taller box of the icon
|
|
11
|
+
a:has(> .bro-button-toggle) {
|
|
12
|
+
display: inline-block;
|
|
13
|
+
|
|
14
|
+
// The native outline of WebKit takes in the box of the turned icon of an open row, which reaches below the link,
|
|
15
|
+
// unless the link clips its overflow. It clips it across alone: a clip down the link moves its baseline in WebKit.
|
|
16
|
+
// Only WebKit knows the system font -apple-system-body; Chrome draws the text of a link that clips its overflow
|
|
17
|
+
// with other pixels. The icon paints in a layer of its own there, from the start: the layers around it change
|
|
18
|
+
// with the focus of the keyboard, as the cell of a row of Island Details takes one, and Safari kept an old icon
|
|
19
|
+
// in a layer that had painted it next to the new one. An icon in its own layer paints into no other layer
|
|
20
|
+
@supports (font: -apple-system-body) {
|
|
21
|
+
overflow-x: clip;
|
|
22
|
+
|
|
23
|
+
> .bro-button-toggle {
|
|
24
|
+
will-change: transform;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.bro-dark-theme &:not(.bro-light-theme),
|
|
31
|
+
&.bro-dark-theme {
|
|
32
|
+
a {
|
|
33
|
+
color: $bro-link-color-dark;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
@use "sass:math";
|
|
2
|
+
@use "../variables" as *;
|
|
3
|
+
@use "shared-selector-map" as *;
|
|
4
|
+
@use "../../../shared/mixins/progress-bar" as *;
|
|
5
|
+
|
|
6
|
+
@mixin styles {
|
|
7
|
+
@include table-header-progress-bar('bro-nv-progress-bar progress');
|
|
8
|
+
@include table-aux-progress-bar('bro-nv-progress-bar progress');
|
|
9
|
+
|
|
10
|
+
$bro-nv-global-progress-inner-vertical-space: 3px; // inner top/bottom space if height is 10px
|
|
11
|
+
|
|
12
|
+
#{$bro-table-header} {
|
|
13
|
+
bro-nv-progress-bar progress {
|
|
14
|
+
top: calc(var(--bro-header-height) - #{$bro-global-progress - $bro-nv-global-progress-inner-vertical-space});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
$bro-nv-details-progress-inner-vertical-space: 2px; // inner top/bottom space if height is 6px
|
|
19
|
+
|
|
20
|
+
#{$bro-table-aux} {
|
|
21
|
+
bro-nv-progress-bar progress {
|
|
22
|
+
top: calc(var(--bro-row-height) - #{$bro-details-progress - $bro-nv-details-progress-inner-vertical-space});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// WebKit and Firefox draw their native bar over the height of the box, at most 8px and 6px, and Chrome draws it at
|
|
27
|
+
// half the height of the box, in its middle. In WebKit, which alone knows the system font -apple-system-body, and in
|
|
28
|
+
// Firefox, which alone knows ::-moz-progress-bar, the box takes the height and the place of the bar of Chrome, so
|
|
29
|
+
// their bars have them too.
|
|
30
|
+
@supports (font: -apple-system-body) or selector(::-moz-progress-bar) {
|
|
31
|
+
#{$bro-table-header} {
|
|
32
|
+
bro-nv-progress-bar progress {
|
|
33
|
+
height: math.div($bro-global-progress, 2);
|
|
34
|
+
margin-top: math.div($bro-global-progress, 4);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
#{$bro-table-aux} {
|
|
39
|
+
bro-nv-progress-bar progress {
|
|
40
|
+
height: math.div($bro-details-progress, 2);
|
|
41
|
+
margin-top: math.div($bro-details-progress, 4);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
@use "../themes" as *;
|
|
2
|
+
|
|
3
|
+
@mixin styles {
|
|
4
|
+
@at-root table-bro#{&} table {
|
|
5
|
+
border-color: $bro-border-color;
|
|
6
|
+
|
|
7
|
+
> :not(caption) > * > * {
|
|
8
|
+
border-bottom-width: 1px;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
@at-root .bro-dark-theme table-bro#{&}:not(.bro-light-theme) table,
|
|
13
|
+
table-bro#{&}.bro-dark-theme table {
|
|
14
|
+
border-color: $bro-border-color-dark;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
@use "toolbar" as *;
|
|
2
|
+
@use "shared-selector-map" as *;
|
|
3
|
+
@use "../../shared/table-bro/toolbar-search" as *;
|
|
4
|
+
|
|
5
|
+
@mixin styles {
|
|
6
|
+
#{$bro-toolbar_content-search} {
|
|
7
|
+
input {
|
|
8
|
+
font-weight: bold;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.bro-toolbar-search .bro-nav-link {
|
|
13
|
+
text-decoration: none;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
@include toolbar-search-content($bro-nav-link-padding);
|
|
17
|
+
}
|