Skip to content

Commit 866e57a

Browse files
fix: update mobile styling
1 parent 8d8b5f1 commit 866e57a

File tree

1 file changed

+81
-65
lines changed

1 file changed

+81
-65
lines changed

website/src/catalog/RuleItem.vue

Lines changed: 81 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,51 @@ const moreFeatures = computed(() => sortedFeatures.value.slice(2))
4545

4646
<template>
4747
<li class="rule-item">
48-
<div class="rule-header">
48+
<div class="rule-main">
4949
<a :href="meta.link" class="rule-name" target="_blank">
5050
{{ meta.name }}
5151
<img class="logo" :src="'/langs/' + meta.language.toLowerCase() + '.svg'"/>
5252
</a>
53+
<div class="rule-details">
54+
<div class="rule-badges" >
55+
<template v-if="meta.type === 'Pattern'">
56+
<Badge type="info" text="Simple Pattern Example" />
57+
</template>
58+
<template v-else>
59+
<span title="Used Rules">📏</span>
60+
<span class="emoji-offset"/>
61+
<Option
62+
v-for="rule in displayedRules"
63+
:key="rule"
64+
:text="rule"
65+
:highlight="filter.selectedRules.includes(rule)"
66+
/>
67+
<Option
68+
v-if="moreRules.length"
69+
:text="`+${moreRules.length}`"
70+
:data-title="moreRules.join(', ')"
71+
:highlight="intersect(moreRules, filter.selectedRules)"
72+
/>
73+
</template>
74+
</div>
75+
<div class="rule-badges" v-if="displayFeatures.length > 0">
76+
<span title="Used Features">💡</span>
77+
<Option
78+
v-for="feature in displayFeatures"
79+
:key="feature"
80+
:text="feature"
81+
:highlight="filter.selectedFeatures.includes(feature)"
82+
/>
83+
<Option
84+
v-if="moreFeatures.length"
85+
:text="`+${moreFeatures.length}`"
86+
:data-title="moreFeatures.join(', ')"
87+
:highlight="intersect(moreFeatures, filter.selectedFeatures)"
88+
/>
89+
</div>
90+
</div>
91+
</div>
92+
<div class="rule-aux">
5393
<div class="rule-badges">
5494
<span> <!-- dummy wrapper for better align items -->
5595
<Badge v-if="meta.hasFix" type="tip">
@@ -62,44 +102,6 @@ const moreFeatures = computed(() => sortedFeatures.value.slice(2))
62102
</Badge>
63103
</a>
64104
</div>
65-
</div>
66-
<div class="rule-details">
67-
<div class="rule-badges" >
68-
<template v-if="meta.type === 'Pattern'">
69-
<Badge type="info" text="Simple Pattern Example" />
70-
</template>
71-
<template v-else>
72-
<span title="Used Rules">📏</span>
73-
<span class="emoji-offset"/>
74-
<Option
75-
v-for="rule in displayedRules"
76-
:key="rule"
77-
:text="rule"
78-
:highlight="filter.selectedRules.includes(rule)"
79-
/>
80-
<Option
81-
v-if="moreRules.length"
82-
:text="`+${moreRules.length}`"
83-
:data-title="moreRules.join(', ')"
84-
:highlight="intersect(moreRules, filter.selectedRules)"
85-
/>
86-
</template>
87-
</div>
88-
<div class="rule-badges" v-if="displayFeatures.length > 0">
89-
<span title="Used Features">💡</span>
90-
<Option
91-
v-for="feature in displayFeatures"
92-
:key="feature"
93-
:text="feature"
94-
:highlight="filter.selectedFeatures.includes(feature)"
95-
/>
96-
<Option
97-
v-if="moreFeatures.length"
98-
:text="`+${moreFeatures.length}`"
99-
:data-title="moreFeatures.join(', ')"
100-
:highlight="intersect(moreFeatures, filter.selectedFeatures)"
101-
/>
102-
</div>
103105
<a :href="meta.playgroundLink" class="playground link" target="_blank">
104106
Try in Playground →
105107
</a>
@@ -108,6 +110,7 @@ const moreFeatures = computed(() => sortedFeatures.value.slice(2))
108110
</template>
109111

110112
<style scoped>
113+
111114
a {
112115
text-decoration: none;
113116
}
@@ -129,38 +132,49 @@ a:hover {
129132
color: var(--vp-button-brand-bg);
130133
filter: brightness(1.5);
131134
}
135+
136+
.rule-item {
137+
border: 1px solid var(--vp-c-divider);
138+
border-radius: 8px;
139+
padding: 1rem;
140+
display: flex;
141+
}
142+
143+
.rule-badges {
144+
display: flex;
145+
gap: 4px;
146+
align-items: center;
147+
}
148+
149+
.rule-main {
150+
flex: 1 1 auto;
151+
}
152+
132153
.rule-name {
133-
flex: 0 1 auto;
134154
font-weight: 600;
135155
display: flex;
136156
align-items: center;
137157
gap: 5px;
138158
max-width: 100%;
159+
margin-bottom: 12px;
139160
}
161+
140162
.logo {
141163
height: 18px;
142164
display: inline;
143165
}
144-
.playground {
145-
font-size: 0.8em;
146-
white-space: nowrap;
147-
}
148-
.rule-item {
149-
border: 1px solid var(--vp-c-divider);
150-
border-radius: 8px;
151-
padding: 1rem;
152-
}
153166
154-
.rule-header {
167+
.rule-aux {
168+
flex: 0 0 auto;
155169
display: flex;
156-
justify-content: space-between;
157-
margin-bottom: 12px;
170+
flex-direction: column;
171+
gap: 12px;
158172
}
159-
160-
.rule-badges {
161-
display: flex;
162-
gap: 4px;
163-
align-items: center;
173+
.playground {
174+
font-size: 0.8em;
175+
white-space: nowrap;
176+
text-align: right;
177+
flex: 1 0 auto;
164178
}
165179
166180
.rule-details {
@@ -170,7 +184,7 @@ a:hover {
170184
}
171185
172186
.rule-details > div {
173-
flex: 1 0 30%;
187+
flex: 1 0 50%;
174188
}
175189
176190
@media only screen and (max-width: 640px) {
@@ -179,17 +193,19 @@ a:hover {
179193
border-radius: 0;
180194
border-width: 0;
181195
border-bottom-width: 1px;
196+
flex-direction: column;
197+
gap: 8px;
198+
}
199+
.rule-name {
200+
text-wrap: pretty;
201+
justify-content: space-between;
182202
}
183203
.rule-item:first-child {
184204
border-top-width: 1px;
185205
}
186-
.rule-details {
187-
flex-wrap: wrap;
188-
}
189-
.playground {
190-
align-self: flex-end;
191-
flex: 0 0 100%;
192-
text-align: right;
206+
.rule-aux {
207+
flex: 1 0 auto;
208+
flex-direction: row;
193209
}
194210
}
195211

0 commit comments

Comments
 (0)