/// <summary> /// Hide coroutine. /// </summary> /// <returns>The coroutine.</returns> /// <param name="item">Item.</param> protected virtual IEnumerator HideCoroutine(AccordionItem item) { if (ResizeMethod == ResizeMethods.Size) { yield return(StartCoroutine(Animations.Collapse(item.ContentObjectRect, AnimationDuration, IsHorizontal(), UnscaledTime, () => { if (IsHorizontal()) { item.ContentLayoutElement.preferredWidth = -1; } else { item.ContentLayoutElement.preferredHeight = -1; } }))); } else if (ResizeMethod == ResizeMethods.Flexible) { yield return(StartCoroutine(Animations.CollapseFlexible(item.ContentObjectRect, AnimationDuration, IsHorizontal()))); } item.Open = false; if (DisableClosed) { item.ContentObject.SetActive(false); } else { var axis = IsHorizontal() ? RectTransform.Axis.Horizontal : RectTransform.Axis.Vertical; item.ContentObjectRect.SetSizeWithCurrentAnchors(axis, 0f); } UpdateLayout(); OnToggleItem.Invoke(item); }
/// <summary> /// Adds the callback. /// </summary> /// <param name="item">Item.</param> protected virtual void AddCallback(AccordionItem item) { if (item.Open) { Open(item, false); } else { Close(item, false); } UnityAction callback = () => ToggleItem(item); var component = Utilites.GetOrAddComponent <AccordionItemComponent>(item.ToggleObject); component.OnClick.AddListener(callback); item.ContentObjectRect = item.ContentObject.transform as RectTransform; item.ContentLayoutElement = Utilites.GetOrAddComponent <LayoutElement>(item.ContentObject); if (IsHorizontal()) { item.ContentLayoutElement.minWidth = 0f; } else { item.ContentLayoutElement.minHeight = 0f; } UpdateItemSize(item); Components.Add(component); Callbacks.Add(callback); }
/// <summary> /// Adds the callback. /// </summary> /// <param name="item">Item.</param> protected virtual void AddCallback(AccordionItem item) { if (item.Open) { Open(item, false); } else { Close(item, false); } UnityAction callback = () => ToggleItem(item); var component = Utilites.GetOrAddComponent <AccordionItemComponent>(item.ToggleObject); component.OnClick.AddListener(callback); item.ContentObjectRect = item.ContentObject.transform as RectTransform; item.ContentLayoutElement = Utilites.GetOrAddComponent <LayoutElement>(item.ContentObject); item.ContentObjectHeight = item.ContentObjectRect.rect.height; if (item.ContentObjectHeight == 0f) { item.ContentObjectHeight = LayoutUtility.GetPreferredHeight(item.ContentObjectRect); } item.ContentObjectWidth = item.ContentObjectRect.rect.width; if (item.ContentObjectWidth == 0f) { item.ContentObjectWidth = LayoutUtility.GetPreferredWidth(item.ContentObjectRect); } Components.Add(component); Callbacks.Add(callback); }
/// <summary> /// Open coroutine. /// </summary> /// <param name="item">Item.</param> /// <returns>The coroutine.</returns> protected virtual IEnumerator OpenCoroutine(AccordionItem item) { item.ContentObject.SetActive(true); item.Open = true; if (ResizeMethod == ResizeMethods.Size) { yield return(StartCoroutine(Animations.Open(item.ContentObjectRect, AnimationDuration, IsHorizontal(), UnscaledTime, () => { if (IsHorizontal()) { item.ContentLayoutElement.preferredWidth = -1; } else { item.ContentLayoutElement.preferredHeight = -1; } LayoutUtilites.UpdateLayout(item.ContentObjectRect.parent.GetComponent <LayoutGroup>()); item.ContentObjectWidth = item.ContentObjectRect.rect.width; item.ContentObjectHeight = item.ContentObjectRect.rect.height; }))); } else if (ResizeMethod == ResizeMethods.Flexible) { yield return(StartCoroutine(Animations.OpenFlexible(item.ContentObjectRect, AnimationDuration, IsHorizontal()))); } UpdateLayout(); OnToggleItem.Invoke(item); }
/// <summary> /// Adds the callback. /// </summary> /// <param name="item">Item.</param> protected virtual void AddCallback(AccordionItem item) { if (item.Open) { Open(item, false); } else { Close(item, false); } UnityAction callback = () => ToggleItem(item); item.ToggleObject.AddComponent <AccordionItemComponent>().OnClick.AddListener(callback); item.ContentObjectRect = item.ContentObject.transform as RectTransform; item.ContentLayoutElement = item.ContentObject.GetComponent <LayoutElement>() ?? item.ContentObject.AddComponent <LayoutElement>(); item.ContentObjectHeight = item.ContentObjectRect.rect.height; if (item.ContentObjectHeight == 0f) { item.ContentObjectHeight = item.ContentLayoutElement.preferredHeight; } item.ContentObjectWidth = item.ContentObjectRect.rect.width; if (item.ContentObjectWidth == 0f) { item.ContentObjectWidth = item.ContentLayoutElement.preferredWidth; } callbacks.Add(callback); }
/// <summary> /// Close the specified item and animate. /// </summary> /// <param name="item">Item.</param> /// <param name="animate">If set to <c>true</c> animate.</param> protected virtual void Close(AccordionItem item, bool animate) { if (item.CurrentCorutine != null) { StopCoroutine(item.CurrentCorutine); item.ContentObject.SetActive(true); if (IsHorizontal()) { item.ContentObjectRect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, item.ContentObjectWidth); item.ContentLayoutElement.preferredWidth = item.ContentObjectWidth; } else { item.ContentObjectRect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, item.ContentObjectHeight); item.ContentLayoutElement.preferredHeight = item.ContentObjectHeight; } } if (item.ContentObjectRect != null) { item.ContentObjectHeight = item.ContentObjectRect.rect.height; item.ContentObjectWidth = item.ContentObjectRect.rect.width; } if (animate) { item.CurrentCorutine = StartCoroutine(HideCorutine(item)); } else { item.ContentObject.SetActive(false); item.Open = false; OnToggleItem.Invoke(item); } }
/// <summary> /// Function called when animation ended. /// </summary> /// <param name="item">Animated item.</param> /// <param name="isOpen">Is open?</param> protected virtual void AnimationEnded(AccordionItem item, bool isOpen) { item.CurrentCoroutine = null; if (ResizeMethod == ResizeMethods.Size) { if (IsHorizontal()) { item.ContentLayoutElement.preferredWidth = -1f; } else { item.ContentLayoutElement.preferredHeight = -1f; } } if (!isOpen) { item.Open = false; if (DisableClosed) { item.ContentObject.SetActive(false); } else { var axis = IsHorizontal() ? RectTransform.Axis.Horizontal : RectTransform.Axis.Vertical; item.ContentObjectRect.SetSizeWithCurrentAnchors(axis, 0f); } } UpdateLayout(); OnToggleItem.Invoke(item); }
/// <summary> /// Close the specified item. /// </summary> /// <param name="item">Item.</param> public virtual void Close(AccordionItem item) { if (!item.Open) { return; } Close(item, Animate); }
/// <summary> /// Close the specified item without animation. /// </summary> /// <param name="item">Item.</param> public virtual void ForceClose(AccordionItem item) { if (!item.Open) { return; } Close(item, false); }
/// <summary> /// Hides the corutine. /// </summary> /// <returns>The corutine.</returns> /// <param name="item">Item.</param> IEnumerator HideCorutine(AccordionItem item) { yield return(StartCoroutine(Animations.Collapse(item.ContentObjectRect))); item.Open = false; item.ContentObject.SetActive(false); OnToggleItem.Invoke(item); }
/// <summary> /// Opens the corutine. /// </summary> /// <returns>The corutine.</returns> /// <param name="item">Item.</param> IEnumerator OpenCorutine(AccordionItem item) { item.ContentObject.SetActive(true); item.Open = true; yield return(StartCoroutine(Animations.Open(item.ContentObjectRect))); OnToggleItem.Invoke(item); }
// Token: 0x06004632 RID: 17970 RVA: 0x0017DA10 File Offset: 0x0017BE10 private IEnumerator HideCorutine(AccordionItem item) { yield return(base.StartCoroutine(Animations.Collapse(item.ContentObjectRect, 0.5f))); item.Open = false; item.ContentObject.SetActive(false); this.OnToggleItem.Invoke(item); yield break; }
// Token: 0x06004631 RID: 17969 RVA: 0x0017D9EC File Offset: 0x0017BDEC private IEnumerator OpenCorutine(AccordionItem item) { item.ContentObject.SetActive(true); item.Open = true; yield return(base.StartCoroutine(Animations.Open(item.ContentObjectRect, 0.5f))); this.OnToggleItem.Invoke(item); yield break; }
/// <summary> /// Opens the corutine. /// </summary> /// <returns>The corutine.</returns> /// <param name="item">Item.</param> protected virtual IEnumerator OpenCorutine(AccordionItem item) { item.ContentObject.SetActive(true); item.Open = true; yield return(StartCoroutine(Animations.Open(item.ContentObjectRect, AnimationDuration, IsHorizontal()))); UpdateLayout(); OnToggleItem.Invoke(item); }
/// <summary> /// Hides the corutine. /// </summary> /// <returns>The corutine.</returns> /// <param name="item">Item.</param> protected virtual IEnumerator HideCorutine(AccordionItem item) { yield return(StartCoroutine(Animations.Collapse(item.ContentObjectRect, AnimationDuration, IsHorizontal()))); item.Open = false; item.ContentObject.SetActive(false); UpdateLayout(); OnToggleItem.Invoke(item); }
/// <summary> /// Open the specified item. /// </summary> /// <param name="item">Item.</param> public virtual void Open(AccordionItem item) { if (item.Open) { return; } if (OnlyOneOpen) { DataSource.Where(IsOpen).ForEach(Close); } Open(item, Animate); }
/// <summary> /// Update item size. /// </summary> /// <param name="item">Item.</param> protected static void UpdateItemSize(AccordionItem item) { LayoutUtilites.UpdateLayoutsRecursive(item.ContentObjectRect.transform); item.ContentObjectWidth = LayoutUtilites.IsWidthControlled(item.ContentObjectRect) ? LayoutUtility.GetPreferredWidth(item.ContentObjectRect) : item.ContentObjectRect.rect.width; item.ContentObjectHeight = LayoutUtilites.IsHeightControlled(item.ContentObjectRect) ? LayoutUtility.GetPreferredHeight(item.ContentObjectRect) : item.ContentObjectRect.rect.height; }
/// <summary> /// Open the specified item. /// </summary> /// <param name="item">Item.</param> public virtual void Open(AccordionItem item) { if (item.Open) { return; } if (OnlyOneOpen) { CloseAll(); } Open(item, Animate); }
/// <summary> /// Open the specified item without animation. /// </summary> /// <param name="item">Item.</param> public virtual void ForceOpen(AccordionItem item) { if (item.Open) { return; } if (OnlyOneOpen) { CloseAll(false); } Open(item, false); }
/// <summary> /// Open the specified item and animate. /// </summary> /// <param name="item">Item.</param> /// <param name="animate">If set to <c>true</c> animate.</param> protected virtual void Open(AccordionItem item, bool animate) { StopAnimation(item, true); if (animate) { item.CurrentCoroutine = StartCoroutine(OpenCoroutine(item)); } else { item.ContentObject.SetActive(true); item.Open = true; OnToggleItem.Invoke(item); } }
/// <summary> /// Close the specified item and animate. /// </summary> /// <param name="item">Item.</param> /// <param name="animate">If set to <c>true</c> animate.</param> protected virtual void Close(AccordionItem item, bool animate) { StopAnimation(item, false); if (animate) { item.CurrentCoroutine = StartCoroutine(HideCoroutine(item)); } else { item.ContentObject.SetActive(false); item.Open = false; OnToggleItem.Invoke(item); } }
/// <summary> /// Hide coroutine. /// </summary> /// <returns>The coroutine.</returns> /// <param name="item">Item.</param> protected virtual IEnumerator HideCoroutine(AccordionItem item) { UpdateItemSize(item); if (ResizeMethod == ResizeMethods.Size) { yield return(StartCoroutine(AnimationClose(item.ContentObjectRect, AnimationDuration, IsHorizontal(), UnscaledTime, DoNothing))); } else if (ResizeMethod == ResizeMethods.Flexible) { yield return(StartCoroutine(AnimationCloseFlexible(item.ContentObjectRect, AnimationDuration, IsHorizontal(), UnscaledTime, DoNothing))); } AnimationEnded(item, false); }
/// <summary> /// Open coroutine. /// </summary> /// <param name="item">Item.</param> /// <returns>The coroutine.</returns> protected virtual IEnumerator OpenCoroutine(AccordionItem item) { item.ContentObject.SetActive(true); item.Open = true; UpdateItemSize(item); if (ResizeMethod == ResizeMethods.Size) { yield return(StartCoroutine(AnimationOpen(item.ContentObjectRect, AnimationDuration, IsHorizontal(), UnscaledTime, DoNothing))); } else if (ResizeMethod == ResizeMethods.Flexible) { yield return(StartCoroutine(AnimationOpenFlexible(item.ContentObjectRect, AnimationDuration, IsHorizontal(), UnscaledTime, DoNothing))); } AnimationEnded(item, true); }
void RemoveCallback(AccordionItem item, int index) { if (item==null) { return ; } if (item.ToggleObject==null) { return ; } var component = item.ToggleObject.GetComponent<AccordionItemComponent>(); if ((component!=null) && (index < callbacks.Count)) { component.OnClick.RemoveListener(callbacks[index]); } }
/// <summary> /// Open the specified item and animate. /// </summary> /// <param name="item">Item.</param> /// <param name="animate">If set to <c>true</c> animate.</param> protected virtual void Open(AccordionItem item, bool animate) { if (item.CurrentCoroutine != null) { StopCoroutine(item.CurrentCoroutine); if (IsHorizontal()) { item.ContentObjectRect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, item.ContentObjectWidth); if (ResizeMethod == ResizeMethods.Size) { item.ContentLayoutElement.preferredWidth = -1f; } else if (ResizeMethod == ResizeMethods.Flexible) { item.ContentLayoutElement.flexibleWidth = 1f; } } else { item.ContentObjectRect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, item.ContentObjectHeight); if (ResizeMethod == ResizeMethods.Size) { item.ContentLayoutElement.preferredHeight = -1f; } else if (ResizeMethod == ResizeMethods.Flexible) { item.ContentLayoutElement.flexibleHeight = 1f; } } item.ContentObject.SetActive(false); } if (animate) { item.CurrentCoroutine = StartCoroutine(OpenCoroutine(item)); } else { item.ContentObject.SetActive(true); OnToggleItem.Invoke(item); } item.ContentObject.SetActive(true); item.Open = true; }
void AddCallback(AccordionItem item) { if (item.Open) { Open(item, false); } else { Close(item, false); } UnityAction callback = () => ToggleItem(item); item.ToggleObject.AddComponent<AccordionItemComponent>().OnClick.AddListener(callback); item.ContentObjectRect = item.ContentObject.transform as RectTransform; item.ContentObjectHeight = item.ContentObjectRect.rect.height; callbacks.Add(callback); }
/// <summary> /// Removes the callback. /// </summary> /// <param name="item">Item.</param> /// <param name="index">Index.</param> protected virtual void RemoveCallback(AccordionItem item, int index) { if (item == null) { return; } if (item.ToggleObject == null) { return; } var component = item.ToggleObject.GetComponent <AccordionItemComponent>(); if ((component != null) && (index < callbacks.Count)) { component.OnClick.RemoveListener(callbacks[index]); } }
// Token: 0x06004630 RID: 17968 RVA: 0x0017D974 File Offset: 0x0017BD74 private void Close(AccordionItem item, bool animate = false) { if (item.CurrentCorutine != null) { base.StopCoroutine(item.CurrentCorutine); item.ContentObject.SetActive(true); item.ContentObjectRect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, item.ContentObjectHeight); } if (animate) { item.CurrentCorutine = base.StartCoroutine(this.HideCorutine(item)); } else { item.ContentObject.SetActive(false); this.OnToggleItem.Invoke(item); } }
void AddCallback(AccordionItem item) { if (item.Open) { Open(item, false); } else { Close(item, false); } UnityAction callback = () => ToggleItem(item); item.ToggleObject.AddComponent <AccordionItemComponent>().OnClick.AddListener(callback); item.ContentObjectRect = item.ContentObject.transform as RectTransform; item.ContentObjectHeight = item.ContentObjectRect.rect.height; callbacks.Add(callback); }
/// <summary> /// Toggles the item. /// </summary> /// <param name="item">Item.</param> void ToggleItem(AccordionItem item) { if (item.Open) { if (!OnlyOneOpen) { Close(item); } } else { if (OnlyOneOpen) { Items.Where(IsOpen).ForEach(Close); } Open(item); } }
/// <summary> /// Toggles the item. /// </summary> /// <param name="item">Item.</param> public virtual void ToggleItem(AccordionItem item) { if (item.Open) { if (!OnlyOneOpen) { Close(item); } } else { if (OnlyOneOpen) { DataSource.Where(IsOpen).ForEach(Close); } Open(item); } }
/// <summary> /// Toggles the item. /// </summary> /// <param name="item">Item.</param> public virtual void ToggleItem(AccordionItem item) { if (item.Open) { if (!OnlyOneOpen || AllItemsCanBeClosed) { Close(item); } } else { if (OnlyOneOpen) { CloseAll(); } Open(item); } }
void Open(AccordionItem item) { Open(item, Animate); }
void Close(AccordionItem item) { Close(item, Animate); }
bool IsOpen(AccordionItem item) { return item.Open; }
/// <summary> /// Close the specified item and animate. /// </summary> /// <param name="item">Item.</param> /// <param name="animate">If set to <c>true</c> animate.</param> void Close(AccordionItem item, bool animate) { if (item.CurrentCorutine!=null) { StopCoroutine(item.CurrentCorutine); item.ContentObject.SetActive(true); item.ContentObjectRect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, item.ContentObjectHeight); } if (animate) { item.CurrentCorutine = StartCoroutine(HideCorutine(item)); } else { item.ContentObject.SetActive(false); item.Open = false; OnToggleItem.Invoke(item); } }
/// <summary> /// Opens the corutine. /// </summary> /// <returns>The corutine.</returns> /// <param name="item">Item.</param> IEnumerator OpenCorutine(AccordionItem item) { item.ContentObject.SetActive(true); item.Open = true; yield return StartCoroutine(Animations.Open(item.ContentObjectRect)); OnToggleItem.Invoke(item); }
/// <summary> /// Hides the corutine. /// </summary> /// <returns>The corutine.</returns> /// <param name="item">Item.</param> IEnumerator HideCorutine(AccordionItem item) { yield return StartCoroutine(Animations.Collapse(item.ContentObjectRect)); item.Open = false; item.ContentObject.SetActive(false); OnToggleItem.Invoke(item); }