Skip to content

Commit 92a99b5

Browse files
authored
Merge pull request #84 from ovh-ux/feat/oui-list-step-checkbox
feat(oui-list): support checkbox as list item
2 parents 2085b54 + 102ffd6 commit 92a99b5

File tree

3 files changed

+87
-30
lines changed

3 files changed

+87
-30
lines changed

packages/oui-list/README.md

Lines changed: 41 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -178,22 +178,56 @@ oui-list is a package which provide styles for the list component.
178178
</span>
179179
</li>
180180
<li class="oui-list__item oui-list__item_optional oui-list__item_checked">
181-
<span class="oui-list__header">List item checked</span>
181+
<span class="oui-list__header">Optional list item checked</span>
182182
<span class="oui-list__description">
183183
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus id convallis massa. Aenean eu placerat mi.
184184
Etiam ultricies metus ante, vel condimentum orci mollis at.
185185
</span>
186186
</li>
187187
<li class="oui-list__item oui-list__item_optional oui-list__item_checked oui-list__item_disabled">
188-
<span class="oui-list__header">List item checked disabled</span>
188+
<span class="oui-list__header">Optional list item checked disabled</span>
189189
</li>
190-
<li class="oui-list__item oui-list__item_optional oui-list__item_complete">
191-
<a href="#" class="oui-list__header">List item complete</a>
190+
<li class="oui-list__item oui-list__item_optional oui-list__item_checked oui-list__item_complete">
191+
<span class="oui-list__header">Optional list item complete</span>
192192
<span class="oui-list__description">
193193
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus id convallis massa. Aenean eu placerat mi.
194194
Etiam ultricies metus ante, vel condimentum orci mollis at.
195195
</span>
196196
</li>
197+
<li class="oui-list__item">
198+
<div class="oui-checkbox">
199+
<input class="oui-checkbox__input" id="oui-checkbox-1" name="oui-checkbox-1" type="checkbox">
200+
<label class="oui-checkbox__label-container" for="oui-checkbox-1">
201+
<span class="oui-checkbox__label">Checkbox list item</span>
202+
<span class="oui-checkbox__description">
203+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus id convallis massa. Aenean eu placerat mi.
204+
Etiam ultricies metus ante, vel condimentum orci mollis at.
205+
</span>
206+
<span class="oui-checkbox__icon">
207+
<i class="oui-icon oui-icon-checkbox-unchecked" aria-hidden="true"></i>
208+
<i class="oui-icon oui-icon-checkbox-checked" aria-hidden="true"></i>
209+
<i class="oui-icon oui-icon-checkbox-checkmark" aria-hidden="true"></i>
210+
</span>
211+
</label>
212+
</div>
213+
</li>
214+
<li class="oui-list__item">
215+
<div class="oui-checkbox oui-checkbox_m">
216+
<input class="oui-checkbox__input" id="oui-checkbox-2" name="oui-checkbox-2" type="checkbox">
217+
<label class="oui-checkbox__label-container" for="oui-checkbox-2">
218+
<span class="oui-checkbox__label">Checkbox list item</span>
219+
<span class="oui-checkbox__description">
220+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus id convallis massa. Aenean eu placerat mi.
221+
Etiam ultricies metus ante, vel condimentum orci mollis at.
222+
</span>
223+
<span class="oui-checkbox__icon">
224+
<i class="oui-icon oui-icon-checkbox-unchecked" aria-hidden="true"></i>
225+
<i class="oui-icon oui-icon-checkbox-checked" aria-hidden="true"></i>
226+
<i class="oui-icon oui-icon-checkbox-checkmark" aria-hidden="true"></i>
227+
</span>
228+
</label>
229+
</div>
230+
</li>
197231
</ul>
198232
</div>
199233
```
@@ -282,13 +316,15 @@ Will stylize your list as a stepped one.
282316

283317
```less
284318
#oui > .list-steps(
285-
@oui-list-selector
319+
@oui-list-selector,
320+
@oui-checkbox-selector
286321
);
287322
```
288323

289324
```less
290325
#oui > .list-steps(
291326
@selector: Class,
327+
@checkbox-selector: Class,
292328
@font-color: Color,
293329
@icon-color: Color,
294330
@font-color-disabled: Color,

packages/oui-list/_mixins.less

Lines changed: 44 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
@import '../oui-icons/_variables';
2+
@import '../oui-checkbox/_variables';
23
@import './_variables';
34

45
#oui {
@@ -204,6 +205,7 @@
204205

