Merge branch 'feature/inputField' into 'develop'
added password field See merge request BPHV_MIPS/vds_ios_sample!63
This commit is contained in:
commit
df0a762f71
@ -692,7 +692,7 @@
|
|||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
CODE_SIGN_STYLE = Manual;
|
CODE_SIGN_STYLE = Manual;
|
||||||
CURRENT_PROJECT_VERSION = 60;
|
CURRENT_PROJECT_VERSION = 61;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = FCMA4QKS77;
|
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = FCMA4QKS77;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
@ -727,7 +727,7 @@
|
|||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
CODE_SIGN_STYLE = Manual;
|
CODE_SIGN_STYLE = Manual;
|
||||||
CURRENT_PROJECT_VERSION = 60;
|
CURRENT_PROJECT_VERSION = 61;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = FCMA4QKS77;
|
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = FCMA4QKS77;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
|
|||||||
@ -75,7 +75,7 @@ class DropdownSelectViewController: BaseViewController<DropdownSelect> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
requiredSwitch.onChange = { [weak self] sender in
|
requiredSwitch.onChange = { [weak self] sender in
|
||||||
self?.component.required = sender.isOn
|
self?.component.isRequired = sender.isOn
|
||||||
}
|
}
|
||||||
|
|
||||||
optionsSwitch.onChange = { [weak self] sender in
|
optionsSwitch.onChange = { [weak self] sender in
|
||||||
@ -84,7 +84,7 @@ class DropdownSelectViewController: BaseViewController<DropdownSelect> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
readonlySwitch.onChange = { [weak self] sender in
|
readonlySwitch.onChange = { [weak self] sender in
|
||||||
self?.component.readOnly = sender.isOn
|
self?.component.isReadOnly = sender.isOn
|
||||||
}
|
}
|
||||||
|
|
||||||
transparentBgSwitch.onChange = { [weak self] sender in
|
transparentBgSwitch.onChange = { [weak self] sender in
|
||||||
@ -158,7 +158,7 @@ class DropdownSelectViewController: BaseViewController<DropdownSelect> {
|
|||||||
|
|
||||||
//setup UI
|
//setup UI
|
||||||
disabledSwitch.isOn = !component.isEnabled
|
disabledSwitch.isOn = !component.isEnabled
|
||||||
requiredSwitch.isOn = component.required
|
requiredSwitch.isOn = component.isRequired
|
||||||
surfacePickerSelectorView.text = component.surface.rawValue
|
surfacePickerSelectorView.text = component.surface.rawValue
|
||||||
labelTextField.text = component.labelText
|
labelTextField.text = component.labelText
|
||||||
helperTextField.text = component.helperText
|
helperTextField.text = component.helperText
|
||||||
|
|||||||
@ -19,6 +19,12 @@ class InputFieldViewController: BaseViewController<InputField> {
|
|||||||
items: InputField.HelperTextPlacement.allCases)
|
items: InputField.HelperTextPlacement.allCases)
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
lazy var inputTypePickerSelectorView = {
|
||||||
|
PickerSelectorView(title: "",
|
||||||
|
picker: self.picker,
|
||||||
|
items: InputField.FieldType.allCases)
|
||||||
|
}()
|
||||||
|
|
||||||
var disabledSwitch = Toggle()
|
var disabledSwitch = Toggle()
|
||||||
var requiredSwitch = Toggle()
|
var requiredSwitch = Toggle()
|
||||||
var labelTextField = TextField()
|
var labelTextField = TextField()
|
||||||
@ -31,6 +37,18 @@ class InputFieldViewController: BaseViewController<InputField> {
|
|||||||
var tooltipTitleTextField = TextField()
|
var tooltipTitleTextField = TextField()
|
||||||
var tooltipContentTextField = TextField()
|
var tooltipContentTextField = TextField()
|
||||||
|
|
||||||
|
//FieldType sections
|
||||||
|
|
||||||
|
//password
|
||||||
|
var hidePasswordButtonTextField = TextField()
|
||||||
|
var showPasswordButtonTextField = TextField()
|
||||||
|
lazy var passwordSection = FormSection().with {
|
||||||
|
$0.title = "Password Settings"
|
||||||
|
$0.addFormRow(label: "Hide Button", view: hidePasswordButtonTextField)
|
||||||
|
$0.addFormRow(label: "Show Button", view: showPasswordButtonTextField)
|
||||||
|
$0.isHidden = true
|
||||||
|
}
|
||||||
|
|
||||||
override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
super.viewDidLoad()
|
super.viewDidLoad()
|
||||||
addContentTopView(view: component)
|
addContentTopView(view: component)
|
||||||
@ -53,9 +71,12 @@ class InputFieldViewController: BaseViewController<InputField> {
|
|||||||
addFormRow(label: "Width", view: widthTextField)
|
addFormRow(label: "Width", view: widthTextField)
|
||||||
addFormRow(label: "ToolTip Title", view: tooltipTitleTextField)
|
addFormRow(label: "ToolTip Title", view: tooltipTitleTextField)
|
||||||
addFormRow(label: "ToolTip Content", view: tooltipContentTextField)
|
addFormRow(label: "ToolTip Content", view: tooltipContentTextField)
|
||||||
|
addFormRow(label: "Field Type", view: inputTypePickerSelectorView)
|
||||||
|
|
||||||
|
append(section: passwordSection)
|
||||||
|
|
||||||
requiredSwitch.onChange = { [weak self] sender in
|
requiredSwitch.onChange = { [weak self] sender in
|
||||||
self?.component.required = sender.isOn
|
self?.component.isRequired = sender.isOn
|
||||||
}
|
}
|
||||||
|
|
||||||
showErrorSwitch.onChange = { [weak self] sender in
|
showErrorSwitch.onChange = { [weak self] sender in
|
||||||
@ -114,12 +135,24 @@ class InputFieldViewController: BaseViewController<InputField> {
|
|||||||
self?.updateTooltip()
|
self?.updateTooltip()
|
||||||
}.store(in: &subscribers)
|
}.store(in: &subscribers)
|
||||||
|
|
||||||
|
//field types
|
||||||
|
//password
|
||||||
|
hidePasswordButtonTextField
|
||||||
|
.textPublisher
|
||||||
|
.sink { [weak self] text in
|
||||||
|
self?.component.hidePasswordButtonText = text
|
||||||
|
}.store(in: &subscribers)
|
||||||
|
|
||||||
|
showPasswordButtonTextField
|
||||||
|
.textPublisher
|
||||||
|
.sink { [weak self] text in
|
||||||
|
self?.component.showPasswordButtonText = text
|
||||||
|
}.store(in: &subscribers)
|
||||||
}
|
}
|
||||||
|
|
||||||
func setupModel() {
|
func setupModel() {
|
||||||
component.fieldType = .text
|
component.fieldType = .text
|
||||||
component.width = 328
|
component.width = 328
|
||||||
component.text = "Starting Text"
|
|
||||||
component.labelText = "Street Address"
|
component.labelText = "Street Address"
|
||||||
component.helperText = "For example: 123 Verizon St"
|
component.helperText = "For example: 123 Verizon St"
|
||||||
component.errorText = "Enter a valid address."
|
component.errorText = "Enter a valid address."
|
||||||
@ -137,8 +170,9 @@ class InputFieldViewController: BaseViewController<InputField> {
|
|||||||
//setup UI
|
//setup UI
|
||||||
surfacePickerSelectorView.text = component.surface.rawValue
|
surfacePickerSelectorView.text = component.surface.rawValue
|
||||||
helperTextPlacementPickerSelectorView.text = component.helperTextPlacement.rawValue
|
helperTextPlacementPickerSelectorView.text = component.helperTextPlacement.rawValue
|
||||||
|
inputTypePickerSelectorView.text = component.fieldType.rawValue
|
||||||
disabledSwitch.isOn = !component.isEnabled
|
disabledSwitch.isOn = !component.isEnabled
|
||||||
requiredSwitch.isOn = component.required
|
requiredSwitch.isOn = component.isRequired
|
||||||
labelTextField.text = component.labelText
|
labelTextField.text = component.labelText
|
||||||
helperTextField.text = component.helperText
|
helperTextField.text = component.helperText
|
||||||
showErrorSwitch.isOn = component.showError
|
showErrorSwitch.isOn = component.showError
|
||||||
@ -162,6 +196,11 @@ class InputFieldViewController: BaseViewController<InputField> {
|
|||||||
helperTextPlacementPickerSelectorView.onPickerDidSelect = { [weak self] item in
|
helperTextPlacementPickerSelectorView.onPickerDidSelect = { [weak self] item in
|
||||||
self?.component.helperTextPlacement = item
|
self?.component.helperTextPlacement = item
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inputTypePickerSelectorView.onPickerDidSelect = { [weak self] item in
|
||||||
|
self?.component.fieldType = item
|
||||||
|
self?.updateFormSections()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateTooltip() {
|
func updateTooltip() {
|
||||||
@ -171,6 +210,39 @@ class InputFieldViewController: BaseViewController<InputField> {
|
|||||||
component.tooltipModel = !title.isEmpty || !content.isEmpty ? .init(title: title,
|
component.tooltipModel = !title.isEmpty || !content.isEmpty ? .init(title: title,
|
||||||
content: content) : nil
|
content: content) : nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func updateFormSections() {
|
||||||
|
passwordSection.isHidden = true
|
||||||
|
|
||||||
|
switch component.fieldType {
|
||||||
|
case .text:
|
||||||
|
break
|
||||||
|
|
||||||
|
case .number:
|
||||||
|
break
|
||||||
|
|
||||||
|
case .inlineAction:
|
||||||
|
break
|
||||||
|
|
||||||
|
case .password:
|
||||||
|
passwordSection.isHidden = false
|
||||||
|
|
||||||
|
case .creditCard:
|
||||||
|
break
|
||||||
|
|
||||||
|
case .tel:
|
||||||
|
break
|
||||||
|
|
||||||
|
case .date:
|
||||||
|
break
|
||||||
|
|
||||||
|
case .securityCode:
|
||||||
|
break
|
||||||
|
|
||||||
|
@unknown default:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -172,30 +172,8 @@ public class TableViewTestController: UIViewController, Initable, Surfaceable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var items: [MenuComponent] {
|
var items: [MenuComponent] {
|
||||||
all
|
|
||||||
}
|
|
||||||
|
|
||||||
var all: [MenuComponent] {
|
|
||||||
MenuViewController.items
|
MenuViewController.items
|
||||||
}
|
}
|
||||||
|
|
||||||
var batch1: [MenuComponent] {
|
|
||||||
[
|
|
||||||
MenuComponent(title: "Badge", completed: true, viewController: BadgeViewController.self),
|
|
||||||
MenuComponent(title: "Button", completed: true, viewController: ButtonViewController.self),
|
|
||||||
MenuComponent(title: "ButtonGroup", completed: true, viewController: ButtonGroupViewController.self),
|
|
||||||
MenuComponent(title: "Icon", completed: true, viewController: IconViewController.self),
|
|
||||||
MenuComponent(title: "Label", completed: true, viewController: LabelViewController.self),
|
|
||||||
MenuComponent(title: "Line", completed: true, viewController: LineViewController.self),
|
|
||||||
MenuComponent(title: "Loader", completed: true, viewController: LoaderViewController.self),
|
|
||||||
MenuComponent(title: "Tabs", completed: true, viewController: TabsViewController.self),
|
|
||||||
MenuComponent(title: "TextLink", completed: true, viewController: TextLinkViewController.self),
|
|
||||||
MenuComponent(title: "TextLinkCaret", completed: true, viewController: TextLinkCaretViewController.self),
|
|
||||||
MenuComponent(title: "TitleLockup", completed: true, viewController: TitleLockupViewController.self),
|
|
||||||
MenuComponent(title: "Tooltip", completed: true, viewController: TooltipViewController.self),
|
|
||||||
MenuComponent(title: "TrailingTooltip", completed: true, viewController: TrailingTooltipLabelViewController.self),
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extension TableViewTestController : UITableViewDelegate, UITableViewDataSource {
|
extension TableViewTestController : UITableViewDelegate, UITableViewDataSource {
|
||||||
|
|||||||
@ -55,7 +55,7 @@ class TextAreaViewController: BaseViewController<TextArea> {
|
|||||||
addFormRow(label: "Min Height", view: heightPickerSelectorView)
|
addFormRow(label: "Min Height", view: heightPickerSelectorView)
|
||||||
|
|
||||||
requiredSwitch.onChange = { [weak self] sender in
|
requiredSwitch.onChange = { [weak self] sender in
|
||||||
self?.component.required = sender.isOn
|
self?.component.isRequired = sender.isOn
|
||||||
}
|
}
|
||||||
|
|
||||||
showErrorSwitch.onChange = { [weak self] sender in
|
showErrorSwitch.onChange = { [weak self] sender in
|
||||||
@ -71,7 +71,7 @@ class TextAreaViewController: BaseViewController<TextArea> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
readOnlySwitch.onChange = { [weak self] sender in
|
readOnlySwitch.onChange = { [weak self] sender in
|
||||||
self?.component.readOnly = sender.isOn
|
self?.component.isReadOnly = sender.isOn
|
||||||
}
|
}
|
||||||
|
|
||||||
labelTextField
|
labelTextField
|
||||||
@ -143,7 +143,7 @@ class TextAreaViewController: BaseViewController<TextArea> {
|
|||||||
//setup UI
|
//setup UI
|
||||||
surfacePickerSelectorView.text = component.surface.rawValue
|
surfacePickerSelectorView.text = component.surface.rawValue
|
||||||
disabledSwitch.isOn = !component.isEnabled
|
disabledSwitch.isOn = !component.isEnabled
|
||||||
requiredSwitch.isOn = component.required
|
requiredSwitch.isOn = component.isRequired
|
||||||
labelTextField.text = component.labelText
|
labelTextField.text = component.labelText
|
||||||
helperTextField.text = component.helperText
|
helperTextField.text = component.helperText
|
||||||
showErrorSwitch.isOn = component.showError
|
showErrorSwitch.isOn = component.showError
|
||||||
|
|||||||
@ -50,6 +50,7 @@ class TileContainerViewController: BaseViewController<TileContainer> {
|
|||||||
var gradientColorsFormStackView = FormSection().with { $0.isHidden = true }
|
var gradientColorsFormStackView = FormSection().with { $0.isHidden = true }
|
||||||
var backgroundColor: BackgroundColor = .secondary
|
var backgroundColor: BackgroundColor = .secondary
|
||||||
var padding: Padding = .padding4X
|
var padding: Padding = .padding4X
|
||||||
|
var isLinkSwitch = Toggle()
|
||||||
var clickableSwitch = Toggle()
|
var clickableSwitch = Toggle()
|
||||||
var showBackgroundImageSwitch = Toggle()
|
var showBackgroundImageSwitch = Toggle()
|
||||||
var showBorderSwitch = Toggle()
|
var showBorderSwitch = Toggle()
|
||||||
@ -115,6 +116,7 @@ class TileContainerViewController: BaseViewController<TileContainer> {
|
|||||||
$0.text = "For testing max width is limited to 85% of view's width & 65% view's height."
|
$0.text = "For testing max width is limited to 85% of view's width & 65% view's height."
|
||||||
})
|
})
|
||||||
addFormRow(label: "Surface", view: surfacePickerSelectorView)
|
addFormRow(label: "Surface", view: surfacePickerSelectorView)
|
||||||
|
addFormRow(label: "Is Link", view: isLinkSwitch)
|
||||||
addFormRow(label: "Clickable", view: clickableSwitch)
|
addFormRow(label: "Clickable", view: clickableSwitch)
|
||||||
addFormRow(label: "Width", view: widthTextField)
|
addFormRow(label: "Width", view: widthTextField)
|
||||||
addFormRow(label: "Height", view: heightTextField)
|
addFormRow(label: "Height", view: heightTextField)
|
||||||
@ -143,6 +145,11 @@ class TileContainerViewController: BaseViewController<TileContainer> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isLinkSwitch.onChange = { [weak self] sender in
|
||||||
|
guard let self else { return }
|
||||||
|
self.component.accessibilityTraits = sender.isOn ? .link : .button
|
||||||
|
}
|
||||||
|
|
||||||
clickableSwitch.onChange = { [weak self] sender in
|
clickableSwitch.onChange = { [weak self] sender in
|
||||||
guard let self else { return }
|
guard let self else { return }
|
||||||
if sender.isOn {
|
if sender.isOn {
|
||||||
@ -254,7 +261,7 @@ class TileContainerViewController: BaseViewController<TileContainer> {
|
|||||||
contentAreaBackgroundColorButton.onClick = { [weak self] _ in
|
contentAreaBackgroundColorButton.onClick = { [weak self] _ in
|
||||||
guard let self else { return }
|
guard let self else { return }
|
||||||
self.colorPickerType = .contentViewBackgroundColor
|
self.colorPickerType = .contentViewBackgroundColor
|
||||||
self.colorPicker.selectedColor = self.component.containerView.backgroundColor ?? .white
|
self.colorPicker.selectedColor = self.component.contentView.backgroundColor ?? .white
|
||||||
self.present(self.colorPicker, animated: true)
|
self.present(self.colorPicker, animated: true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -288,7 +295,7 @@ extension TileContainerViewController: UIColorPickerViewControllerDelegate {
|
|||||||
guard let hexString = viewController.selectedColor.hexString else { return }
|
guard let hexString = viewController.selectedColor.hexString else { return }
|
||||||
switch colorPickerType {
|
switch colorPickerType {
|
||||||
case .contentViewBackgroundColor:
|
case .contentViewBackgroundColor:
|
||||||
component.containerView.backgroundColor = UIColor(hexString: hexString)
|
component.contentView.backgroundColor = UIColor(hexString: hexString)
|
||||||
case .backgroundColor:
|
case .backgroundColor:
|
||||||
component.color = .custom(hexString)
|
component.color = .custom(hexString)
|
||||||
case .gradientColor1:
|
case .gradientColor1:
|
||||||
|
|||||||
@ -125,6 +125,7 @@ class TileletViewController: BaseViewController<Tilelet> {
|
|||||||
var showDropShadowSwitch = Toggle()
|
var showDropShadowSwitch = Toggle()
|
||||||
var backgroundColor: BackgroundColor = .black
|
var backgroundColor: BackgroundColor = .black
|
||||||
var maxWidthTextField = NumericField()
|
var maxWidthTextField = NumericField()
|
||||||
|
var isLinkSwitch = Toggle()
|
||||||
|
|
||||||
var gradientColorsFormStackView = FormSection().with { $0.isHidden = true }
|
var gradientColorsFormStackView = FormSection().with { $0.isHidden = true }
|
||||||
|
|
||||||
@ -139,6 +140,7 @@ class TileletViewController: BaseViewController<Tilelet> {
|
|||||||
super.setupForm()
|
super.setupForm()
|
||||||
addFormRow(label: "Surface", view: surfacePickerSelectorView)
|
addFormRow(label: "Surface", view: surfacePickerSelectorView)
|
||||||
addActionRow()
|
addActionRow()
|
||||||
|
addFormRow(label: "Is Link", view: isLinkSwitch)
|
||||||
addFormRow(label: "Clickable", view: clickableSwitch)
|
addFormRow(label: "Clickable", view: clickableSwitch)
|
||||||
|
|
||||||
addFormRow(label: "Aspect Ratio", view: scalingTypePickerSelectorView)
|
addFormRow(label: "Aspect Ratio", view: scalingTypePickerSelectorView)
|
||||||
@ -187,6 +189,11 @@ class TileletViewController: BaseViewController<Tilelet> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isLinkSwitch.onChange = { [weak self] sender in
|
||||||
|
guard let self else { return }
|
||||||
|
self.component.accessibilityTraits = sender.isOn ? .link : .button
|
||||||
|
}
|
||||||
|
|
||||||
heightTextField
|
heightTextField
|
||||||
.numberPublisher
|
.numberPublisher
|
||||||
.sink { [weak self] number in
|
.sink { [weak self] number in
|
||||||
@ -497,7 +504,7 @@ extension TileletViewController: UIColorPickerViewControllerDelegate {
|
|||||||
guard let hexString = viewController.selectedColor.hexString else { return }
|
guard let hexString = viewController.selectedColor.hexString else { return }
|
||||||
switch colorPickerType {
|
switch colorPickerType {
|
||||||
case .contentViewBackgroundColor:
|
case .contentViewBackgroundColor:
|
||||||
component.containerView.backgroundColor = UIColor(hexString: hexString)
|
component.contentView.backgroundColor = UIColor(hexString: hexString)
|
||||||
case .backgroundColor:
|
case .backgroundColor:
|
||||||
component.color = .custom(hexString)
|
component.color = .custom(hexString)
|
||||||
case .gradientColor1:
|
case .gradientColor1:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user