Backed up new Walmart Supplier templates.

This commit is contained in:
Norm Rasmussen
2025-07-17 16:32:51 -04:00
parent 8b741ea223
commit 0a9705f81b
10 changed files with 906 additions and 31 deletions

View File

@ -6,7 +6,8 @@
{% endif %}
{% endfor %}
<div class="card-course" progress="{% if course.progress == 100 %}completed{% elsif course.progress == 0 %}not-started{% else %}in-progress{% endif %}">
<div class="card-course" progress="{% if course.progress == 100 %}completed{% elsif course.progress == 0 %}not-started{% else %}in-progress{% endif %}" categories="{% for category in course.categories %}{{category.name}}${% endfor %}">
<div class="np-card-container">
{% if course.ribbon %}
<div class="np-card-ribbon">

View File

@ -0,0 +1,33 @@
<div class="card-course">
<div class="np-card-container">
<img
class="np-card-image"
alt="{{ learning_path.name }}"
src="{{ learning_path.image_url }}"
>
<div class="np-card-content np-card-content-vertical np-card-padding">
<h3 class="np-card-content-title">
{{ learning_path.name }}
</h3>
<p>{{ learning_path.items.count }} modules</p>
<div class="np-card-content-footer">
<div class="np-card-content-progress np-button-color">
{% t shared.progress, count: learning_path.progress %}
</div>
<div class="button-container">
<a class="button-course" href="{% route learning_path, id: learning_path.id %}">
{% t shared.view %}
</a>
</div>
</div>
</div>
</div>
</div>
<style>
p {
color: #001e60;
}
</style>

View File

@ -13,7 +13,7 @@
{% if available_categories contains category.name %}
{% comment %} <script> console.log("{{ course.name }} + {{ category.name }}")</script> {% endcomment %}
{% unless uniq_cats contains category.name %}
<a class="category-card" id="{{category.name}}" href="/app/catalog?filter[category_uuid][in][]={{category.id}}&search_terms=">
<a class="category-card" id="{{category.name}}" href="/app/catalog?search={{category.name}}">
<img class="category-card-image" src="" alt="">
</a>
{% assign uniq_cats = uniq_cats | append: category.name%}

View File

@ -31,3 +31,104 @@
{% include "grow-with-walmart-zero-state", message: message %}
{% endif %}
{% endif %}
<script>
document.addEventListener("DOMContentLoaded", () => {
const urlParams = new URLSearchParams(window.location.search);
const searchParam = urlParams.get("search");
const selectedCategories = searchParam
? searchParam.split(",").map(c => c.trim()).filter(Boolean)
: [];
const courseCards = document.querySelectorAll(".card-course");
const checkboxes = document.querySelectorAll('#category-checkboxes input[type="checkbox"]');
if (selectedCategories.length > 0) {
checkboxes.forEach(checkbox => {
if (selectedCategories.includes(checkbox.value)) {
checkbox.checked = true;
}
});
courseCards.forEach(card => {
const cardCategories = card.getAttribute("categories") || "";
const hasMatch = selectedCategories.some(cat => cardCategories.includes(cat));
card.parentElement.style.display = hasMatch ? "" : "none";
});
}
renderActiveFilters(selectedCategories);
const filterForm = document.getElementById("filter-form");
filterForm.addEventListener("submit", event => {
event.preventDefault();
const selected = Array.from(checkboxes)
.filter(cb => cb.checked)
.map(cb => cb.value);
const newParams = new URLSearchParams(window.location.search);
if (selected.length > 0) {
newParams.set("search", selected.join(","));
} else {
newParams.delete("search");
}
window.location.search = newParams.toString();
});
const dropdownBtn = document.querySelector(".custom-dropdown-button");
const dropdownPanel = document.querySelector(".custom-dropdown-panel");
if (dropdownBtn && dropdownPanel) {
dropdownBtn.addEventListener("click", (e) => {
e.stopPropagation();
dropdownPanel.classList.toggle("is-open");
});
document.addEventListener("click", (e) => {
if (!dropdownPanel.contains(e.target) && !dropdownBtn.contains(e.target)) {
dropdownPanel.classList.remove("is-open");
}
});
}
function renderActiveFilters(selected) {
const container = document.getElementById("active-filters");
if (!container) return;
container.innerHTML = "";
if (selected.length === 0) return;
selected.forEach(cat => {
const tag = document.createElement("span");
tag.className = "filter-tag";
tag.innerHTML = `
${cat}
<button type="button" data-remove="${cat}">×</button>
`;
container.appendChild(tag);
});
container.querySelectorAll("button[data-remove]").forEach(btn => {
btn.addEventListener("click", () => {
const toRemove = btn.getAttribute("data-remove");
const newSelection = selected.filter(c => c !== toRemove);
const newParams = new URLSearchParams(window.location.search);
if (newSelection.length > 0) {
newParams.set("search", newSelection.join(","));
} else {
newParams.delete("search");
}
window.location.search = newParams.toString();
});
});
}
});
</script>

