fix: flatten filter buttons layout for mobile in activity, stats and trending
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
07403d18c4
commit
9ee8fd60cd
13 changed files with 1707 additions and 65 deletions
8
.claude/settings.json
Normal file
8
.claude/settings.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"permissions": {
|
||||||
|
"allow": [
|
||||||
|
"Bash(git -C /home/sito/COFRE/CODERS/oasis_mobile add nodejs-project/nodejs-project/src/models/tribes_model.js nodejs-project/nodejs-project/src/models/main_models.js nodejs-project/nodejs-project/src/models/blockchain_model.js nodejs-project/nodejs-project/src/views/blockchain_view.js nodejs-project/nodejs-project/src/client/assets/styles/style.css)",
|
||||||
|
"Bash(git -C /home/sito/COFRE/CODERS/oasis_mobile commit -m ' *)"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
3
.idea/.gitignore
generated
vendored
Normal file
3
.idea/.gitignore
generated
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
1630
.idea/caches/deviceStreaming.xml
generated
Normal file
1630
.idea/caches/deviceStreaming.xml
generated
Normal file
File diff suppressed because it is too large
Load diff
9
.idea/libraries/nodejs_project.xml
generated
Normal file
9
.idea/libraries/nodejs_project.xml
generated
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="nodejs-project">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/assets/nodejs-project.zip!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES />
|
||||||
|
</library>
|
||||||
|
</component>
|
||||||
6
.idea/misc.xml
generated
Normal file
6
.idea/misc.xml
generated
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" project-jdk-type="JavaSDK">
|
||||||
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/oasis_mobile.iml" filepath="$PROJECT_DIR$/.idea/oasis_mobile.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
9
.idea/oasis_mobile.iml
generated
Normal file
9
.idea/oasis_mobile.iml
generated
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="JAVA_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||||
|
<exclude-output />
|
||||||
|
<content url="file://$MODULE_DIR$" />
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
|
|
@ -469,11 +469,17 @@ footer div {
|
||||||
gap: 8px !important;
|
gap: 8px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ---- Overrides de grid inline ---- */
|
/* ---- Trending container: columna en movil ---- */
|
||||||
|
.trending-container {
|
||||||
|
grid-template-columns: 1fr !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---- Overrides de grid inline (fallback para estilos inline que queden) ---- */
|
||||||
[style*="grid-template-columns: repeat(6"] { grid-template-columns: 1fr !important; }
|
[style*="grid-template-columns: repeat(6"] { grid-template-columns: 1fr !important; }
|
||||||
[style*="grid-template-columns: repeat(3"] { grid-template-columns: 1fr !important; }
|
[style*="grid-template-columns: repeat(3"] { grid-template-columns: 1fr !important; }
|
||||||
[style*="grid-template-columns:repeat(6"] { grid-template-columns: 1fr !important; }
|
[style*="grid-template-columns:repeat(6"] { grid-template-columns: 1fr !important; }
|
||||||
[style*="grid-template-columns:repeat(3"] { grid-template-columns: 1fr !important; }
|
[style*="grid-template-columns:repeat(3"] { grid-template-columns: 1fr !important; }
|
||||||
[style*="grid-template-columns: repeat(auto-fit"] { grid-template-columns: 1fr !important; }
|
[style*="grid-template-columns: repeat(auto-fit"] { grid-template-columns: 1fr !important; }
|
||||||
[style*="grid-template-columns:repeat(auto-fit"] { grid-template-columns: 1fr !important; }
|
[style*="grid-template-columns:repeat(auto-fit"] { grid-template-columns: 1fr !important; }
|
||||||
|
[style*="grid-template-columns:repeat(auto-fill"] { grid-template-columns: 1fr !important; }
|
||||||
[style*="width:50%"] { width: 100% !important; }
|
[style*="width:50%"] { width: 100% !important; }
|
||||||
|
|
|
||||||
|
|
@ -4308,3 +4308,10 @@ button, input[type="submit"], input[type="button"], .filter-btn {
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* trending-container: grid responsive en desktop, columna en movil */
|
||||||
|
.trending-container {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
||||||
|
gap: 20px;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1541,58 +1541,14 @@ exports.activityView = (actions, filter, userId, q = '') => {
|
||||||
h2(i18n.activityList),
|
h2(i18n.activityList),
|
||||||
p(desc)
|
p(desc)
|
||||||
),
|
),
|
||||||
form({ method: 'GET', action: '/activity' },
|
div({ class: 'mode-buttons' },
|
||||||
div({ class: 'mode-buttons', style: 'display:grid; grid-template-columns: repeat(6, 1fr); gap: 16px; margin-bottom: 24px;' },
|
...activityTypes.map(({ type, label }) =>
|
||||||
div({ style: 'display: flex; flex-direction: column; gap: 8px;' },
|
|
||||||
activityTypes.slice(0, 3).map(({ type, label }) =>
|
|
||||||
form({ method: 'GET', action: '/activity' },
|
form({ method: 'GET', action: '/activity' },
|
||||||
input({ type: 'hidden', name: 'filter', value: type }),
|
input({ type: 'hidden', name: 'filter', value: type }),
|
||||||
button({ type: 'submit', class: filter === type ? 'filter-btn active' : 'filter-btn' }, label)
|
button({ type: 'submit', class: filter === type ? 'filter-btn active' : 'filter-btn' }, label)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
div({ style: 'display: flex; flex-direction: column; gap: 8px;' },
|
|
||||||
activityTypes.slice(3, 8).map(({ type, label }) =>
|
|
||||||
form({ method: 'GET', action: '/activity' },
|
|
||||||
input({ type: 'hidden', name: 'filter', value: type }),
|
|
||||||
button({ type: 'submit', class: filter === type ? 'filter-btn active' : 'filter-btn' }, label)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
),
|
|
||||||
div({ style: 'display: flex; flex-direction: column; gap: 8px;' },
|
|
||||||
activityTypes.slice(8, 12).map(({ type, label }) =>
|
|
||||||
form({ method: 'GET', action: '/activity' },
|
|
||||||
input({ type: 'hidden', name: 'filter', value: type }),
|
|
||||||
button({ type: 'submit', class: filter === type ? 'filter-btn active' : 'filter-btn' }, label)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
),
|
|
||||||
div({ style: 'display: flex; flex-direction: column; gap: 8px;' },
|
|
||||||
activityTypes.slice(12, 17).map(({ type, label }) =>
|
|
||||||
form({ method: 'GET', action: '/activity' },
|
|
||||||
input({ type: 'hidden', name: 'filter', value: type }),
|
|
||||||
button({ type: 'submit', class: filter === type ? 'filter-btn active' : 'filter-btn' }, label)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
),
|
|
||||||
div({ style: 'display: flex; flex-direction: column; gap: 8px;' },
|
|
||||||
activityTypes.slice(17, 22).map(({ type, label }) =>
|
|
||||||
form({ method: 'GET', action: '/activity' },
|
|
||||||
input({ type: 'hidden', name: 'filter', value: type }),
|
|
||||||
button({ type: 'submit', class: filter === type ? 'filter-btn active' : 'filter-btn' }, label)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
),
|
|
||||||
div({ style: 'display: flex; flex-direction: column; gap: 8px;' },
|
|
||||||
activityTypes.slice(22, 27).map(({ type, label }) =>
|
|
||||||
form({ method: 'GET', action: '/activity' },
|
|
||||||
input({ type: 'hidden', name: 'filter', value: type }),
|
|
||||||
button({ type: 'submit', class: filter === type ? 'filter-btn active' : 'filter-btn' }, label)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
),
|
|
||||||
section({ class: 'feed-container' }, renderActionCards(filteredActions, userId, actions))
|
section({ class: 'feed-container' }, renderActionCards(filteredActions, userId, actions))
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -77,7 +77,7 @@ exports.statsView = (stats, filter) => {
|
||||||
h2(title),
|
h2(title),
|
||||||
p(description)
|
p(description)
|
||||||
),
|
),
|
||||||
div({ class: 'mode-buttons', style: 'display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:16px;margin-bottom:24px;' },
|
div({ class: 'mode-buttons' },
|
||||||
modes.map(m =>
|
modes.map(m =>
|
||||||
form({ method: 'GET', action: '/stats' },
|
form({ method: 'GET', action: '/stats' },
|
||||||
input({ type: 'hidden', name: 'filter', value: m }),
|
input({ type: 'hidden', name: 'filter', value: m }),
|
||||||
|
|
|
||||||
|
|
@ -261,12 +261,8 @@ exports.trendingView = (items, filter, categories = opinionCategories) => {
|
||||||
title,
|
title,
|
||||||
section(
|
section(
|
||||||
header,
|
header,
|
||||||
div(
|
div({ class: 'mode-buttons' },
|
||||||
{ class: 'mode-buttons', style: 'display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:16px;margin-bottom:24px;' },
|
...[...baseFilters, ...contentFilters.flat()].map(mode =>
|
||||||
generateFilterButtons(baseFilters, filter, '/trending'),
|
|
||||||
...contentFilters.map(row =>
|
|
||||||
div({ style: 'display:flex;flex-direction:column;gap:8px;' },
|
|
||||||
row.map(mode =>
|
|
||||||
form({ method: 'GET', action: '/trending' },
|
form({ method: 'GET', action: '/trending' },
|
||||||
input({ type: 'hidden', name: 'filter', value: mode }),
|
input({ type: 'hidden', name: 'filter', value: mode }),
|
||||||
button(
|
button(
|
||||||
|
|
@ -275,12 +271,10 @@ exports.trendingView = (items, filter, categories = opinionCategories) => {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
|
||||||
)
|
|
||||||
),
|
),
|
||||||
section(
|
section(
|
||||||
cards.length
|
cards.length
|
||||||
? div({ class: 'trending-container', style: 'display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px;' }, ...cards)
|
? div({ class: 'trending-container' }, ...cards)
|
||||||
: div({ class: 'no-results' }, p(i18n.trendingNoContentMessage))
|
: div({ class: 'no-results' }, p(i18n.trendingNoContentMessage))
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue