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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy