@fkui/design 5.36.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.
Files changed (133) hide show
  1. package/LICENSE.md +7 -0
  2. package/README.md +3 -0
  3. package/lib/fkui-exp.css +7818 -0
  4. package/lib/fkui-exp.min.css +1 -0
  5. package/lib/fkui-int.css +7818 -0
  6. package/lib/fkui-int.min.css +1 -0
  7. package/lib/fonts.css +3 -0
  8. package/lib/fonts.min.css +1 -0
  9. package/package.json +70 -0
  10. package/src/_core.scss +1 -0
  11. package/src/assets/images/fk-logo-default.svg +22 -0
  12. package/src/assets/images/fk-logo-primary-large.svg +161 -0
  13. package/src/assets/images/fk-logo-primary-small.svg +1 -0
  14. package/src/assets/images/fk-logo-primary.svg +23 -0
  15. package/src/assets/images/fk-logo-small.svg +5 -0
  16. package/src/components/_all.scss +60 -0
  17. package/src/components/_z-index.scss +6 -0
  18. package/src/components/anchor/_anchor.scss +27 -0
  19. package/src/components/badge/_badge.scss +72 -0
  20. package/src/components/button/_button.scss +497 -0
  21. package/src/components/calendar-day/_calendar-day.scss +86 -0
  22. package/src/components/calendar-deprecated/_calendar-deprecated.scss +628 -0
  23. package/src/components/card/_card.scss +51 -0
  24. package/src/components/checkbox/_all.scss +2 -0
  25. package/src/components/checkbox/_checkbox-group.scss +18 -0
  26. package/src/components/checkbox/_checkbox.scss +111 -0
  27. package/src/components/chip/_chip.scss +91 -0
  28. package/src/components/close-button/_close-button.scss +16 -0
  29. package/src/components/contextmenu/_contextmenu.scss +54 -0
  30. package/src/components/crud-dataset/_crud-dataset.scss +18 -0
  31. package/src/components/datepicker-field/_datepicker-field.scss +76 -0
  32. package/src/components/dialogue-tree/_dialogue-tree.scss +54 -0
  33. package/src/components/entrypoint/_entrypoint.scss +40 -0
  34. package/src/components/error-list/_error-list.scss +54 -0
  35. package/src/components/expandable-panel/_expandable-panel.scss +113 -0
  36. package/src/components/expandable-paragraph/_expandable-paragraph.scss +97 -0
  37. package/src/components/fieldset/_fieldset.scss +22 -0
  38. package/src/components/file-item/_file-item.scss +80 -0
  39. package/src/components/file-selector/_file-selector.scss +28 -0
  40. package/src/components/file-uploader/_file-uploader.scss +7 -0
  41. package/src/components/form/_all.scss +2 -0
  42. package/src/components/form/_form-step.scss +91 -0
  43. package/src/components/form/_form.scss +8 -0
  44. package/src/components/group/_group.scss +8 -0
  45. package/src/components/icon/_icon.scss +175 -0
  46. package/src/components/indent/_indent.scss +11 -0
  47. package/src/components/label/_label.scss +47 -0
  48. package/src/components/layout-application-template/_layout-application-template.scss +75 -0
  49. package/src/components/layout-navigation/_layout-navigation.scss +124 -0
  50. package/src/components/layout-secondary/_layout-secondary.scss +129 -0
  51. package/src/components/list/_list.scss +117 -0
  52. package/src/components/loader/_loader.scss +179 -0
  53. package/src/components/message-box/_message-box.scss +121 -0
  54. package/src/components/modal/_modal.scss +190 -0
  55. package/src/components/navbar/_navbar-header.scss +77 -0
  56. package/src/components/navbar/_navbar-nav.scss +30 -0
  57. package/src/components/navbar/_navbar.scss +71 -0
  58. package/src/components/offline/_offline.scss +40 -0
  59. package/src/components/output-field/_output-field.scss +23 -0
  60. package/src/components/page-header/_page-header.scss +96 -0
  61. package/src/components/progressbar/_progressbar.scss +34 -0
  62. package/src/components/radio-button/_all.scss +2 -0
  63. package/src/components/radio-button/_item.scss +54 -0
  64. package/src/components/radio-button/_radio-button-group.scss +38 -0
  65. package/src/components/radio-button/_radio-button.scss +106 -0
  66. package/src/components/select-field/_select-field.scss +88 -0
  67. package/src/components/sort-filter-dataset/_sort-filter-dataset.scss +70 -0
  68. package/src/components/static-panel/_static-panel.scss +31 -0
  69. package/src/components/table/_table.scss +415 -0
  70. package/src/components/text-field/_text-field.scss +127 -0
  71. package/src/components/textarea-field/_textarea-field.scss +55 -0
  72. package/src/components/tooltip/_tooltip.scss +87 -0
  73. package/src/components/wizard/_all.scss +2 -0
  74. package/src/components/wizard/_wizard-step.scss +318 -0
  75. package/src/components/wizard/_wizard.scss +5 -0
  76. package/src/core/_all.scss +6 -0
  77. package/src/core/_config-variables.scss +23 -0
  78. package/src/core/_density.scss +11 -0
  79. package/src/core/_global.scss +47 -0
  80. package/src/core/_mixins.scss +8 -0
  81. package/src/core/_reset.scss +60 -0
  82. package/src/core/_size.scss +23 -0
  83. package/src/core/helpers/_all.scss +2 -0
  84. package/src/core/helpers/_helpers.scss +19 -0
  85. package/src/core/helpers/accessibility/_all.scss +2 -0
  86. package/src/core/helpers/accessibility/_focus.scss +24 -0
  87. package/src/core/helpers/accessibility/_screenreader.scss +11 -0
  88. package/src/core/layout/_all.scss +2 -0
  89. package/src/core/layout/grid/_all.scss +1 -0
  90. package/src/core/layout/grid/_grid.scss +135 -0
  91. package/src/core/layout/positioning/_all.scss +1 -0
  92. package/src/core/layout/positioning/_positioning.scss +16 -0
  93. package/src/core/mixins/_all.scss +9 -0
  94. package/src/core/mixins/_anchor.scss +17 -0
  95. package/src/core/mixins/_arrow-creator.scss +51 -0
  96. package/src/core/mixins/_breakpoints.scss +42 -0
  97. package/src/core/mixins/_button.scss +78 -0
  98. package/src/core/mixins/_button_icon.scss +51 -0
  99. package/src/core/mixins/_circle.scss +21 -0
  100. package/src/core/mixins/_focus.scss +4 -0
  101. package/src/core/mixins/_label-inline.scss +19 -0
  102. package/src/core/mixins/_sr-only.scss +11 -0
  103. package/src/core/typography/_all.scss +1 -0
  104. package/src/core/typography/_headings.scss +88 -0
  105. package/src/core/utils/_all.scss +1 -0
  106. package/src/core/utils/_functions.scss +41 -0
  107. package/src/fkui-exp.scss +1 -0
  108. package/src/fkui-int.scss +1 -0
  109. package/src/fkui.scss +3 -0
  110. package/src/fonts.scss +3 -0
  111. package/src/internal-components/IFlex/_iflex.scss +98 -0
  112. package/src/internal-components/IMenu/_imenu.scss +106 -0
  113. package/src/internal-components/IPopupMenu/_ipopupmenu.scss +50 -0
  114. package/src/internal-components/ISkipLink/_iskiplink.scss +16 -0
  115. package/src/internal-components/_all.scss +11 -0
  116. package/src/internal-components/animate-expand/_animate-expand.scss +17 -0
  117. package/src/internal-components/calendar/_calendar.scss +7 -0
  118. package/src/internal-components/calendar-month/_month.scss +74 -0
  119. package/src/internal-components/calendar-navbar/_navbar.scss +55 -0
  120. package/src/internal-components/popup/_popup.scss +35 -0
  121. package/src/internal-components/popupError/_popuperror.scss +116 -0
  122. package/src/internal-components/popupError/arrows/_bottom-before.scss +22 -0
  123. package/src/internal-components/popupError/arrows/_bottom.scss +19 -0
  124. package/src/internal-components/popupError/arrows/_left-before.scss +22 -0
  125. package/src/internal-components/popupError/arrows/_left.scss +19 -0
  126. package/src/internal-components/popupError/arrows/_right-before.scss +22 -0
  127. package/src/internal-components/popupError/arrows/_right.scss +19 -0
  128. package/src/internal-components/popupError/arrows/_top-before.scss +22 -0
  129. package/src/internal-components/popupError/arrows/_top.scss +19 -0
  130. package/stylelint/index.js +3 -0
  131. package/stylelint/recommended.js +6 -0
  132. package/stylelint/rules/deprecatedVariable/index.js +93 -0
  133. package/stylelint/rules/index.js +3 -0
@@ -0,0 +1,106 @@
1
+ @use "../../core/size";
2
+ @use "../../core/mixins/focus" as *;
3
+ @use "../../core/mixins/sr-only" as *;
4
+ @use "../../core/utils/functions" as *;
5
+
6
+ $radio_button_label_offset: 0.1rem;
7
+ $RADIO_BUTTON_SELECTOR: ".radio-button" !default;
8
+
9
+ #{$RADIO_BUTTON_SELECTOR} {
10
+ min-height: var(--f-height-medium);
11
+ margin-bottom: densify(size.$margin-100);
12
+ margin-right: size.$margin-150;
13
+
14
+ &:last-child {
15
+ margin-bottom: 0;
16
+ margin-right: 0;
17
+ }
18
+
19
+ &__input {
20
+ @include sr-only;
21
+
22
+ // Set height so that IE11 will scroll element into view when navigating (tab, arrow).
23
+ // Use 4 times the height of radio-button to ensure it is inside the view.
24
+ // This height will not be visible.
25
+ min-height: calc(4 * var(--f-height-medium));
26
+ }
27
+
28
+ &__label {
29
+ min-width: 4.5rem; // set to avoid being too small when limited or no text is used
30
+ cursor: pointer;
31
+ display: inline-block;
32
+ font-size: var(--f-font-size-standard);
33
+ line-height: var(--f-line-height-small);
34
+ padding-left: size.$padding-175;
35
+ padding-top: $radio_button_label_offset;
36
+ padding-bottom: $radio_button_label_offset;
37
+ position: relative;
38
+
39
+ // Safari: required to make label clickable
40
+ * {
41
+ pointer-events: none;
42
+ }
43
+
44
+ &::before,
45
+ &::after {
46
+ border-radius: 50%;
47
+ content: "";
48
+ height: var(--f-icon-size-medium);
49
+ left: 0;
50
+ margin: $radio_button_label_offset 0;
51
+ position: absolute;
52
+ top: 0;
53
+ cursor: pointer;
54
+ width: var(--f-icon-size-medium);
55
+ border: var(--f-border-width-medium) solid var(--f-border-color-input);
56
+ display: block;
57
+ transition:
58
+ background-color ease var(--f-animation-duration-medium),
59
+ border-color ease var(--f-animation-duration-medium),
60
+ opacity ease var(--f-animation-duration-medium);
61
+ }
62
+
63
+ // Outer ring of the custom radio input
64
+ &::before {
65
+ background: var(--f-background-input);
66
+ box-shadow: inset 0 0 0 var(--f-border-width-medium) var(--f-border-color-input-inner);
67
+ }
68
+
69
+ // Inner ring of the custom radio input
70
+ &::after {
71
+ background: var(--f-background-input-selected);
72
+ box-shadow: inset 0 0 0 var(--f-border-width-medium) var(--f-border-color-input-inner-selected);
73
+ opacity: 0;
74
+ }
75
+ }
76
+
77
+ &.disabled {
78
+ color: var(--f-text-color-input-disabled);
79
+
80
+ #{$RADIO_BUTTON_SELECTOR}__label {
81
+ &::before,
82
+ &::after {
83
+ border: var(--f-border-width-medium) solid var(--f-text-color-input-disabled);
84
+ box-shadow: inset 0 0 0 var(--f-border-width-medium) var(--f-border-color-input-inner-disabled);
85
+ }
86
+
87
+ &::after {
88
+ background: var(--f-background-input-selected-disabled);
89
+ }
90
+ }
91
+ }
92
+
93
+ // Hide inner ring by default
94
+ input[type="radio"] + label::after {
95
+ opacity: 0;
96
+ }
97
+
98
+ // Show inner ring when checked
99
+ input[type="radio"]:checked + label::after {
100
+ opacity: 1;
101
+ }
102
+
103
+ input[type="radio"]:focus + label {
104
+ @include focus-indicator;
105
+ }
106
+ }
@@ -0,0 +1,88 @@
1
+ @use "../../core";
2
+ @use "../icon/icon";
3
+ @use "../../core/size";
4
+ @use "../../core/utils/functions" as *;
5
+
6
+ $SELECT_FIELD_SELECTOR: ".select-field" !default;
7
+
8
+ #{$SELECT_FIELD_SELECTOR} {
9
+ display: flex;
10
+ flex-direction: column;
11
+ justify-content: flex-end;
12
+ margin: 0 0 densify(var(--f-margin-component-bottom));
13
+ position: relative;
14
+ width: var(--f-width-full);
15
+
16
+ &--inline {
17
+ @include core.label-inline;
18
+ }
19
+
20
+ &--table {
21
+ margin-bottom: 0;
22
+ }
23
+
24
+ &--table-error {
25
+ #{$SELECT_FIELD_SELECTOR}__select {
26
+ padding-right: calc(var(--f-icon-size-large) + 2.25rem);
27
+ }
28
+ }
29
+
30
+ &__select {
31
+ appearance: none;
32
+ background-color: var(--f-background-input);
33
+ box-shadow: var(--f-input-shadow-inset);
34
+ border-radius: var(--f-border-radius-medium);
35
+ border: var(--f-border-width-medium) solid var(--f-border-color-input);
36
+ color: var(--f-text-color-default);
37
+ cursor: pointer;
38
+ min-height: densify(var(--f-height-large));
39
+ padding: var(--padding-input-fields);
40
+ width: var(--f-width-full);
41
+
42
+ &:hover {
43
+ background-color: var(--f-background-input-hover);
44
+ }
45
+
46
+ &:focus {
47
+ background-color: var(--f-background-input);
48
+ }
49
+
50
+ &:disabled {
51
+ border-color: var(--f-border-color-input-disabled);
52
+ color: var(--f-text-color-input-disabled);
53
+ background-color: var(--f-background-input-disabled);
54
+ opacity: 1;
55
+ }
56
+ }
57
+
58
+ &__select:disabled + &__icon {
59
+ color: var(--f-text-color-button-disabled);
60
+ }
61
+
62
+ &__icon-wrapper {
63
+ position: relative;
64
+ }
65
+
66
+ &__icon {
67
+ @extend %icon--inset-top-right;
68
+
69
+ color: var(--f-icon-color-primary);
70
+ }
71
+
72
+ &__error-popup-icon {
73
+ color: var(--f-text-color-error);
74
+ display: inline;
75
+ position: absolute;
76
+ right: calc(var(--f-icon-size-large) + 0.75rem);
77
+ top: size.$margin-050;
78
+ height: var(--f-icon-size-large);
79
+ width: var(--f-icon-size-large);
80
+ overflow: hidden;
81
+ text-align: center;
82
+ }
83
+ &--error {
84
+ #{$SELECT_FIELD_SELECTOR}__select {
85
+ border-color: var(--f-border-color-error);
86
+ }
87
+ }
88
+ }
@@ -0,0 +1,70 @@
1
+ @use "../../core";
2
+ @use "../../core/size";
3
+
4
+ $SORT_FILTER_DATASET_SELECTOR: ".sort-filter-dataset" !default;
5
+
6
+ // Selectfield
7
+ $sortfilter-field-margin-bottom: 0.85rem !default;
8
+
9
+ // Selectfield label
10
+ $sortfilter-field-label-margin-right: size.$margin-100 !default;
11
+ $sortfilter-field-label-padding-top: size.$padding-050 !default;
12
+
13
+ // Header
14
+ $sortfilter-header-font-size: var(--f-font-size-h2) !default;
15
+ $sortfilter-header-padding-top: size.$padding-025 !default;
16
+
17
+ #{$SORT_FILTER_DATASET_SELECTOR} {
18
+ &__sort {
19
+ min-width: 80px;
20
+ }
21
+
22
+ &__search {
23
+ position: relative;
24
+
25
+ input {
26
+ padding-left: 2.1rem;
27
+ padding-right: 2.1rem;
28
+
29
+ @include core.breakpoint-up(md) {
30
+ width: 160px;
31
+ }
32
+ }
33
+
34
+ &__magnify-icon {
35
+ position: absolute;
36
+ left: size.$margin-175;
37
+ height: var(--f-height-large);
38
+
39
+ /* same as textfield */
40
+ z-index: 1;
41
+
42
+ /* In front of input field */
43
+ width: 1.2rem;
44
+ color: var(--f-icon-color-sort-filter-dataset-search);
45
+
46
+ @include core.breakpoint-down(sm) {
47
+ top: size.$margin-150;
48
+ left: size.$margin-075;
49
+ }
50
+ }
51
+
52
+ &__close-icon.button--discrete {
53
+ position: absolute;
54
+ top: calc(-1 * size.$margin-075);
55
+ right: 0;
56
+ color: var(--f-icon-color-sort-filter-dataset-close);
57
+ cursor: pointer;
58
+ padding: 1rem;
59
+
60
+ @include core.breakpoint-down(sm) {
61
+ top: size.$margin-100;
62
+ }
63
+ }
64
+
65
+ &__close-icon.button--discrete:hover {
66
+ box-shadow: none;
67
+ background-color: transparent;
68
+ }
69
+ }
70
+ }
@@ -0,0 +1,31 @@
1
+ @use "../../core/size";
2
+
3
+ $STATIC_PANEL_SELECTOR: ".static-panel" !default;
4
+
5
+ #{$STATIC_PANEL_SELECTOR} {
6
+ margin-bottom: 2.5rem;
7
+
8
+ &__heading {
9
+ background: var(--f-background-heading-static-panel);
10
+ border: var(--f-static-panel-heading-border);
11
+ border-bottom: 0;
12
+ font-size: var(--f-font-size-h3);
13
+ line-height: 2rem;
14
+ margin-bottom: 0;
15
+ padding: size.$padding-025 size.$padding-100;
16
+ }
17
+
18
+ &__content {
19
+ border-top: 0;
20
+ border: var(--f-border-width-medium) solid var(--f-border-color-panel);
21
+ padding: size.$padding-175 size.$padding-150;
22
+ }
23
+
24
+ &__icon {
25
+ height: var(--f-icon-size-x-large);
26
+ margin-right: size.$margin-025;
27
+ position: relative;
28
+ top: size.$margin-050;
29
+ width: var(--f-icon-size-x-large);
30
+ }
31
+ }
@@ -0,0 +1,415 @@
1
+ @use "../../core/size";
2
+ @use "../../core/utils/functions" as *;
3
+
4
+ $TABLE_SELECTOR: ".table" !default;
5
+
6
+ // General variables
7
+ $table-font-size: var(--f-font-size-standard) !default;
8
+ $table-focus-size: 2px !default;
9
+ $table-margin: 0 0 densify(var(--f-margin-component-bottom)) !default;
10
+
11
+ // Caption
12
+ $table-caption-background: transparent !default;
13
+ $table-caption-foreground: var(--f-text-color-default) !default;
14
+
15
+ // Header
16
+ $table-header-background: var(--f-background-grid-header) !default;
17
+ $table-header-foreground: var(--f-text-color-default) !default;
18
+ $table-header-separator: 1px solid var(--f-border-color-grid) !default;
19
+ $table-header-padding: densify(size.$padding-025) size.$padding-050 !default;
20
+ $table-header-border: 2px solid var(--f-border-color-grid-header) !default;
21
+ $table-header-font-weight: var(--f-font-weight-medium) !default;
22
+
23
+ // Column description
24
+ $table-description-foreground: var(--f-text-color-discrete) !default;
25
+ $table-description-background: transparent !default;
26
+ $table-description-font-weight: var(--f-font-weight-normal) !default;
27
+
28
+ // Rows
29
+ $table-row-background: var(--f-background-grid-default) !default;
30
+ $table-row-background-alt: var(--f-background-grid-striped) !default;
31
+ $table-row-foreground: var(--f-text-color-default) !default;
32
+ $table-row-separator: 1px solid var(--f-border-color-grid) !default;
33
+ $table-row-font-weight: var(--f-font-weight-normal) !default;
34
+ $table-row-line-height: densify(1.5rem) !default;
35
+
36
+ // Input fields in table cells
37
+ $table-input-margin-top: densify(size.$margin-025);
38
+ $table-input-min-width: size.$padding-175;
39
+ $table-input-height: size.$padding-175;
40
+ $table-input-offset-vertical: densify(0.15rem);
41
+ $table-input-offset-horizontal: 0.25rem;
42
+
43
+ %table-monospace {
44
+ // IE11
45
+ font-feature-settings: tnum 1;
46
+
47
+ // others
48
+ font-variant-numeric: tabular-nums;
49
+ }
50
+
51
+ %table-row-normal {
52
+ background: $table-row-background;
53
+ color: $table-row-foreground;
54
+ }
55
+
56
+ %table-row-striped {
57
+ background: $table-row-background-alt;
58
+ color: $table-row-foreground;
59
+ }
60
+
61
+ %table-row-hover {
62
+ background: var(--f-background-grid-hover);
63
+ color: $table-row-foreground;
64
+ outline: 1px solid var(--f-border-color-grid-hover);
65
+ }
66
+
67
+ %table-row-focus-within {
68
+ background: var(--f-background-grid-focus-inner);
69
+ color: $table-row-foreground;
70
+ }
71
+
72
+ %table-row-focus {
73
+ background: var(--f-background-grid-hover);
74
+ color: $table-row-foreground;
75
+ outline: $table-focus-size solid var(--f-color-focus);
76
+
77
+ // override shadow set by [tabindex]
78
+ box-shadow: none;
79
+ }
80
+
81
+ %table-row-selected {
82
+ background: var(--f-background-grid-selected);
83
+ color: $table-row-foreground;
84
+ }
85
+
86
+ %table-row-active {
87
+ background: var(--f-background-grid-active);
88
+ color: $table-row-foreground;
89
+ }
90
+
91
+ %table-row-expanded-border {
92
+ border-bottom-color: var(--f-border-color-grid-expanded);
93
+ }
94
+
95
+ %table-row-expandable {
96
+ cursor: pointer;
97
+ }
98
+
99
+ %table-row-collapsed {
100
+ visibility: collapse;
101
+ }
102
+
103
+ #{$TABLE_SELECTOR} {
104
+ border-collapse: separate;
105
+ border-spacing: 0;
106
+ font-size: $table-font-size;
107
+ margin: $table-margin;
108
+ width: 100%;
109
+
110
+ // preoccupy the space needed for focus border so the size is not affected
111
+ // while focus is active
112
+ border: $table-focus-size solid transparent;
113
+
114
+ &:focus {
115
+ // border color is used instead of dual-color shadow because when
116
+ // combined with scroll the edges are cut by overflow of the container
117
+ // element, especially on the right side.
118
+ border-color: var(--f-color-focus);
119
+
120
+ // override shadow set by [tabindex]
121
+ box-shadow: none;
122
+ }
123
+
124
+ caption {
125
+ background: $table-caption-background;
126
+ color: $table-caption-foreground;
127
+ font-size: var(--f-font-size-standard);
128
+ font-weight: var(--f-font-weight-medium);
129
+ line-height: var(--f-line-height-large);
130
+ margin-bottom: densify(size.$margin-025);
131
+ width: var(--f-width-full);
132
+ text-align: left;
133
+ }
134
+
135
+ thead {
136
+ th {
137
+ background: $table-header-background;
138
+ border-bottom: $table-header-border;
139
+ border-right: $table-header-separator;
140
+ color: $table-header-foreground;
141
+ font-weight: $table-header-font-weight;
142
+ line-height: var(--f-line-height-large);
143
+ padding: $table-header-padding;
144
+ vertical-align: top;
145
+
146
+ &:last-child {
147
+ border-right: none;
148
+ }
149
+
150
+ #{$TABLE_SELECTOR}__column__header__icon {
151
+ color: var(--f-icon-color-table-header);
152
+ height: var(--f-icon-size-x-small);
153
+ width: var(--f-icon-size-x-small);
154
+ min-width: var(--f-icon-size-x-small);
155
+
156
+ &--discrete {
157
+ color: var(--f-icon-color-table-header-discrete);
158
+ }
159
+ }
160
+ }
161
+ }
162
+
163
+ tbody {
164
+ #{$TABLE_SELECTOR}__row {
165
+ @extend %table-row-normal;
166
+
167
+ &--normal {
168
+ @extend %table-row-normal;
169
+ }
170
+
171
+ &--striped {
172
+ @extend %table-row-striped;
173
+ }
174
+
175
+ &--hover {
176
+ @extend %table-row-hover;
177
+ }
178
+
179
+ &--expandable {
180
+ @extend %table-row-expandable;
181
+ }
182
+
183
+ &--expanded-border {
184
+ td,
185
+ th {
186
+ @extend %table-row-expanded-border;
187
+ }
188
+ }
189
+
190
+ &:focus-within,
191
+ &--focus-within {
192
+ @extend %table-row-focus-within;
193
+
194
+ // these have higher priority
195
+ &#{$TABLE_SELECTOR}__row {
196
+ &--selected {
197
+ @extend %table-row-selected;
198
+ }
199
+
200
+ &--active {
201
+ @extend %table-row-active;
202
+ }
203
+ }
204
+ }
205
+
206
+ &:focus,
207
+ &--focus {
208
+ @extend %table-row-focus;
209
+
210
+ // these have higher priority
211
+ &#{$TABLE_SELECTOR}__row {
212
+ &--selected {
213
+ @extend %table-row-selected;
214
+ }
215
+
216
+ &--active {
217
+ @extend %table-row-active;
218
+ }
219
+ }
220
+ }
221
+
222
+ &--selected {
223
+ @extend %table-row-selected;
224
+ }
225
+
226
+ &--active {
227
+ @extend %table-row-active;
228
+ }
229
+ }
230
+
231
+ #{$TABLE_SELECTOR}__expandable-row {
232
+ @extend %table-row-normal;
233
+
234
+ &--collapsed {
235
+ visibility: collapse;
236
+ }
237
+ }
238
+
239
+ td,
240
+ th {
241
+ padding: densify(var(--f-table-body-row-padding)) var(--f-table-body-row-padding);
242
+ border-bottom: $table-row-separator;
243
+ white-space: nowrap;
244
+ }
245
+
246
+ td {
247
+ line-height: $table-row-line-height;
248
+ font-weight: $table-row-font-weight;
249
+ }
250
+
251
+ th {
252
+ border-right: $table-header-separator;
253
+ font-weight: $table-header-font-weight;
254
+ line-height: $table-row-line-height;
255
+ }
256
+
257
+ #{$TABLE_SELECTOR}__column {
258
+ // apply monospace font only on tbody rows, not thead
259
+ &--numeric,
260
+ &--date {
261
+ @extend %table-monospace;
262
+ }
263
+
264
+ &--selectable {
265
+ padding: densify(0.2rem) 0.2rem;
266
+ }
267
+
268
+ &--indented {
269
+ padding-left: size.$padding-150;
270
+ }
271
+
272
+ // remove margin and reduce padding on buttons
273
+ &--action .button--discrete {
274
+ border-radius: var(--f-button-discrete-table-column-action-border-radius);
275
+ margin: var(--f-button-discrete-table-column-action-margin);
276
+ /* stylelint-disable declaration-block-no-redundant-longhand-properties -- readability */
277
+ padding-top: densify(var(--f-button-discrete-table-column-action-padding-top));
278
+ padding-right: var(--f-button-discrete-table-column-action-padding-right);
279
+ padding-bottom: densify(var(--f-button-discrete-table-column-action-padding-bottom));
280
+ padding-left: var(--f-button-discrete-table-column-action-padding-left);
281
+ /* stylelint-enable declaration-block-no-redundant-longhand-properties */
282
+ min-width: 24px;
283
+ }
284
+
285
+ &--action .button__icon {
286
+ margin: var(--f-button-discrete-table-column-action-icon-margin);
287
+ }
288
+ }
289
+ }
290
+
291
+ &__column {
292
+ &--text {
293
+ text-align: left;
294
+ }
295
+
296
+ &--numeric {
297
+ text-align: right;
298
+ }
299
+
300
+ &--date {
301
+ text-align: left;
302
+ }
303
+
304
+ &--action {
305
+ text-align: center;
306
+ }
307
+
308
+ &--shrink {
309
+ width: 1px;
310
+ white-space: nowrap;
311
+ }
312
+
313
+ &--sortable {
314
+ cursor: pointer;
315
+ }
316
+
317
+ &__description {
318
+ display: block;
319
+ background: $table-description-background;
320
+ color: $table-description-foreground;
321
+ font-weight: $table-description-font-weight;
322
+ }
323
+ }
324
+
325
+ &--striped tbody {
326
+ #{$TABLE_SELECTOR}__row:nth-child(even) {
327
+ @extend %table-row-striped;
328
+
329
+ // these have higher priority
330
+ &#{$TABLE_SELECTOR}__row {
331
+ &--selected {
332
+ @extend %table-row-selected;
333
+ }
334
+
335
+ &--active {
336
+ @extend %table-row-active;
337
+ }
338
+ }
339
+ }
340
+ }
341
+
342
+ &--hover tbody {
343
+ #{$TABLE_SELECTOR}__row:hover {
344
+ @extend %table-row-hover;
345
+
346
+ // these have higher priority
347
+ &#{$TABLE_SELECTOR}__row {
348
+ &--selected {
349
+ @extend %table-row-selected;
350
+ }
351
+
352
+ &--active {
353
+ @extend %table-row-active;
354
+ }
355
+ }
356
+ }
357
+ }
358
+
359
+ &--selectable #{$TABLE_SELECTOR}__row {
360
+ td:hover,
361
+ th:hover {
362
+ cursor: pointer;
363
+ }
364
+ }
365
+
366
+ &__scroll {
367
+ // move margin from <table> to the wrapper div
368
+ margin: $table-margin;
369
+
370
+ #{$TABLE_SELECTOR} {
371
+ margin: 0;
372
+ }
373
+
374
+ &--horizontal {
375
+ overflow-x: auto;
376
+ }
377
+
378
+ &--vertical {
379
+ overflow-y: auto;
380
+ }
381
+ }
382
+
383
+ &__input {
384
+ margin-top: $table-input-margin-top;
385
+
386
+ .checkbox__label,
387
+ .radio-button__label {
388
+ min-width: $table-input-min-width;
389
+ min-height: $table-input-height;
390
+ padding: 0;
391
+ }
392
+
393
+ .checkbox__label::after,
394
+ .checkbox__label::before,
395
+ .radio-button__label::after,
396
+ .radio-button__label::before {
397
+ top: $table-input-offset-vertical;
398
+ left: $table-input-offset-horizontal;
399
+ }
400
+ }
401
+
402
+ &__expand-icon {
403
+ color: var(--f-icon-color-primary);
404
+ background: transparent;
405
+ border: 0;
406
+ flex: 0 0 auto;
407
+ padding: 0;
408
+ pointer-events: none;
409
+ width: 1.5rem;
410
+ height: 1.5rem;
411
+ display: flex;
412
+ align-items: center;
413
+ justify-content: center;
414
+ }
415
+ }