From b66cb6090ca69732e9ae3385a0840dfbe0658151 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 2 May 2024 09:08:17 -0400 Subject: [PATCH] Enable remove_button plugin only for multi-select fields --- netbox/project-static/dist/netbox.js | Bin 375713 -> 375779 bytes netbox/project-static/dist/netbox.js.map | Bin 340518 -> 340581 bytes netbox/project-static/src/select/config.ts | 34 ++++++++++++++------ netbox/project-static/src/select/dynamic.ts | 4 +-- netbox/project-static/src/select/static.ts | 6 ++-- 5 files changed, 29 insertions(+), 15 deletions(-) diff --git a/netbox/project-static/dist/netbox.js b/netbox/project-static/dist/netbox.js index c926e009708ea7206c8e7ddf2d4b5d4da4f0669b..5f0c8029ce556da7bae2177848fa13e50bc6b514 100644 GIT binary patch delta 223 zcmZ4ZUF`99v4$4L7N!>FEi4o2EYeEzl1no4^AySwH8L|bt8-FI6iPB}t81-`QcFsU z@_-z@09eqRCQ88l8ME|eu=rMwMsy>B{`|KN-EVr zaWK19$<9VU(=MS_Co^;UdmctfV>LAmpovAPx%p+Oa3jHLt(1bmqDr-zI@JX^rRkY@ w#a1PmwYAgr>sh9-fLyoza6OASBMZ<3&F!}uSk6m;McY@-WZAxQChHGH0N&kG4FCWD delta 172 zcmaF-U2NfZv4$4L7N!>FEi4o2RLc^J6v`59s|#{U(=+pmt*VoAQWJ~flS)fU^7E{! zGfHxEtTLycsAExO%$)wNjz!!fGgGf5vm__AR>{srKhrLuR;MU6H@_?ut_Lh@r4$4f zRVc~GELO-YNzGNNt*y0AE6qzT$;{7F2uPWJa4w7J^wxTolI?%%S;QH)OEj{amuP=I MlV$tsnXEq)0qiYAJOBUy diff --git a/netbox/project-static/dist/netbox.js.map b/netbox/project-static/dist/netbox.js.map index 49694a46b19a6b3564941434cb0af00da924c248..a393bdba0f55521e8cf158199b03d6a4672d6067 100644 GIT binary patch delta 195 zcmZ4XMC9ock%kt=7N!>FEi7ksOx@FTA{`y`opjuRq_d8*qqDgSi0!H4>F8Jv5_UIr z(g}5R4Ae<I$J^1xcY3idOCN%}olTFWLFEi7ks)LhbZ+#MZ#bvzv%gLRx8oeP|F0wGM-0G&if$7GOT z)O03Y7A;BFB3GScN5@p4kfW=PucM>CPO+1VW0BMJ`N}M!)9Z9ulvzC;T{4}fuhM1d XgD|%{>amoFfY{|u+xI!KEPoFGfuSfB diff --git a/netbox/project-static/src/select/config.ts b/netbox/project-static/src/select/config.ts index ccc3e1edb..8d61c72b7 100644 --- a/netbox/project-static/src/select/config.ts +++ b/netbox/project-static/src/select/config.ts @@ -1,10 +1,24 @@ -export const config = { - plugins: { - // Provides the "clear" button on the widget - clear_button: { - html: (data: Dict) => - ``, - }, - remove_button: { title: 'Remove this item' }, - }, -}; +interface PluginConfig { + [plugin: string]: object; +} + +export function getPlugins(element: HTMLSelectElement): object { + let plugins: PluginConfig = {} + + // Enable "clear all" button + plugins.clear_button = { + html: (data: Dict) => + ``, + } + + // Enable individual "remove" buttons for items on multi-select fields + if (element.hasAttribute('multiple')) { + plugins.remove_button = { + title: 'Remove', + } + } + + return { + plugins: plugins, + } +} diff --git a/netbox/project-static/src/select/dynamic.ts b/netbox/project-static/src/select/dynamic.ts index 10ce955c2..c1ac468e9 100644 --- a/netbox/project-static/src/select/dynamic.ts +++ b/netbox/project-static/src/select/dynamic.ts @@ -1,7 +1,7 @@ import { TomOption } from 'tom-select/src/types'; import { escape_html } from 'tom-select/src/utils'; import { DynamicTomSelect } from './classes/dynamicTomSelect'; -import { config } from './config'; +import { getPlugins } from './config'; import { getElements } from '../util'; const VALUE_FIELD = 'id'; @@ -44,7 +44,7 @@ function renderItem(data: TomOption, escape: typeof escape_html) { export function initDynamicSelects(): void { for (const select of getElements('select.api-select:not(.tomselected)')) { new DynamicTomSelect(select, { - ...config, + ...getPlugins(select), valueField: VALUE_FIELD, labelField: LABEL_FIELD, maxOptions: MAX_OPTIONS, diff --git a/netbox/project-static/src/select/static.ts b/netbox/project-static/src/select/static.ts index f97a281cc..ab80e4fc5 100644 --- a/netbox/project-static/src/select/static.ts +++ b/netbox/project-static/src/select/static.ts @@ -1,7 +1,7 @@ import { TomOption } from 'tom-select/src/types'; import TomSelect from 'tom-select'; import { escape_html } from 'tom-select/src/utils'; -import { config } from './config'; +import { getPlugins } from './config'; import { getElements } from '../util'; // Initialize