View File

@ -0,0 +1,141 @@
<div class="np-filter" style="position: relative;">
<div class="custom-dropdown">
<button class="custom-dropdown-button" type="button">Filter</button>
<div class="custom-dropdown-panel">
<form id="filter-form">
<label class="custom-dropdown-label">By category</label>
<div id="category-checkboxes" class="checkbox-list">
{% assign uniq_cats = '' %}
{% for course in courses.enrolled %}
{% for category in course.categories %}
{% unless uniq_cats contains category.name %}
<label class="checkbox-item">
<input
type="checkbox"
name="category"
value="{{ category.name }}"
>
{{ category.name }}
</label>
{% assign uniq_cats = uniq_cats | append: category.name | append: '$' %}
{% endunless %}
{% endfor %}
{% endfor %}
</div>
<div id="active-filters" class="active-filters"></div>
<button class="custom-dropdown-apply" type="submit">Apply</button>
</form>
</div>
</div>
</div>
<style>
.custom-dropdown {
position: relative;
display: inline-block;
font-family: sans-serif;
}
.custom-dropdown-button {
background: #d9dfe2;
color: #305263;
border: 1px solid #ccc;
border-radius: 6px;
cursor: pointer;
padding: 0 20px;
font-size: 14px;
font-size: .875rem;
height: 40px;
font-weight: 700;
}
.custom-dropdown-panel {
display: none;
position: absolute;
top: 110%;
right: 0;
background: #ffffff;
border: 1px solid #ddd;
border-radius: 8px;
padding: 1rem;
min-width: 240px;
z-index: 1000;
}
.custom-dropdown-panel.is-open {
display: block;
}
.custom-dropdown-label {
font-weight: 600;
margin-bottom: 0.75rem;
font-size: 14px;
display: block;
color: #000;
}
.checkbox-list {
display: flex;
flex-direction: column;
gap: 0.5rem;
margin-bottom: 1rem;
max-height: 200px;
overflow-y: auto;
}
.checkbox-item {
display: flex;
align-items: center;
gap: 0.5rem;
font-size: 14px;
color: #000;
}
.checkbox-item input[type="checkbox"] {
width: 16px;
height: 16px;
cursor: pointer;
}
.custom-dropdown-apply {
background: #d9dfe2;
color: #305263;
font-weight: 700;
padding: 0.4rem 0.8rem;
border-radius: 6px;
font-size: 14px;
cursor: pointer;
border: none;
}
.active-filters {
margin: 1rem 0;
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
font-family: sans-serif;
}
.filter-tag {
background: #f0f0f0;
color: #000;
border: 1px solid #ccc;
padding: 0.25rem 0.6rem;
border-radius: 16px;
font-size: 13px;
display: flex;
align-items: center;
gap: 0.4rem;
}
.filter-tag button {
background: none;
border: none;
cursor: pointer;
font-size: 14px;
color: #666;
line-height: 1;
padding: 0;
}
</style>

View File

