{"record":{"id":"58393c72c56014ff","repo":"Dogfalo/materialize","slug":"nouislider-cssclasses-must-be-an-object","errorCode":null,"errorMessage":"noUiSlider: 'cssClasses' must be an object.","messagePattern":"noUiSlider: 'cssClasses' must be an object\\.","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"extras/noUiSlider/nouislider.js","lineNumber":755,"sourceCode":"            return true;\n        }\n\n        throw new Error(\"noUiSlider: 'format' requires 'to' and 'from' methods.\");\n    }\n\n    function testCssPrefix ( parsed, entry ) {\n\n        if ( entry !== undefined && typeof entry !== 'string' && entry !== false ) {\n            throw new Error(\"noUiSlider: 'cssPrefix' must be a string or `false`.\");\n        }\n\n        parsed.cssPrefix = entry;\n    }\n\n    function testCssClasses ( parsed, entry ) {\n\n        if ( entry !== undefined && typeof entry !== 'object' ) {\n            throw new Error(\"noUiSlider: 'cssClasses' must be an object.\");\n        }\n\n        if ( typeof parsed.cssPrefix === 'string' ) {\n            parsed.cssClasses = {};\n\n            for ( var key in entry ) {\n                if ( !entry.hasOwnProperty(key) ) { continue; }\n\n                parsed.cssClasses[key] = parsed.cssPrefix + entry[key];\n            }\n        } else {\n            parsed.cssClasses = entry;\n        }\n    }\n\n    function testUseRaf ( parsed, entry ) {\n        if ( entry === true || entry === false ) {\n            parsed.useRequestAnimationFrame = entry;","sourceCodeStart":737,"sourceCodeEnd":773,"githubUrl":"https://github.com/Dogfalo/materialize/blob/824e78248b3de81e383445e76ffb04cc3264fe7d/extras/noUiSlider/nouislider.js#L737-L773","documentation":"The 'cssClasses' option overrides the map of CSS class names noUiSlider uses internally. It must be a plain object (or undefined for defaults); the library iterates its keys with for-in to rebuild class names when cssPrefix is set, so a non-object breaks that loop.","triggerScenarios":"Pass options.cssClasses as a string, number, array, boolean, or null. For example cssClasses: 'my-class' or cssClasses: ['a','b'].","commonSituations":"Developers pass a single class string instead of a map, pass null to 'reset' (use undefined), or pass an array of class names. Also occurs when cssClasses is sourced from JSON that serialized an object as an array.","solutions":["Pass an object whose keys map to class name strings, matching the default cssClasses structure.","Omit cssClasses to use the built-in defaults.","If overriding only some classes, spread defaults: cssClasses: { ...defaultCssClasses, target: 'my-target' }."],"exampleFix":"// before\nnoUiSlider.create(el, { start: 0, range:{min:0,max:100}, cssClasses: 'slider' });\n// after\nnoUiSlider.create(el, { start: 0, range:{min:0,max:100}, cssClasses: { target: 'slider' } });","handlingStrategy":"type-guard","validationCode":"function assertCssClasses(opts) {\n  if (opts.cssClasses !== undefined && (typeof opts.cssClasses !== 'object' || opts.cssClasses === null)) {\n    throw new TypeError('cssClasses must be an object');\n  }\n}","typeGuard":"function isCssClassesMap(v) {\n  return v === undefined || (typeof v === 'object' && v !== null && !Array.isArray(v));\n}","tryCatchPattern":null,"preventionTips":["Pass a plain object map, not a string or array.","Spread defaults when overriding only some classes.","Coerce null to undefined before passing."],"tags":["nouislider","validation","configuration","css"],"backgroundTag":null,"analyzedSha":"824e78248b3de81e383445e76ffb04cc3264fe7d","analyzedAt":"2026-08-13T04:14:22.506Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}