Replaces JSON textarea with professional Excel-like spreadsheet interface for managing product variant properties. Features: - Handsontable 14.6.1 spreadsheet component - Property presets (Size, Color, Material, Storage, Custom) - Inline cell editing with Tab/Enter navigation - Context menu for add/remove rows and columns - Keyboard shortcuts (Ctrl+D delete, Ctrl+Enter save, Ctrl+Z undo) - Mobile touch gestures (swipe to delete rows) - Automatic JSON serialization on form submit - Form validation before saving - Comprehensive user guide documentation Files Changed: - LittleShop/package.json: NPM package management setup - LittleShop/wwwroot/js/variant-editor.js: 400-line spreadsheet editor module - LittleShop/wwwroot/lib/handsontable/: Handsontable library (Community Edition) - LittleShop/wwwroot/lib/hammerjs/: Hammer.js touch gesture library - LittleShop/Areas/Admin/Views/VariantCollections/Edit.cshtml: Spreadsheet UI integration - VARIANT_COLLECTIONS_USER_GUIDE.md: Complete user guide (18+ pages) Technical Details: - Excel-like editing experience (no more manual JSON editing) - Mobile-first responsive design - Browser compatibility: Chrome 90+, Firefox 88+, Edge 90+, Safari 14+ - Touch-optimized for mobile administration - Automatic data validation and error handling
95 lines
1.7 KiB
Plaintext
95 lines
1.7 KiB
Plaintext
{
|
|
"excludeFiles": [
|
|
"*.js",
|
|
"tests/**/assets",
|
|
"node_modules/**"
|
|
],
|
|
"requireCurlyBraces": [
|
|
"if",
|
|
"else",
|
|
"for",
|
|
"while",
|
|
"do",
|
|
"try",
|
|
"catch"
|
|
],
|
|
"requireOperatorBeforeLineBreak": true,
|
|
"requireCamelCaseOrUpperCaseIdentifiers": true,
|
|
"maximumLineLength": {
|
|
"value": 120,
|
|
"allowComments": true,
|
|
"allowRegex": true
|
|
},
|
|
"validateIndentation": 4,
|
|
"validateQuoteMarks": "'",
|
|
"disallowMultipleLineStrings": true,
|
|
"disallowMixedSpacesAndTabs": true,
|
|
"disallowTrailingWhitespace": true,
|
|
"disallowSpaceAfterPrefixUnaryOperators": true,
|
|
"requireSpaceAfterKeywords": [
|
|
"if",
|
|
"else",
|
|
"for",
|
|
"while",
|
|
"do",
|
|
"switch",
|
|
"return",
|
|
"try",
|
|
"catch"
|
|
],
|
|
"requireSpaceBeforeBinaryOperators": [
|
|
"=",
|
|
"+=",
|
|
"-=",
|
|
"*=",
|
|
"/=",
|
|
"%=",
|
|
"<<=",
|
|
">>=",
|
|
">>>=",
|
|
"&=",
|
|
"|=",
|
|
"^=",
|
|
"+=",
|
|
"+",
|
|
"-",
|
|
"*",
|
|
"/",
|
|
"%",
|
|
"<<",
|
|
">>",
|
|
">>>",
|
|
"&",
|
|
"|",
|
|
"^",
|
|
"&&",
|
|
"||",
|
|
"===",
|
|
"==",
|
|
">=",
|
|
"<=",
|
|
"<",
|
|
">",
|
|
"!=",
|
|
"!=="
|
|
],
|
|
"requireSpaceAfterBinaryOperators": true,
|
|
"requireSpacesInConditionalExpression": true,
|
|
"requireSpaceBeforeBlockStatements": true,
|
|
"requireLineFeedAtFileEnd": true,
|
|
"requireSpacesInFunctionExpression": {
|
|
"beforeOpeningCurlyBrace": true
|
|
},
|
|
"disallowSpacesInAnonymousFunctionExpression": {
|
|
"beforeOpeningRoundBrace": true
|
|
},
|
|
"disallowSpacesInsideObjectBrackets": "all",
|
|
"disallowSpacesInsideArrayBrackets": "all",
|
|
"disallowSpacesInsideParentheses": true,
|
|
"validateJSDoc": {
|
|
"checkParamNames": true,
|
|
"requireParamTypes": true
|
|
},
|
|
"disallowMultipleLineBreaks": true,
|
|
"disallowNewlineBeforeBlockStatements": true
|
|
} |