File: toggle-group.scss

package info (click to toggle)
cockpit 354-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 308,956 kB
  • sloc: javascript: 775,606; python: 40,351; ansic: 35,655; cpp: 11,117; sh: 3,511; makefile: 580; xml: 261
file content (166 lines) | stat: -rw-r--r-- 9,157 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
@use '../../sass-utilities' as *;

@include pf-root($toggle-group) {
  // button
  --#{$toggle-group}__button--PaddingBlockStart: var(--pf-t--global--spacer--sm);
  --#{$toggle-group}__button--PaddingInlineEnd: var(--pf-t--global--spacer--md);
  --#{$toggle-group}__button--PaddingBlockEnd: var(--pf-t--global--spacer--sm);
  --#{$toggle-group}__button--PaddingInlineStart: var(--pf-t--global--spacer--md);
  --#{$toggle-group}__button--FontSize: var(--pf-t--global--font--size--body--default);
  --#{$toggle-group}__button--LineHeight: var(--pf-t--global--font--line-height--body);
  --#{$toggle-group}__button--Color: var(--pf-t--global--text--color--regular);
  --#{$toggle-group}__button--BackgroundColor: var(--pf-t--global--background--color--action--plain--default);
  --#{$toggle-group}__button--ZIndex: auto;
  --#{$toggle-group}__button--hover--BackgroundColor: var(--pf-t--global--background--color--primary--hover);
  --#{$toggle-group}__button--hover--ZIndex: var(--pf-t--global--z-index--xs);
  --#{$toggle-group}__button--hover--before--BorderColor: var(--pf-t--global--border--color--default);
  --#{$toggle-group}__button--hover--after--BorderWidth: var(--pf-t--global--border--width--high-contrast--regular);
  --#{$toggle-group}__button--before--BorderWidth: var(--pf-t--global--border--width--control--default);
  --#{$toggle-group}__button--before--BorderColor: var(--pf-t--global--border--color--default);

  // item
  --#{$toggle-group}__item--item--MarginInlineStart: calc(-1 * var(--pf-t--global--border--width--control--default));
  --#{$toggle-group}__item--first-child__button--BorderStartStartRadius: var(--pf-t--global--border--radius--tiny);
  --#{$toggle-group}__item--first-child__button--BorderEndStartRadius: var(--pf-t--global--border--radius--tiny);
  --#{$toggle-group}__item--last-child__button--BorderStartEndRadius: var(--pf-t--global--border--radius--tiny);
  --#{$toggle-group}__item--last-child__button--BorderEndEndRadius: var(--pf-t--global--border--radius--tiny);

  // icon
  --#{$toggle-group}__icon--text--MarginInlineStart: var(--pf-t--global--spacer--sm);

  // Selected
  --#{$toggle-group}__button--m-selected--BackgroundColor: var(--pf-t--global--color--brand--default);
  --#{$toggle-group}__button--m-selected--Color: var(--pf-t--global--text--color--on-brand--default);
  --#{$toggle-group}__button--m-selected--before--BorderColor: var(--pf-t--global--border--color--clicked);
  --#{$toggle-group}__button--m-selected-selected--before--BorderInlineStartColor: var(--pf-t--global--border--color--alt);
  --#{$toggle-group}__button--m-selected--ZIndex: var(--pf-t--global--z-index--xs);
  --#{$toggle-group}__button--m-selected--after--BorderWidth: var(--pf-t--global--border--width--high-contrast--strong);

  // disabled
  --#{$toggle-group}__button--disabled--BackgroundColor: var(--pf-t--global--background--color--disabled--default);
  --#{$toggle-group}__button--disabled--Color: var(--pf-t--global--text--color--on-disabled);
  --#{$toggle-group}__button--disabled--before--BorderColor: var(--pf-t--global--border--color--disabled);
  --#{$toggle-group}__button--disabled-disabled--before--BorderInlineStartColor: var(--pf-t--global--border--color--disabled);
  --#{$toggle-group}__button--disabled--ZIndex: var(--pf-t--global--z-index--xs);

  // Compact
  --#{$toggle-group}--m-compact__button--PaddingBlockStart: 0;
  --#{$toggle-group}--m-compact__button--PaddingInlineEnd: var(--pf-t--global--spacer--sm);
  --#{$toggle-group}--m-compact__button--PaddingBlockEnd: 0;
  --#{$toggle-group}--m-compact__button--PaddingInlineStart: var(--pf-t--global--spacer--sm);
  --#{$toggle-group}--m-compact__button--FontSize: var(--pf-t--global--font--size--body--default);
}

.#{$toggle-group} {
  display: flex;

  &.pf-m-compact {
    --#{$toggle-group}__button--PaddingBlockStart: var(--#{$toggle-group}--m-compact__button--PaddingBlockStart);
    --#{$toggle-group}__button--PaddingInlineEnd: var(--#{$toggle-group}--m-compact__button--PaddingInlineEnd);
    --#{$toggle-group}__button--PaddingBlockEnd: var(--#{$toggle-group}--m-compact__button--PaddingBlockEnd);
    --#{$toggle-group}__button--PaddingInlineStart: var(--#{$toggle-group}--m-compact__button--PaddingInlineStart);
    --#{$toggle-group}__button--FontSize: var(--#{$toggle-group}--m-compact__button--FontSize);
  }
}

