Skip to content
This repository was archived by the owner on Oct 8, 2021. It is now read-only.

Commit c2f1e6e

Browse files
Listviews: ui-first-child/ui-last-child for corner and border styling
1 parent 3cdc244 commit c2f1e6e

File tree

3 files changed

+34
-21
lines changed

3 files changed

+34
-21
lines changed

css/structure/jquery.mobile.listview.css

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,54 +5,50 @@ ol.ui-listview, ol.ui-listview .ui-li-divider { counter-reset: listnumbering; }
55
.ui-content .ui-listview-inset { margin: 1em 0; }
66
.ui-collapsible-content .ui-listview-inset { margin: .5em 0; }
77
.ui-listview, .ui-li { list-style: none; padding: 0; }
8-
.ui-li, .ui-li.ui-field-contain { display: block; margin: 0; position: relative; overflow: visible; text-align: left; border-width: 1px 0 1px 0; }
9-
.ui-li.ui-btn, .ui-li.ui-field-contain, .ui-li-static { margin: 0 0 -1px; }
10-
.ui-listview-inset .ui-li.ui-btn, .ui-listview-inset .ui-li-divider, .ui-listview-inset .ui-li.ui-field-contain, .ui-listview-inset .ui-li-static { border-right-width: 1px; border-left-width: 1px; }
11-
.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset) .ui-listview > .ui-li:last-child { border-bottom-width: 0; }
12-
.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) > .ui-li:first-child { border-top-width: 0; }
8+
.ui-li, .ui-li.ui-field-contain { display: block; margin: 0; position: relative; overflow: visible; text-align: left; border-width: 0; border-top-width: 1px; }
9+
.ui-li.ui-btn, .ui-li.ui-field-contain, .ui-li-divider, .ui-li-static { margin: 0; }
10+
.ui-listview-inset .ui-li { border-right-width: 1px; border-left-width: 1px; }
11+
.ui-li.ui-last-child, .ui-li.ui-field-contain.ui-last-child { border-bottom-width: 1px; }
12+
.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) > .ui-li.ui-first-child { border-top-width: 0; }
13+
.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset) > .ui-li.ui-last-child { border-bottom-width: 0; }
1314
.ui-li .ui-btn-text a.ui-link-inherit { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
1415
.ui-li-static { background-image: none; }
1516
.ui-li-divider { padding: .5em 15px; font-size: 14px; font-weight: bold; }
1617
ol.ui-listview .ui-link-inherit:before, ol.ui-listview .ui-li-static:before, .ui-li-dec { font-size: .8em; display: inline-block; padding-right: .3em; font-weight: normal; counter-increment: listnumbering; content: counter(listnumbering) ". "; }
1718
ol.ui-listview .ui-li-jsnumbering:before { content: "" !important; } /* to avoid chance of duplication */
18-
/* Corner styling */
19-
.ui-listview > .ui-li:first-child,
20-
.ui-listview .ui-btn:first-child > .ui-li > .ui-btn-text > .ui-link-inherit {
19+
20+
.ui-listview > .ui-li.ui-first-child,
21+
.ui-listview .ui-btn.ui-first-child > .ui-li > .ui-btn-text > .ui-link-inherit {
2122
-webkit-border-top-right-radius: inherit;
2223
border-top-right-radius: inherit;
2324
-webkit-border-top-left-radius: inherit;
2425
border-top-left-radius: inherit;
2526
}
26-
.ui-listview > .ui-li:last-child,
27-
.ui-listview .ui-btn:last-child > .ui-li > .ui-btn-text > .ui-link-inherit,
27+
.ui-listview > .ui-li.ui-last-child,
28+
.ui-listview .ui-btn.ui-last-child > .ui-li > .ui-btn-text > .ui-link-inherit,
2829
.ui-collapsible-content > .ui-listview:not(.ui-listview-inset),
29-
.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) .ui-li:last-child {
30+
.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) .ui-li.ui-last-child {
3031
-webkit-border-bottom-right-radius: inherit;
3132
border-bottom-right-radius: inherit;
3233
-webkit-border-bottom-left-radius: inherit;
3334
border-bottom-left-radius: inherit;
3435
}
35-
.ui-listview > .ui-li:first-child .ui-li-link-alt {
36+
.ui-listview > .ui-li.ui-first-child .ui-li-link-alt {
3637
-webkit-border-top-right-radius: inherit;
3738
border-top-right-radius: inherit;
3839
}
39-
.ui-listview > .ui-li:last-child .ui-li-link-alt {
40+
.ui-listview > .ui-li.ui-last-child .ui-li-link-alt {
4041
-webkit-border-bottom-right-radius: inherit;
4142
border-bottom-right-radius: inherit;
4243
}
43-
.ui-listview > .ui-li:first-child .ui-li-thumb {
44+
.ui-listview > .ui-li.ui-first-child .ui-li-thumb:not(.ui-li-icon) {
4445
-webkit-border-top-left-radius: inherit;
4546
border-top-left-radius: inherit;
4647
}
47-
.ui-listview > .ui-li:last-child .ui-li-thumb {
48+
.ui-listview > .ui-li.ui-last-child .ui-li-thumb:not(.ui-li-icon) {
4849
-webkit-border-bottom-left-radius: inherit;
4950
border-bottom-left-radius: inherit;
5051
}
51-
.ui-listview > .ui-li:first-child .ui-li-icon,
52-
.ui-listview > .ui-li:last-child .ui-li-icon {
53-
-webkit-border-radius: 0;
54-
border-radius: 0;
55-
}
5652
.ui-li>.ui-btn-inner { display: block; position: relative; padding: 0; }
5753
.ui-li .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li { padding: .7em 15px; display: block; }
5854
.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-thumb { min-height: 60px; padding-left: 100px; }

js/widgets/listview.filter.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ $( document ).delegate( "ul, ol", "listviewcreate", function() {
114114
//filtervalue is empty => show all
115115
listItems.toggleClass( "ui-screen-hidden", !!listview.options.filterReveal );
116116
}
117+
listview._addFirstLastClasses();
117118
})
118119
.appendTo( wrapper )
119120
.textinput();

js/widgets/listview.js

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,21 @@ $.widget( "mobile.listview", $.mobile.widget, {
4949
t.refresh( true );
5050
},
5151

52+
_addFirstLastClasses: function( create ) {
53+
var lis = this.element.children( "li" ),
54+
visiblelis;
55+
56+
lis.removeClass( "ui-first-child ui-last-child" );
57+
// At create time and when autodividers calls refresh the li are not visible yet so we need to rely on .ui-screen-hidden
58+
visiblelis = create || lis.filter( ":visible" ).length === 0 ? lis.not( ".ui-screen-hidden" ) : lis.filter( ":visible" );
59+
60+
visiblelis.eq( 0 ).addClass( "ui-first-child" ).end().last().addClass( "ui-last-child" );
61+
62+
if ( !create ) {
63+
this.element.trigger( "updatelayout" );
64+
}
65+
},
66+
5267
// This is a generic utility method for finding the first
5368
// node with a given nodeName. It uses basic DOM traversal
5469
// to be fast and is meant to be a substitute for simple
@@ -278,7 +293,8 @@ $.widget( "mobile.listview", $.mobile.widget, {
278293

279294
this._addThumbClasses( li );
280295
this._addThumbClasses( $list.find( ".ui-link-inherit" ) );
281-
296+
297+
this._addFirstLastClasses( create );
282298
// autodividers binds to this to redraw dividers after the listview refresh
283299
this._trigger( "afterrefresh" );
284300
},

0 commit comments

Comments
 (0)