UNPKG

angular2

Version:

Angular 2 - a web framework for modern web apps

1 lines 12 kB
{"version":3,"sources":["switch.js"],"names":[],"mappings":"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","file":"angular2/src/directives/switch.js","sourcesContent":["import {Decorator, Viewport} from 'angular2/src/core/annotations/annotations';\nimport {ViewContainer} from 'angular2/src/core/compiler/view_container';\nimport {isPresent, isBlank, normalizeBlank} from 'angular2/src/facade/lang';\nimport {ListWrapper, List, MapWrapper, Map} from 'angular2/src/facade/collection';\nimport {Parent} from 'angular2/src/core/annotations/visibility';\n\n/**\n * The `Switch` directive is used to conditionally swap DOM structure on your template based on a\n * scope expression.\n * Elements within `Switch` but without `SwitchWhen` or `SwitchDefault` directives will be\n * preserved at the location as specified in the template.\n *\n * `Switch` simply chooses nested elements and makes them visible based on which element matches\n * the value obtained from the evaluated expression. In other words, you define a container element\n * (where you place the directive), place an expression on the **`[switch]=\"...\"` attribute**),\n * define any inner elements inside of the directive and place a `[switch-when]` attribute per\n * element.\n * The when attribute is used to inform Switch which element to display when the expression is\n * evaluated. If a matching expression is not found via a when attribute then an element with the\n * default attribute is displayed.\n *\n * # Example:\n *\n * ```\n * <ANY [switch]=\"expression\">\n * <template [switch-when]=\"whenExpression1\">...</template>\n * <template [switch-when]=\"whenExpression1\">...</template>\n * <template [switch-default]>...</template>\n * </ANY>\n * ```\n *\n * @exportedAs angular2/directives\n */\n@Decorator({\n selector: '[switch]',\n properties: {\n 'value': 'switch'\n }\n})\nexport class Switch {\n _switchValue: any;\n _useDefault: boolean;\n _valueViewContainers: Map;\n _activeViewContainers: List<ViewContainer>;\n\n constructor() {\n this._valueViewContainers = MapWrapper.create();\n this._activeViewContainers = ListWrapper.create();\n this._useDefault = false;\n }\n\n set value(value) {\n // Empty the currently active ViewContainers\n this._emptyAllActiveViewContainers();\n\n // Add the ViewContainers matching the value (with a fallback to default)\n this._useDefault = false;\n var containers = MapWrapper.get(this._valueViewContainers, value);\n if (isBlank(containers)) {\n this._useDefault = true;\n containers = normalizeBlank(MapWrapper.get(this._valueViewContainers, _whenDefault));\n }\n this._activateViewContainers(containers);\n\n this._switchValue = value;\n }\n\n _onWhenValueChanged(oldWhen, newWhen, viewContainer: ViewContainer) {\n this._deregisterViewContainer(oldWhen, viewContainer);\n this._registerViewContainer(newWhen, viewContainer);\n\n if (oldWhen === this._switchValue) {\n viewContainer.remove();\n ListWrapper.remove(this._activeViewContainers, viewContainer);\n } else if (newWhen === this._switchValue) {\n if (this._useDefault) {\n this._useDefault = false;\n this._emptyAllActiveViewContainers();\n }\n viewContainer.create();\n ListWrapper.push(this._activeViewContainers, viewContainer);\n }\n\n // Switch to default when there is no more active ViewContainers\n if (this._activeViewContainers.length === 0 && !this._useDefault) {\n this._useDefault = true;\n this._activateViewContainers(MapWrapper.get(this._valueViewContainers, _whenDefault));\n }\n }\n\n _emptyAllActiveViewContainers() {\n var activeContainers = this._activeViewContainers;\n for (var i = 0; i < activeContainers.length; i++) {\n activeContainers[i].remove();\n }\n this._activeViewContainers = ListWrapper.create();\n }\n\n _activateViewContainers(containers: List<ViewContainer>) {\n // TODO(vicb): assert(this._activeViewContainers.length === 0);\n if (isPresent(containers)) {\n for (var i = 0; i < containers.length; i++) {\n containers[i].create();\n }\n this._activeViewContainers = containers;\n }\n }\n\n _registerViewContainer(value, container: ViewContainer) {\n var containers = MapWrapper.get(this._valueViewContainers, value);\n if (isBlank(containers)) {\n containers = ListWrapper.create();\n MapWrapper.set(this._valueViewContainers, value, containers);\n }\n ListWrapper.push(containers, container);\n }\n\n _deregisterViewContainer(value, container: ViewContainer) {\n // `_whenDefault` is used a marker for non-registered whens\n if (value == _whenDefault) return;\n var containers = MapWrapper.get(this._valueViewContainers, value);\n if (containers.length == 1) {\n MapWrapper.delete(this._valueViewContainers, value);\n } else {\n ListWrapper.remove(containers, container);\n }\n }\n}\n\n/**\n * Defines a case statement as an expression.\n *\n * If multiple `SwitchWhen` match the `Switch` value, all of them are displayed.\n *\n * Example:\n *\n * ```\n * // match against a context variable\n * <template [switch-when]=\"contextVariable\">...</template>\n *\n * // match against a constant string\n * <template [switch-when]=\"'stringValue'\">...</template>\n * ```\n *\n * @exportedAs angular2/directives\n */\n@Viewport({\n selector: '[switch-when]',\n properties: {\n 'when' : 'switch-when'\n }\n})\nexport class SwitchWhen {\n _value: any;\n _switch: Switch;\n _viewContainer: ViewContainer;\n\n constructor(viewContainer: ViewContainer, @Parent() sswitch: Switch) {\n // `_whenDefault` is used as a marker for a not yet initialized value\n this._value = _whenDefault;\n this._switch = sswitch;\n this._viewContainer = viewContainer;\n }\n\n set when(value) {\n this._switch._onWhenValueChanged(this._value, value, this._viewContainer);\n this._value = value;\n }\n}\n\n\n/**\n * Defines a default case statement.\n *\n * Default case statements are displayed when no `SwitchWhen` match the `switch` value.\n *\n * Example:\n *\n * ```\n * <template [switch-default]>...</template>\n * ```\n *\n * @exportedAs angular2/directives\n */\n@Viewport({\n selector: '[switch-default]'\n})\nexport class SwitchDefault {\n constructor(viewContainer: ViewContainer, @Parent() sswitch: Switch) {\n sswitch._registerViewContainer(_whenDefault, viewContainer);\n }\n}\n\nvar _whenDefault = new Object();\n"]}