.#{$toggle-group}__item {
  & + & {
    margin-inline-start: var(--#{$toggle-group}__item--item--MarginInlineStart);
  }

  &:first-child {
    .#{$toggle-group}__button {
      border-start-start-radius: var(--#{$toggle-group}__item--first-child__button--BorderStartStartRadius);
      border-end-start-radius: var(--#{$toggle-group}__item--first-child__button--BorderEndStartRadius);
    }
  }

  &:last-child {
    .#{$toggle-group}__button {
      border-start-end-radius: var(--#{$toggle-group}__item--last-child__button--BorderStartEndRadius);
      border-end-end-radius: var(--#{$toggle-group}__item--last-child__button--BorderEndEndRadius);
    }
  }
}

.#{$toggle-group}__button {
  position: relative;
  z-index: var(--#{$toggle-group}__button--ZIndex);
  display: inline-flex;
  padding-block-start: var(--#{$toggle-group}__button--PaddingBlockStart);
  padding-block-end: var(--#{$toggle-group}__button--PaddingBlockEnd);
  padding-inline-start: var(--#{$toggle-group}__button--PaddingInlineStart);
  padding-inline-end: var(--#{$toggle-group}__button--PaddingInlineEnd);
  font-size: var(--#{$toggle-group}__button--FontSize);
  line-height: var(--#{$toggle-group}__button--LineHeight);
  color: var(--#{$toggle-group}__button--Color);
  background-color: var(--#{$toggle-group}__button--BackgroundColor);
  border: 0;

  &::before,
  &::after {
    position: absolute;
    inset: 0;
    pointer-events: none;
    content: "";
    border-style: solid;
    border-radius: inherit;
  }

  &::before {
    border-width: var(--#{$toggle-group}__button--before--BorderWidth);
    border-block-start-color: var(--#{$toggle-group}__button--before--BorderBlockStartColor, var(--#{$toggle-group}__button--before--BorderColor));
    border-block-end-color: var(--#{$toggle-group}__button--before--BorderBlockEndColor, var(--#{$toggle-group}__button--before--BorderColor));
    border-inline-start-color: var(--#{$toggle-group}__button--before--BorderInlineStartColor, var(--#{$toggle-group}__button--before--BorderColor));
    border-inline-end-color: var(--#{$toggle-group}__button--before--BorderInlineEndColor, var(--#{$toggle-group}__button--before--BorderColor));
  }

  // forced-colors borders
  &::after {
    inset: var(--#{$toggle-group}__button--before--BorderWidth);
    border-color: var(--#{$toggle-group}__button--after--BorderColor, transparent);
    border-width: var(--#{$toggle-group}__button--after--BorderWidth, 0);
  }

  &:is(:hover, :focus) {
    --#{$toggle-group}__button--BackgroundColor: var(--#{$toggle-group}__button--hover--BackgroundColor);
    --#{$toggle-group}__button--ZIndex: var(--#{$toggle-group}__button--hover--ZIndex);
    --#{$toggle-group}__button--before--BorderColor: var(--#{$toggle-group}__button--hover--before--BorderColor);
    --#{$toggle-group}__button--after--BorderWidth: var(--#{$toggle-group}__button--hover--after--BorderWidth);

    text-decoration-line: none;
  }

  &.pf-m-selected {
    --#{$toggle-group}__button--BackgroundColor: var(--#{$toggle-group}__button--m-selected--BackgroundColor);
    --#{$toggle-group}__button--Color: var(--#{$toggle-group}__button--m-selected--Color, inherit);
    --#{$toggle-group}__button--ZIndex: var(--#{$toggle-group}__button--m-selected--ZIndex);
    --#{$toggle-group}__button--before--BorderColor: var(--#{$toggle-group}__button--m-selected--before--BorderColor);
    --#{$toggle-group}__button--after--BorderWidth: var(--#{$toggle-group}__button--m-selected--after--BorderWidth);
  }

  &:is(:disabled, .pf-m-disabled) {
    --#{$toggle-group}__button--BackgroundColor: var(--#{$toggle-group}__button--disabled--BackgroundColor);
    --#{$toggle-group}__button--Color: var(--#{$toggle-group}__button--disabled--Color);
    --#{$toggle-group}__button--ZIndex: var(--#{$toggle-group}__button--disabled--ZIndex);
    --#{$toggle-group}__button--before--BorderColor: var(--#{$toggle-group}__button--disabled--before--BorderColor);

    pointer-events: none;
  }
}

// For consecutive selected items, turn the left border back to what it was
.#{$toggle-group}__item:has(.pf-m-selected) + .#{$toggle-group}__item:has(.pf-m-selected) {
  --#{$toggle-group}__button--before--BorderInlineStartColor: var(--#{$toggle-group}__button--m-selected-selected--before--BorderInlineStartColor);
}

// For consecutive disabled items, turn the left border back to what it was
.#{$toggle-group}__item:has(:disabled, .pf-m-disabled) + .#{$toggle-group}__item:has(:disabled, .pf-m-disabled) {
  --#{$toggle-group}__button--before--BorderInlineStartColor: var(--#{$toggle-group}__button--disabled-disabled--before--BorderInlineStartColor);
}

.#{$toggle-group}__icon + .#{$toggle-group}__text,
.#{$toggle-group}__text + .#{$toggle-group}__icon {
  margin-inline-start: var(--#{$toggle-group}__icon--text--MarginInlineStart);
}