---
name: Properties
description:
  Property windows are used when you want to provide the user with configuration
  options. --It is also used to present a consistent user experience throughout the
  app. --This module provides a collection of re-usable tools to make that building
  properties simple. --It does so by providing a number of common property setters
  right out of the box that you can assemble into sidebars, popups, etc.. --...and
  lets you build your own as well
workflow: ""
user_stories:
  - As a developer I would like to provide my users with a tool to configure an object
    I have prepared
  - As a user I would like a consistent user experience when I configure objects
  - As a developer I would like a collection of pre-built property setters so that I
    don't have to build them from scratch each time
test_plan:
  - scenario: Rendering
    expected: Should render in the dom
    automated: "Yes"
    type: End to End
  - scenario: Rendering
    expected: Should render a different component for each type provided in the prop
    automated: "Yes"
    type: End to End
  - scenario: Rendering
    expected: Should render in the location provided in the location prop
    automated: "Yes"
    type: End to End
  - scenario: Rendering
    expected:
      Should render a title in the dom that matches the title present in the
      title prop
    automated: "Yes"
    type: End to End
  - scenario: Rendering
    expected:
      Should render the same amount of tabs as the number of items in the tabs
      prop array
    automated: "Yes"
    type: End to End
  - scenario: Rendering
    expected:
      Should render a caption for each tab as defined by the appropriate tab
      in the tabs prop array
    automated: "Yes"
    type: End to End
  - scenario: Rendering
    expected:
      Should render the provided component view for each tab as defined by the
      appropriate tab in the tabs prop array
    automated: "Yes"
    type: End to End
  - scenario: Rendering
    expected:
      Should show the default tab as defined by the tab that has the default
      property in the specific tab in the tab props array
    automated: "Yes"
    type: End to End
  - scenario: Rendering
    expected:
      Should not render any tab controls when the tabsAreVisible prop is false.  Should
      instead just show the default tab component
    automated: "Yes"
    type: End to End
  - scenario: Rendering
    expected: Should render whatever children components are provided in the props
    automated: "Yes"
    type: End to End
  - scenario: Events
    expected:
      Should trigger the onChange() event when a change occurs in the settings
      for that object
    automated: "Yes"
    type: End to End
  - scenario: Events
    expected: Should trigger the onClose() event when the property window is exiting
    automated: "Yes"
    type: End to End
  - scenario: Methods
    expected: Should switch the tab views when the switchTab() method is called
    automated: "Yes"
    type: End to End
  - scenario: Methods
    expected:
      Should close the property window completely when the closeWindow() method
      is called
    automated: "Yes"
    type: End to End
  - scenario: Hooks
    expected:
      Should trigger the _onPropertiesRender_ plugin hook when the Properties
      component is being rendered
    automated: "Yes"
    type: End to End
  - scenario: Hooks
    expected:
      Should trigger the _onTabsList_ plugin hook when the tabs list is being
      generated
    automated: "Yes"
    type: End to End
  - scenario: Hooks
    expected:
      Should trigger the _onPropertiesWindowClose_ plugin hook when the properties
      window is being closed
    automated: "Yes"
    type: End to End