@ -0,0 +1,513 @@
{% assign us_user_grow = false %}
{% assign us_user_supplier = false %}
{% assign india_user = false %}
{% assign mexico_user = false %}
{% assign category_advisors = false %}
{% assign samsclub = false %}
{% assign import = false %}
{% for group in current_person.groups %}
{% if group.name == 'Grow With Walmart' %}
{% assign us_user_grow = true %}
{% endif %}
{% if group.name == 'Active Suppliers' %}
{% assign us_user_supplier = true %}
{% endif %}
{% if group.name == 'Walmart Vriddhi' %}
{% assign india_user = true %}
{% endif %}
{% if group.name == 'Crece con Walmart' %}
{% assign mexico_user = true %}
{% endif %}
{% if group.name == 'Category Advisors' %}
{% assign category_advisors = true %}
{% endif %}
{% if group.name == "Sam's Club" %}
{% assign samsclub = true %}
{% endif %}
{% if group.name == 'Import' %}
{% assign import = true %}
{% endif %}
{% endfor %}
<header class="np-header np-header-color">
<div class="np-header-content">
{% if current_school.logo_url %}
<h1 class="np-header-logo">
<a href="{% route home %}">
<img
alt="{{ current_school.name }}"
class="np-header-logo-image"
src="{{ current_school.logo_url }}"
/>
</a>
</h1>
{% else %}
<a href="{% route home %}" class="np-school-name np-header-font-color">
{{ current_school.name }}
</a>
{% endif %}
<div class="np-hidden-mobile np-header-desktop-nav hidden-mobile">
<ul class="np-header-desktop-nav-list">
{% for website_navigation in navigations.header_navigations_external %}
<li class= "np-header-desktop-nav-item">
<a
href="{{ website_navigation.path }}"
class="np-header-desktop-nav-link np-header-font-color"
target="_blank"
>
{{ website_navigation.name }}
</a>
</li>
{% endfor %}
<div class= "np-header-desktop-nav-link dropdown-nav start-here">
Start Here
<div class="header-dropdown-container">
<div class="header-dropdown-option">
<a class="np-header-desktop-nav-link np-header-font-color header-dropdown-link start-here-btn" href="/app/grow-with-walmart-catalog">
Grow with US
</a>
</div>
{% if us_user_supplier %}
<div class="header-dropdown-option">
<a class="np-header-desktop-nav-link np-header-font-color header-dropdown-link start-here-btn" href="/app/welcome-to-walmart">
Walmart US
</a>
</div>
{% endif %}
{% if samsclub %}
<div class="header-dropdown-option">
<a class="np-header-desktop-nav-link np-header-font-color header-dropdown-link start-here-btn" href="/app/samsclub-onboarding">
Sam's Club US
</a>
</div>
{% endif %}
{% if import %}
<div class="header-dropdown-option">
<a class="np-header-desktop-nav-link np-header-font-color header-dropdown-link start-here-btn" href="/app/advisors">
Direct Import
</a>
</div>
{% endif %}
</div>
</div>
<div class="np-header-desktop-nav-link dropdown-nav">
Learn
<div class="header-dropdown-container-row">
<div class="header-dropdown-container-col">
<div class="header-dropdown-option">
<a class="np-header-desktop-nav-link np-header-font-color header-dropdown-link start-here-btn" > Explore All</a>
</div>
<div class="header-dropdown-option">
<a class="np-header-desktop-nav-link np-header-font-color header-dropdown-link start-here-btn" href="/app/catalog">
Modules
</a>
</div>
<div class="header-dropdown-option">
<a class="np-header-desktop-nav-link np-header-font-color header-dropdown-link start-here-btn" href="/app/learning_paths">
Learning Paths
</a>
</div>
<div class="header-dropdown-option">
<a class="np-header-desktop-nav-link np-header-font-color header-dropdown-link start-here-btn" href="/courses/a891fcb0-ed3a-4851-8e64-0f4f0b602c2d/activities">
Help Docs
</a>
</div>
</div>
<div class="header-dropdown-container-col">
<div class="header-dropdown-option">
<a class="megatitle">Module by Category</a>
</div>
<div class="header-dropdown-option">
<a class="np-header-desktop-nav-link np-header-font-color header-dropdown-link start-here-btn" href="/app/learning_paths">
Ethics and Compliance
</a>
</div>
</div>
<div class="header-dropdown-container-col">
<div class="header-dropdown-option">
<a class="np-header-desktop-nav-link np-header-font-color header-dropdown-link start-here-btn" href="/app/learning_paths">
packaging and Labeling
</a>
</div>
</div>
</div>
</div>
<div class= "np-header-desktop-nav-link dropdown-nav">
Programs
<div class="header-dropdown-container">
{% if category_advisors %}
<div class="header-dropdown-option">
<a class="np-header-desktop-nav-link np-header-font-color header-dropdown-link start-here-btn" href="/app/advisors">
Category Advisors
</a>
</div>
{% endif %}
<div class="header-dropdown-option">
<a class="np-header-desktop-nav-link np-header-font-color header-dropdown-link start-here-btn" href="/app/walmart-start">
Walmart Start
</a>
</div>
</div>
</div>
<div class= "np-header-desktop-nav-link dropdown-nav">
Walmart Links
<div class="header-dropdown-container">
<div class="header-dropdown-option">
<a class="np-header-desktop-nav-link np-header-font-color header-dropdown-link start-here-btn" href="https://supplierone.wal-mart.com/" target="_blank">
Supplier One
</a>
</div>
<div class="header-dropdown-option">
<a class="np-header-desktop-nav-link np-header-font-color header-dropdown-link start-here-btn" href="https://retaillink.login.wal-mart.com/" target="_blank">
Retail Link
</a>
</div>
</div>
</div>
<li class= "np-header-desktop-nav-item">
<a href="/app/contact" class="np-header-desktop-nav-link np-header-font-color">
Contact
</a>
</li>
</ul>
</div>
{% if current_person.signed_in? %}
<div class="np-hidden-mobile np-header-search np-header-search-expanded">
<form action="{% route search %}" method="get" data-test="desktop-search">
<input
aria-label="{% t .search %}"
class="np-header-search-input np-header-font-background-color search-input"
type="text"
name="q"
placeholder="{% t .search %}"
/>
<i class="np-header-search-icon far fa-search"></i>
</form>
</div>
<div class="hidden-desktop header-mobile-menu-nav">
{% if current_person.signed_in? %}
<button
data-toggle-class="np-hidden"
class="np-header-mobile-menu-nav-button fal fa-times np-hidden np-header-font-color"
data-toggle-target=".np-header-mobile-avatar-menu,
.np-header-mobile-menu-content, .np-main, .np-footer"
></button>
<button
data-test="open-mobile-menu"
data-toggle-class="np-hidden"
class="np-header-mobile-menu-nav-button np-header-mobile-avatar-menu"
data-toggle-target=".fa-times, .np-header-mobile-menu-content, .np-main, .np-footer"
>
<i class="fal fa-bars hamburger-menu"></i>
</button>
{% endif %}
</div>
<div class="hidden-mobile np-header-avatar">
<button
class="np-header-avatar-button"
data-test="open-desktop-menu"
data-toggle-class-on-target="np-hidden"
data-toggle-target=".np-header-avatar-tooltip"
data-toggle-outside
>
<img
alt="{{ current_person.name }}"
class="np-header-avatar-image"
src="{{ current_person.avatar_url }}"
>
</button>
<div class="np-header-avatar-tooltip np-hidden" role="tooltip">
<span class="np-header-avatar-tooltip-arrow-up"></span>
<div class="np-header-avatar-tooltip-learner">
<div class="np-header-avatar-tooltip-learner-name">
{{ current_person.name }}
</div>
<div class="np-header-avatar-tooltip-learner-email">
{{ current_person.email }}
</div>
</div>
<nav class="np-header-avatar-tooltip-navigation">
{% unless current_school.sso_active? %}
<a
class="np-header-avatar-tooltip-navigation-link"
href="{% route account %}"
>
{% t .profile_settings %}
</a>
{% endunless %}
<a
class="np-header-avatar-tooltip-navigation-link np-danger"
href="{% route logout %}"
>
{% t .sign_out %}
</a>
</nav>
</div>
</div>
{% else %}
<a
class="np-header-sign-in np-header-desktop-nav-link np-header-font-color"
aria-label="{% t shared.sign_in %}"
href="{% route login %}">
{% t shared.sign_in %}
</a>
{% endif %}
</div>
</header>
<div class="hidden-desktop">
<div class="np-header-mobile-menu-content np-hidden">
{% if current_person.signed_in? %}
<img
alt="{{ current_person.name }}"
class="np-header-mobile-menu-content-avatar"
src="{{ current_person.avatar_url }}"
/>
<div class="np-header-mobile-menu-content-name">
{{ current_person.name }}
</div>
{% endif %}
<div class="np-header-mobile-menu-content-nav">
<form
class="header-search"
data-test="mobile-search"
method="get"
action="{% route search %}"
>
<input
aria-label="{% t .search %}"
class="header-mobile-search-input"
type="text"
name="q"
placeholder="{% t .search %}"
/>
<i class="np-header-search-icon far fa-search"></i>
</form>
<a
class="np-header-mobile-menu-content-button start-here-btn-mobile"
href="/app/grow-with-walmart-catalog"
>
Start Here
</a>
{% for website_navigation in navigations.header_navigations %}
{% unless website_navigation.name == 'Dashboard' %}
<a
href="{{ website_navigation.path }}"
class="np-header-mobile-menu-content-button"
{% if website_navigation.external? %} target="_blank" {% endif %}
>
{% if website_navigation.name == '' %}
{% endif %}
{{ website_navigation.name }}
</a>
{% endunless %}
{% endfor %}
<a
href="/app/welcome-to-walmart"
class="np-header-mobile-menu-content-button"
>
Welcome to Walmart
</a>
<a
href="/app/catalog"
class="np-header-mobile-menu-content-button"
>
Courses
</a>
<a
href="/app/blog"
class="np-header-mobile-menu-content-button"
>
Blog
</a>
<a
href="/courses/a891fcb0-ed3a-4851-8e64-0f4f0b602c2d/activities"
class="np-header-mobile-menu-content-button"
>
Help Docs
</a>
<div class="np-header-mobile-menu-content-line"></div>
<a
href="#"
class="np-header-mobile-menu-content-button"
>
Contact
</a>
{% unless current_school.sso_active? %}
<a
class="np-header-mobile-menu-content-button"
href="{% route account %}"
>
{% t .profile_settings %}
</a>
{% endunless %}
<a
class="np-header-mobile-menu-content-button np-danger"
href="{% route logout %}"
>
{% t .sign_out %}
</a>
</div>
</div>
</div>
{% include "messages" %}
<style>
.start-here-btn {
color: #001e60;
font-weight: bold;
}
.start-here-btn:hover {
color:#0053E2;
font-weight: bold;
}
.np-header-desktop-nav-link {
font-size: 20px;
font-weight: 500;
}
.megatitle {
align-content: left;
left:0;
}
a.megatitle {
font-size: 18px;
font-weight:700;
text-decoration: none;
color: #001e60;
background-color:#435;
}
.header-dropdown-container {
display: none;
position: absolute;
background-color: white;
border: 1px solid #ccc;
z-index: 10;
width: fit-content;
top: 55px;
left:-5px;
}
.header-dropdown-container-row {
display: none;
position: absolute;
background-color: white;
border: 1px solid #ccc;
z-index: 10;
width: 640px;
top: 55px;
right:0;
}
.header-dropdown-container-col {
float:left;
width: 33.33%;
height: 325px;
}
.start-here {
display:block;
padding:0px 10px;
border-radius: 5px;
background-color: #0053e2;
}
.np-header-desktop-nav-link:hover .header-dropdown-container-row {
display: block;
}
.np-header-desktop-nav-link:hover .header-dropdown-container {
display: block;
}
.header-dropdown-option a {
text-align: left;
font-size:18px;
}
.header-dropdown-option {
display: block;
padding: 15px;
color: black;
text-decoration: none;
white-space: nowrap;
font-size:18px;
}
.dropdown-nav {
position: relative;
display: flex;
align-items: center;
color: #fff;
margin-left: 15px;
}
.header-dropdown-option:hover {
background-color: #fff;
}
.hidden-mobile {
display: none;
}
.hidden-desktop {
display: block;
}
.header-mobile-menu-nav {
margin-left: 20px;
}
.hamburger-menu {
color: #fff;
}
.header-search {
position: relative;
width: 100%;
}
.header-mobile-search-input {
width: 100%;
padding: 13px;
}
.start-here-btn-mobile {
background: #FFC220;
}
@media only screen and (min-width: 1100px) {
.hidden-mobile {
display: flex;
}
.hidden-desktop {
display: none;
}
}
@media only screen and (min-width: 768px) {
.np-header-mobile-menu-content {
top: 110px;
}
}
</style>

