diff --git a/examples/vite-demo-vanilla-bundle/package.json b/examples/vite-demo-vanilla-bundle/package.json index a669f76a8..0fbdb7cf7 100644 --- a/examples/vite-demo-vanilla-bundle/package.json +++ b/examples/vite-demo-vanilla-bundle/package.json @@ -27,7 +27,7 @@ "fetch-jsonp": "^1.2.3", "flatpickr": "^4.6.13", "moment-mini": "^2.29.4", - "multiple-select-vanilla": "^0.4.3", + "multiple-select-vanilla": "^0.4.4", "rxjs": "^7.8.1", "whatwg-fetch": "^3.6.2" }, diff --git a/packages/common/package.json b/packages/common/package.json index 1bb89af46..bcd542117 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -78,7 +78,7 @@ "dompurify": "^3.0.3", "flatpickr": "^4.6.13", "moment-mini": "^2.29.4", - "multiple-select-vanilla": "^0.4.3", + "multiple-select-vanilla": "^0.4.4", "slickgrid": "^4.0.0", "sortablejs": "^1.15.0", "un-flatten-tree": "^2.0.12" diff --git a/packages/common/src/filters/selectFilter.ts b/packages/common/src/filters/selectFilter.ts index d630ac5bd..897ffa45d 100644 --- a/packages/common/src/filters/selectFilter.ts +++ b/packages/common/src/filters/selectFilter.ts @@ -416,6 +416,7 @@ export class SelectFilter implements Filter { filter: false, // input search term on top of the select option list maxHeight: 275, single: true, + useSelectOptionLabelToHtml: this.columnFilter?.enableRenderHtml ?? false, sanitizer: (dirtyHtml: string) => sanitizeTextByAvailableSanitizer(this.gridOptions, dirtyHtml), // we will subscribe to the onClose event for triggering our callback // also add/remove "filled" class for styling purposes diff --git a/packages/common/src/services/domUtilities.ts b/packages/common/src/services/domUtilities.ts index 6b06b75d6..5d886dce5 100644 --- a/packages/common/src/services/domUtilities.ts +++ b/packages/common/src/services/domUtilities.ts @@ -89,8 +89,6 @@ export function buildMultipleSelectDataCollection(type: 'editor' | 'filter', col // sanitize any unauthorized html tags like script and others // for the remaining allowed tags we'll permit all attributes optionText = sanitizeTextByAvailableSanitizer(gridOptions, optionText, sanitizedOptions); - } else { - optionText = htmlEncode(optionText); } selectOption.text = optionText; @@ -297,16 +295,19 @@ export function findWidthOrDefault(inputWidth?: number | string, defaultValue = * HTML encode using a plain
* Create a in-memory div, set it's inner text(which a div can encode) * then grab the encoded contents back out. The div never exists on the page. + * @param {String} inputValue - input value to be encoded + * @return {String} */ export function htmlEncode(inputValue: string): string { - const entityMap = { + const val = typeof inputValue === 'string' ? inputValue : String(inputValue); + const entityMap: { [char: string]: string; } = { '&': '&', '<': '<', '>': '>', '"': '"', - '\'': ''' + '\'': ''', }; - return (inputValue || '').toString().replace(/[&<>"']/g, (s) => (entityMap as any)[s]); + return (val || '').toString().replace(/[&<>"']/g, (s) => entityMap[s as keyof { [char: string]: string; }]); } /** diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1f6c87829..30e25e629 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -173,8 +173,8 @@ importers: specifier: ^2.29.4 version: 2.29.4 multiple-select-vanilla: - specifier: ^0.4.3 - version: 0.4.3 + specifier: ^0.4.4 + version: 0.4.4 rxjs: specifier: ^7.8.1 version: 7.8.1 @@ -243,8 +243,8 @@ importers: specifier: ^2.29.4 version: 2.29.4 multiple-select-vanilla: - specifier: ^0.4.3 - version: 0.4.3 + specifier: ^0.4.4 + version: 0.4.4 slickgrid: specifier: ^4.0.0 version: 4.0.0 @@ -7079,8 +7079,8 @@ packages: minimatch: 3.1.2 dev: true - /multiple-select-vanilla@0.4.3: - resolution: {integrity: sha512-l3MNcn/eB1TZKPUlGuNFEKix16vbKCkeksHFUeNCWHSZsgTo0GezpHiT82BSwtDLzjwx1Q4ykKvXKG/49Jk8Wg==} + /multiple-select-vanilla@0.4.4: + resolution: {integrity: sha512-R6Sl93PyYAGL8LFUkp8W+ojdBEdVNZYd/eV2H+37rcolMKgyssjA5KsHO1d+5JnO6rr4Xm7npAmGfuHNehBM0g==} dev: false /mute-stream@1.0.0: