Class WidgetPositionConstrain
A widget extension, which can be used to add constrained xy positioning support to the base Widget class,
through the
Base.build method. This extension requires that
the WidgetPosition extension be added to the Widget (before WidgetPositionConstrain, if part of the same
extension list passed to Base.build).
Properties
The set of positions for which to prevent
overlap.
Static property used to define the default attribute
configuration introduced by WidgetPositionConstrain.
Configuration Attributes
The node to constrain the widget's bounding box to, when setting xy. Can also be
set to true, to constrain to the viewport.
Default Value: null
If set to true, and WidgetPositionAlign is also added to the Widget,
constrained positioning will attempt to prevent the widget's bounding box from overlapping
the element to which it has been aligned, by flipping the orientation of the alignment
for corner based alignments
Methods
protected
void
_afterConstrainChange
(
e
)
After change listener for the "constrain" attribute, responsible
for updating the UI, in response to attribute changes.
- Parameters:
-
e
<EventFacade>
The event facade
protected
void
_bindUIPosConstrained
(
)
Binds event listeners responsible for updating the UI state in response to
Widget constrained positioning related state changes.
This method is invoked after bindUI is invoked for the Widget class
using YUI's aop infrastructure.
protected
Number
_constrain
(
val
,
axis
,
nodeRegion
,
constrainingRegion
)
The method which performs the actual constrain calculations for a given axis ("x" or "y") based
on the regions provided.
- Parameters:
-
val
<Number>
The value to constrain
-
axis
<String>
The axis to use for constrainment
-
nodeRegion
<Region>
The region of the node to constrain
-
constrainingRegion
<Region>
The region of the node (or viewport) to constrain to
- Returns:
Number
- The constrained value
protected
void
_constrainOnXYChange
(
e
)
The on change listener for the "xy" attribute. Modifies the event facade's
newVal property with the constrained XY value.
- Parameters:
-
e
<EventFacade>
The event facade for the attribute change
protected
Number
_preventOverlap
(
val
,
axis
,
nodeRegion
,
constrainingRegion
)
The method which performs the preventOverlap calculations for a given axis ("x" or "y") based
on the value and regions provided.
- Parameters:
-
val
<Number>
The value being constrain
-
axis
<String>
The axis to being constrained
-
nodeRegion
<Region>
The region of the node being constrained
-
constrainingRegion
<Region>
The region of the node (or viewport) we need to constrain to
- Returns:
Number
- The constrained value
protected
void
_setConstrain
(
val
)
The setter implementation for the "constrain" attribute.
- Parameters:
-
val
<Node | boolean>
The attribute value
void
constrain
(
xy
,
node
)
Constrains the widget's bounding box to a node (or the viewport). If xy or node are not
passed in, the current position and the value of "constrain" will be used respectively.
The widget's position will be changed to the constrained position.
- Parameters:
-
xy
<Array>
Optional. The xy values to constrain
-
node
<Node | boolean>
Optional. The node to constrain to, or true for the viewport
Array
getConstrainedXY
(
xy
,
node
)
Calculates the constrained positions for the XY positions provided, using
the provided node argument is passed in. If no node value is passed in, the value of
the "constrain" attribute is used.
- Parameters:
-
xy
<Array>
The xy values to constrain
-
node
<Node | boolean>
Optional. The node to constrain to, or true for the viewport
- Returns:
Array
- The constrained xy values
Events
constrainChange
(
event
)
Fires when the value for the configuration attribute 'constrain' is changed. You can listen for the event using the
on method if you wish to be notified before the attribute's value has changed, or using the
after method if you wish to be notified after the attribute's value has changed.
- Parameters:
-
event<Event.Facade>
An Event Facade object with the following attribute specific properties added: - prevVal
- The value of the attribute, prior to it being set
- newVal
- The value the attribute is to be set to
- attrName
- The name of the attribute being set
- subAttrName
- If setting a property within the attribute's value, the name of the sub-attribute property being set
preventOverlapChange
(
event
)
Fires when the value for the configuration attribute 'preventOverlap' is changed. You can listen for the event using the
on method if you wish to be notified before the attribute's value has changed, or using the
after method if you wish to be notified after the attribute's value has changed.
- Parameters:
-
event<Event.Facade>
An Event Facade object with the following attribute specific properties added: - prevVal
- The value of the attribute, prior to it being set
- newVal
- The value the attribute is to be set to
- attrName
- The name of the attribute being set
- subAttrName
- If setting a property within the attribute's value, the name of the sub-attribute property being set