205206
.list-steps (
206207
@selector,
208+
@checkbox-selector,
207209
@font-color: @oui-list-steps-font-color,
208210
@icon-color: @oui-list-steps-icon-color,
209211
@font-color-disabled: @oui-list-steps-disabled-font-color,
@@ -221,7 +223,9 @@
221223
@padding: @oui-list-steps-padding,
222224
@spacing: @oui-list-steps-spacing
223225
) {
224-
line-height: 1.2;
226+
@label-padding-top: rem-calc(2);
227+
228+
line-height: 1.4;
225229

226230
.@{selector}__items {
227231
counter-reset: counter;
@@ -265,7 +269,7 @@
265269

266270
.@{selector}__header {
267271
color: @font-color;
268-
line-height: 1.2;
272+
line-height: 1.4;
269273
}
270274

271275
.@{selector}__header::before {
@@ -298,32 +302,20 @@
298302
.@{selector}__item_checked,
299303
.@{selector}__item_complete {
300304
.@{selector}__header {
301-
line-height: 1.2;
305+
line-height: 1.4;
302306
color: @font-color-checked;
303307
}
304308

305309
.@{selector}__header::before {
306310
position: absolute;
307-
content: "";
311+
content: @oui-icon-index-success;
308312
border: 1px solid @icon-border-color-checked;
309313
background-color: @icon-color-checked;
310314
color: @icon-color-checked;
311-
}
312-
313-
.@{selector}__header::after {
314-
position: absolute;
315-
top: (@icon-size - @icon-check-size) / 2;
316-
left: (@icon-size - @icon-check-size) / 2;
317-
content: @oui-icon-index-success;
318-
border: 0 none;
319-
background: none;
320-
color: @icon-color-checked;
321315
-webkit-text-stroke: 1px @icon-border-color-checked;
322316
font-family: 'Oui Icons';
323317
font-size: @icon-check-size;
324-
line-height: 1;
325318
font-weight: @oui-font-regular;
326-
vertical-align: bottom;
327319
}
328320
}
329321

@@ -342,29 +334,57 @@
342334

343335
.@{selector}__header::before {
344336
background-color: @icon-color-complete;
345-
}
346-
347-
.@{selector}__header::after {
348337
color: @icon-color-checked;
349338
-webkit-text-stroke: 0;
350339
}
351340
}
352341

353342
.@{selector}__item_checked.@{selector}__item_optional {
354343
.@{selector}__header::before {
355-
display: none;
344+
border: 0 none;
345+
background: none;
356346
}
357347
}
358348

359349
.@{selector}__item_complete.@{selector}__item_optional {
360350
.@{selector}__header::before {
361-
display: none;
362-
}
363-
364-
.@{selector}__header::after {
365351
color: @icon-color-complete;
366352
-webkit-text-stroke: 0;
367353
}
368354
}
355+
356+
.@{selector}__item > .@{checkbox-selector} {
357+
margin-bottom: 0;
358+
}
359+
360+
.@{selector}__item > .@{checkbox-selector} .@{checkbox-selector}__label-container {
361+
position: inherit;
362+
margin-bottom: 0;
363+
}
364+
365+
.@{selector}__item > .@{checkbox-selector} .@{checkbox-selector}__label {
366+
padding-top: @label-padding-top;
367+
font-size: @font-size;
368+
}
369+
370+
.@{selector}__item > .@{checkbox-selector} .@{checkbox-selector}__description {
371+
margin-top: rem-calc(7);
372+
line-height: 1.4;
373+
}
374+
375+
.@{selector}__item > .@{checkbox-selector} .@{checkbox-selector}__label,
376+
.@{selector}__item > .@{checkbox-selector} .@{checkbox-selector}__description {
377+
padding-left: 0;
378+
}
379+
380+
.@{selector}__item > .@{checkbox-selector} .@{checkbox-selector}__icon {
381+
top: (@font-size * @oui-checkbox-line-height - @oui-checkbox-size + @label-padding-top) / 2;
382+
left: (@icon-size - @oui-checkbox-size) / 2;
383+
}
384+
385+
.@{selector}__item > .@{checkbox-selector}.@{checkbox-selector}_m .@{checkbox-selector}__icon {
386+
top: (@font-size * @oui-checkbox-m-line-height - @oui-checkbox-m-size + @label-padding-top) / 2;
387+
left: (@icon-size - @oui-checkbox-m-size) / 2;
388+
}
369389
}
370390
}

packages/oui-list/list.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
.oui-list {
55
@oui-list-selector: oui-list;
6+
@oui-checkbox-selector: oui-checkbox;
67

78
#oui > .list-normalize();
89
#oui > .list(@oui-list-selector);
@@ -17,6 +18,6 @@
1718

1819
&_steps {
1920
#oui > .list-normalize();
20-
#oui > .list-steps(@oui-list-selector);
21+
#oui > .list-steps(@oui-list-selector, @oui-checkbox-selector);
2122
}
2223
}

0 commit comments

Comments
 (0)