View File

@ -0,0 +1,73 @@
<div class="welcome-section-container">
<div class="banner-wrapper">
<div class="banner-container">
<div class="banner-image-wrapper">
<img src="https://i5.walmartimages.com/dfwrs/76316474-724e/k2-_6b8f2a2a-f623-479d-a726-3485bceb4e3d.v1.png" width="100%" height="100%">
<!-- <div style="padding:56.25% 0 0 0;position:relative;"><iframe src="https://player.vimeo.com/video/1079908425?h=e98c3e5ac7&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479" frameborder="0" allow="autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media" style="position:absolute;top:0;left:0;width:100%;height:100%;" title="Welcome to Walmart Intro Video"></iframe>
</div><script src="https://player.vimeo.com/api/player.js"></script>-->
</div>
<div class="banner-content-container">
<div class="banner-descirption">
<b>Sam's Club</b><br><br>
Our learning paths are built to guide you through the processes, expectations, and opportunites &mdash; so you can grow your business with confidence. Whether you're just getting started or looking to expand your partnership, we are here to support every step of your journey.
</div>
</div>
</div>
</div>
</div>
<style>
.banner-wrapper {
padding: 10px;
border-radius: 10px;
}
.banner-img {
width: 100%;
}
.banner-container {
display: flex;
align-items: center;
gap: 40px;
padding: 20px;
border-radius: 10px;
}
.text-center {
text-align: center;
}
.banner-descirption {
font-size: 25px;
}
.bold-text {
font-weight: 700;
}
.deatils-container {
display: flex;
flex-direction: column;
align-items: center;
}
.banner-image-wrapper {
width: 50%;
display: flex;
flex-direction: column;
gap: 30px;
}
.banner-content-container {
width: 50%;
display: flex;
flex-direction: column;
gap: 30px;
}
@media only screen and (max-width: 900px) {
.banner-container {
flex-direction: column;
}
}
@media only screen and (max-width: 500px) {
.banner-descirption{
font-size: 17px;
}
}
</style>

