Merge branch 'feature/inputField' into 'develop'

added password field

See merge request BPHV_MIPS/vds_ios_sample!63
This commit is contained in:
Bruce, Matt R 2024-05-03 15:06:05 +00:00
commit df0a762f71
7 changed files with 101 additions and 37 deletions

View File

@ -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;

View File

@ -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

View File

@ -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
}
}
} }

View File

@ -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 {

View File

@ -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

View File

@ -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:

View File

@ -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: