Merge branch 'vasavk/footnote' into 'develop'
VDS Brand 3.0 Footnote for IOS See merge request BPHV_MIPS/vds_ios_sample!72
This commit is contained in:
commit
203f6e6113
@ -35,8 +35,10 @@
|
|||||||
180636CB2C29B12B00C92D86 /* InputStepperViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 180636CA2C29B12B00C92D86 /* InputStepperViewController.swift */; };
|
180636CB2C29B12B00C92D86 /* InputStepperViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 180636CA2C29B12B00C92D86 /* InputStepperViewController.swift */; };
|
||||||
1808BEBE2BA4479500129230 /* CarouselScrollbarViewConttroller.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1808BEBD2BA4479500129230 /* CarouselScrollbarViewConttroller.swift */; };
|
1808BEBE2BA4479500129230 /* CarouselScrollbarViewConttroller.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1808BEBD2BA4479500129230 /* CarouselScrollbarViewConttroller.swift */; };
|
||||||
1832AC5B2BA1347B008AE476 /* BreadcrumbsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1832AC5A2BA1347B008AE476 /* BreadcrumbsViewController.swift */; };
|
1832AC5B2BA1347B008AE476 /* BreadcrumbsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1832AC5A2BA1347B008AE476 /* BreadcrumbsViewController.swift */; };
|
||||||
|
183B16F52C80B27C00BA6A10 /* FootnoteGroupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 183B16F42C80B27C00BA6A10 /* FootnoteGroupViewController.swift */; };
|
||||||
184023492C61E9E700A412C8 /* PriceLockupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 184023482C61E9E700A412C8 /* PriceLockupViewController.swift */; };
|
184023492C61E9E700A412C8 /* PriceLockupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 184023482C61E9E700A412C8 /* PriceLockupViewController.swift */; };
|
||||||
186D13CD2BBA990800986B53 /* DropdownSelectViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 186D13CC2BBA990800986B53 /* DropdownSelectViewController.swift */; };
|
186D13CD2BBA990800986B53 /* DropdownSelectViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 186D13CC2BBA990800986B53 /* DropdownSelectViewController.swift */; };
|
||||||
|
18926F5F2C76185A00C55BF6 /* FootnoteItemViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18926F5E2C76185A00C55BF6 /* FootnoteItemViewController.swift */; };
|
||||||
18A3F1302BD9332500498E4A /* CalendarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18A3F12F2BD9332500498E4A /* CalendarViewController.swift */; };
|
18A3F1302BD9332500498E4A /* CalendarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18A3F12F2BD9332500498E4A /* CalendarViewController.swift */; };
|
||||||
18AE87522C06FDD60075F181 /* CarouselViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18AE87512C06FDD60075F181 /* CarouselViewController.swift */; };
|
18AE87522C06FDD60075F181 /* CarouselViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18AE87512C06FDD60075F181 /* CarouselViewController.swift */; };
|
||||||
440B84CC2BD8E98B004A732A /* TableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 440B84CB2BD8E98B004A732A /* TableViewController.swift */; };
|
440B84CC2BD8E98B004A732A /* TableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 440B84CB2BD8E98B004A732A /* TableViewController.swift */; };
|
||||||
@ -135,8 +137,10 @@
|
|||||||
180636CA2C29B12B00C92D86 /* InputStepperViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InputStepperViewController.swift; sourceTree = "<group>"; };
|
180636CA2C29B12B00C92D86 /* InputStepperViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InputStepperViewController.swift; sourceTree = "<group>"; };
|
||||||
1808BEBD2BA4479500129230 /* CarouselScrollbarViewConttroller.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CarouselScrollbarViewConttroller.swift; sourceTree = "<group>"; };
|
1808BEBD2BA4479500129230 /* CarouselScrollbarViewConttroller.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CarouselScrollbarViewConttroller.swift; sourceTree = "<group>"; };
|
||||||
1832AC5A2BA1347B008AE476 /* BreadcrumbsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BreadcrumbsViewController.swift; sourceTree = "<group>"; };
|
1832AC5A2BA1347B008AE476 /* BreadcrumbsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BreadcrumbsViewController.swift; sourceTree = "<group>"; };
|
||||||
|
183B16F42C80B27C00BA6A10 /* FootnoteGroupViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FootnoteGroupViewController.swift; sourceTree = "<group>"; };
|
||||||
184023482C61E9E700A412C8 /* PriceLockupViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PriceLockupViewController.swift; sourceTree = "<group>"; };
|
184023482C61E9E700A412C8 /* PriceLockupViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PriceLockupViewController.swift; sourceTree = "<group>"; };
|
||||||
186D13CC2BBA990800986B53 /* DropdownSelectViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DropdownSelectViewController.swift; sourceTree = "<group>"; };
|
186D13CC2BBA990800986B53 /* DropdownSelectViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DropdownSelectViewController.swift; sourceTree = "<group>"; };
|
||||||
|
18926F5E2C76185A00C55BF6 /* FootnoteItemViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FootnoteItemViewController.swift; sourceTree = "<group>"; };
|
||||||
18A3F12F2BD9332500498E4A /* CalendarViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalendarViewController.swift; sourceTree = "<group>"; };
|
18A3F12F2BD9332500498E4A /* CalendarViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalendarViewController.swift; sourceTree = "<group>"; };
|
||||||
18AE87512C06FDD60075F181 /* CarouselViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CarouselViewController.swift; sourceTree = "<group>"; };
|
18AE87512C06FDD60075F181 /* CarouselViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CarouselViewController.swift; sourceTree = "<group>"; };
|
||||||
440B84CB2BD8E98B004A732A /* TableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TableViewController.swift; sourceTree = "<group>"; };
|
440B84CB2BD8E98B004A732A /* TableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TableViewController.swift; sourceTree = "<group>"; };
|
||||||
@ -341,6 +345,8 @@
|
|||||||
EA0D1C2E2A66CFE900E5C127 /* CheckboxViewController.swift */,
|
EA0D1C2E2A66CFE900E5C127 /* CheckboxViewController.swift */,
|
||||||
EA1758452BC8893700A5C0D9 /* DatePickerViewController.swift */,
|
EA1758452BC8893700A5C0D9 /* DatePickerViewController.swift */,
|
||||||
186D13CC2BBA990800986B53 /* DropdownSelectViewController.swift */,
|
186D13CC2BBA990800986B53 /* DropdownSelectViewController.swift */,
|
||||||
|
18926F5E2C76185A00C55BF6 /* FootnoteItemViewController.swift */,
|
||||||
|
183B16F42C80B27C00BA6A10 /* FootnoteGroupViewController.swift */,
|
||||||
EA985C00296CC21C00F2FF2E /* IconViewController.swift */,
|
EA985C00296CC21C00F2FF2E /* IconViewController.swift */,
|
||||||
180636CA2C29B12B00C92D86 /* InputStepperViewController.swift */,
|
180636CA2C29B12B00C92D86 /* InputStepperViewController.swift */,
|
||||||
EAA5EEAC28EB6924003B3210 /* InputFieldViewController.swift */,
|
EAA5EEAC28EB6924003B3210 /* InputFieldViewController.swift */,
|
||||||
@ -559,6 +565,7 @@
|
|||||||
18AE87522C06FDD60075F181 /* CarouselViewController.swift in Sources */,
|
18AE87522C06FDD60075F181 /* CarouselViewController.swift in Sources */,
|
||||||
EA596ABA2A16B2ED00300C4B /* TabsViewController.swift in Sources */,
|
EA596ABA2A16B2ED00300C4B /* TabsViewController.swift in Sources */,
|
||||||
EA89204E28B67332006B9984 /* CheckBoxGroupViewController.swift in Sources */,
|
EA89204E28B67332006B9984 /* CheckBoxGroupViewController.swift in Sources */,
|
||||||
|
183B16F52C80B27C00BA6A10 /* FootnoteGroupViewController.swift in Sources */,
|
||||||
EAA5EEAD28EB6924003B3210 /* InputFieldViewController.swift in Sources */,
|
EAA5EEAD28EB6924003B3210 /* InputFieldViewController.swift in Sources */,
|
||||||
440B84CC2BD8E98B004A732A /* TableViewController.swift in Sources */,
|
440B84CC2BD8E98B004A732A /* TableViewController.swift in Sources */,
|
||||||
EA985C25296E06EA00F2FF2E /* TextAreaViewController.swift in Sources */,
|
EA985C25296E06EA00F2FF2E /* TextAreaViewController.swift in Sources */,
|
||||||
@ -567,6 +574,7 @@
|
|||||||
EA985C20296DECF600F2FF2E /* IconName.swift in Sources */,
|
EA985C20296DECF600F2FF2E /* IconName.swift in Sources */,
|
||||||
EA89204928B66CE2006B9984 /* KeyboardFrameChangeListening.swift in Sources */,
|
EA89204928B66CE2006B9984 /* KeyboardFrameChangeListening.swift in Sources */,
|
||||||
EA5F86CE2A1E863F00BC83E4 /* TabsContainerViewController.swift in Sources */,
|
EA5F86CE2A1E863F00BC83E4 /* TabsContainerViewController.swift in Sources */,
|
||||||
|
18926F5F2C76185A00C55BF6 /* FootnoteItemViewController.swift in Sources */,
|
||||||
EA985C01296CC21C00F2FF2E /* IconViewController.swift in Sources */,
|
EA985C01296CC21C00F2FF2E /* IconViewController.swift in Sources */,
|
||||||
184023492C61E9E700A412C8 /* PriceLockupViewController.swift in Sources */,
|
184023492C61E9E700A412C8 /* PriceLockupViewController.swift in Sources */,
|
||||||
EAC9258029119FC400091998 /* TextLinkViewController.swift in Sources */,
|
EAC9258029119FC400091998 /* TextLinkViewController.swift in Sources */,
|
||||||
|
|||||||
69
VDSSample/ViewControllers/FootnoteGroupViewController.swift
Normal file
69
VDSSample/ViewControllers/FootnoteGroupViewController.swift
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
//
|
||||||
|
// FootnoteGroupViewController.swift
|
||||||
|
// VDSSample
|
||||||
|
//
|
||||||
|
// Created by Kanamarlapudi, Vasavi on 29/08/24.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
import UIKit
|
||||||
|
import VDS
|
||||||
|
|
||||||
|
class FootnoteGroupViewController: BaseViewController<FootnoteGroup> {
|
||||||
|
|
||||||
|
var widthTextField = NumericField()
|
||||||
|
var percentageTextField = NumericField()
|
||||||
|
var footnotes: [FootnoteItem] = []
|
||||||
|
|
||||||
|
override func viewDidLoad() {
|
||||||
|
super.viewDidLoad()
|
||||||
|
addContentTopView(view: component)
|
||||||
|
setupPicker()
|
||||||
|
setupModel()
|
||||||
|
}
|
||||||
|
|
||||||
|
override func setupForm() {
|
||||||
|
super.setupForm()
|
||||||
|
addFormRow(label: "Surface", view: surfacePickerSelectorView)
|
||||||
|
addFormRow(label: "Width", view: widthTextField)
|
||||||
|
addFormRow(label: "Percentage (1-100)", view: percentageTextField)
|
||||||
|
|
||||||
|
widthTextField
|
||||||
|
.numberPublisher
|
||||||
|
.sink { [weak self] number in
|
||||||
|
if let number {
|
||||||
|
self?.component.width = .value(number.cgFloatValue)
|
||||||
|
self?.percentageTextField.text = ""
|
||||||
|
} else {
|
||||||
|
self?.component.width = nil
|
||||||
|
}
|
||||||
|
}.store(in: &subscribers)
|
||||||
|
|
||||||
|
percentageTextField
|
||||||
|
.numberPublisher
|
||||||
|
.sink { [weak self] number in
|
||||||
|
if let number, number.intValue > 9 {
|
||||||
|
self?.component.width = .percentage(number.cgFloatValue)
|
||||||
|
self?.widthTextField.text = ""
|
||||||
|
} else {
|
||||||
|
self?.component.width = nil
|
||||||
|
}
|
||||||
|
}.store(in: &subscribers)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupModel() {
|
||||||
|
let toolTipModel = Tooltip.TooltipModel.init(title: "Check your item.", content:"Here is the content for your item.")
|
||||||
|
footnotes.append(.init().with { $0.text = "Offer you best deals on phones, tablets, home, internet and more. Pre order the new version mobiles and get off *T&C apply."; $0.symbolType = "*"; $0.kind = .primary; $0.tooltipModel = toolTipModel})
|
||||||
|
footnotes.append(.init().with { $0.text = "The display has rounded corners. When measured as a standard rectangular shape, the screen is 6.68 inches diagonally. Actual viewable area is less."; $0.symbolType = "**"; $0.kind = .primary})
|
||||||
|
footnotes.append(.init().with { $0.text = "Some features may not be available for all countries or all areas."; $0.symbolType = "1."; $0.kind = .primary})
|
||||||
|
component.footnoteItems = footnotes
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupPicker() {
|
||||||
|
surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in
|
||||||
|
self?.component.surface = item
|
||||||
|
self?.contentTopView.backgroundColor = item.color
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
166
VDSSample/ViewControllers/FootnoteItemViewController.swift
Normal file
166
VDSSample/ViewControllers/FootnoteItemViewController.swift
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
//
|
||||||
|
// FootnoteViewController.swift
|
||||||
|
// VDSSample
|
||||||
|
//
|
||||||
|
// Created by Kanamarlapudi, Vasavi on 21/08/24.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
import UIKit
|
||||||
|
import VDS
|
||||||
|
|
||||||
|
class FootnoteItemViewController: BaseViewController<FootnoteItem> {
|
||||||
|
|
||||||
|
internal enum SymbolType: String, DefaultValuing, CaseIterable {
|
||||||
|
case asterisk
|
||||||
|
case doubleAsterisk
|
||||||
|
case character
|
||||||
|
case none
|
||||||
|
|
||||||
|
public static var defaultValue: Self { .asterisk }
|
||||||
|
|
||||||
|
/// TextStyle relative to Size.
|
||||||
|
public var text: String {
|
||||||
|
switch self {
|
||||||
|
case .asterisk:
|
||||||
|
return "*"
|
||||||
|
case .doubleAsterisk:
|
||||||
|
return "**"
|
||||||
|
case .character:
|
||||||
|
return "1."
|
||||||
|
case .none:
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lazy var kindPickerSelectorView = {
|
||||||
|
PickerSelectorView(title: "secondary",
|
||||||
|
picker: self.picker,
|
||||||
|
items: FootnoteItem.Kind.allCases)
|
||||||
|
}()
|
||||||
|
|
||||||
|
lazy var symbolTypePickerSelectorView = {
|
||||||
|
PickerSelectorView(title: "asterisk",
|
||||||
|
picker: self.picker,
|
||||||
|
items: SymbolType.allCases)
|
||||||
|
}()
|
||||||
|
|
||||||
|
lazy var sizePickerSelectorView = {
|
||||||
|
PickerSelectorView(title: "micro",
|
||||||
|
picker: self.picker,
|
||||||
|
items: FootnoteItem.Size.allCases)
|
||||||
|
}()
|
||||||
|
|
||||||
|
var hideSymbolSwitch = Toggle()
|
||||||
|
var footnoteTextField = TextField()
|
||||||
|
var widthTextField = NumericField()
|
||||||
|
var percentageTextField = NumericField()
|
||||||
|
var tooltipTitleTextField = TextField()
|
||||||
|
var tooltipContentTextField = TextField()
|
||||||
|
|
||||||
|
override func viewDidLoad() {
|
||||||
|
super.viewDidLoad()
|
||||||
|
addContentTopView(view: component)
|
||||||
|
setupPicker()
|
||||||
|
setupModel()
|
||||||
|
}
|
||||||
|
|
||||||
|
override func setupForm() {
|
||||||
|
super.setupForm()
|
||||||
|
addFormRow(label: "Surface", view: surfacePickerSelectorView)
|
||||||
|
addFormRow(label: "Kind", view: kindPickerSelectorView)
|
||||||
|
addFormRow(label: "Size", view: sizePickerSelectorView)
|
||||||
|
addFormRow(label: "Symbol Type", view: symbolTypePickerSelectorView)
|
||||||
|
addFormRow(label: "Hide Symbol", view: hideSymbolSwitch)
|
||||||
|
addFormRow(label: "Text", view: footnoteTextField)
|
||||||
|
addFormRow(label: "Width", view: widthTextField)
|
||||||
|
addFormRow(label: "Percentage (1-100)", view: percentageTextField)
|
||||||
|
addFormRow(label: "ToolTip Title", view: tooltipTitleTextField)
|
||||||
|
addFormRow(label: "ToolTip Content", view: tooltipContentTextField)
|
||||||
|
|
||||||
|
hideSymbolSwitch.publisher(for: .valueChanged).sink { [weak self] control in
|
||||||
|
self?.component.hideSymbol = control.isOn
|
||||||
|
}.store(in: &subscribers)
|
||||||
|
|
||||||
|
footnoteTextField
|
||||||
|
.textPublisher
|
||||||
|
.sink { [weak self] text in
|
||||||
|
self?.component.text = text
|
||||||
|
}.store(in: &subscribers)
|
||||||
|
|
||||||
|
widthTextField
|
||||||
|
.numberPublisher
|
||||||
|
.sink { [weak self] number in
|
||||||
|
if let number {
|
||||||
|
self?.component.width = .value(number.cgFloatValue)
|
||||||
|
self?.percentageTextField.text = ""
|
||||||
|
} else {
|
||||||
|
self?.component.width = nil
|
||||||
|
}
|
||||||
|
}.store(in: &subscribers)
|
||||||
|
|
||||||
|
percentageTextField
|
||||||
|
.numberPublisher
|
||||||
|
.sink { [weak self] number in
|
||||||
|
if let number, number.intValue > 9 {
|
||||||
|
self?.component.width = .percentage(number.cgFloatValue)
|
||||||
|
self?.widthTextField.text = ""
|
||||||
|
} else {
|
||||||
|
self?.component.width = nil
|
||||||
|
}
|
||||||
|
}.store(in: &subscribers)
|
||||||
|
|
||||||
|
tooltipTitleTextField
|
||||||
|
.textPublisher
|
||||||
|
.sink { [weak self] text in
|
||||||
|
self?.updateTooltip()
|
||||||
|
}.store(in: &subscribers)
|
||||||
|
|
||||||
|
tooltipContentTextField
|
||||||
|
.textPublisher
|
||||||
|
.sink { [weak self] text in
|
||||||
|
self?.updateTooltip()
|
||||||
|
}.store(in: &subscribers)
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupModel() {
|
||||||
|
component.text = "Service is included for free for two years with activation of any iPhone15 model. Connection and response times vary based on location, site conditions, and other factors. See support.apple.com/en-us/HT213885 for more information."
|
||||||
|
component.tooltipModel = nil
|
||||||
|
|
||||||
|
footnoteTextField.text = component.text
|
||||||
|
sizePickerSelectorView.text = component.size.rawValue
|
||||||
|
kindPickerSelectorView.text = component.kind.rawValue
|
||||||
|
symbolTypePickerSelectorView.text = SymbolType.defaultValue.text
|
||||||
|
tooltipTitleTextField.text = component.tooltipModel?.title
|
||||||
|
tooltipContentTextField.text = component.tooltipModel?.content
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupPicker() {
|
||||||
|
surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in
|
||||||
|
self?.component.surface = item
|
||||||
|
self?.contentTopView.backgroundColor = item.color
|
||||||
|
}
|
||||||
|
|
||||||
|
kindPickerSelectorView.onPickerDidSelect = { [weak self] item in
|
||||||
|
self?.component.kind = item
|
||||||
|
}
|
||||||
|
|
||||||
|
sizePickerSelectorView.onPickerDidSelect = { [weak self] item in
|
||||||
|
self?.component.size = item
|
||||||
|
}
|
||||||
|
|
||||||
|
symbolTypePickerSelectorView.onPickerDidSelect = { [weak self] item in
|
||||||
|
self?.component.symbolType = item.text
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func updateTooltip() {
|
||||||
|
let title = tooltipTitleTextField.text ?? ""
|
||||||
|
let content = tooltipContentTextField.text ?? ""
|
||||||
|
|
||||||
|
component.tooltipModel = !title.isEmpty || !content.isEmpty ? .init(title: title,
|
||||||
|
content: content) : nil
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -82,6 +82,8 @@ class MenuViewController: UITableViewController, TooltipLaunchable {
|
|||||||
MenuComponent(title: "CheckboxGroup", completed: true, viewController: CheckboxGroupViewController.self),
|
MenuComponent(title: "CheckboxGroup", completed: true, viewController: CheckboxGroupViewController.self),
|
||||||
MenuComponent(title: "DatePicker", completed: true, viewController: DatePickerViewController.self),
|
MenuComponent(title: "DatePicker", completed: true, viewController: DatePickerViewController.self),
|
||||||
MenuComponent(title: "DropdownSelect", completed: true, viewController: DropdownSelectViewController.self),
|
MenuComponent(title: "DropdownSelect", completed: true, viewController: DropdownSelectViewController.self),
|
||||||
|
MenuComponent(title: "FootnoteItem", completed: false, viewController: FootnoteItemViewController.self),
|
||||||
|
MenuComponent(title: "FootnoteGroup", completed: false, viewController: FootnoteGroupViewController.self),
|
||||||
MenuComponent(title: "Icon", completed: true, viewController: IconViewController.self),
|
MenuComponent(title: "Icon", completed: true, viewController: IconViewController.self),
|
||||||
MenuComponent(title: "InputField", completed: true, viewController: InputFieldViewController.self),
|
MenuComponent(title: "InputField", completed: true, viewController: InputFieldViewController.self),
|
||||||
MenuComponent(title: "InputStepper", completed: true, viewController: InputStepperViewController.self),
|
MenuComponent(title: "InputStepper", completed: true, viewController: InputStepperViewController.self),
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user