View File

@ -16,12 +16,7 @@
{% capture label %}{% t shared.filters.by_category %}{% endcapture %}
{% if courses.enrolled.any? %}
{%
include "filter_dropdown",
filters: courses.filters,
key: "category_uuid",
label: label
%}
{% include 'filters_catalog' %}
{% endif %}
</div>
{% include "courses_catalog" %}

View File

@ -1,23 +0,0 @@
{% include "header" %}
{% include "course_version_outdated_alert", courses: courses.in_catalog %}
{% include "sub_navigation" %}
<main class="np-main np-catalog np-subpage-container np-max-width">
<div class="np-catalog-header-wrapper">
<div class="np-catalog-header">
<div class="np-resource-title">{{ catalog.headline }}</div>
<div class="np-resource-subtitle">{{ catalog.subheadline }}</div>
</div>
{% capture label %}{% t shared.filters.by_category %}{% endcapture %}
{% if courses.in_catalog.any? %}
{%
include "filter_dropdown",
filters: courses.filters,
key: "category_uuid",
label: label
%}
{% endif %}
</div>
{% include "categories_courses_catalog" %}
</main>
{% include "footer" %}

View File

@ -0,0 +1,41 @@
{% if current_person.properties.first_login == true %}
<script>
window.location.replace('/app');
</script>
{% endif %}
{% assign in_progress_courses = 0 %}
{% for course in courses.enrolled %}
{% if course.progress > 0 and course.progress < 100 %}
{% assign in_progress_courses = in_progress_courses | plus: 1 %}
{% endif %}
{% endfor %}
{% include "headerstart" %}
{% include "course_version_outdated_alert", courses: courses.featured %}
<main class="np-main np-catalog np-subpage-container np-max-width">
{% include 'welcome_section_sams' %}
<div class="lps-wrapper grid">
{% for learning_path in learning_paths.enrolled %}
{% for category in learning_path.categories %}
{% if category.name == "Sam's Club" %}
{% include "cards_learning_paths_squares" %}
{% endif %}
{% endfor %}
{% endfor %}
</div>
</main>
{% include "footer" %}
<style>
.grid {
Display: Flex;
flex-direction: row;
}
@media (max-width: 800px) {
.grid {
flex-direction: column;
}
</style>