{"record":{"id":"5529a634a7c8baf8","repo":"Dogfalo/materialize","slug":"nouislider-padding-option-must-be-numeric","errorCode":null,"errorMessage":"noUiSlider: 'padding' option must be numeric.","messagePattern":"noUiSlider: 'padding' option must be numeric\\.","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"extras/noUiSlider/nouislider.js","lineNumber":627,"sourceCode":"    }\n\n    function testLimit ( parsed, entry ) {\n\n        if ( !isNumeric(entry) ){\n            throw new Error(\"noUiSlider: 'limit' option must be numeric.\");\n        }\n\n        parsed.limit = parsed.spectrum.getMargin(entry);\n\n        if ( !parsed.limit || parsed.handles < 2 ) {\n            throw new Error(\"noUiSlider: 'limit' option is only supported on linear sliders with 2 or more handles.\");\n        }\n    }\n\n    function testPadding ( parsed, entry ) {\n\n        if ( !isNumeric(entry) ){\n            throw new Error(\"noUiSlider: 'padding' option must be numeric.\");\n        }\n\n        if ( entry === 0 ) {\n            return;\n        }\n\n        parsed.padding = parsed.spectrum.getMargin(entry);\n\n        if ( !parsed.padding ) {\n            throw new Error(\"noUiSlider: 'padding' option is only supported on linear sliders.\");\n        }\n\n        if ( parsed.padding < 0 ) {\n            throw new Error(\"noUiSlider: 'padding' option must be a positive number.\");\n        }\n\n        if ( parsed.padding >= 50 ) {\n            throw new Error(\"noUiSlider: 'padding' option must be less than half the range.\");","sourceCodeStart":609,"sourceCodeEnd":645,"githubUrl":"https://github.com/Dogfalo/materialize/blob/824e78248b3de81e383445e76ffb04cc3264fe7d/extras/noUiSlider/nouislider.js#L609-L645","documentation":"Thrown by testPadding when 'padding' fails isNumeric. padding reserves a non-selectable zone at each end of the slider and must be a real finite number; strings, null, and percentage-suffixed values are rejected.","triggerScenarios":"padding: '10', padding: null, padding: '10%', padding: NaN.","commonSituations":"String from a DOM attribute, a percentage string from the UI layer, or null used to mean 'no padding'.","solutions":["Pass a number: padding: 10.","Coerce with Number(raw) after an isFinite check (strip any '%' first).","Use 0 or omit padding to disable."],"exampleFix":"// before\npadding: \"10\"\n// after\npadding: 10","handlingStrategy":"validation","validationCode":"if (opts.padding != null) {\n  const raw = typeof opts.padding === 'string' ? parseFloat(opts.padding) : opts.padding;\n  if (typeof raw !== 'number' || !Number.isFinite(raw)) throw new TypeError('padding must be a number');\n  opts.padding = raw;\n}","typeGuard":"function isPadding(v) { return typeof v === 'number' && Number.isFinite(v); }","tryCatchPattern":"try { noUiSlider.create(el, opts); }\ncatch (e) { if (/padding' option must be numeric/.test(e.message)) { opts.padding = parseFloat(opts.padding); /* retry */ } else throw e; }","preventionTips":["Strip '%' suffixes and parseFloat percentage strings at the boundary.","Use 0 (or omit) to disable padding instead of null.","Type padding as number in your config interface."],"tags":["config","validation","padding","type-coercion"],"backgroundTag":null,"analyzedSha":"824e78248b3de81e383445e76ffb04cc3264fe7d","analyzedAt":"2026-08-13T04:14:22.506Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}