screens: ""
components:
  - type: Containers
    name: Properties
    description:
      Property windows are used when you want to provide the user with configuration
      options. --It is also used to present a consistent user experience throughout
      the app. --This module provides a collection of re-usable tools to make that building
      properties simple. --It does so by providing a number of common property setters
      right out of the box that you can assemble into sidebars, popups, etc.. --...and
      lets you build your own as well
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - name: type
        type: enum[SIDEBAR,POPUP,INLINE,TOOLBAR]
        description:
          Establishes the type of UX to present to the user--This is the main
          window that opens up--It is the window that will contain all of the property
          setters
        schema_type: prop
        required: false
      - name: location
        type: enum[LEFT,RIGHT,TOP,BOTTOM]
        description: The location of where the window should show up
        schema_type: prop
        required: false
      - name: title
        type: string
        description: The default title of the property window
        schema_type: prop
        required: true
      - name: tabs
        type: array
        description:
          An array of tabs to use in the property window--Each tab has a title,
          and an associated component to show when that tab is active--(id, title, active,
          component)
        schema_type: prop
        required: true
      - name: tabsAreVisible
        type: bool
        description: Whether or not the tabs should be visible
        schema_type: prop
        required: false
      - name: children
        type: element
        description: todo
        schema_type: prop
        required: true
      - name: onChange
        type: method
        description: Triggers when a change occurs in the settings for that object
        schema_type: prop
        required: false
      - name: onClose
        type: method
        description: Triggers when the property window is exiting
        schema_type: prop
        required: false
      - name: switchTab
        type: method
        description: Switches the active tab to another one
        schema_type: method
        required: false
        public: "true"
      - name: closeWindow
        type: method
        description: Closes the property window
        schema_type: method
        required: false
        public: "true"
  - type: Components
    name: ButtonSliderGroup
    description:
      Renders two buttons and an optional slider --Used for use cases like
      incrementing/decrementing a property, or setting a precise value (using the slider)
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - schema_type: prop
        name: value
        type: string
        required: false
        description: The current value of the property
      - schema_type: prop
        name: maxCheckValue
        type: Number
        required: false
        description: The value to assign when the max checkbox is checked
      - schema_type: prop
        name: autoCheckValue
        type: Number
        required: false
        description: The value to assign the property when the auto checkbox is checked
      - schema_type: prop
        name: toolTip
        type: string
        required: false
        description: The tooltip to show when the group is hovered over
      - schema_type: prop
        name: button1
        type: object
        required: false
        description: The settings for the first button { value, style, events, icon }
      - schema_type: prop
        name: showSlider
        type: Boolean
        required: false
        description: Whether or not to show the slider
      - schema_type: prop
        name: button2
        type: object
        required: false
        description: The settings for the second button { value, style, events, icon }
      - schema_type: prop
        name: text
        type: string
        required: false
        description: The label caption for the group
      - schema_type: prop
        name: minValue
        type: Number
        required: false
        description: The minimum allowed value for the property
      - schema_type: prop
        name: maxValue
        type: Number
        required: false
        description: The maximum allowed value for the property
      - schema_type: prop
        name: showMaxCheck
        type: Boolean
        required: false
        description:
          Whether or not to show a checkbox that lets the user immediately
          set the maximum value
      - schema_type: prop
        name: showAutoCheck
        type: Boolean
        required: false
        description:
          Whether or not to show a checkbox that lets the user set the value
          to _auto_, representing the fact that the value will be set automatically
      - schema_type: prop
        name: originalValue
        type: string
        required: false
        description: The value to revert to if the autoCheck Checkbox is turned off
      - schema_type: prop
        name: onChange
        type: "() => any"
        description: Triggers when the value of the property changes
      - schema_type: prop
        name: onFinish
        type: "() => any"
        description: Triggers when the mouse button is released (on the button or slider)
    tests:
      - it: Should render component in the dom
        type: Integration
      - it: Should render a _Max Value_ checkbox when the showMaxCheck prop is true
        type: Integration
      - it:
          Should render the _Auto Set_ checkbox when the showAutoCheck prop is set to
          true
        type: Integration
      - it: Slider should be positioned at the value provided in the prop
        type: Integration
      - it: Should show a tooltip when the group is hovered over
        type: Integration
      - it: Should not show a slider when the showSlider prop is set to false
        type: Integration
      - it: Should show a label caption for the group using the text prop
        type: Integration
      - it:
          Should render a button with the value, style, events, icon attributes provided
          in the button1 prop
        type: Integration
      - it:
          Should render a button with the value, style, events, icon attributes provided
          in the button2 prop
        type: Integration
      - it: Should not allow any values below the provided minValue prop
        type: Integration
      - it: Should not allow any values above the provided maxValue prop
        type: Integration
      - it:
          Should set the value to the autoCheckValue prop's value when the _Auto_ checkbox
          is checked
        type: Integration
      - it:
          Should set the value to the maxCheckValue prop's value when the _Max_ checkbox
          is checked
        type: Integration
      - it:
          Should immediately uncheck the AutoCheck and MaxCheck checkbox when the button
          is clicked or slider is changed
        type: Integration
      - it:
          Should automatically check the MaxCheck Checkbox when the slider is at the
          maximum position
        type: Integration
      - it:
          Should position the value of the slider to the max position if the MaxCheck
          checkbox is checked
        type: Integration
      - it:
          Should revert the value back to the original value if the _Auto_ checkbox
          is un-checked
        type: Integration
      - it:
          Component updates should occur immediately, but database persistence should
          apply on the mouse up event
        type: Integration
      - it:
          Should trigger the onChange() event with the new value when either of the
          buttons are clicked
        type: Integration
      - it:
          Should trigger the onChange() event with the new value when the slider is
          moved
        type: Integration
      - it:
          Should trigger the _onButtonSliderGroupRender_ plugin hook when the ButtonSliderGroup
          component renders
        type: Integration
      - it:
          Should trigger the _onButtonSliderGroupChange_ plugin hook when the value
          of the ButtonSliderGroup property changes
        type: Integration
      - it:
          Should trigger the onButtonSliderGroupFinish plugin hook when the mouse button
          is released (on the button or slider)
        type: Integration
  - type: Components
    name: ColorPicker
    description: A tool for picking and settings colors
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - schema_type: prop
        name: color
        required: false
        type: string
        description: This is the color that is currently selected
      - schema_type: prop
        name: text
        required: false
        type: string
        description: This is the descriptive text label that will appear next to the colors
      - schema_type: prop
        name: showCircles
        required: false
        type: Boolean
        description: Whether or not the array of circles should show
      - schema_type: prop
        name: showSlider
        required: false
        type: Boolean
        description: Whether or not the horizontal slider hue picker should show
      - schema_type: prop
        name: showHex
        required: false
        type: Boolean
        description: Whether or not the hex picker should show
      - schema_type: prop
        name: showAlpha
        required: false
        type: Boolean
        description: Whether or not the the Alpha Picker should show
      - schema_type: prop
        name: colorExpanded
        required: false
        type: Boolean
        description: Whether or not the expanded color options should show
      - schema_type: prop
        name: toolTip
        required: false
        type: string
        description: The tooltip to show when the group is hovered over
      - schema_type: prop
        name: colorArray
        required: false
        type: any[]
        description:
          An array of colors to show in the circles.  Overrides the default
          choices
      - schema_type: prop
        name: onChange
        required: false
        type: "() => void"
        description: This event is triggered when the color is changed
    tests:
      - id: Should render the component in the dom
        type: Integration
      - id:
          Should show the value in the color prop in the main color picker as a highlighted
          color and/or a hex value in the picker
        type: Integration
      - id: Should show the value from the text prop in the section title
        type: Integration
      - id: Should show a tooltip when the group is hovered over
        type: Integration
      - id: Should show a collection of colors as provided by the colorArray prop
        type: Integration
      - id:
          Should show a default collection of colors if no colors are provided in a
          colorArray prop
        type: Integration
      - id: Should show the array of circles when the showCircles prop is true
        type: Integration
      - id: Should show the horizontal slider hue picker when the showSlider prop is true
        type: Integration
      - id: Should show the hex picker when the showHex prop is true
        type: Integration
      - id: Should show the the Alpha Picker when the showAlpha prop is true
        type: Integration
      - id: Should show the expanded color options when the colorExpanded prop is true
        type: Integration
      - id: Should trigger the onChange() event with the new color when the color is changed
        type: Integration
      - id: Should update the color prop with the newly selected value after one is selected
        type: Integration
      - id:
          Should trigger the _onColorPickerRender_ plugin hook when the Color Picker
          component is being rendered
        type: Integration
      - id: Should trigger the _onColorPickerChange_ plugin hook when the color is changing
        type: Integration
  - type: Components
    name: DropDownCollapse
    description: A dropdown menu of FancySelectors
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - schema_type: prop
        name: text
        required: false
        type: string
        description: This is the text that will appear inside of the dropdown menu
      - schema_type: prop
        name: children
        required: false
        type: React.ReactNode
        description:
          These are the <FancySelector /> elements that are collapsed inside
          of the dropdown element
      - schema_type: prop
        name: isExpanded
        required: false
        type: Boolean
        description: Bool if the dropdown should be collapsed or expanded
      - schema_type: prop
        name: onChange
        required: false
        type: "() => void"
        description: This event is triggered when the dropdown is changed
    tests:
      - it: The component should render in the dom
        type: Integration
      - it: Should render a caption in the dom that matches the text prop
        type: Integration
      - it: Should not show children if the isExpanded prop is false
        type: Integration
      - it: Should toggle between collapsed and expanded when clicked
        type: Integration
      - it: Should trigger the onChange() event when the dropdown is changed
        type: Integration
      - it:
          Should trigger the _onDropDownCollapseRender_ plugin hook when the DropDownCollapse
          is being rendered
        type: Integration
      - it:
          Should trigger the _onDropDownCollapseChange_ plugin hook when the dropdown
          is changed
        type: Integration
  - type: Components
    name: Margin
    description: Creates a Button Slider Group to Change the Components top position
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - schema_type: prop
        name: minValue
        required: false
        type: Number
        description: The minimum value that the slider can set
      - schema_type: prop
        name: maxValue
        required: false
        type: Number
        description: The maximum value that the slider can set
      - schema_type: prop
        name: onChange
        required: false
        type: Number
        description: Triggered when the setting changes
    tests:
      - it: Should render the component in the dom
        type: Integration
      - it: Should not be able to set the value to one less than the minValue prop
        type: Integration
      - it: Should not be able to set the value to one more than the maxValue prop
        type: Integration
      - it:
          Should update the margin-top of the item to the value when the slider has
          changed
        type: Integration
      - it: Should trigger the onChange() event when the setting changes
        type: Integration
      - it: Should trigger the _onMarginChange_ plugin hook when the setting changes
        type: Integration
      - it:
          Should trigger the _onMarginRender_ plugin hook when the component is being
          rendered
        type: Integration
  - type: Components
    name: Spacing
    description: Creates a Button Slider Group to Change the Components margin
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - schema_type: prop
        name: minValue
        required: false
        type: Number
        description: The minimum value that the slider can set
      - schema_type: prop
        name: maxValue
        required: false
        type: Number
        description: The maximum value that the slider can set
      - schema_type: prop
        name: onChange
        required: false
        type: "() => any"
        description: Triggered when the setting changes
    tests:
      - it: Should render the component in the dom
        type: Integration
      - it: Should not be able to set the value to one less than the minValue prop
        type: Integration
      - it: Should not be able to set the value to one more than the maxValue prop
        type: Integration
      - it: Should update the spacing to the value when the slider has changed
        type: Integration
      - it: Should trigger the onChange() event when the setting changes
        type: Integration
      - it: Should trigger the _onSpacingChange_ plugin hook when the setting changes
        type: Integration
      - it:
          Should trigger the _onSpacingChange_ plugin hook when the component is being
          rendered
        type: Integration
  - type: Components
    name: Padding
    description: Creates a Button Slider Group to Change the Components Padding
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - schema_type: prop
        name: minValue
        type: Number
        required: false
        description: The minimum value that the slider can set
      - schema_type: prop
        name: maxValue
        type: Number
        required: false
        description: The maximum value that the slider can set
      - schema_type: prop
        name: onChange
        type: "() => void"
        required: false
        description: Triggered when the setting changes
    tests:
      - it: Should render the component in the dom
        type: Integration
      - it: Should not be able to set the value to one less than the minValue prop
        type: Integration
      - it: Should not be able to set the value to one more than the maxValue prop
        type: Integration
      - it: Should update the padding to the value when the slider has changed
        type: Integration
      - it: Should trigger the onChange() event when the setting changes
        type: Integration
      - it: Should trigger the _onPaddingChange_ plugin hook when the setting changes
        type: Integration
      - it:
          Should trigger the _onPaddingRender_ plugin hook when the component is being
          rendered
        type: Integration
  - type: Components
    name: Width
    description: Creates a Button Slider Group to Change the Components Width
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - schema_type: prop
        name: onChange
        type: "() => void"
        required: false
        description: Triggered when the setting changes
    tests:
      - it: Should render the component in the dom
        type: Integration
      - it: Should update the width to the value when the slider has changed
        type: Integration
      - it: Should trigger the onChange() event when the setting changes
        type: Integration
      - it: Should trigger the _onWidthChange_ plugin hook when the setting changes
        type: Integration
      - it:
          Should trigger the _onWidthRender_ plugin hook when the component is being
          rendered
        type: Integration
  - type: Components
    name: Height
    description: Creates a Button Slider Group to Change the Components Height
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - schema_type: prop
        name: onChange
        type: "() => void"
        required: false
        description: Triggered when the setting changes
    tests:
      - it: Should render the component in the dom
        type: Integration
      - it: Should update the width to the value when the slider has changed
        type: Integration
      - it: Should trigger the onChange() event when the setting changes
        type: Integration
      - it: Should trigger the _onHeightChange_ plugin hook when the setting changes
        type: Integration
      - it:
          Should trigger the _onHeightRender_ plugin hook when the component is being
          rendered
        type: Integration
  - name: LineHeight
    description: Creates a Button Slider Group to Change the Line Height of the component
    behaviors: ""
    exists: "No"
    package: "No"
    type: Components
    schema:
      - schema_type: prop
        name: onChange
        type: "() => void"
        required: false
        description: Triggered when the setting changes
    tests:
      - it: Should render the component in the dom
        type: Integration
      - it: Should update the width to the value when the slider has changed
        type: Integration
      - it: Should trigger the onChange() event when the setting changes
        type: Integration
      - it: Should trigger the _onLineHeightChange_ plugin hook when the setting changes
        type: Integration
      - it:
          Should trigger the _onLineHeightRender_ plugin hook when the component is
          being rendered
        type: Integration
  - name: SectionWrapper
    type: Components
    description:
      A convenient way to wrap your properties into functional groups (e.g.
      [Text], [Image Settings], etc.). Groups are collapsable so that the amount of
      controls do not overwhelm the user
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - schema_type: prop
        name: title
        required: false
        type: string
        description: The title to show as the label of the group
      - schema_type: prop
        name: icon
        required: false
        type: string
        description: The icon to show as part of the label of the group
      - schema_type: prop
        name: backgroundIsShowing
        required: false
        type: Boolean
        description:
          Whether or not the background of the section is showing.  Useful
          for when you want to disguise the fact that you're in a group
      - schema_type: prop
        name: labelIsShowing
        required: false
        type: Boolean
        description: Whether or not the label is showing
      - schema_type: prop
        name: style
        required: false
        type: object
        description: The custom style to apply to this section
      - schema_type: prop
        name: isExpanded
        required: false
        type: Boolean
        description: Whether or not the group should be expanded by default
      - schema_type: prop
        name: sectionWrapperComponent
        required: false
        type: React.ReactNode
        description:
          The component to use instead of the default that wraps each group
          of properties
      - schema_type: prop
        name: onExpand
        required: false
        type: "() => void"
        description: Triggers when the section should expand
      - schema_type: prop
        name: onCollapse
        required: false
        type: "() => void"
        description: Triggers when the section should collapse
    tests:
      - it: Should render a SectionWrapper component in the dom
        type: Integration
      - it: Should show a title in the dom as provided by the title prop
        type: Integration
      - it:
          Should not show any background colors when the backgroundIsShowing prop is
          set to false
        type: Integration
      - it: Should not show a label header when the labelIsShowing prop is false
        type: Integration
      - it: Should style the wrapper according to the style provided in the style prop
        type: Integration
      - it:
          Show the section in a collapsed (where no children components are visible)
          form when the isExpanded prop is false
        type: Integration
      - it:
          Should show the component provided by the  sectionWrapperComponent instead
          of the default section component when one is provided
        type: Integration
      - it:
          Should render any provided children elements when the isExpanded component
          is true
        type: Integration
      - it: Should trigger the onExpand() event when the section should expand
        type: Integration
      - it: Should trigger the onCollapse() event when the section should collapse
        type: Integration
  - name: Alignment
    type: Components
    description:
      A section with tools for aligning content (horizontally, vertically,
      etc)
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - schema_type: prop
        name: showMarginAlignmentGroup
        type: Boolean
        required: false
        description: Whether or not to show the margin alignment group
      - schema_type: prop
        name: showHorizontalAlignmentGroup
        type: Boolean
        required: false
        description: Whether or not to show the horizontal alignment group
      - schema_type: prop
        name: showVerticalAlignmentGroup
        type: Boolean
        required: false
        description: Whether or not to show the vertical alignment group
      - schema_type: prop
        name: showTextAlignmentGroup
        type: Boolean
        required: false
        description: Whether or not to show the text alignment buttons
      - schema_type: prop
        name: onChange
        type: "() => void"
        required: false
        description: Triggers when the alignment changes in some way
    tests:
      - it: Should render the Alignment component in the dom
        type: Integration
      - it:
          Should render the margin alignment group when the showMarginAlignmentGroup
          prop is true
        type: Integration
      - it:
          Should render the horizontal alignment group when the showHorizontalAlignmentGroup
          prop is true
        type: Integration
      - it:
          Should render the vertical alignment group when the showVerticalAlignmentGroup
          prop is true
        type: Integration
      - it:
          Should render the text alignment buttons when the showTextAlignmentGroup prop
          is true
        type: Integration
      - it: Should trigger the _onChange_ event when the alignment changes in some way
        type: Integration
      - it: Should update the selected item's alignment when the onChange event is triggered
        type: Integration
      - it:
          Should trigger the _onAlignmentRender_ plugin hook when the Alignment component
          is rendering
        type: Integration
      - it:
          Should trigger the _onAlignmentChange_ plugin hook when the alignment changes
          in some way
        type: Integration
  - name: Background
    type: Components
    description: A section for configuring the background properties of an object
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - schema_type: prop
        name: "...all of the section props"
        type: any
        required: false
        description: extends the section props
      - schema_type: prop
        name: propertiesToHide
        type: any[]
        required: false
        description: An array of properties to hide - color, image, (video), (parallax)
      - schema_type: prop
        name: onChange
        type: " () => void"
        required: false
        description: Triggers when the background changes in some way
    tests:
      - it: Should render in the dom
        type: Integration
      - it: Should render an image tab
        type: Integration
      - it: Should render a color tab
        type: Integration
      - it: Should render a video tab
        type: Integration
      - it: Should render parallax settings
        type: Integration
      - it:
          Should hide the color properties when _color_ is found in the propertiesToHide
          array
        type: Integration
      - it:
          Should hide the color properties when _image_ is found in the propertiesToHide
          array
        type: Integration
      - it:
          Should hide the video properties when _video_ is found in the propertiesToHide
          array
        type: Integration
      - it:
          Should hide the parallax properties when _parallax_ is found in the propertiesToHide
          array
        type: Integration
      - it: Should trigger the onChange() event when the background changes in some way
        type: Integration
      - it: Should change the background color when the color is chosen in the color tools
        type: Integration
      - it: Should change the background image when one is chosen
        type: Integration
      - it:
          Should change the background repeat settings according to the option chosen
          (no-repeat, repeat-x, repeat-y, both)
        type: Integration
      - it:
          Should change the background positioning settings according to the option
          chosen (auto, cover, contain)
        type: Integration
      - it:
          Should change the background's parallax settings according to the parallax
          settings chosen
        type: Integration
      - it: Should change the background video when a video is chosen in the video tab
        type: Integration
      - it:
          Should trigger the _onBackgroundRender_ plugin hook when the Background component
          is rendering
        type: Integration
      - it:
          Should trigger the _onBackgroundChange_ plugin hook when the background changes
          in some way
        type: Integration
  - name: BordersShadow
    type: Components
    description: A section for configuring the borders and shadows of an object
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - schema_type: prop
        name: "...all of the section props"
        type: any
        required: false
        description: "...all of the section props"
      - schema_type: prop
        name: showBorderRadiusGroup
        type: Boolean
        required: false
        description: Whether or not to show the border radius group
      - schema_type: prop
        name: showShadowGroup
        type: Boolean
        required: false
        description: Whether or not to show the shadow group
      - schema_type: prop
        name: onChange
        type: "() => void"
        required: false
        description: Triggers when the borders or shadows change in some way
    tests:
      - it: Should render the BordersShadow component in the dom
        type: Integration
      - it:
          Should trigger the onChange() event when the borders or shadows change in
          some way
        type: Integration
      - it:
          Should trigger the _onBordersShadowRender_ plugin hook when the BordersShadow
          component is rendering
        type: Integration
      - it:
          Should trigger the _onBordersShadowChange_ plugin hook when the borders or
          shadows change in some way
        type: Integration
      - it:
          Should not render the border radius group when the showBorderRadiusGroup prop
          is false
        type: Integration
      - it:
          Should not render the shadow group of properties when the showShadowGroup
          prop is false
        type: Integration
      - it:
          Should change the thickness of the border when the _thickness_ slider changes
          or +/- buttons are clicked
        type: Integration
      - it:
          Should change the radius of the border when the _Round_ slider changes or
          +/- buttons are clicked
        type: Integration
      - it:
          Should change the border color when the color picker changes to a different
          color
        type: Integration
      - it:
          Should change the shadow blur when the _Blur_ slider changes or +/- buttons
          are clicked
        type: Integration
      - it:
          Should change the border style to none, solid, or dashed when the appropriate
          preset is selected
        type: Integration
  - name: PositionPadding
    description: A section for configuring the position and padding of an object
    type: Components
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - schema_type: prop
        name: "...all of the section props"
        type: any
        required: false
        description: "...all of the section props"
      - schema_type: prop
        name: onChange
        type: "() => void"
        required: false
        description: Triggers when the position/padding changes in some way
    tests:
      - it: Should render the PositionPadding Component in the dom
        type: Integration
      - it: Triggers the onChange() event when the position/padding changes in some way
        type: Integration
      - it:
          Triggers the _onObjectPreviewRender_ plugin hook when the ObjectPreview component
          renders
        type: Integration
      - it:
          Triggers the _onPositionPaddingChange_ plugin hook when the position/padding
          changes in some way
        type: Integration
  - name: Typography
    description: A section for configuring the typography of an object
    type: Components
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - schema_type: prop
        name: "...all of the section props"
        type: any
        required: false
        description: "...all of the section props"
      - schema_type: prop
        name: showFontsGroup
        type: Boolean
        required: false
        description: Whether or not to show the font selection group
      - schema_type: prop
        name: showColorsGroup
        type: Boolean
        required: false
        description: Whether or not to show the colorPicker group
      - schema_type: prop
        name: showLineHeightGroup
        type: Boolean
        required: false
        description: Whether or not to show the lineHeight group
      - schema_type: prop
        name: showTextFormattingGroup
        type: Boolean
        required: false
        description:
          Whether or not to show the text formatting group.  This includes
          features like bold, italics, and text alignment
      - schema_type: prop
        name: type
        type: string
        required: false
        description: prepends the section title
      - schema_type: prop
        name: onChange
        type: "() => void"
        required: false
        description: "Triggers when the typography settings change in some way      "
    tests:
      - it: Should render the font selection group when the showFontsGroup prop is true
        type: Integration
      - it: Should show a list of Google fonts to choose from
        type: Integration
      - it: Should render the colorPicker group when the showColorsGroup prop is true
        type: Integration
      - it: Should render the lineHeight group when the showLineHeightGroup prop is true
        type: Integration
      - it:
          Should render the text formatting group when the showTextFormattingGroup prop
          is true
        type: Integration
      - it: Should render a title that has the type prop as one of the words in the title
        type: Integration
      - it:
          Triggers the onChange() event when the typography settings change in some
          way
        type: Integration
      - it:
          Should change the font family of the component to the font family selected
          (if no text is selected)
        type: Integration
      - it:
          Should change the font family of the selected text inside the component to
          the font family selected
        type: Integration
      - it:
          Should change the size of the font in the component to the size selected (if
          no text is selected)
        type: Integration
      - it:
          Should change the size of the font of the selected text inside the component
          to the font size selected
        type: Integration
      - it:
          Triggers the _onTypographyRender_ plugin hook when the Typography component
          is rendering
        type: Integration
      - it:
          Triggers the _onTypographyChange_ plugin hook when the typography settings
          change in some way
        type: Integration
  - name: WidthHeight
    description: A section for configuring the width and height of an object
    type: Components
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - schema_type: prop
        name: "...all of the section props"
        type: any
        required: false
        description: "...all of the section props"
      - schema_type: prop
        name: showWidthGroup
        type: Boolean
        required: false
        description: Whether or not to show the Width properties
      - schema_type: prop
        name: showHeightGroup
        type: Boolean
        required: false
        description: Whether or not to show the Height properties
      - schema_type: prop
        name: onChange
        type: "() => void"
        required: false
        description: Triggers when the width or height changes in some way
    tests:
      - it: Triggers the onChange() event when the width or height changes in some way
        type: Integration
      - it:
          Triggers the _onWidthHeightRender_ plugin hook when the WidthHeight component
          renders
        type: Integration
      - it:
          Triggers the _onWidthHeightChange_ plugin hook when the width or height changes
          in some way
        type: Integration
      - it: Should not render the Width component when the showWidthGroup prop is false
        type: Integration
      - it: Should not render the Height component when the showHeightGroup prop is false
        type: Integration
  - name: ObjectPreview
    description:
      Show's a small preview of the component. The wrapper calculates how
      much zoom to apply to the child component in order to fit it nicely inside of
      the viewport
    type: Components
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - schema_type: prop
        name: "...all of the section props"
        type: any
        required: false
        description: "...all of the section props"
      - schema_type: prop
        name: children
        type: React.ReactNode
        required: false
        description: "..."
      - schema_type: prop
        name: color
        type: string
        required: false
        description: This is a way to set the background color of the preview view port
    tests:
      - it: Should render in the dom
        type: Integration
      - it: Should render a child component if one is provided
        type: Integration
      - it:
          Should zoom out or in the child component in such a way that it fits the container
          with no overlaps
        type: Integration
      - it: Should have a backgroundColor that matches the color prop
        type: Integration
      - it:
          Triggers the _onObjectPreviewRender_ plugin hook when the ObjectPreview component
          renders
        type: Integration
  - name: ObjectPresets
    description:
      Show's a collection of pre-built components with each having a specific
      setting that will apply when clicked. If more presets exist than can fill the
      viewport, it will show in a carousel
    type: Components
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - schema_type: prop
        name: "...all of the section props"
        type: any
        required: false
        description: "...all of the section props"
      - schema_type: prop
        name: presets
        type: any[]
        description: An array of presets to show the user
        required: false
      - schema_type: prop
        name: component
        type: element
        description: The component to show inside each preset
        required: false
  - name: Preset
    description:
      This is an individual preset. It simply is a wrapper around a child
      component
    type: Components
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - schema_type: prop
        name: "...all of the section props"
        type: any
        required: false
        description: "...all of the section props"
      - schema_type: prop
        name: children
        type: element
        description: ""
        required: false
      - schema_type: prop
        name: onChange
        type: element
        description: Triggers when a preset is selected
        required: false
    tests:
      - it: Should render in the dom
        type: Integration
      - it:
          Should show an array of <Preset /> components in the dom.  The number should
          match the length of the presets array prop
        type: Integration
      - it:
          Should show the same component (the one provided in the props) as a child
          of each <Preset /> component
        type: Integration
      - it: Triggers the onChange() event when a preset is selected
        type: Integration
      - it:
          Should change the selected editor item's properties according to the setting
          of the preset clicked
        type: Integration
      - it:
          Triggers the _onObjectPresetsList_ plugin hook when the list is being established,
          so plugins can modify this list if necessary
        type: Integration
      - it: Triggers the _onObjectPresetsChange_ plugin hook when a preset is selected
        type: Integration
      - it:
          Triggers the _onObjectPresetsRender_ plugin hook when the ObjectPresets component
          is rendered
        type: Integration
  - name: UploadGroup
    description:
      A section for uploading content.  Through drag/drop, clicking an upload
      button, or entering in a url
    type: Components
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - schema_type: prop
        name: "...all of the section props"
        type: any
        required: false
        description: "...all of the section props"
      - schema_type: prop
        name: "(DropZone props)"
        type: Boolean
        required: false
        description: "(DropZone props)"
      - schema_type: prop
        name: showURLPicker
        type: Boolean
        required: false
        description:
          Whether or not to show the dropzone with upload and url selection
          buttons or just the dropzone alone
      - schema_type: prop
        name: text
        type: string
        required: false
        description:
          This is the label for the upload button.  Used to inform the user
          what it's uploading (e.g. [UPLOAD VIDEO] if text=[video])
      - schema_type: prop
        name: style
        type: object
        required: false
        description: The style to apply to the container just inside the <Section /> object
      - schema_type: prop
        name: url
        type: string
        required: false
        description:
          The current url that is being used for the object (e.g. an image
          or video).
      - schema_type: prop
        name: onChange
        type: "() => void"
        required: false
        description:
          Triggered after the upload occurs. Passes in a preview url for an
          instant view. And then the actual url once the upload is complete
    tests:
      - it: Should render in the dom
        type: Integration
      - it: Should be able to drag a file to the component and trigger an upload
        type: Integration
      - it: Should be able to select a file from my computer
        type: Integration
      - it:
          Should be able to enter a custom url for the file I want to use instead of
          uploading
        type: Integration
      - it: Should not show any url selection buttons if the showURLPicker prop is false
        type: Integration
      - it:
          Should show a preview of the uploaded file (if an image) immediately after
          uploading
        type: Integration
      - it: Should have the text prop as part of the section label
        type: Integration
      - it:
          Should set the style using the style prop instead of the default style if
          one is provided
        type: Integration
      - it:
          The url (prop) should be updated and the editor item should have the url in
          its settings after the upload has completed
        type: Integration
      - it: Should show a progress loader while the upload is occuring
        type: Integration
      - it: Triggers the onChange() event after the upload occurs
        type: Integration
      - it: Triggers the _onUploadGroupChange_ plugin hook when the upload occurs
        type: Integration
      - it:
          Triggers the _onUploadGroupRender_ plugin hook when the UploadGroup component
          is rendering
        type: Integration
  - name: BehaviorsAndActions
    description:
      A section for handling editor object behaviors and their corresponding
      actions, --For example, if someone clicks on a button (a behavior) on the canvas,
      you likely will want the page to redirect to a different page (an action).  Or
      you may want it to trigger an upsell purchase (a different action) --For example,
      if someone watches a video for more than 2.5 minutes (a behavior), it should show
      an order button --This component will show an <ActionSelector /> component for
      each of the behaviors associated with the selected object
    type: Components
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - schema_type: prop
        name: "...all of the section props"
        type: any
        required: false
        description: "...all of the section props"
      - schema_type: prop
        name: label
        type: string
        required: false
        description:
          The caption to apply to the section group.  (will also apply the
          caption to each interaction fieldset group as the title and legend)
      - schema_type: prop
        name: "(filter)"
        type: string
        required: false
        description: only show a subset of the behaviors
      - schema_type: prop
        name: onUpdate
        type: "() => any"
        required: false
        description: Triggers when an interaction setting has changed
    tests:
      - it: Should render the component in the dom
        type: Integration
      - it:
          Should render an <ActionSelector /> component for each behavior associated
          with this item
        type: Integration
      - it:
          Should be able to add new behaviors to the list so that multiple behaviors
          can be tracked
        type: Integration
      - it:
          Should be able to delete any behavior and have it be removed from the list
          of behaviors to track
        type: Integration
      - it: Should be able to add multiple actions to any of my tracked behaviors
        type: Integration
      - it:
          Should be able to delete any <ActionSelector />'s that show and have it be
          removed from the list of actions to perform
        type: Integration
      - it:
          Should show the text found in the label prop as the title for the section
          (and each action's fieldset group)
        type: Integration
      - it:
          Should only show a subset of behaviors based on the filter given in the filter
          prop (e.g. only show button behaviors, etc.)
        type: Integration
      - it:
          The actions property of the editor item's setting object should update to
          reflect the changes set when the onUpdate() event has been called
        type: Integration
      - it: Should trigger the onUpdate() event when an interaction setting has changed
        type: Integration
      - it:
          Should trigger the [onInteractionUpdate] plugin hook when an interaction setting
          has changed
        type: Integration
      - it:
          Should trigger the [onInteractionsRender] plugin hook when the Interactions
          component is being rendered
        type: Integration
  - name: BehaviorSelector
    description:
      This component lets you choose from a list of available behaviors (e.g.
      Clicks, Watches, Pauses, etc.) that they want the system to listen out for --When
      a behavior is selected, it may also show a sub selection of components to fine-tune
      details about the behavior --For example, if the behavior is _Watches a Video,_
      a fine-tuning sub selection may ask _For How Long?_
    type: Components
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - name: filter
        type: string
        description: Only behaviors that match this filter are available for selecting
      - name: label
        type: string
        description: The label to use in the title/caption of the BehaviorSelector
      - name: behavior
        type: object
        description: The specific properties of this behavior
      - name: onSetBehavior
        type: "() => void"
        description: Triggers when a behavior is to be set for the object
      - name: onDeleteBehavior
        type: "() => void"
        description: Triggers when a behavior is to be deleted from the stack
    tests:
      - it: Should render the component in the dom
        type: Integration
      - it: Should only show behaviors that match the filter provided in the filter prop
        type: Integration
      - it: Should show the title of the behavior as indicated by the label prop
        type: Integration
      - it:
          Should update the settings with the new behavior object once it has been set
          or updated
        type: Integration
      - it:
          Should render a relevant <BehaviorSubSelector /> after the initial behavior
          is selected
        type: Integration
      - it:
          Should trigger the onSetBehavior() event when a behavior is to be set for
          the object
        type: Integration
      - it:
          Should trigger the onDeleteBehavior() event when a behavior is to be deleted
          from the stack
        type: Integration
      - it:
          Should trigger the _onBehaviorSelectorMenuList_ plugin hook when the menu
          list of behaviors are being listed
        type: Integration
      - it:
          Should trigger the _onBehaviorSelectorRender_ plugin hook when the BehaviorSelector
          component is being rendered
        type: Integration
      - it:
          Should trigger the _onDeleteBehavior_ plugin hook when a behavior is to be
          deleted from the stack
        type: Integration
  - name: BehaviorSubSelector
    description:
      An optional sub selector to show after a behavior is selected. --It's
      used for capturing more specific information about the behavior they want detected
      --e.g. if the behavior (in the type) is WATCHES_VIDEO, the <LengthOfTime /> sub
      selector component should be rendered (which asks the user to specific what length
      of time should trigger this behavior)
    type: Components
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - name: type
        type: enum
        description:
          the constant used to determine which SubSelector component to show.
          e.g. CLICKS, WATCHES_VIDEO, PAUSES_VIDEO, DOUBLE_CLICK, NONE, APPLIES_TAG, etc.
      - name: behavior
        type: object
        description: The specific properites of this behavior
      - name: onSetBehavior
        type: "() => void"
        description: Triggers when a behavior is to be set for the editor item
    tests:
      - it: Should render in the dom
        type: Integration
      - it:
          Should have an option to bypass picking a subselector (e.g. subselector type
          is _NONE_)
        type: Integration
      - it:
          Should render the appropriate sub selector component based on the chosen _type_
          in the props
        type: Integration
      - it:
          Should update the behavior object's properties once the sub selector information
          is set
        type: Integration
      - it:
          Should trigger the onSetBehavior() event when a behavior is to be set for
          the editor item
        type: Integration
      - it: Should show <ActionSelector /> once the sub selector is chosen
        type: Integration
      - it:
          Should be able to add multiple <ActionSelector>'s once a sub selector has
          been selected
        type: Integration
      - it: Should be able to delete any of the <ActionSelector>'s
        type: Integration
      - it:
          Should trigger the _onSetBehavior_ plugin hook when a behavior is to be set
          for an editor item
        type: Integration
      - it: Should trigger the onSubSelectionRender({type}) plugin hook
        type: Integration
  - name: ActionSelector
    description:
      This component lets you customize a specific action. --It renders a
      drop-down menu that will show the list of available actions that can be performed
      for the associated behavior --When an action is selected, it may also show a sub
      selection of components to fine-tune the selection --For example, if the action
      selected is [Go To a URL], a fine-tuning sub selection may ask [What URL?]
    type: Components
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - schema_type: prop
        name: behavior
        type: string
        description:
          The name of the specific behavior that has to occur (e.g. _click_,
          _mouseEnter_, etc) before the selected action is triggered
        required: false
      - schema_type: prop
        name: "(filter)"
        type: string
        description: Only actions that match this filter are available for selecting
        required: false
      - schema_type: prop
        name: label
        type: string
        description: The label to use in the title/caption of the ActionSelector
        required: false
      - schema_type: prop
        name: action
        type: object
        description: The specific properties of this action
        required: false
      - schema_type: prop
        name: myKey
        type: Number
        description:
          The index of this particular action if there are multiple actions
          to be triggered
        required: false
      - schema_type: prop
        name: onSetAction
        type: "() => void"
        description: Triggers when an action is to be set for the object
        required: false
      - schema_type: prop
        name: onDeleteAction
        type: "() => void"
        description: Triggers when an action is to be deleted from the stack
        required: false
    tests:
      - it: Should render the component in the dom
        type: Integration
      - it: Should only show actions that match the filter provided in the filter prop
        type: Integration
      - it: Should show the title of the action as indicated by the label prop
        type: Integration
      - it:
          Should update the settings with the new action object once it has been set
          or updated
        type: Integration
      - it:
          Should render a relevant <ActionSubSelector /> after the initial action is
          selected
        type: Integration
      - it:
          Should trigger the onSetAction() event when a action is to be set for the
          object
        type: Integration
      - it:
          Should trigger the onDeleteAction() event when a action is to be deleted from
          the stack
        type: Integration
      - it:
          Should trigger the _onActionSelectorMenuList_ plugin hook when the menu list
          of actions are being listed
        type: Integration
      - it:
          Should trigger the _onActionSelectorRender_ plugin hook when the ActionSelector
          component is being rendered
        type: Integration
      - it:
          Should trigger the _onDeleteAction_ plugin hook when a action is to be deleted
          from the stack
        type: Integration
  - name: ActionSubSelector
    description:
      An optional sub selector to show after an action is selected. --Used
      for capturing more specific information about the the action they want performed.
      --e.g. if the action (in the type) selected is GO_TO_URL, the <GoToURL /> sub
      selector component should be rendered (which asks the user to specify the url
      or page they want the visitor to be redirected to)
    type: Components
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - name: type
        type: enum
        description:
          the constant used to determine which SubSelector component to show
          - e.g. GO_TO_URL, SUBMIT_FORM, OPEN_POPUP, TRIGGER_PURCHASE, TRIGGER_UPSELL,
          SHOW_AND_HIDE, CREATE_TAG
      - name: action
        type: object
        description: The specific properties of this action
      - name: myKey
        type: Number
        description:
          The index of this particular action if there are multiple actions
          to be triggered
      - name: onSetAction
        type: "() => void"
        description: Triggers when an action is to be set for the object
    tests:
      - it: Should render in the dom
        type: Integration
      - it:
          Should have an option to bypass picking a subselector (e.g. subselector type
          is _NONE_)
        type: Integration
      - it:
          Should render the appropriate sub selector component based on the chosen _type_
          in the props
        type: Integration
      - it:
          Should update the action object's properties once the sub selector information
          is set
        type: Integration
      - it:
          Should trigger the onSetAction() event when a action is to be set for the
          editor item
        type: Integration
      - it:
          Should trigger the _onSetAction_ plugin hook when an action is to be set for
          an editor item
        type: Integration
      - it: Should trigger the onSubSelectionRender({type}) plugin hook
        type: Integration
  - name: PopupOptions
    description:
      Lets the user select from a list of available popup windows or create
      a new one from scratch
    type: Components
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - name: action
        type: string
        description: The current action settings for this specific interaction
        schema_type: prop
        required: false
      - name: onChange
        type: "() => void"
        description: Triggers when the popup settings have been set
        schema_type: prop
        required: false
      - name: setPopup
        type: "() => void"
        description:
          Sets the selected popup window as the popup window to show when the
          action is triggered
        schema_type: method
        required: false
      - name: createPopupWindow
        type: "() => void"
        description: Creates a new popup window on the page
        schema_type: method
        required: false
      - name: showSelectedPopup
        type: "() => void"
        description: Shows the selected popup window on the page
        schema_type: method
        required: false
    tests:
      - it: Should render the component in the dom
        type: Integration
      - it:
          Should show the list of existing popup windows in the dropdown menu to select
          from
        type: Integration
      - it:
          Should show the chosen popup window in the dropdown menu if one was previously
          chosen
        type: Integration
      - it: Should let the user create a new popup window
        type: Integration
      - it: Should trigger the onChange() event when the popup settings have been set
        type: Integration
      - it:
          Should update the action settings with the correct popup action information
          once the popup settings change
        type: Integration
      - it:
          Should trigger the onSubSelectionRender([PopupOptions]) plugin hook when the
          PopupOptions component is rendering
        type: Integration
  - name: GoToUrl
    description:
      "Provides a list of options for linking to another pag.  For example:
      A custom url, the next page in the funnel, or one of the other pages in this particular
      funnel"
    type: Components
    behaviors: ""
    exists: "No"
    package: "No"
    schema:
      - name: action
        type: string
        description: The current action settings for this specific interaction
        schema_type: prop
        required: false
      - name: onChange
        type: "() => void"
        description: Triggers when the GoToUrl settings have been set
        schema_type: prop
        required: false
    tests:
      - it: Should render the component in the dom
        type: Integration
      - it:
          Should trigger the onSubSelectionRender([GoToUrl]) plugin hook when the GoToUrl
          component is rendering
        type: Integration
      - it: Should trigger the onChange() event when the GoToUrl settings have been set
        type: Integration
      - it:
          Should update the action settings with the url redirect action information
          once the GoToUrl settings change
        type: Integration
  - name: SubmitForm
    description:
      A link to open campaign settings. If for example, a button is clicked
      that has an action set to SUBMIT_FORM, by associating a 3rd party campaign with
      this page, the system will know to pass the form data to it
    type: Components
    behaviors: ""
    exists: "No"
    package: "No"
    tests:
      - it: Should render the component in the dom
        type: Integration
      - it:
          Should trigger the onSubSelectionRender([SubmitForm]) plugin hook when the
          GoToUrl component is rendering
        type: Integration
      - it: Should open the campaign settings window when the rendered link is clicked
        type: Integration
  - name: TriggerPurchase
    description: A link to open merchant settings
    type: Components
    behaviors: ""
    exists: "No"
    package: "No"
    tests:
      - it: Should render the component in the dom
        type: Integration
      - it:
          Should trigger the onSubSelectionRender([TriggerPurchase]) plugin hook when
          the TriggerPurchase component is rendering
        type: Integration
      - it: Should open the payment settings window when the rendered link is clicked
        type: Integration
  - name: TriggerUpsell
    description: A link to open merchant settings
    type: Components
    behaviors: ""
    exists: "No"
    package: "No"
    tests:
      - it: Should render the component in the dom
        type: Integration
      - it:
          Should trigger the onSubSelectionRender([TriggerUpsell]) plugin hook when
          the TriggerUpsell component is rendering
        type: Integration
      - it: Should open the payment settings window if the rendered link is clicked
        type: Integration
  - name: ShowHide
    description:
      Lets the user indicate which page item they want to show, and which
      page item they want to hide once the action is triggered
    type: Components
    behaviors: ""
    exists: "No"
    package: "No"
    tests:
      - it: Should render the component in the dom
        type: Integration
      - it:
          Should show a list of page items that the user can choose to [show] as part
          of this action
        type: Integration
      - it:
          Should show a list of page items that the user can choose to [hide] as part
          of this action
        type: Integration
      - it:
          Should update the action settings with the id of the components to show and
          hide once the ShowHide settings change
        type: Integration
      - it:
          Should trigger the onSubSelectionRender([ShowHide]) plugin hook when the ShowHide
          component is rendering
        type: Integration
      - it: Should trigger the onChange() event when the ShowHide settings have been set
        type: Integration
  - name: CreateTag
    description:
      Lets the user enter the name of the tag they want applied when this
      action is chosen. Lets the user enter an optional value to associate with the
      tag
    type: Components
    behaviors: ""
    exists: "No"
    package: "No"
    tests:
      - it: Should render the component in the dom
        type: Integration
      - it:
          Should trigger the onSubSelectionRender([CreateTag]) plugin hook when the
          CreateTag component is rendering
        type: Integration
      - it:
          Should trigger the onChange() event when the CreateTag settings have been
          set
        type: Integration
      - it:
          Should update the action settings with the name of the tag, and optional value
          of the tag once the CreateTag settings change
        type: Integration
database: []
api: []
