name: navigation
uploadPath: ../media/navigation

meta:
    label: "Navigation"
    muiIcon: navigation
    views:
        - type: simpleList
          mediaQuery: "(max-width:599px)"
          primaryText: tree

        - type: table
          mediaQuery: "(min-width:600px)"
          columns:
              - source: tree

permissions:
    public:
        methods:
            get: true
            post: false
            put: false
            delete: false
    user:
        methods:
            get: true
            post: false
            put: true
            delete: false

x-folding: &folding
    previewUnfolded:
        eval: |
            $this?.name + ' (Ziel: ' + ($this?.external ? $this?.externalUrl || '' :  ($this?.page || '') + ($this?.hash ? '#' + $this.hash : '')) + ')' + ($this?.elements?.length ? ' <small>' + $this?.elements?.length + ' Sub-Navigationselement(e)</small>' : '')
        raw: true
    previewFolded:
        eval: |
            $this?.name + ' (Ziel: ' + ($this?.external ? $this?.externalUrl || '' :  ($this?.page || '') + ($this?.hash ? '#' + $this.hash : '')) + ')' + ($this?.elements?.length ? ' <small>' + $this?.elements?.length + ' Sub-Navigationselement(e)</small>' : '')
        raw: true

x-elemente: &elemente
    name: elements
    type: object[]
    meta:
        label:
            de: Elemente
            en: elements
        folding: *folding

x-name: &name
    name: name
    type: string
    meta:
        label:
            de: Name
            en: name
        helperText:
            de: Dieser Name wird zur Anzeige in der Navigation verwendet.
            en: This name is used for display in the navigation.

x-page: &page
    name: page
    type: string
    meta:
        label:
            de: Seite pfad
            en: page path
        dependsOn:
            eval: |
                !$parent?.external
        containerProps:
            layout:
                size:
                    default: "col-6"
                    small: "col-12"
                    large: "col-6"

x-hash: &hash
    name: hash
    type: string
    meta:
        label:
            de: Anker
            en: anchor
        dependsOn:
            eval: |
                !$parent?.external
        helperText:
            de: Geben Sie hier den Anker ein, zu dem der Link führen soll. (ohne '#' am Anfang)
            en: Enter the anchor to which the link should lead. (without '#' at the beginning)
        containerProps:
            layout:
                size:
                    default: "col-6"
                    small: "col-12"
                    large: "col-6"

x-external: &external
    name: external
    type: boolean
    meta:
        label:
            de: Externer Link
            en: external link
        helperText:
            de: Wenn aktiviert, wird der Link in einem neuen Tab geöffnet.
            en: If activated, the link will be opened in a new tab.

x-externalUrl: &externalUrl
    name: externalUrl
    type: string
    meta:
        label:
            de: Externer Link
            en: external link
        dependsOn:
            eval: |
                $parent?.external
        helperText:
            de: Geben Sie hier die URL ein, zu der der Link führen soll.
            en: Enter the URL to which the link should lead.

fields:
    - name: tree
      type: number
      meta:
          label: Baum
          widget: select
          helperText:
              de: Die Servicenavigation sollte Seiten wie bspw. die Datneschutzerklärung oder das Impressum umfassen.
              en: The service navigation should include pages such as the data protection declaration or the imprint.
          defaultValue: 0
          choices:
              - id: 0
                name:
                    de: Hauptnavigation
                    en: main navigation
              - id: 1
                name:
                    de: Service Navigation
                    en: Service Navigation

              - id: 2
                name:
                    de: Rechtliche Navigation
                    en: Legal Navigation

    - <<: *elemente
      subFields:
          - *name
          - *external
          - *page
          - *hash
          - *externalUrl
          - <<: *elemente
            subFields:
                - *name
                - *external
                - *page
                - *hash
                - *externalUrl
indexes:
    - name: fulltext #  Ein eindeutiger Name für den Index. Es ist optional, wird jedoch empfohlen, um den Index später leicht identifizieren zu können.
      key: # Bestimmt, auf welche Felder der Index angewendet werden soll. Dies kann ein einfacher String sein, wenn der Index nur ein Feld umfasst, oder ein Array von Strings, wenn der Index mehrere Felder umfasst.
          - $text:$**
