<?xml version="1.0" encoding="UTF-8" ?>
<schema
    xmlns="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:base="https://geocortex.com/layout/v1"
    xmlns:tns="https://geocortex.com/layout/mobile/v1"
    targetNamespace="https://geocortex.com/layout/mobile/v1"
    elementFormDefault="qualified"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
    <import namespace="https://geocortex.com/layout/v1" schemaLocation="./layout-common.xsd" />

    <element name="taskbar" substitutionGroup="base:component">
        <annotation>
            <documentation xml:lang="en">
                Organizes child components into separate items in the taskbar.
                The item names will correspond to the child components' titles.
                The item icons will correspond to the child components' icons.
            </documentation>
        </annotation>
        <complexType>
            <complexContent>
                <extension base="base:Component">
                    <choice>
                        <element ref="base:component" minOccurs="0" maxOccurs="unbounded" />
                    </choice>
                    <attribute name="orientation">
                        <annotation>
                            <documentation xml:lang="en">
                                The orientation of the taskbar. The default is auto.
                            </documentation>
                        </annotation>
                        <simpleType>
                            <restriction base="string">
                                <enumeration value="auto" />
                                <enumeration value="horizontal" />
                                <enumeration value="vertical" />
                            </restriction>
                        </simpleType>
                    </attribute>
                </extension>
            </complexContent>
        </complexType>
    </element>

    <element name="offline-areas" substitutionGroup="base:component">
        <annotation>
            <documentation xml:lang="en">
                Displays a list of offline map areas from Portal or ArcGIS
                Online, and allows users to download, sync, or remove their
                data.
            </documentation>
        </annotation>
        <complexType>
            <complexContent>
                <extension base="base:Component" />
            </complexContent>
        </complexType>
    </element>

    <element name="create-offline-area" substitutionGroup="base:component">
        <annotation>
            <documentation xml:lang="en">
                Displays a form to use to create a new custom offline map area.
            </documentation>
        </annotation>
        <complexType>
            <complexContent>
                <extension base="base:Component" />
            </complexContent>
        </complexType>
    </element>

    <element name="disconnected-mode" substitutionGroup="base:component">
        <annotation>
            <documentation xml:lang="en">
                A component that displays a persistent visual indicator when the app is in
                Disconnected Mode, automatically hiding when the mode is turned off.
            </documentation>
        </annotation>
        <complexType>
            <complexContent>
                <extension base="base:Component" />
            </complexContent>
        </complexType>
    </element>

    <element name="search-new-extent" substitutionGroup="base:component">
        <annotation>
            <documentation xml:lang="en">
                A component that provides a single button that allows the user
                to "search this area" when the extent of the map changes to be
                different than the extent that was originally searched.
            </documentation>
        </annotation>
        <complexType>
            <complexContent>
                <extension base="base:Component" />
            </complexContent>
        </complexType>
    </element>

    <element name="version" substitutionGroup="base:component">
        <annotation>
            <documentation xml:lang="en">
                A component that displays a string indicating the current version of the app.
            </documentation>
        </annotation>
        <complexType>
            <complexContent>
                <extension base="base:Component" />
            </complexContent>
        </complexType>
    </element>

    <element name="status-bar-buffer" substitutionGroup="base:component">
        <annotation>
            <documentation xml:lang="en">
                A component that takes up an amount of vertical space equal to
                the size of the taskbar on the current platform.
            </documentation>
        </annotation>
        <complexType>
            <complexContent>
                <extension base="base:Component" />
            </complexContent>
        </complexType>
    </element>

    <element name="add-feature-select-layer" substitutionGroup="base:component">
        <annotation>
            <documentation xml:lang="en">
                A component that allows a user to select a layer to which a feature will be added.
            </documentation>
        </annotation>
        <complexType>
            <complexContent mixed="true">
                <extension base="base:Component" />
            </complexContent>
        </complexType>
    </element>

    <element name="add-feature" substitutionGroup="base:component">
        <annotation>
            <documentation xml:lang="en">
                A component that displays a form for collecting feature attributes and
                geometry. Allows a user to save their new feature.
            </documentation>
        </annotation>
        <complexType>
            <complexContent mixed="true">
                <extension base="base:Component" />
            </complexContent>
        </complexType>
    </element>

    <element name="update-feature" substitutionGroup="base:component">
        <annotation>
            <documentation xml:lang="en">
                A component that displays a form for editing a feature's attributes and
                geometry. Allows a user to save their changes to the feature.
            </documentation>
        </annotation>
        <complexType>
            <complexContent mixed="true">
                <extension base="base:Component" />
            </complexContent>
        </complexType>
    </element>

    <element name="add-related-feature" substitutionGroup="base:component">
        <annotation>
            <documentation xml:lang="en">
                A component that displays a form for collecting feature attributes and
                geometry. Allows a user to save their new feature and relates this feature with an
                existing feature based on the relationship properties of the feature sources.
            </documentation>
        </annotation>
        <complexType>
            <complexContent mixed="true">
                <extension base="base:Component" />
            </complexContent>
        </complexType>
    </element>

    <element name="gnss-metadata" substitutionGroup="base:component">
        <annotation>
            <documentation xml:lang="en">
                A component that provides a real-time display of specific
                metadata values being received from a connected and active GNSS
                receiver.
            </documentation>
        </annotation>
        <complexType>
            <complexContent mixed="true">
                <extension base="base:Component" />
            </complexContent>
        </complexType>
    </element>

    <element name="gnss-device-selection" substitutionGroup="base:component">
        <annotation>
            <documentation xml:lang="en">
                A component that provides a form which allows the user to view and select between
                multiple connected GNSS sources (including external devices and integrated
                GPS). Selecting one will activate it as the current source of geolocation for the
                app.
            </documentation>
        </annotation>
        <complexType>
            <complexContent mixed="true">
                <extension base="base:Component" />
            </complexContent>
        </complexType>
    </element>

    <element name="gnss-device-settings" substitutionGroup="base:component">
        <annotation>
            <documentation xml:lang="en">
                A component that provides a form which allows the user to view, edit and save the
                settings for an external GNSS device.
            </documentation>
        </annotation>
        <complexType>
            <complexContent mixed="true">
                <extension base="base:Component" />
            </complexContent>
        </complexType>
    </element>

    <element name="geometry-toolbar" substitutionGroup="base:component">
        <annotation>
            <documentation xml:lang="en">
                A component that displays a toolbar containing buttons for geometry and measurement
                operations.
            </documentation>
        </annotation>
        <complexType>
            <complexContent mixed="true">
                <extension base="base:Component">
                    <attribute name="style">
                        <annotation>
                            <documentation xml:lang="en">
                                The desired visual style for the component.
                            </documentation>
                        </annotation>
                        <simpleType>
                            <restriction base="string">
                                <enumeration value="round" />
                                <enumeration value="square" />
                            </restriction>
                        </simpleType>
                    </attribute>
                </extension>
            </complexContent>
        </complexType>
    </element>

    <element name="scroll" substitutionGroup="base:component">
        <annotation>
            <documentation xml:lang="en">
                A component that allows a user to scroll content. Note: Nested
                scrolling is not supported, so only nest non-scrolling
                components.
            </documentation>
        </annotation>
        <complexType>
            <complexContent mixed="true">
                <extension base="base:Component">
                    <choice>
                        <element ref="base:component" minOccurs="0" maxOccurs="unbounded" />
                    </choice>
                </extension>
            </complexContent>
        </complexType>
    </element>
</schema>
