{% import '_includes/forms' as forms %} {% set selectId = 'link-url-' ~ random() %} {% set siteId = 'link-siteid-' ~ random() %} {% set criteria = { status: null, } %} {# Some elements like Assets don't support `uri` like other elements do #} {# But by default, don't allow linking to elements that don't have links #} {% if link.checkElementUri() %} {% set criteria = criteria | merge({ uri: ':notempty:', }) %} {% endif %} {{ forms.elementSelect({ id: selectId, name: 'linkValue', elementType: link.elementType(), limit: 1, showSiteMenu: link.showSiteMenu, sources: link.getAvailableSources(), storageKey: 'hyper.' ~ field.handle ~ '.' ~ lowerElementType, elements: link.getElements(), selectionLabel: link.selectionLabel, criteria: criteria, }) }} {{ forms.hidden({ id: siteId, name: 'linkSiteId', value: link.linkSiteId, }) }} {# Native element selects don't record the chosen site id, so we add that handling here #} {% js %} new Craft.Hyper.ElementSelect('#{{ selectId | namespaceInputId }}', '#{{ siteId | namespaceInputId }}') {% endjs %}