@@ -41,36 +41,11 @@ struct PointOfSaleSettingsStoreDetailView: View {
4141 @ViewBuilder
4242 private var storeInformationView : some View {
4343 VStack ( spacing: POSSpacing . none) {
44- ZStack {
45- backgroundColor
46- Text ( Localization . storeInformation)
47- . font ( . posBodyLargeBold)
48- . foregroundColor ( . posOnSurface)
49- . frame ( maxWidth: . infinity, alignment: . leading)
50- . padding ( . horizontal, POSPadding . medium)
51- . padding ( . vertical, POSPadding . small)
52- }
44+ sectionHeaderView ( title: Localization . storeInformation)
5345
5446 VStack ( spacing: POSSpacing . medium) {
55- VStack ( alignment: . leading, spacing: POSPadding . small) {
56- Text ( Localization . storeName)
57- . font ( . posBodyMediumRegular( ) )
58- Text ( viewModel. storeName)
59- . font ( . posBodyMediumRegular( ) )
60- . foregroundStyle ( . secondary)
61- }
62- . frame ( maxWidth: . infinity, alignment: . leading)
63- . padding ( . horizontal, POSPadding . medium)
64-
65- VStack ( alignment: . leading, spacing: POSPadding . small) {
66- Text ( Localization . address)
67- . font ( . posBodyMediumRegular( ) )
68- Text ( viewModel. storeAddress)
69- . font ( . posBodyMediumRegular( ) )
70- . foregroundStyle ( . secondary)
71- }
72- . frame ( maxWidth: . infinity, alignment: . leading)
73- . padding ( . horizontal, POSPadding . medium)
47+ fieldRowView ( label: Localization . storeName, value: viewModel. storeName)
48+ fieldRowView ( label: Localization . address, value: viewModel. storeAddress)
7449 }
7550 . padding ( . bottom, POSPadding . medium)
7651 }
@@ -79,59 +54,54 @@ struct PointOfSaleSettingsStoreDetailView: View {
7954 @ViewBuilder
8055 private var receiptInformationView : some View {
8156 VStack ( spacing: POSSpacing . none) {
82- ZStack {
83- backgroundColor
84- Text ( Localization . receiptInformation)
85- . font ( . posBodyLargeBold)
86- . foregroundColor ( . posOnSurface)
87- . frame ( maxWidth: . infinity, alignment: . leading)
88- . padding ( . horizontal, POSPadding . medium)
89- . padding ( . vertical, POSPadding . small)
90- }
57+ sectionHeaderView ( title: Localization . receiptInformation)
9158
9259 VStack ( spacing: POSSpacing . medium) {
93- VStack ( alignment: . leading, spacing: POSPadding . small) {
94- Text ( Localization . receiptStoreName)
95- . font ( . posBodyMediumRegular( ) )
96- settingValueView ( for: viewModel. receiptInformation. storeName)
97- }
98- . frame ( maxWidth: . infinity, alignment: . leading)
99- . padding ( . horizontal, POSPadding . medium)
100-
101- VStack ( alignment: . leading, spacing: POSPadding . small) {
102- Text ( Localization . physicalAddress)
103- . font ( . posBodyMediumRegular( ) )
104- settingValueView ( for: viewModel. receiptInformation. storeAddress)
105- }
106- . frame ( maxWidth: . infinity, alignment: . leading)
107- . padding ( . horizontal, POSPadding . medium)
60+ receiptFieldRowView ( label: Localization . receiptStoreName, value: viewModel. receiptInformation. storeName)
61+ receiptFieldRowView ( label: Localization . physicalAddress, value: viewModel. receiptInformation. storeAddress)
62+ receiptFieldRowView ( label: Localization . phoneNumber, value: viewModel. receiptInformation. phone)
63+ receiptFieldRowView ( label: Localization . email, value: viewModel. receiptInformation. email)
64+ receiptFieldRowView ( label: Localization . refundReturnsPolicy, value: viewModel. receiptInformation. refundReturnsPolicy)
65+ }
66+ . padding ( . bottom, POSPadding . medium)
67+ }
68+ }
10869
109- VStack ( alignment: . leading, spacing: POSPadding . small) {
110- Text ( Localization . phoneNumber)
111- . font ( . posBodyMediumRegular( ) )
112- settingValueView ( for: viewModel. receiptInformation. phone)
113- }
70+ @ViewBuilder
71+ private func sectionHeaderView( title: String ) -> some View {
72+ ZStack {
73+ backgroundColor
74+ Text ( title)
75+ . font ( . posBodyLargeBold)
76+ . foregroundColor ( . posOnSurface)
11477 . frame ( maxWidth: . infinity, alignment: . leading)
11578 . padding ( . horizontal, POSPadding . medium)
79+ . padding ( . vertical, POSPadding . small)
80+ }
81+ }
11682
117- VStack ( alignment: . leading, spacing: POSPadding . small) {
118- Text ( Localization . email)
119- . font ( . posBodyMediumRegular( ) )
120- settingValueView ( for: viewModel. receiptInformation. email)
121- }
122- . frame ( maxWidth: . infinity, alignment: . leading)
123- . padding ( . horizontal, POSPadding . medium)
83+ @ViewBuilder
84+ private func fieldRowView( label: String , value: String ) -> some View {
85+ VStack ( alignment: . leading, spacing: POSPadding . small) {
86+ Text ( label)
87+ . font ( . posBodyMediumRegular( ) )
88+ Text ( value)
89+ . font ( . posBodyMediumRegular( ) )
90+ . foregroundStyle ( . secondary)
91+ }
92+ . frame ( maxWidth: . infinity, alignment: . leading)
93+ . padding ( . horizontal, POSPadding . medium)
94+ }
12495
125- VStack ( alignment: . leading, spacing: POSPadding . small) {
126- Text ( Localization . refundReturnsPolicy)
127- . font ( . posBodyMediumRegular( ) )
128- settingValueView ( for: viewModel. receiptInformation. refundReturnsPolicy)
129- }
130- . frame ( maxWidth: . infinity, alignment: . leading)
131- . padding ( . horizontal, POSPadding . medium)
132- }
133- . padding ( . bottom, POSPadding . medium)
96+ @ViewBuilder
97+ private func receiptFieldRowView( label: String , value: String ? ) -> some View {
98+ VStack ( alignment: . leading, spacing: POSPadding . small) {
99+ Text ( label)
100+ . font ( . posBodyMediumRegular( ) )
101+ settingValueView ( for: value)
134102 }
103+ . frame ( maxWidth: . infinity, alignment: . leading)
104+ . padding ( . horizontal, POSPadding . medium)
135105 }
136106
137107 @ViewBuilder
0 commit comments