added @objcMembers to all classes

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2024-07-25 10:53:26 -05:00
parent 781df9ff1a
commit 6bf3e19ebe
47 changed files with 96 additions and 1 deletions

View File

@ -15,6 +15,7 @@ import Combine
/// If you are using AutoLayoutConstraints you have a combination of Leading/Left and Trailing/Right NSLayoutConstraints, /// If you are using AutoLayoutConstraints you have a combination of Leading/Left and Trailing/Right NSLayoutConstraints,
/// you need to ensure that one of these Horizontal Contraints is not constraint of "equatTo". If you are to pin the left/right edges /// you need to ensure that one of these Horizontal Contraints is not constraint of "equatTo". If you are to pin the left/right edges
/// to its parent this object will stretch to the parent's width. /// to its parent this object will stretch to the parent's width.
@objcMembers
@objc(VDSBadge) @objc(VDSBadge)
open class Badge: View { open class Badge: View {

View File

@ -11,6 +11,7 @@ import VDSCoreTokens
import Combine import Combine
/// A badge indicator is a visual label used to convey status or highlight supplemental information. /// A badge indicator is a visual label used to convey status or highlight supplemental information.
@objcMembers
@objc(VDSBadgeIndicator) @objc(VDSBadgeIndicator)
open class BadgeIndicator: View { open class BadgeIndicator: View {

View File

@ -13,6 +13,7 @@ import Combine
/// A Breadcrumb Item contains href(link) and selected flag. /// A Breadcrumb Item contains href(link) and selected flag.
/// Breadcrumb links to its respective page if it is not disabled. /// Breadcrumb links to its respective page if it is not disabled.
/// Breadcrumb contains text with a separator by default, highlights text in bold without a separator if selected. /// Breadcrumb contains text with a separator by default, highlights text in bold without a separator if selected.
@objcMembers
@objc (VDSBreadcrumbItem) @objc (VDSBreadcrumbItem)
open class BreadcrumbItem: ButtonBase { open class BreadcrumbItem: ButtonBase {

View File

@ -13,6 +13,7 @@ import Combine
/// A Breadcrumbs contains BreadcrumbItems. /// A Breadcrumbs contains BreadcrumbItems.
/// It contains Breadcrumb Item Default, Breadcrumb Item Selected, Separator. /// It contains Breadcrumb Item Default, Breadcrumb Item Selected, Separator.
/// Breadcrumbs are secondary navigation that use a hierarchy of internal links to tell customers where they are in an experience. Each breadcrumb links to its respective page, except for that of current page. /// Breadcrumbs are secondary navigation that use a hierarchy of internal links to tell customers where they are in an experience. Each breadcrumb links to its respective page, except for that of current page.
@objcMembers
@objc(VDSBreadcrumbs) @objc(VDSBreadcrumbs)
open class Breadcrumbs: View { open class Breadcrumbs: View {

View File

@ -15,6 +15,7 @@ import Combine
/// If you are using AutoLayoutConstraints you have a combination of Leading/Left and Trailing/Right NSLayoutConstraints, /// If you are using AutoLayoutConstraints you have a combination of Leading/Left and Trailing/Right NSLayoutConstraints,
/// you need to ensure that one of these Horizontal Contraints is not constraint of "equatTo". If you are to pin the left/right edges /// you need to ensure that one of these Horizontal Contraints is not constraint of "equatTo". If you are to pin the left/right edges
/// to its parent this object will stretch to the parent's width. /// to its parent this object will stretch to the parent's width.
@objcMembers
@objc(VDSButton) @objc(VDSButton)
open class Button: ButtonBase, Useable { open class Button: ButtonBase, Useable {

View File

@ -11,6 +11,7 @@ import VDSCoreTokens
import Combine import Combine
/// Base class used for UIButton type classes. /// Base class used for UIButton type classes.
@objcMembers
@objc(VDSButtonBase) @objc(VDSButtonBase)
open class ButtonBase: UIButton, ViewProtocol, UserInfoable, Clickable { open class ButtonBase: UIButton, ViewProtocol, UserInfoable, Clickable {

View File

@ -11,6 +11,7 @@ import VDSCoreTokens
import Combine import Combine
/// A button group contains combinations of related CTAs including ``Button``, ``TextLink``, and ``TextLinkCaret``. This group component controls a combination's orientation, spacing, size and allowable size pairings. /// A button group contains combinations of related CTAs including ``Button``, ``TextLink``, and ``TextLinkCaret``. This group component controls a combination's orientation, spacing, size and allowable size pairings.
@objcMembers
@objc(VDSButtonGroup) @objc(VDSButtonGroup)
open class ButtonGroup: View { open class ButtonGroup: View {

View File

@ -16,6 +16,7 @@ import Combine
/// If you are using AutoLayoutConstraints you have a combination of Leading/Left and Trailing/Right NSLayoutConstraints, /// If you are using AutoLayoutConstraints you have a combination of Leading/Left and Trailing/Right NSLayoutConstraints,
/// you need to ensure that one of these Horizontal Contraints is not constraint of "equatTo". If you are to pin the left/right edges /// you need to ensure that one of these Horizontal Contraints is not constraint of "equatTo". If you are to pin the left/right edges
/// to its parent this object will stretch to the parent's width. /// to its parent this object will stretch to the parent's width.
@objcMembers
@objc(VDSTextLink) @objc(VDSTextLink)
open class TextLink: ButtonBase { open class TextLink: ButtonBase {
//-------------------------------------------------- //--------------------------------------------------

View File

@ -16,6 +16,7 @@ import Combine
/// If you are using AutoLayoutConstraints you have a combination of Leading/Left and Trailing/Right NSLayoutConstraints, /// If you are using AutoLayoutConstraints you have a combination of Leading/Left and Trailing/Right NSLayoutConstraints,
/// you need to ensure that one of these Horizontal Contraints is not constraint of "equatTo". If you are to pin the left/right edges /// you need to ensure that one of these Horizontal Contraints is not constraint of "equatTo". If you are to pin the left/right edges
/// to its parent this object will stretch to the parent's width. /// to its parent this object will stretch to the parent's width.
@objcMembers
@objc(VDSTextLinkCaret) @objc(VDSTextLinkCaret)
open class TextLinkCaret: ButtonBase { open class TextLinkCaret: ButtonBase {
//-------------------------------------------------- //--------------------------------------------------

View File

@ -11,6 +11,7 @@ import VDSCoreTokens
import Combine import Combine
/// A calendar is a monthly view that lets customers select a single date. /// A calendar is a monthly view that lets customers select a single date.
@objcMembers
@objc(VDSCalendar) @objc(VDSCalendar)
open class CalendarBase: Control, Changeable { open class CalendarBase: Control, Changeable {

View File

@ -12,6 +12,7 @@ import Combine
/// A carousel is a collection of related content in a row that a customer can navigate through horizontally. /// A carousel is a collection of related content in a row that a customer can navigate through horizontally.
/// Use this component to show content that is supplementary, not essential for task completion. /// Use this component to show content that is supplementary, not essential for task completion.
@objcMembers
@objc(VDSCarousel) @objc(VDSCarousel)
open class Carousel: View { open class Carousel: View {

View File

@ -12,6 +12,7 @@ import Combine
/// A carousel scrollbar is a control that allows to navigate between items in a carousel. /// A carousel scrollbar is a control that allows to navigate between items in a carousel.
/// It's also a status indicator that conveys the relative amount of content in a carousel and a location within it. /// It's also a status indicator that conveys the relative amount of content in a carousel and a location within it.
@objcMembers
@objc(VDSCarouselScrollbar) @objc(VDSCarouselScrollbar)
open class CarouselScrollbar: View { open class CarouselScrollbar: View {

View File

@ -12,6 +12,7 @@ import VDSCoreTokens
/// Checkboxes are a multi-select component through which a customer indicates a choice. This is also used within /// Checkboxes are a multi-select component through which a customer indicates a choice. This is also used within
/// ``CheckboxItem`` and ``CheckboxGroup`` /// ``CheckboxItem`` and ``CheckboxGroup``
@objcMembers
@objc(VDSCheckbox) @objc(VDSCheckbox)
open class Checkbox: SelectorBase { open class Checkbox: SelectorBase {

View File

@ -12,6 +12,7 @@ import VDSCoreTokens
/// When the choice has multiple options, use a checkbox group. For example, use a checkbox group when /// When the choice has multiple options, use a checkbox group. For example, use a checkbox group when
/// asking a customer which attributes they would like to filter their search by. This uses ``CheckboxItem`` /// asking a customer which attributes they would like to filter their search by. This uses ``CheckboxItem``
/// to allow user selection. /// to allow user selection.
@objcMembers
@objc(VDSCheckboxGroup) @objc(VDSCheckboxGroup)
open class CheckboxGroup: SelectorGroupBase<CheckboxItem>, SelectorGroupMultiSelect { open class CheckboxGroup: SelectorGroupBase<CheckboxItem>, SelectorGroupMultiSelect {

View File

@ -9,6 +9,7 @@ import Foundation
import UIKit import UIKit
/// Checkboxes are a multi-select component through which a customer indicates a choice. If a binary choice, the component is a checkbox. If the choice has multiple options, the component is a ``CheckboxGroup``. /// Checkboxes are a multi-select component through which a customer indicates a choice. If a binary choice, the component is a checkbox. If the choice has multiple options, the component is a ``CheckboxGroup``.
@objcMembers
@objc(VDSCheckboxItem) @objc(VDSCheckboxItem)
open class CheckboxItem: SelectorItemBase<Checkbox> { open class CheckboxItem: SelectorItemBase<Checkbox> {
@ -47,6 +48,13 @@ open class CheckboxItem: SelectorItemBase<Checkbox> {
isSelected.toggle() isSelected.toggle()
sendActions(for: .valueChanged) sendActions(for: .valueChanged)
} }
open override func setup() {
super.setup()
let foo = ConcreteClass(customView: Checkbox())
print(foo.customView.isAnimated)
}
/// Used to make changes to the View based off a change events or from local properties. /// Used to make changes to the View based off a change events or from local properties.
open override func updateView() { open override func updateView() {
@ -54,3 +62,24 @@ open class CheckboxItem: SelectorItemBase<Checkbox> {
super.updateView() super.updateView()
} }
} }
@objcMembers
open class GenericClass<T: UIView>: NSObject {
public var customView: T
public init(customView: T = T()) {
self.customView = customView
}
}
@objcMembers
@objc(VDSConcreteClass)
open class ConcreteClass: GenericClass<Checkbox> {
}
@objcMembers
@objc(VDSConcreteCheckboxClass)
open class ConcreteCheckboxClass: ConcreteClass {}

View File

@ -4,6 +4,7 @@ import VDSCoreTokens
import Combine import Combine
/// A dropdown select is an expandable menu of predefined options that allows a customer to make a single selection. /// A dropdown select is an expandable menu of predefined options that allows a customer to make a single selection.
@objcMembers
@objc(VDSDatePicker) @objc(VDSDatePicker)
open class DatePicker: EntryFieldBase { open class DatePicker: EntryFieldBase {
//-------------------------------------------------- //--------------------------------------------------

View File

@ -11,6 +11,7 @@ import VDSCoreTokens
import Combine import Combine
/// A dropdown select is an expandable menu of predefined options that allows a customer to make a single selection. /// A dropdown select is an expandable menu of predefined options that allows a customer to make a single selection.
@objcMembers
@objc(VDSDropdownSelect) @objc(VDSDropdownSelect)
open class DropdownSelect: EntryFieldBase { open class DropdownSelect: EntryFieldBase {
//-------------------------------------------------- //--------------------------------------------------

View File

@ -13,6 +13,7 @@ import Combine
/// An icon is a graphical element that conveys information at a glance. It helps orient /// An icon is a graphical element that conveys information at a glance. It helps orient
/// a customer, explain functionality and draw attention to interactive elements. Icons /// a customer, explain functionality and draw attention to interactive elements. Icons
/// should have a functional purpose and should never be used for decoration. /// should have a functional purpose and should never be used for decoration.
@objcMembers
@objc(VDSIcon) @objc(VDSIcon)
open class Icon: View { open class Icon: View {

View File

@ -12,6 +12,7 @@ import Combine
/// Label is a standard view used to draw text with applying Typography through ``TextStyle`` as well /// Label is a standard view used to draw text with applying Typography through ``TextStyle`` as well
/// as other attributes using any implemetation of ``LabelAttributeModel``. /// as other attributes using any implemetation of ``LabelAttributeModel``.
@objcMembers
@objc(VDSLabel) @objc(VDSLabel)
open class Label: UILabel, ViewProtocol, UserInfoable { open class Label: UILabel, ViewProtocol, UserInfoable {

View File

@ -10,6 +10,7 @@ import UIKit
import VDSCoreTokens import VDSCoreTokens
/// A line visually separates content sections or elements in lists, tables and layouts to indicate content hierarchy. /// A line visually separates content sections or elements in lists, tables and layouts to indicate content hierarchy.
@objcMembers
@objc(VDSLine) @objc(VDSLine)
open class Line: View { open class Line: View {

View File

@ -11,6 +11,7 @@ import VDSCoreTokens
/// A loader is an indicator that uses animation to show customers that there is an indefinite amount of wait time while a task is ongoing, e.g. a page is loading, a form is being submitted. The component disappears when the task is complete. /// A loader is an indicator that uses animation to show customers that there is an indefinite amount of wait time while a task is ongoing, e.g. a page is loading, a form is being submitted. The component disappears when the task is complete.
@objcMembers
@objc(VDSLoader) @objc(VDSLoader)
open class Loader: View { open class Loader: View {

View File

@ -10,6 +10,8 @@ import UIKit
import VDSCoreTokens import VDSCoreTokens
/// ViewController to show the Loader, this will be presented using the LoaderLaunchable Protocl. /// ViewController to show the Loader, this will be presented using the LoaderLaunchable Protocl.
@objcMembers
@objc(VDSLoaderViewController)
open class LoaderViewController: UIViewController, Surfaceable { open class LoaderViewController: UIViewController, Surfaceable {
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Private Properties // MARK: - Private Properties

View File

@ -14,6 +14,7 @@ import Combine
/// in context. There are four types: information, success, warning and error; each /// in context. There are four types: information, success, warning and error; each
/// with different color and content. They may be screen-specific, flow-specific or /// with different color and content. They may be screen-specific, flow-specific or
/// experience-wide. /// experience-wide.
@objcMembers
@objc(VDSNotification) @objc(VDSNotification)
open class Notification: View { open class Notification: View {

View File

@ -11,6 +11,7 @@ import VDSCoreTokens
import Combine import Combine
///Pagination is a control that enables customers to navigate multiple pages of content by selecting either a specific page or the next or previous set of four pages. ///Pagination is a control that enables customers to navigate multiple pages of content by selecting either a specific page or the next or previous set of four pages.
@objcMembers
@objc(VDSPagination) @objc(VDSPagination)
open class Pagination: View { open class Pagination: View {

View File

@ -9,6 +9,7 @@ import UIKit
import VDSCoreTokens import VDSCoreTokens
///This is customised button for Pagination view ///This is customised button for Pagination view
@objcMembers
@objc(PaginationButton) @objc(PaginationButton)
open class PaginationButton: ButtonBase { open class PaginationButton: ButtonBase {
//-------------------------------------------------- //--------------------------------------------------

View File

@ -11,6 +11,7 @@ import UIKit
/// Radio boxes are single-select components through which a customer indicates a choice. /// Radio boxes are single-select components through which a customer indicates a choice.
/// They're stylized ``RadioButtons`` that must always be paired with one or more ``RadioBoxItem`` /// They're stylized ``RadioButtons`` that must always be paired with one or more ``RadioBoxItem``
/// in a radio box group. Use radio boxes to display choices like device storage. /// in a radio box group. Use radio boxes to display choices like device storage.
@objcMembers
@objc(VDSRadioBoxGroup) @objc(VDSRadioBoxGroup)
open class RadioBoxGroup: SelectorGroupBase<RadioBoxItem>, SelectorGroupSingleSelect { open class RadioBoxGroup: SelectorGroupBase<RadioBoxItem>, SelectorGroupSingleSelect {

View File

@ -12,6 +12,7 @@ import VDSCoreTokens
/// Radio boxes are single-select components through which a customer indicates a choice /// Radio boxes are single-select components through which a customer indicates a choice
/// that are used within a ``RadioBoxGroup``. /// that are used within a ``RadioBoxGroup``.
@objcMembers
@objc(VDSRadioBoxItem) @objc(VDSRadioBoxItem)
open class RadioBoxItem: Control, Changeable, FormFieldable, Groupable { open class RadioBoxItem: Control, Changeable, FormFieldable, Groupable {

View File

@ -13,6 +13,7 @@ import VDSCoreTokens
/// Radio buttons are single-select components through which a customer indicates a choice. /// Radio buttons are single-select components through which a customer indicates a choice.
/// They must always be paired with one or more ``RadioButtonItem`` within a ``RadioButtonGroup``. /// They must always be paired with one or more ``RadioButtonItem`` within a ``RadioButtonGroup``.
/// Use radio buttons to display choices like delivery method. /// Use radio buttons to display choices like delivery method.
@objcMembers
@objc(VDSRadioButton) @objc(VDSRadioButton)
open class RadioButton: SelectorBase { open class RadioButton: SelectorBase {

View File

@ -11,6 +11,7 @@ import UIKit
/// Radio buttons items are single-select components through which a customer indicates a choice. /// Radio buttons items are single-select components through which a customer indicates a choice.
/// They must always be paired with one or more other ``RadioButtonItem`` within a radio button group. /// They must always be paired with one or more other ``RadioButtonItem`` within a radio button group.
/// Use radio buttons to display choices like delivery method. /// Use radio buttons to display choices like delivery method.
@objcMembers
@objc(VDSRadioButtonGroup) @objc(VDSRadioButtonGroup)
open class RadioButtonGroup: SelectorGroupBase<RadioButtonItem>, SelectorGroupSingleSelect { open class RadioButtonGroup: SelectorGroupBase<RadioButtonItem>, SelectorGroupSingleSelect {

View File

@ -11,6 +11,7 @@ import UIKit
/// Radio buttons items are single-select components through which a customer indicates a choice. /// Radio buttons items are single-select components through which a customer indicates a choice.
/// They must always be paired with one or more other radio button items within a ``RadioButtonGroup``. /// They must always be paired with one or more other radio button items within a ``RadioButtonGroup``.
/// Use radio buttons to display choices like delivery method. /// Use radio buttons to display choices like delivery method.
@objcMembers
@objc(VDSRadioButtonItem) @objc(VDSRadioButtonItem)
open class RadioButtonItem: SelectorItemBase<RadioButton> { open class RadioButtonItem: SelectorItemBase<RadioButton> {

View File

@ -10,6 +10,7 @@ import UIKit
import VDSCoreTokens import VDSCoreTokens
///Table is view composed of rows and columns, which takes any view into each cell and resizes based on the highest cell height. ///Table is view composed of rows and columns, which takes any view into each cell and resizes based on the highest cell height.
@objcMembers
@objc(VDSTable) @objc(VDSTable)
open class Table: View { open class Table: View {

View File

@ -11,7 +11,7 @@ import VDSCoreTokens
import Combine import Combine
extension Tabs { extension Tabs {
@objcMembers
@objc(VDSTab) @objc(VDSTab)
open class Tab: Control, Groupable { open class Tab: Control, Groupable {

View File

@ -10,6 +10,7 @@ import UIKit
import VDSCoreTokens import VDSCoreTokens
/// Tabs are organizational components that group content and allow customers to navigate its display. Use them to separate content when the content is related but doesnt need to be compared. /// Tabs are organizational components that group content and allow customers to navigate its display. Use them to separate content when the content is related but doesnt need to be compared.
@objcMembers
@objc(VDSTabs) @objc(VDSTabs)
open class Tabs: View { open class Tabs: View {

View File

@ -8,6 +8,7 @@
import Foundation import Foundation
import UIKit import UIKit
@objcMembers
@objc(VDSTabsContainer) @objc(VDSTabsContainer)
open class TabsContainer: View { open class TabsContainer: View {

View File

@ -11,6 +11,7 @@ import VDSCoreTokens
import Combine import Combine
/// Base Class used to build out a Input controls. /// Base Class used to build out a Input controls.
@objcMembers
@objc(VDSEntryField) @objc(VDSEntryField)
open class EntryFieldBase: Control, Changeable, FormFieldInternalValidatable { open class EntryFieldBase: Control, Changeable, FormFieldInternalValidatable {

View File

@ -13,6 +13,7 @@ import Combine
/// An input field is an input wherein a customer enters information. They typically appear in forms. /// An input field is an input wherein a customer enters information. They typically appear in forms.
/// Specialized input fields capture credit card numbers, inline actions, passwords, phone numbers, /// Specialized input fields capture credit card numbers, inline actions, passwords, phone numbers,
/// dates and security codes in their correct formats. /// dates and security codes in their correct formats.
@objcMembers
@objc(VDSInputField) @objc(VDSInputField)
open class InputField: EntryFieldBase { open class InputField: EntryFieldBase {
@ -311,6 +312,24 @@ open class InputField: EntryFieldBase {
} }
} }
open var widthPercentage: CGFloat? { didSet { setNeedsUpdate() } }
internal override func updateContainerWidth() {
widthConstraint?.deactivate()
trailingLessThanEqualsConstraint?.deactivate()
trailingEqualsConstraint?.deactivate()
//see if there is a widthPercentage and follow the same pattern as done for "width"
let currentWidth = (horizontalPinnedWidth() ?? 0) * (widthPercentage ?? 0)
if currentWidth >= minWidth, currentWidth <= maxWidth {
widthConstraint?.constant = currentWidth
widthConstraint?.activate()
trailingLessThanEqualsConstraint?.activate()
} else {
super.updateContainerWidth()
}
}
override func updateRules() { override func updateRules() {
super.updateRules() super.updateRules()
fieldType.handler().appendRules(self) fieldType.handler().appendRules(self)

View File

@ -10,6 +10,7 @@ import UIKit
import Combine import Combine
import VDSCoreTokens import VDSCoreTokens
@objcMembers
@objc(VDSTextField) @objc(VDSTextField)
open class TextField: UITextField, ViewProtocol, Errorable { open class TextField: UITextField, ViewProtocol, Errorable {

View File

@ -12,6 +12,7 @@ import Combine
/// A text area is an input wherein a customer enters long-form information. /// A text area is an input wherein a customer enters long-form information.
/// Use a text area when you want customers to enter text thats longer than a single line. /// Use a text area when you want customers to enter text thats longer than a single line.
@objcMembers
@objc(VDSTextArea) @objc(VDSTextArea)
open class TextArea: EntryFieldBase { open class TextArea: EntryFieldBase {
//-------------------------------------------------- //--------------------------------------------------

View File

@ -10,6 +10,7 @@ import UIKit
import Combine import Combine
import VDSCoreTokens import VDSCoreTokens
@objcMembers
@objc(VDSTextView) @objc(VDSTextView)
open class TextView: UITextView, ViewProtocol, Errorable { open class TextView: UITextView, ViewProtocol, Errorable {

View File

@ -10,6 +10,7 @@ import VDSCoreTokens
import UIKit import UIKit
import Combine import Combine
@objcMembers
@objc(VDSTileContainer) @objc(VDSTileContainer)
open class TileContainer: TileContainerBase<TileContainer.Padding> { open class TileContainer: TileContainerBase<TileContainer.Padding> {

View File

@ -15,6 +15,7 @@ import Combine
/// support quick scanning and engagement. A Tilelet is fully clickable and /// support quick scanning and engagement. A Tilelet is fully clickable and
/// while it can include an arrow CTA, it does not require one in order to /// while it can include an arrow CTA, it does not require one in order to
/// function. /// function.
@objcMembers
@objc(VDSTilelet) @objc(VDSTilelet)
open class Tilelet: TileContainerBase<Tilelet.Padding> { open class Tilelet: TileContainerBase<Tilelet.Padding> {

View File

@ -12,6 +12,7 @@ import Combine
/// Title Lockup ensures the readability of words on the screen /// Title Lockup ensures the readability of words on the screen
/// with approved built in text size configurations. /// with approved built in text size configurations.
@objcMembers
@objc(VDSTitleLockup) @objc(VDSTitleLockup)
open class TitleLockup: View { open class TitleLockup: View {

View File

@ -12,6 +12,7 @@ import Combine
/// A toggle is a control that lets customers instantly turn on /// A toggle is a control that lets customers instantly turn on
/// or turn off a single option, setting or function. /// or turn off a single option, setting or function.
@objcMembers
@objc(VDSToggle) @objc(VDSToggle)
open class Toggle: Control, Changeable, FormFieldable { open class Toggle: Control, Changeable, FormFieldable {

View File

@ -12,6 +12,7 @@ import Combine
/// A toggle is a control that lets customers instantly turn on /// A toggle is a control that lets customers instantly turn on
/// or turn off a single option, setting or function. /// or turn off a single option, setting or function.
@objcMembers
@objc(VDSToggleView) @objc(VDSToggleView)
open class ToggleView: Control, Changeable, FormFieldable { open class ToggleView: Control, Changeable, FormFieldable {

View File

@ -13,6 +13,7 @@ import Combine
/// A tooltip is an overlay that clarifies another component or content /// A tooltip is an overlay that clarifies another component or content
/// element. It is triggered when a customer hovers, clicks or taps /// element. It is triggered when a customer hovers, clicks or taps
/// the tooltip icon. /// the tooltip icon.
@objcMembers
@objc(VDSTooltip) @objc(VDSTooltip)
open class Tooltip: Control, TooltipLaunchable { open class Tooltip: Control, TooltipLaunchable {

View File

@ -10,6 +10,8 @@ import UIKit
import Combine import Combine
import VDSCoreTokens import VDSCoreTokens
@objcMembers
@objc(VDSTooltipAlertViewController)
open class TooltipAlertViewController: UIViewController, Surfaceable { open class TooltipAlertViewController: UIViewController, Surfaceable {
/// Set of Subscribers for any Publishers for this Control. /// Set of Subscribers for any Publishers for this Control.

View File

@ -9,6 +9,8 @@ import Foundation
import UIKit import UIKit
import VDSCoreTokens import VDSCoreTokens
@objcMembers
@objc(VDSTooltipDialog)
open class TooltipDialog: View, UIScrollViewDelegate { open class TooltipDialog: View, UIScrollViewDelegate {
//-------------------------------------------------- //--------------------------------------------------