File: text-input-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 (256 lines) | stat: -rw-r--r-- 13,016 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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
@use '../../sass-utilities' as *;

@include pf-root($text-input-group) {
  --#{$text-input-group}--BackgroundColor: var(--pf-t--global--background--color--control--default);
  --#{$text-input-group}--BorderColor: var(--pf-t--global--border--color--default);
  --#{$text-input-group}--m-success--BorderColor: var(--pf-t--global--border--color--status--success--default);
  --#{$text-input-group}--m-warning--BorderColor: var(--pf-t--global--border--color--status--warning--default);
  --#{$text-input-group}--m-error--BorderColor: var(--pf-t--global--border--color--status--danger--default);
  --#{$text-input-group}--BorderWidth: var(--pf-t--global--border--width--control--default);
  --#{$text-input-group}__LineHeight: var(--pf-t--global--font--line-height--body);
  --#{$text-input-group}__FontSize: var(--pf-t--global--font--size--body--default);

  // Border hover
  --#{$text-input-group}--m-hover--BorderColor: var(--pf-t--global--border--color--hover);
  --#{$text-input-group}--m-hover--m-success--BorderColor: var(--pf-t--global--border--color--status--success--hover);
  --#{$text-input-group}--m-hover--m-warning--BorderColor: var(--pf-t--global--border--color--status--warning--hover);
  --#{$text-input-group}--m-hover--m-error--BorderColor: var(--pf-t--global--border--color--status--danger--hover);
  

  // Main
  --#{$text-input-group}__main--first-child--not--text-input--MarginInlineStart: calc(var(--pf-t--global--spacer--control--horizontal--plain) / 2);
  --#{$text-input-group}__main--m-icon__text-input--PaddingInlineStart: calc(var(--pf-t--global--spacer--control--horizontal--default) + var(--#{$text-input-group}__icon--FontSize) + var(--pf-t--global--spacer--gap--text-to-element--default));
  --#{$text-input-group}--status__text-input--PaddingInlineEnd: calc(var(--pf-t--global--spacer--control--horizontal--default) + var(--#{$text-input-group}__icon--FontSize) + var(--pf-t--global--spacer--gap--text-to-element--default));
  --#{$text-input-group}--utilities--status__text-input--PaddingInlineEnd: calc(var(--pf-t--global--spacer--sm) + var(--#{$text-input-group}__icon--FontSize) + var(--pf-t--global--spacer--gap--text-to-element--default));
  --#{$text-input-group}__main--RowGap: var(--pf-t--global--spacer--xs);
  --#{$text-input-group}__main--ColumnGap: var(--pf-t--global--spacer--xs);

  // Text wrapper
  --#{$text-input-group}__text--BorderRadius--base: var(--pf-t--global--border--radius--small);
  --#{$text-input-group}__text--BorderStartStartRadius: var(--#{$text-input-group}__text--BorderRadius--base);
  --#{$text-input-group}__text--BorderStartEndRadius: var(--#{$text-input-group}__text--BorderRadius--base);
  --#{$text-input-group}__text--BorderEndEndRadius: var(--#{$text-input-group}__text--BorderRadius--base);
  --#{$text-input-group}__text--BorderEndStartRadius: var(--#{$text-input-group}__text--BorderRadius--base);

  // Label group
  --#{$text-input-group}--c-label-group__main--PaddingBlockStart: calc(var(--pf-t--global--spacer--control--vertical--default) / 2);
  --#{$text-input-group}--c-label-group__main--PaddingInlineEnd: calc(var(--pf-t--global--spacer--control--horizontal--plain) / 2);
  --#{$text-input-group}--c-label-group__main--PaddingBlockEnd: calc(var(--pf-t--global--spacer--control--vertical--default) / 2);

  // Text input
  --#{$text-input-group}__text-input--PaddingBlockStart: var(--pf-t--global--spacer--control--vertical--default);
  --#{$text-input-group}__text-input--PaddingInlineEnd: var(--pf-t--global--spacer--control--horizontal--default);
  --#{$text-input-group}__text-input--PaddingBlockEnd: var(--pf-t--global--spacer--control--vertical--default);
  --#{$text-input-group}__text-input--PaddingInlineStart: var(--pf-t--global--spacer--control--horizontal--default);
  --#{$text-input-group}__text-input--MinWidth: 12ch;
  --#{$text-input-group}__text-input--m-hint--Color: var(--pf-t--global--text--color--placeholder);
  --#{$text-input-group}__text-input--Color: var(--pf-t--global--text--color--regular);
  --#{$text-input-group}__text-input--placeholder--Color: var(--pf-t--global--text--color--placeholder);
  --#{$text-input-group}__text-input--BackgroundColor: transparent;
  --#{$text-input-group}__text-input--OutlineOffset: -6px;

  // Icon
  --#{$text-input-group}__icon--FontSize: var(--pf-t--global--icon--size--font--body--default);
  --#{$text-input-group}__icon--InsetInlineStart: var(--pf-t--global--spacer--control--horizontal--default);
  --#{$text-input-group}__icon--m-status--InsetInlineEnd: var(--pf-t--global--spacer--control--horizontal--default);
  --#{$text-input-group}--utilities--icon--m-status--InsetInlineEnd: var(--pf-t--global--spacer--sm);
  --#{$text-input-group}__icon--Color: var(--pf-t--global--icon--color--regular);
  --#{$text-input-group}--m-disabled__icon--Color: var(--pf-t--global--icon--color--on-disabled);
  --#{$text-input-group}__icon--m-status--Color: var(--pf-t--global--icon--color--regular);
  --#{$text-input-group}--m-disabled__icon--m-status--Color: var(--pf-t--global--icon--color--on-disabled);
  --#{$text-input-group}__main--m-success__icon--m-status--Color: var(--pf-t--global--icon--color--status--success--default);
  --#{$text-input-group}__main--m-warning__icon--m-status--Color: var(--pf-t--global--icon--color--status--warning--default);
  --#{$text-input-group}__main--m-error__icon--m-status--Color: var(--pf-t--global--icon--color--status--danger--default);
  --#{$text-input-group}__icon--TranslateY: -50%;

  // Utilities
  --#{$text-input-group}__utilities--child--MarginInlineStart: var(--pf-t--global--spacer--xs);
  
  // input disabled style
  --#{$text-input-group}--m-disabled--Color: var(--pf-t--global--text--color--on-disabled);
  --#{$text-input-group}--m-disabled--BackgroundColor: var(--pf-t--global--background--color--disabled--default);
}

.#{$text-input-group} {
  position: relative;
  display: flex;
  width: 100%; // when child of flex layout, take up space
  font-size: var(--#{$text-input-group}__FontSize);
  line-height: var(--#{$text-input-group}__LineHeight);
  color: var(--#{$text-input-group}--Color, inherit);
  background-color: var(--#{$text-input-group}--BackgroundColor);
  border-start-start-radius: var(--#{$text-input-group}__text--BorderStartStartRadius);
  border-start-end-radius: var(--#{$text-input-group}__text--BorderStartEndRadius);
  border-end-start-radius: var(--#{$text-input-group}__text--BorderEndStartRadius);
  border-end-end-radius: var(--#{$text-input-group}__text--BorderEndEndRadius);

  &::before {
    position: absolute;
    inset: 0;
    pointer-events: none;
    content: "";
    border: var(--#{$text-input-group}--BorderWidth) solid var(--#{$text-input-group}--BorderColor);
    border-start-start-radius: var(--#{$text-input-group}__text--BorderStartStartRadius);
    border-start-end-radius: var(--#{$text-input-group}__text--BorderStartEndRadius);
    border-end-start-radius: var(--#{$text-input-group}__text--BorderEndStartRadius);
    border-end-end-radius: var(--#{$text-input-group}__text--BorderEndEndRadius);
  }

  &.pf-m-disabled {
    --#{$text-input-group}--Color: var(--#{$text-input-group}--m-disabled--Color);
    --#{$text-input-group}__text-input--Color: var(--#{$text-input-group}--m-disabled--Color);
    --#{$text-input-group}__text-input--placeholder--Color: var(--#{$text-input-group}--m-disabled--Color);
    --#{$text-input-group}__icon--Color: var(--#{$text-input-group}--m-disabled__icon--Color);
    --#{$text-input-group}__icon--m-status--Color: var(--#{$text-input-group}--m-disabled__icon--m-status--Color);
    --#{$text-input-group}--BackgroundColor: var(--#{$text-input-group}--m-disabled--BackgroundColor);

    pointer-events: none;
  }

  &.pf-m-plain {
    --#{$text-input-group}--BackgroundColor: transparent;

    &::before {
      border: 0;
    }    
  }

  &.pf-m-success {
    --#{$text-input-group}--BorderColor: var(--#{$text-input-group}--m-success--BorderColor);
    --#{$text-input-group}--m-hover--BorderColor: var(--#{$text-input-group}--m-hover--m-success--BorderColor);
    --#{$text-input-group}__icon--m-status--Color: var(--#{$text-input-group}__main--m-success__icon--m-status--Color);  
  }

  &.pf-m-warning {
    --#{$text-input-group}--BorderColor: var(--#{$text-input-group}--m-warning--BorderColor);
    --#{$text-input-group}--m-hover--BorderColor: var(--#{$text-input-group}--m-hover--m-warning--BorderColor);
    --#{$text-input-group}__icon--m-status--Color: var(--#{$text-input-group}__main--m-warning__icon--m-status--Color);  
  }

  &.pf-m-error {
    --#{$text-input-group}--BorderColor: var(--#{$text-input-group}--m-error--BorderColor);
    --#{$text-input-group}--m-hover--BorderColor: var(--#{$text-input-group}--m-hover--m-error--BorderColor);
    --#{$text-input-group}__icon--m-status--Color: var(--#{$text-input-group}__main--m-error__icon--m-status--Color);  
    
    @media (prefers-reduced-motion: no-preference) {
      @include pf-v6-animate-danger-jiggle;
    }
    
    .#{$text-input-group}__icon.pf-m-status {
      @include pf-v6-fade-default(#{$text-input-group});
    }
  }
  
  &:hover {
    --#{$text-input-group}--BorderColor: var(--#{$text-input-group}--m-hover--BorderColor);
  }

  &:where(.pf-m-success, .pf-m-warning, .pf-m-error) {
    --#{$text-input-group}__text-input--PaddingInlineEnd: var(--#{$text-input-group}--status__text-input--PaddingInlineEnd);

    & .pf-v6-c-text-input-group__text {
      --#{$text-input-group}__text--Position: relative;
    }
  }

  &:has(> .#{$text-input-group}__utilities) {
    --#{$text-input-group}__icon--m-status--InsetInlineEnd: var(--#{$text-input-group}--utilities--icon--m-status--InsetInlineEnd);
    --#{$text-input-group}--status__text-input--PaddingInlineEnd: var(--#{$text-input-group}--utilities--status__text-input--PaddingInlineEnd);
  }
}

.#{$text-input-group}__main {
  display: flex;
  flex: 1;
  flex-wrap: wrap;
  gap: var(--#{$text-input-group}__main--RowGap) var(--#{$text-input-group}__main--ColumnGap);
  min-width: 0;
  
  &.pf-m-icon {
    --#{$text-input-group}__text--Position: relative;
    --#{$text-input-group}__text-input--PaddingInlineStart: var(--#{$text-input-group}__main--m-icon__text-input--PaddingInlineStart);

    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: calc(var(--#{$text-input-group}__LineHeight) * var(--#{$text-input-group}__FontSize));
  }

  > :first-child:not(.#{$text-input-group}__text) {
    margin-inline-start: var(--#{$text-input-group}__main--first-child--not--text-input--MarginInlineStart);
  }

  .#{$label-group}__main {
    padding-block-start: var(--#{$text-input-group}--c-label-group__main--PaddingBlockStart);
    padding-block-end: var(--#{$text-input-group}--c-label-group__main--PaddingBlockEnd);
    padding-inline-end: var(--#{$text-input-group}--c-label-group__main--PaddingInlineEnd);
  }
}

.#{$text-input-group}__text {
  position: var(--#{$text-input-group}__text--Position, revert);
  display: inline-grid;
  flex: 1;
  grid-template-areas: "text-input";
  grid-template-columns: 1fr;
}

.#{$text-input-group}__icon {
  position: absolute;
  inset-block-start: 50%;
  inset-inline-start: var(--#{$text-input-group}__icon--InsetInlineStart);
  font-size: var(--#{$text-input-group}__icon--FontSize);
  color: var(--#{$text-input-group}__icon--Color);
  transform: translateY(var(--#{$text-input-group}__icon--TranslateY));

  &.pf-m-status {
    inset-inline-start: auto;
    inset-inline-end: var(--#{$text-input-group}__icon--m-status--InsetInlineEnd);
    color: var(--#{$text-input-group}__icon--m-status--Color);
  }
}

.#{$text-input-group}__text-input {
  @include pf-v6-text-overflow;

  position: relative;
  width: 100%;
  min-width: var(--#{$text-input-group}__text-input--MinWidth);
  padding-block-start: var(--#{$text-input-group}__text-input--PaddingBlockStart);
  padding-block-end: var(--#{$text-input-group}__text-input--PaddingBlockEnd);
  padding-inline-start: var(--#{$text-input-group}__text-input--PaddingInlineStart);
  padding-inline-end: var(--#{$text-input-group}__text-input--PaddingInlineEnd);
  color: var(--#{$text-input-group}__text-input--Color);
  background-color: var(--#{$text-input-group}__text-input--BackgroundColor);
  border: 0;
  outline-offset: var(--#{$text-input-group}__text-input--OutlineOffset);

  &,
  &.pf-m-hint {
    grid-area: text-input;
  }

  &.pf-m-hint {
    color: var(--#{$text-input-group}__text-input--m-hint--Color);
  }

  &::placeholder {
    color: var(--#{$text-input-group}__text-input--placeholder--Color);
  }
}

// TODO: update to use gap
.#{$text-input-group}__utilities {
  display: flex;
  align-items: center;
  margin-inline-start: var(--#{$text-input-group}__utilities--MarginInlineStart);
  margin-inline-end: var(--#{$text-input-group}__utilities--MarginInlineEnd);

  > * + * {
    margin-inline-start: var(--#{$text-input-group}__utilities--child--MarginInlineStart);
  }
}

.#{$text-input-group}__group {
  display: flex;
}