Skip to content

Commit dde59af

Browse files
authored
[Woo POS][Design System] Update skeleton design for item list (#15131)
2 parents 8f37e46 + 573dafa commit dde59af

File tree

3 files changed

+46
-41
lines changed

3 files changed

+46
-41
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import SwiftUI
2+
3+
struct GhostItemCardView: View {
4+
@ScaledMetric private var scale: CGFloat = 1.0
5+
6+
private var dimension: CGFloat {
7+
min(Constants.productCardSize * scale, Constants.maximumProductCardSize)
8+
}
9+
10+
var body: some View {
11+
HStack(spacing: Constants.cardSpacing) {
12+
Spacer()
13+
.frame(width: dimension, height: dimension)
14+
Rectangle()
15+
.foregroundColor(.posOnSurfaceVariantLowest)
16+
.frame(height: Layout.placeholderHeight * scale)
17+
.cornerRadius(Layout.cornerRadius)
18+
.padding(.horizontal, Constants.horizontalTextPadding)
19+
Spacer()
20+
.frame(width: dimension, height: dimension)
21+
}
22+
.shimmering()
23+
.frame(maxWidth: .infinity, idealHeight: dimension)
24+
.background(Color.posSurfaceBright)
25+
.posItemCardBorderStyles()
26+
}
27+
}
28+
29+
private extension GhostItemCardView {
30+
typealias Constants = PointOfSaleItemListCardConstants
31+
32+
enum Layout {
33+
static let placeholderHeight: CGFloat = 36
34+
static let cornerRadius: CGFloat = 8
35+
}
36+
}
37+
38+
#Preview {
39+
GhostItemCardView()
40+
}

WooCommerce/Classes/POS/Presentation/ItemListView.swift

Lines changed: 2 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ private extension ItemListView {
114114
.fixedSize(horizontal: false, vertical: true)
115115
.background(Color.posSurfaceBright)
116116
.cornerRadius(Constants.bannerCornerRadius)
117-
.shadow(color: Color.black.opacity(0.08), radius: 4, y: 2)
117+
.shadow(color: Color.posShadow.opacity(0.08), radius: 4, y: 2)
118118
.accessibilityAddTraits(.isButton)
119119
.onTapGesture {
120120
showSimpleProductsModal = true
@@ -126,7 +126,7 @@ private extension ItemListView {
126126
Text(headerBannerHint + " ") +
127127
Text(Localization.headerBannerLearnMoreHint)
128128
.font(POSFontStyle.posBodySmallBold.font())
129-
.foregroundColor(Color(.accent))
129+
.foregroundColor(Color(.posPrimary))
130130
}
131131

132132
@ViewBuilder
@@ -173,45 +173,6 @@ private extension ItemListState {
173173
}
174174
}
175175

176-
struct GhostItemCardView: View {
177-
@ScaledMetric private var scale: CGFloat = 1.0
178-
179-
var body: some View {
180-
HStack(spacing: 0) {
181-
Rectangle()
182-
.frame(width: Constants.productCardSize * scale, height: Constants.productCardSize * scale)
183-
HStack {
184-
Rectangle()
185-
.foregroundColor(Constants.textForegroundColor)
186-
.frame(width: Constants.textWidth * 2 * scale, height: Constants.textHeight * scale)
187-
.padding(.horizontal)
188-
Spacer()
189-
Rectangle()
190-
.foregroundColor(Constants.textForegroundColor)
191-
.frame(width: Constants.textWidth * scale, height: Constants.textHeight * scale)
192-
.padding(.horizontal)
193-
}
194-
.frame(height: Constants.productCardSize * scale)
195-
}
196-
.overlay {
197-
RoundedRectangle(cornerRadius: Constants.cornerRadius)
198-
}
199-
.foregroundColor(Constants.cardForegroundColor)
200-
.shimmering()
201-
}
202-
}
203-
204-
private extension GhostItemCardView {
205-
enum Constants {
206-
static let cornerRadius: CGFloat = 8
207-
static let cardForegroundColor: Color = Color.gray.opacity(0.5)
208-
static let textForegroundColor: Color = Color.gray.opacity(0.8)
209-
static let productCardSize: CGFloat = 112
210-
static let textWidth: CGFloat = 112
211-
static let textHeight: CGFloat = 32
212-
}
213-
}
214-
215176
/// Constants
216177
///
217178
@available(iOS 17.0, *)

WooCommerce/WooCommerce.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@
8181
0204E3622B8CD40B00F1B5FD /* WooAnalyticsEvent+Products.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0204E3612B8CD40B00F1B5FD /* WooAnalyticsEvent+Products.swift */; };
8282
0204F0CA29C047A400CFC78F /* SelfSizingHostingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0204F0C929C047A400CFC78F /* SelfSizingHostingController.swift */; };
8383
0205021E27C8B6C600FB1C6B /* InboxEligibilityUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0205021D27C8B6C600FB1C6B /* InboxEligibilityUseCase.swift */; };
84+
020556512D5DA45500E51059 /* GhostItemCardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 020556502D5DA45500E51059 /* GhostItemCardView.swift */; };
8485
0206483A23FA4160008441BB /* OrdersRootViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0206483923FA4160008441BB /* OrdersRootViewController.swift */; };
8586
0206E296299CD2C900C061C1 /* WooAnalyticsEvent+DomainSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0206E295299CD2C900C061C1 /* WooAnalyticsEvent+DomainSettings.swift */; };
8687
020732042988AB7B000A53C2 /* DomainContactInfoForm.swift in Sources */ = {isa = PBXBuildFile; fileRef = 020732032988AB7B000A53C2 /* DomainContactInfoForm.swift */; };
@@ -3284,6 +3285,7 @@
32843285
0204E3612B8CD40B00F1B5FD /* WooAnalyticsEvent+Products.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "WooAnalyticsEvent+Products.swift"; sourceTree = "<group>"; };
32853286
0204F0C929C047A400CFC78F /* SelfSizingHostingController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelfSizingHostingController.swift; sourceTree = "<group>"; };
32863287
0205021D27C8B6C600FB1C6B /* InboxEligibilityUseCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InboxEligibilityUseCase.swift; sourceTree = "<group>"; };
3288+
020556502D5DA45500E51059 /* GhostItemCardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GhostItemCardView.swift; sourceTree = "<group>"; };
32873289
0206483923FA4160008441BB /* OrdersRootViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OrdersRootViewController.swift; sourceTree = "<group>"; };
32883290
0206E295299CD2C900C061C1 /* WooAnalyticsEvent+DomainSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "WooAnalyticsEvent+DomainSettings.swift"; sourceTree = "<group>"; };
32893291
020732032988AB7B000A53C2 /* DomainContactInfoForm.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DomainContactInfoForm.swift; sourceTree = "<group>"; };
@@ -7486,6 +7488,7 @@
74867488
027ADB6D2D1BF5E3009608DB /* ParentProductCardView.swift */,
74877489
029149772D26658A00F7B3B3 /* VariationCardView.swift */,
74887490
0291497C2D26CB2500F7B3B3 /* ChildItemList.swift */,
7491+
020556502D5DA45500E51059 /* GhostItemCardView.swift */,
74897492
);
74907493
path = "Item Selector";
74917494
sourceTree = "<group>";
@@ -15930,6 +15933,7 @@
1593015933
747AA08B2107CF8D0047A89B /* TracksProvider.swift in Sources */,
1593115934
CE1EC8F120B8A408009762BF /* OrderNoteTableViewCell.swift in Sources */,
1593215935
D8C11A5E22E2440400D4A88D /* OrderPaymentDetailsViewModel.swift in Sources */,
15936+
020556512D5DA45500E51059 /* GhostItemCardView.swift in Sources */,
1593315937
D8B4D5F226C2CF5B00F34E94 /* InPersonPaymentsStripeAccountOverdueView.swift in Sources */,
1593415938
EE46CEDF29CB31DF004E4524 /* StoreOnboardingStoreDetailsCoordinator.swift in Sources */,
1593515939
025CA1A62887D17A00CCBB25 /* LoggedOutAppSettingsProtocol.swift in Sources */,

0 commit comments

Comments
 (0)