| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 | 
							- /*!
 
-  * All material copyright ESRI, All Rights Reserved, unless otherwise specified.
 
-  * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.
 
-  * v1.0.0-beta.82
 
-  */
 
- import { Component, Element, Listen, Method, State, h } from "@stencil/core";
 
- import { CSS } from "./resources";
 
- import { createObserver } from "../../utils/observers";
 
- /**
 
-  * @slot - A slot for adding `calcite-panel`s to the flow.
 
-  */
 
- export class Flow {
 
-   constructor() {
 
-     this.panelCount = 0;
 
-     this.flowDirection = null;
 
-     this.panels = [];
 
-     this.getFlowDirection = (oldPanelCount, newPanelCount) => {
 
-       const allowRetreatingDirection = oldPanelCount > 1;
 
-       const allowAdvancingDirection = oldPanelCount && newPanelCount > 1;
 
-       if (!allowAdvancingDirection && !allowRetreatingDirection) {
 
-         return null;
 
-       }
 
-       return newPanelCount < oldPanelCount ? "retreating" : "advancing";
 
-     };
 
-     this.updateFlowProps = () => {
 
-       const { panels } = this;
 
-       const newPanels = Array.from(this.el.querySelectorAll("calcite-panel"));
 
-       const oldPanelCount = panels.length;
 
-       const newPanelCount = newPanels.length;
 
-       const activePanel = newPanels[newPanelCount - 1];
 
-       const previousPanel = newPanels[newPanelCount - 2];
 
-       if (newPanelCount && activePanel) {
 
-         newPanels.forEach((panelNode) => {
 
-           panelNode.showBackButton = newPanelCount > 1;
 
-           panelNode.hidden = panelNode !== activePanel;
 
-         });
 
-       }
 
-       if (previousPanel) {
 
-         previousPanel.menuOpen = false;
 
-       }
 
-       this.panels = newPanels;
 
-       if (oldPanelCount !== newPanelCount) {
 
-         const flowDirection = this.getFlowDirection(oldPanelCount, newPanelCount);
 
-         this.panelCount = newPanelCount;
 
-         this.flowDirection = flowDirection;
 
-       }
 
-     };
 
-     this.panelItemMutationObserver = createObserver("mutation", this.updateFlowProps);
 
-   }
 
-   // --------------------------------------------------------------------------
 
-   //
 
-   //  Public Methods
 
-   //
 
-   // --------------------------------------------------------------------------
 
-   /**
 
-    * Removes the currently active `calcite-panel`.
 
-    */
 
-   async back() {
 
-     const lastItem = this.el.querySelector("calcite-panel:last-child");
 
-     if (!lastItem) {
 
-       return;
 
-     }
 
-     const beforeBack = lastItem.beforeBack
 
-       ? lastItem.beforeBack
 
-       : () => Promise.resolve();
 
-     return beforeBack.call(lastItem).then(() => {
 
-       lastItem.remove();
 
-       return lastItem;
 
-     });
 
-   }
 
-   // --------------------------------------------------------------------------
 
-   //
 
-   //  Lifecycle
 
-   //
 
-   // --------------------------------------------------------------------------
 
-   connectedCallback() {
 
-     var _a;
 
-     (_a = this.panelItemMutationObserver) === null || _a === void 0 ? void 0 : _a.observe(this.el, { childList: true, subtree: true });
 
-     this.updateFlowProps();
 
-   }
 
-   disconnectedCallback() {
 
-     var _a;
 
-     (_a = this.panelItemMutationObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
 
-   }
 
-   // --------------------------------------------------------------------------
 
-   //
 
-   //  Private Methods
 
-   //
 
-   // --------------------------------------------------------------------------
 
-   handleCalcitePanelBackClick() {
 
-     this.back();
 
-   }
 
-   // --------------------------------------------------------------------------
 
-   //
 
-   //  Render Methods
 
-   //
 
-   // --------------------------------------------------------------------------
 
-   render() {
 
-     const { flowDirection, panelCount } = this;
 
-     const frameDirectionClasses = {
 
-       [CSS.frame]: true,
 
-       [CSS.frameAdvancing]: flowDirection === "advancing",
 
-       [CSS.frameRetreating]: flowDirection === "retreating"
 
-     };
 
-     return (h("div", { class: frameDirectionClasses, key: panelCount },
 
-       h("slot", null)));
 
-   }
 
-   static get is() { return "calcite-flow"; }
 
-   static get encapsulation() { return "shadow"; }
 
-   static get originalStyleUrls() { return {
 
-     "$": ["flow.scss"]
 
-   }; }
 
-   static get styleUrls() { return {
 
-     "$": ["flow.css"]
 
-   }; }
 
-   static get states() { return {
 
-     "panelCount": {},
 
-     "flowDirection": {},
 
-     "panels": {}
 
-   }; }
 
-   static get methods() { return {
 
-     "back": {
 
-       "complexType": {
 
-         "signature": "() => Promise<HTMLCalcitePanelElement>",
 
-         "parameters": [],
 
-         "references": {
 
-           "Promise": {
 
-             "location": "global"
 
-           },
 
-           "HTMLCalcitePanelElement": {
 
-             "location": "global"
 
-           }
 
-         },
 
-         "return": "Promise<HTMLCalcitePanelElement>"
 
-       },
 
-       "docs": {
 
-         "text": "Removes the currently active `calcite-panel`.",
 
-         "tags": []
 
-       }
 
-     }
 
-   }; }
 
-   static get elementRef() { return "el"; }
 
-   static get listeners() { return [{
 
-       "name": "calcitePanelBackClick",
 
-       "method": "handleCalcitePanelBackClick",
 
-       "target": undefined,
 
-       "capture": false,
 
-       "passive": false
 
-     }]; }
 
- }
 
 
  |