diff --git a/netbox/project-static/dist/netbox.js b/netbox/project-static/dist/netbox.js index af1040035..60f8977d3 100644 Binary files a/netbox/project-static/dist/netbox.js and b/netbox/project-static/dist/netbox.js differ diff --git a/netbox/project-static/dist/netbox.js.map b/netbox/project-static/dist/netbox.js.map index a36700c23..d6ff2317c 100644 Binary files a/netbox/project-static/dist/netbox.js.map and b/netbox/project-static/dist/netbox.js.map differ diff --git a/netbox/project-static/src/select/classes/dynamicTomSelect.ts b/netbox/project-static/src/select/classes/dynamicTomSelect.ts index fccdf7674..f616adbe8 100644 --- a/netbox/project-static/src/select/classes/dynamicTomSelect.ts +++ b/netbox/project-static/src/select/classes/dynamicTomSelect.ts @@ -34,8 +34,8 @@ export class DynamicTomSelect extends TomSelect { // Set the null option (if any) const nullOption = this.input.getAttribute('data-null-option'); if (nullOption) { - let valueField = user_settings.valueField || 'value'; - let labelField = user_settings.labelField || 'text'; + let valueField = this.settings.valueField; + let labelField = this.settings.labelField; this.nullOption = {} this.nullOption[valueField] = 'null'; this.nullOption[labelField] = nullOption; diff --git a/netbox/project-static/src/select/dynamic.ts b/netbox/project-static/src/select/dynamic.ts index 60cdfa9e4..f7a272f71 100644 --- a/netbox/project-static/src/select/dynamic.ts +++ b/netbox/project-static/src/select/dynamic.ts @@ -1,6 +1,19 @@ import { getElements } from '../util'; import { DynamicTomSelect } from './classes/dynamicTomSelect' +const VALUE_FIELD = 'id'; +const LABEL_FIELD = 'display'; + + +// Render the HTML for a dropdown option +function renderOption(data: any, escape: Function) { + // If the object has a `_depth` property, indent its display text + if (typeof data._depth === 'number' && data._depth > 0) { + return `
${'─'.repeat(data._depth)} ${escape(data[LABEL_FIELD])}
`; + } + return `
${escape(data[LABEL_FIELD])}
`; +} + // Initialize ', preload: 'focus', maxOptions: 100, + render: { + option: renderOption + } }); }