diff --git a/Apps/Examples/Examples/FioriSwiftUICore/SortFilter/SortFilterExample.swift b/Apps/Examples/Examples/FioriSwiftUICore/SortFilter/SortFilterExample.swift index 0ac2db5ef..6f35afa0a 100644 --- a/Apps/Examples/Examples/FioriSwiftUICore/SortFilter/SortFilterExample.swift +++ b/Apps/Examples/Examples/FioriSwiftUICore/SortFilter/SortFilterExample.swift @@ -14,7 +14,7 @@ struct SortFilterExample: View { .picker(item: .init(name: "Fixed Many Filter", value: [0], valueOptions: ["Received", "Started", "Hold", "Transfer", "Completed", "Pending Review Pending Pending Pending Pending Pending", "Accepted Medium", "Pending Medium", "Completed Medium", "Checked", "Unchecked", "Partially Checked", "Checked and Unchecked", "Checked and Partially Checked", "Unchecked and Partially Checked", "Partially Checked and Unchecked", "Checked and Unchecked and Partially Checked", "Unchecked and Partially Checked and Partially Checked", "Partially Checked and Unchecked and Partially Checked", "Checked Finally", "Unchecked Finally", "Partially Checked Finally", "Checked and Unchecked Finally", "Checked and Partially Checked Finally", "Unchecked and Partially Checked Finally", "Partially Checked and Unchecked Finally", "Checked Finally and Partially Checked Finally", "Unchecked Finally and Partially Checked Finally", "Partially Checked Finally and Partially Checked Finally", "Review", "Reviewed", "To be Reviewed", "Pending for Review", "Booked", "To be Booked", "Will Book", "Booking Canceled"], allowsMultipleSelection: false, allowsEmptySelection: true, barItemDisplayMode: .value, icon: "clock", itemLayout: .fixed, displayMode: .filterFormCell), showsOnFilterFeedbackBar: true) ], [ - .picker(item: .init(name: "Priority", value: [0], valueOptions: ["High", "Medium", "Low"], allowsMultipleSelection: true, allowsEmptySelection: true, showsValueForSingleSelected: false, icon: "filemenu.and.cursorarrow"), showsOnFilterFeedbackBar: true), + .picker(item: .init(name: "Priority", value: [0], valueOptions: ["High", "Medium", "Low"], allowsMultipleSelection: true, allowsEmptySelection: true, barItemDisplayMode: .nameAndValue, icon: "filemenu.and.cursorarrow"), showsOnFilterFeedbackBar: true), .filterfeedback(item: .init(name: "Sort Order", value: [0], valueOptions: ["Ascending", "Descending"], allowsMultipleSelection: false, allowsEmptySelection: false, icon: "checkmark")), .stepper(item: .init(name: "Quantity", stepperTitle: "Label", value: 1, step: 1, stepRange: 0 ... 100, isDecimalSupported: false, description: "Hint Text"), showsOnFilterFeedbackBar: true) diff --git a/Sources/FioriSwiftUICore/Components/CancellableResettableForm.swift b/Sources/FioriSwiftUICore/Components/CancellableResettableForm.swift index b38ba4049..d378e9488 100644 --- a/Sources/FioriSwiftUICore/Components/CancellableResettableForm.swift +++ b/Sources/FioriSwiftUICore/Components/CancellableResettableForm.swift @@ -10,6 +10,8 @@ struct CancellableResettableDialogForm Title, @ViewBuilder cancelAction: () -> CancelAction, @ViewBuilder resetAction: () -> ResetAction, @@ -41,7 +43,7 @@ struct CancellableResettableDialogForm Title, @ViewBuilder cancelAction: () -> CancelAction, @ViewBuilder resetAction: () -> ResetAction, @@ -96,7 +100,7 @@ struct CancellableResettableDialogNavigationForm some View { if self.isEnabled { configuration.label - .frame(width: UIDevice.current.userInterfaceIdiom == .pad ? 375 - 13 * 2 : + .frame(width: UIDevice.current.userInterfaceIdiom == .pad ? self.popoverWidth - 13 * 2 : Screen.bounds.size.width - 16 * 2) .padding([.top, .bottom], 8) .font(.body) @@ -131,7 +136,7 @@ struct ApplyButtonStyle: PrimitiveButtonStyle { .padding([.top], UIDevice.current.userInterfaceIdiom == .pad ? 16 : 8) } else { configuration.label - .frame(width: UIDevice.current.userInterfaceIdiom == .pad ? 375 - 13 * 2 : + .frame(width: UIDevice.current.userInterfaceIdiom == .pad ? self.popoverWidth - 13 * 2 : Screen.bounds.size.width - 16 * 2) .padding([.top, .bottom], 8) .font(.body) diff --git a/Sources/FioriSwiftUICore/Models/ModelDefinitions.swift b/Sources/FioriSwiftUICore/Models/ModelDefinitions.swift index c5295e088..dba435894 100644 --- a/Sources/FioriSwiftUICore/Models/ModelDefinitions.swift +++ b/Sources/FioriSwiftUICore/Models/ModelDefinitions.swift @@ -472,6 +472,8 @@ public protocol FilterFeedbackBarModel: AnyObject { // sourcery: virtualPropActionHelper = "@StateObject var context: SortFilterContext = SortFilterContext()" // sourcery: add_env_props = "dismiss" // sourcery: generated_component_composite +// sourcery: virtualPropViewSize = "@State var size: CGSize = .zero" +// sourcery: virtualPropPopoverWidth = "let popoverWidth = 393.0" public protocol SortFilterViewModel: AnyObject, TitleComponent { // sourcery: bindingProperty // sourcery: backingComponent=_SortFilterCFGItemContainer @@ -532,6 +534,7 @@ public protocol OptionListPickerItemModel: OptionListPickerComponent { // sourcery: virtualPropAllowsMultipleSelection = "var allowsMultipleSelection: Bool = false" // sourcery: virtualPropAllowsEmptySelection = "var allowsEmptySelection: Bool = false" // sourcery: virtualPropIsSearchBarHidden = "var isSearchBarHidden: Bool = false" +// sourcery: virtualPropPopoverWidth = "let popoverWidth = 393.0" public protocol SearchListPickerItemModel: OptionListPickerComponent { // sourcery: default.value = nil // sourcery: no_view diff --git a/Sources/FioriSwiftUICore/Views/OptionListPickerItem+View.swift b/Sources/FioriSwiftUICore/Views/OptionListPickerItem+View.swift index def4b1f01..6f1ff5901 100644 --- a/Sources/FioriSwiftUICore/Views/OptionListPickerItem+View.swift +++ b/Sources/FioriSwiftUICore/Views/OptionListPickerItem+View.swift @@ -132,11 +132,11 @@ extension OptionListPickerItem: View { VStack { Spacer() OptionListPickerItem(value: Binding<[Int]>(get: { [0, 1, 2] }, set: { print($0) }), valueOptions: ["Received", "Started", "Hold", "Transfer", "Completed", "Pending Review review", "Accepted", "Rejected"], hint: nil) - .frame(width: 375) + .frame(width: 393) Spacer() OptionListPickerItem(value: Binding<[Int]>(get: { [0, 1, 2] }, set: { print($0) }), valueOptions: ["Received", "Started", "Hold", "Transfer", "Completed", "Pending Review", "Accepted", "Rejected"], hint: nil) .optionListPickerStyle(font: .title, foregroundColorSelected: Color.red, strokeColorSelected: Color.red, cornerRadius: 25) - .frame(width: 375) + .frame(width: 393) Spacer() } } diff --git a/Sources/FioriSwiftUICore/Views/SearchListPickerItem+View.swift b/Sources/FioriSwiftUICore/Views/SearchListPickerItem+View.swift index 1c8a5b5ab..707c697ea 100644 --- a/Sources/FioriSwiftUICore/Views/SearchListPickerItem+View.swift +++ b/Sources/FioriSwiftUICore/Views/SearchListPickerItem+View.swift @@ -86,7 +86,7 @@ extension SearchListPickerItem: View { } }) .listStyle(PlainListStyle()) - .frame(minWidth: UIDevice.current.userInterfaceIdiom != .phone ? 393 : nil) + .frame(minWidth: UIDevice.current.userInterfaceIdiom != .phone ? popoverWidth : nil) .scrollContentBackground(.hidden) .padding(0) .ifApply(!isSearchBarHidden, content: { v in @@ -138,7 +138,7 @@ extension SearchListPickerItem: View { VStack { Spacer() SearchListPickerItem(value: Binding<[Int]>(get: { [0, 1, 2] }, set: { print($0) }), valueOptions: ["Received", "Started", "Hold", "Transfer", "Completed", "Pending Review review", "Accepted", "Rejected"], hint: nil) - .frame(width: 375) + .frame(width: 393) Spacer() } } diff --git a/Sources/FioriSwiftUICore/Views/SliderPickerItem+View.swift b/Sources/FioriSwiftUICore/Views/SliderPickerItem+View.swift index 9bfd11aa6..b53f1bb99 100644 --- a/Sources/FioriSwiftUICore/Views/SliderPickerItem+View.swift +++ b/Sources/FioriSwiftUICore/Views/SliderPickerItem+View.swift @@ -188,7 +188,7 @@ private struct SliderPickeTestView: View { ), minimumValue: 0, maximumValue: 100, hint: "Pick an integer value") Spacer() } - .frame(width: 375) + .frame(width: 393) } } diff --git a/Sources/FioriSwiftUICore/Views/SortFilter/FilterFeedbackBarItem+View.swift b/Sources/FioriSwiftUICore/Views/SortFilter/FilterFeedbackBarItem+View.swift index 59198529a..ce4b5f0e1 100644 --- a/Sources/FioriSwiftUICore/Views/SortFilter/FilterFeedbackBarItem+View.swift +++ b/Sources/FioriSwiftUICore/Views/SortFilter/FilterFeedbackBarItem+View.swift @@ -122,6 +122,7 @@ struct PickerMenuItem: View { @State var isSheetVisible = false @State var detentHeight: CGFloat = ((UIDevice.current.userInterfaceIdiom == .phone || UIDevice.current.userInterfaceIdiom == .pad) ? 88 : 0) + let popoverWidth = 393.0 public init(item: Binding, onUpdate: @escaping () -> Void) { self._item = item @@ -300,6 +301,8 @@ struct DateTimeMenuItem: View { @State var detentHeight: CGFloat = 0 var onUpdate: () -> Void + + let popoverWidth = 393.0 public init(item: Binding, onUpdate: @escaping () -> Void) { self._item = item @@ -356,10 +359,10 @@ struct DateTimeMenuItem: View { ) .datePickerStyle(.graphical) .labelsHidden() - .frame(width: UIDevice.current.userInterfaceIdiom == .pad ? 375 - 13 : Screen.bounds.size.width - 16) + .frame(width: UIDevice.current.userInterfaceIdiom == .pad ? self.popoverWidth - 13 : Screen.bounds.size.width - 16) .clipped() } - .frame(width: UIDevice.current.userInterfaceIdiom == .pad ? 375 : Screen.bounds.size.width) + .frame(width: UIDevice.current.userInterfaceIdiom == .pad ? self.popoverWidth : Screen.bounds.size.width) } .readHeight() .onPreferenceChange(HeightPreferenceKey.self) { height in diff --git a/Sources/FioriSwiftUICore/Views/SortFilter/SortFilterView+View.swift b/Sources/FioriSwiftUICore/Views/SortFilter/SortFilterView+View.swift index b679d42de..1580a47c2 100644 --- a/Sources/FioriSwiftUICore/Views/SortFilter/SortFilterView+View.swift +++ b/Sources/FioriSwiftUICore/Views/SortFilter/SortFilterView+View.swift @@ -38,7 +38,7 @@ extension Fiori { extension SortFilterView: View { public var body: some View { - CancellableResettableDialogForm { + CancellableResettableDialogNavigationForm { title } cancelAction: { cancelAction @@ -74,8 +74,16 @@ extension SortFilterView: View { .environment(\.isEnabled, true) } components: { _items + .sizeReader(size: { s in + if size != s { + size = s + } + }) .environmentObject(context) } + .frame(width: UIDevice.current.userInterfaceIdiom != .phone ? popoverWidth : nil) + .frame(height: UIDevice.current.userInterfaceIdiom != .phone ? size.height + 130 : nil) + .presentationDetents([.large]) .background(Color.preferredColor(.chromeSecondary)) } } diff --git a/Sources/FioriSwiftUICore/Views/SortFilter/_SortFilterCFGItemContainer.swift b/Sources/FioriSwiftUICore/Views/SortFilter/_SortFilterCFGItemContainer.swift index c8251ddcb..ffbd5054b 100644 --- a/Sources/FioriSwiftUICore/Views/SortFilter/_SortFilterCFGItemContainer.swift +++ b/Sources/FioriSwiftUICore/Views/SortFilter/_SortFilterCFGItemContainer.swift @@ -12,6 +12,10 @@ public struct _SortFilterCFGItemContainer { @EnvironmentObject var context: SortFilterContext @Binding var _items: [[SortFilterItem]] + @State var height = 88.0 + + let popoverWidth = 393.0 + @State var stepperViewHeight: CGFloat = 110 public init(items: Binding<[[SortFilterItem]]>) { self.__items = items @@ -21,38 +25,39 @@ public struct _SortFilterCFGItemContainer { extension _SortFilterCFGItemContainer: View { /// :nodoc: public var body: some View { - ScrollView(.vertical, showsIndicators: false) { - VStack(spacing: 30) { - ForEach(0 ..< self._items.count, id: \.self) { r in - VStack { - ForEach(0 ..< self._items[r].count, id: \.self) { c in - switch self._items[r][c] { - case .picker: - self.picker(row: r, column: c) - case .filterfeedback: - self.filterfeedback(row: r, column: c) - case .switch: - self.switcher(row: r, column: c) - case .slider: - self.slider(row: r, column: c) - case .datetime: - self.datetimePicker(row: r, column: c) - .frame(width: UIDevice.current.userInterfaceIdiom == .pad ? 375 : Screen.bounds.size.width) - case .stepper: - self.stepper(row: r, column: c) - .frame(width: UIDevice.current.userInterfaceIdiom == .pad ? 375 : Screen.bounds.size.width) - } - } + List { + ForEach(0 ..< self._items.count, id: \.self) { r in + Section { + ForEach(0 ..< self._items[r].count, id: \.self) { c in + self.rowView(row: r, column: c) + .listRowSeparator(c == self._items[r].count - 1 ? .hidden : .visible, edges: .all) } - .padding([.top], 12) - .frame(width: UIDevice.current.userInterfaceIdiom == .pad ? 375 - 13 * 2 : Screen.bounds.size.width - 16 * 2) - .frame(width: UIDevice.current.userInterfaceIdiom == .pad ? 375 : Screen.bounds.size.width) - .background(Color.preferredColor(.secondaryGroupedBackground)) + } footer: { + Rectangle().fill(Color.preferredColor(.primaryGroupedBackground)) + .frame(width: UIDevice.current.userInterfaceIdiom == .pad ? self.popoverWidth : Screen.bounds.size.width, height: 30) } + .listSectionSeparator(.hidden, edges: .all) + .listRowInsets(EdgeInsets()) + .frame(width: UIDevice.current.userInterfaceIdiom == .pad ? self.popoverWidth - 13 * 2 : Screen.bounds.size.width - 16 * 2) + .frame(width: UIDevice.current.userInterfaceIdiom == .pad ? self.popoverWidth : Screen.bounds.size.width) + .background(Color.preferredColor(.secondaryGroupedBackground)) } - .background(Color.preferredColor(.primaryGroupedBackground)) } - .background(Color.preferredColor(.primaryGroupedBackground)) + .listRowSpacing(0) + .listStyle(.plain) + .frame(width: UIDevice.current.userInterfaceIdiom != .phone ? self.popoverWidth : nil) + .frame(height: self.height) + .background(Color.preferredColor(.secondaryGroupedBackground)) + .modifier(FioriIntrospectModifier { scrollView in + DispatchQueue.main.async { + let popverHeight = Screen.bounds.size.height - StatusBar.height + let totalSpacing: CGFloat = (UIDevice.current.userInterfaceIdiom == .pad ? 8 : 16) * 2 + let totalPadding: CGFloat = (UIDevice.current.userInterfaceIdiom == .pad ? 13 : 16) * 2 + let safeAreaInset = self.getSafeAreaInsets() + let maxScrollViewHeight = popverHeight - totalSpacing - totalPadding - safeAreaInset.top - safeAreaInset.bottom - (UIDevice.current.userInterfaceIdiom == .pad ? 150 : 30) + self.height = min(scrollView.contentSize.height, maxScrollViewHeight) + } + }) .onChange(of: self._items) { _ in self.checkUpdateButtonState() } @@ -103,6 +108,78 @@ extension _SortFilterCFGItemContainer: View { self.context.isResetButtonEnabled = isResetButtonEnabled } + @ViewBuilder + func rowView(row r: Int, column c: Int) -> some View { + switch self._items[r][c] { + case .picker: + if self._items[r][c].picker.displayMode == .list || (self._items[r][c].picker.displayMode == .automatic && self._items[r][c].picker.valueOptions.count > 8) { + self.navigationLink(row: r, column: c) + } else { + self.picker(row: r, column: c) + .padding([.top, .bottom], 12) + } + case .filterfeedback: + self.filterfeedback(row: r, column: c) + .padding([.top, .bottom], 12) + case .switch: + self.switcher(row: r, column: c) + case .slider: + self.slider(row: r, column: c) + .padding([.top], 12) + case .datetime: + self.datetimePicker(row: r, column: c) + .frame(width: UIDevice.current.userInterfaceIdiom == .pad ? self.popoverWidth : Screen.bounds.size.width) + .padding([.top, .bottom], 12) + case .stepper: + self.stepper(row: r, column: c) + .frame(width: UIDevice.current.userInterfaceIdiom == .pad ? self.popoverWidth : Screen.bounds.size.width) + .padding([.top, .bottom], 12) + } + } + + func navigationLink(row r: Int, column c: Int) -> some View { + NavigationLink { + SearchListPickerItem( + value: Binding<[Int]>(get: { self._items[r][c].picker.workingValue }, set: { self._items[r][c].picker.workingValue = $0 }), + valueOptions: self._items[r][c].picker.valueOptions, + allowsMultipleSelection: self._items[r][c].picker.allowsMultipleSelection, + allowsEmptySelection: self._items[r][c].picker.allowsEmptySelection, + isSearchBarHidden: self._items[r][c].picker.isSearchBarHidden + ) { index in + self._items[r][c].picker.onTap(option: self._items[r][c].picker.valueOptions[index]) + } selectAll: { isAll in + self._items[r][c].picker.selectAll(isAll) + } + Spacer() + } label: { + KeyValueItem(key: { + Text(self._items[r][c].picker.name) + .font(.fiori(forTextStyle: .subheadline, weight: .bold, isItalic: false, isCondensed: false)) + .foregroundColor(Color.preferredColor(.primaryLabel)) + }, value: { + let workingValue = Binding<[Int]>(get: { self._items[r][c].picker.workingValue }, set: { self._items[r][c].picker.workingValue = $0 }) + if workingValue.count == 1 { + switch self._items[r][c].picker.barItemDisplayMode { + case .name: + Text(self._items[r][c].picker.name) + case .value: + Text(self._items[r][c].picker.valueOptions[workingValue.wrappedValue[0]]) + case .nameAndValue: + Text(self._items[r][c].picker.name + ": " + self._items[r][c].picker.valueOptions[workingValue.wrappedValue[0]]) + } + } else { + if self._items[r][c].picker.allowsMultipleSelection, workingValue.count >= 1 { + Text("\(self._items[r][c].picker.name) (\(workingValue.count))") + } else { + Text(self._items[r][c].picker.name) + } + } + }, axis: .horizontal) + } + .listRowBackground(Color.preferredColor(.secondaryGroupedBackground)) + .frame(height: 44) + } + func picker(row r: Int, column c: Int) -> some View { VStack { HStack { @@ -114,17 +191,7 @@ extension _SortFilterCFGItemContainer: View { switch self._items[r][c].picker.displayMode { case .automatic: if self._items[r][c].picker.valueOptions.count > 8 { - SearchListPickerItem( - value: Binding<[Int]>(get: { self._items[r][c].picker.workingValue }, set: { self._items[r][c].picker.workingValue = $0 }), - valueOptions: self._items[r][c].picker.valueOptions, - allowsMultipleSelection: self._items[r][c].picker.allowsMultipleSelection, - allowsEmptySelection: self._items[r][c].picker.allowsEmptySelection, - isSearchBarHidden: self._items[r][c].picker.isSearchBarHidden - ) { index in - self._items[r][c].picker.onTap(option: self._items[r][c].picker.valueOptions[index]) - } selectAll: { isAll in - self._items[r][c].picker.selectAll(isAll) - } + self.navigationLink(row: r, column: c) } else { self.filterFormCell(row: r, column: c) } @@ -133,16 +200,7 @@ extension _SortFilterCFGItemContainer: View { case .menu: self.filterFormCell(row: r, column: c) case .list: - SearchListPickerItem( - value: Binding<[Int]>(get: { self._items[r][c].picker.workingValue }, set: { self._items[r][c].picker.workingValue = $0 }), - valueOptions: self._items[r][c].picker.valueOptions, - allowsMultipleSelection: self._items[r][c].picker.allowsMultipleSelection, - allowsEmptySelection: self._items[r][c].picker.allowsEmptySelection - ) { index in - self._items[r][c].picker.onTap(option: self._items[r][c].picker.valueOptions[index]) - } selectAll: { isAll in - self._items[r][c].picker.selectAll(isAll) - } + self.navigationLink(row: r, column: c) } } } @@ -196,7 +254,7 @@ extension _SortFilterCFGItemContainer: View { .foregroundColor(Color.preferredColor(.primaryLabel)) Spacer() } - .frame(width: UIDevice.current.userInterfaceIdiom == .pad ? 375 - 13 * 2 : Screen.bounds.size.width - 16 * 2) + .frame(width: UIDevice.current.userInterfaceIdiom == .pad ? self.popoverWidth - 13 * 2 : Screen.bounds.size.width - 16 * 2) HStack { Text(NSLocalizedString("Time", tableName: "FioriSwiftUICore", bundle: Bundle.accessor, comment: "")) @@ -210,7 +268,7 @@ extension _SortFilterCFGItemContainer: View { ) .labelsHidden() } - .frame(width: UIDevice.current.userInterfaceIdiom == .pad ? 375 - 13 * 2 : Screen.bounds.size.width - 16 * 2) + .frame(width: UIDevice.current.userInterfaceIdiom == .pad ? self.popoverWidth - 13 * 2 : Screen.bounds.size.width - 16 * 2) DatePicker( "", @@ -219,10 +277,8 @@ extension _SortFilterCFGItemContainer: View { ) .datePickerStyle(.graphical) .labelsHidden() - .frame(width: UIDevice.current.userInterfaceIdiom == .pad ? 375 - 13 : Screen.bounds.size.width - 16) -// .frame(width: UIDevice.current.userInterfaceIdiom == .pad ? 375 : UIScreen.main.bounds.size.width) + .frame(width: UIDevice.current.userInterfaceIdiom == .pad ? self.popoverWidth - 13 : Screen.bounds.size.width - 16) .clipped() -// .frame(width: UIDevice.current.userInterfaceIdiom == .pad ? 375 - 13 * 2: UIScreen.main.bounds.size.width) } } @@ -303,6 +359,11 @@ extension _SortFilterCFGItemContainer: View { .ifApply(!self._items[r][c].stepper.incrementActionActive) { v in v.incrementActionStyle(.deactivate) } + .frame(minHeight: self.stepperViewHeight) + .padding(0) + .sizeReader { s in + self.stepperViewHeight = max(self.stepperViewHeight, s.height) + } } } @@ -314,4 +375,15 @@ extension _SortFilterCFGItemContainer: View { } return nil } + + private func getSafeAreaInsets() -> UIEdgeInsets { + guard let keyWindow = UIApplication.shared.connectedScenes + .first(where: { $0.activationState == .foregroundActive }) + .flatMap({ $0 as? UIWindowScene })?.windows + .first(where: \.isKeyWindow) + else { + return .zero + } + return keyWindow.safeAreaInsets + } } diff --git a/Sources/FioriSwiftUICore/Views/SwitchPickerItem+View.swift b/Sources/FioriSwiftUICore/Views/SwitchPickerItem+View.swift index de0cdd31b..714fc55cf 100644 --- a/Sources/FioriSwiftUICore/Views/SwitchPickerItem+View.swift +++ b/Sources/FioriSwiftUICore/Views/SwitchPickerItem+View.swift @@ -131,5 +131,5 @@ private struct TestSwitchPicker: View { #Preview { TestSwitchPicker() - .frame(width: 375) + .frame(width: 393) } diff --git a/Sources/FioriSwiftUICore/_generated/ViewModels/API/SearchListPickerItem+API.generated.swift b/Sources/FioriSwiftUICore/_generated/ViewModels/API/SearchListPickerItem+API.generated.swift index 525661a56..482b6a608 100644 --- a/Sources/FioriSwiftUICore/_generated/ViewModels/API/SearchListPickerItem+API.generated.swift +++ b/Sources/FioriSwiftUICore/_generated/ViewModels/API/SearchListPickerItem+API.generated.swift @@ -17,6 +17,8 @@ public struct SearchListPickerItem { @State var _searchViewCornerRadius: CGFloat = 18 @State var _searchText: String = "" var allowsEmptySelection: Bool = false + let popoverWidth = 393.0 + public init(model: SearchListPickerItemModel) { self.init(value: Binding<[Int]>(get: { model.value }, set: { model.value = $0 }), valueOptions: model.valueOptions, hint: model.hint, onTap: model.onTap) } diff --git a/Sources/FioriSwiftUICore/_generated/ViewModels/API/SortFilterView+API.generated.swift b/Sources/FioriSwiftUICore/_generated/ViewModels/API/SortFilterView+API.generated.swift index b91dcba92..9c74b2357 100644 --- a/Sources/FioriSwiftUICore/_generated/ViewModels/API/SortFilterView+API.generated.swift +++ b/Sources/FioriSwiftUICore/_generated/ViewModels/API/SortFilterView+API.generated.swift @@ -16,7 +16,9 @@ public struct SortFilterView Void)? + @State var size: CGSize = .zero @StateObject var context: SortFilterContext = SortFilterContext() + let popoverWidth = 393.0 private var isModelInit: Bool = false private var isCancelActionNil: Bool = false