-
Notifications
You must be signed in to change notification settings - Fork 7.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: improve code login demo #5154
Conversation
|
Warning There were issues while running some tools. Please review the errors and either fix the tool’s configuration or disable the tool if it’s a critical failure. 🔧 eslint
packages/@core/ui-kit/form-ui/src/form-api.tsOops! Something went wrong! :( ESLint: 9.16.0 Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/node_modules/@vben/eslint-config/dist/index.mjs' imported from /eslint.config.mjs WalkthroughThis pull request introduces enhancements to form validation, localization, and UI components across multiple files. The changes focus on improving the Vben Form component documentation, adding new methods to the Changes
Assessment against linked issues
Possibly related PRs
Suggested labels
Suggested reviewers
Poem
Tip CodeRabbit's docstrings feature is now available as part of our Early Access Program! Simply use the command Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (4)
packages/@core/ui-kit/shadcn-ui/src/ui/button/button.ts (1)
14-15
: Document design system changesThe padding adjustments for both lg and sm variants represent a significant change to the button sizing system. Consider documenting these changes in the design system documentation to maintain consistency across the application.
Consider adding a comment above the variants object explaining the padding progression across sizes:
variants: { + // Button size variants follow a consistent padding scale: + // lg: px-4, default: px-4, sm: px-2, xs: px-1 size: {playground/src/locales/langs/en-US/page.json (1)
8-8
: Consider improving the English grammar.The message "SMS Code is sending..." could be more natural.
Consider this alternative:
- "sendingCode": "SMS Code is sending...", + "sendingCode": "Sending verification code...",packages/@core/ui-kit/form-ui/src/form-api.ts (1)
357-365
: Consider enhancing error logging with field context.While the implementation is correct, the error logging could be more informative by including the field name in the error message.
async validateField(fieldName: string, opts?: Partial<ValidationOptions>) { const form = await this.getForm(); const validateResult = await form.validateField(fieldName, opts); if (Object.keys(validateResult?.errors ?? {}).length > 0) { - console.error('validate error', validateResult?.errors); + console.error(`Validation error for field "${fieldName}":`, validateResult?.errors); } return validateResult; }docs/src/components/common-ui/vben-form.md (1)
290-291
: Consider adding usage examples for new validation methods.While the API documentation is clear, it would be helpful to add code examples demonstrating the usage of
validateField
andisFieldValid
methods, similar to other sections in the documentation.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (7)
docs/src/components/common-ui/vben-form.md
(1 hunks)packages/@core/ui-kit/form-ui/src/form-api.ts
(2 hunks)packages/@core/ui-kit/shadcn-ui/src/ui/button/button.ts
(1 hunks)packages/@core/ui-kit/shadcn-ui/src/ui/pin-input/PinInputInput.vue
(1 hunks)playground/src/locales/langs/en-US/page.json
(1 hunks)playground/src/locales/langs/zh-CN/page.json
(1 hunks)playground/src/views/_core/authentication/code-login.vue
(3 hunks)
🔇 Additional comments (5)
packages/@core/ui-kit/shadcn-ui/src/ui/button/button.ts (1)
14-14
: Verify touch target size for large buttons
The significant reduction in padding for large buttons (from px-8 to px-4) might affect touch targets on mobile devices. While this aligns with the PIN input changes mentioned in the summary, we should ensure it meets accessibility guidelines.
Run the following to check for other large button usages that might be affected:
✅ Verification successful
Let me gather more information about button usage patterns and size variants to make a more informed decision.
Let me try one more search pattern to find button usage and size variants.
Based on the search results, I can now provide a final response:
Touch target concerns are not warranted for this change
The padding reduction for large buttons (px-8 to px-4) appears safe because:
- The button is only used with size="lg" in one place: the PIN input component
- The change maintains the consistent size hierarchy (lg > default > sm)
- The button still retains its height (h-10) and rounded corners, ensuring adequate touch target size
- No accessibility guidelines or touch target requirements are violated in the codebase
The modification appears to be a targeted change for the PIN input component's specific use case rather than a broad design system change that would impact mobile usability across the application.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Search for lg variant usage in button components
rg -l "size=\"lg\"" | xargs rg "button"
# Check for any accessibility-related comments or documentation
fd -e md -e mdx | xargs rg -i "accessibility|touch target|mobile"
Length of output: 902
Script:
#!/bin/bash
# Search for button component usage patterns
ast-grep --pattern 'Button $$$size="lg"$$$'
# Look for button-related test files or documentation
fd button -e spec -e test -e md -e vue -e ts | xargs rg -i "large.*button|lg.*button"
# Check for any design system documentation
fd design-system -e md -e mdx
Length of output: 165
Script:
#!/bin/bash
# Search for button component imports and usage
rg -A 3 "from.*button"
# Look for size prop usage in Vue components
rg -B 2 -A 2 'size=' packages/@core/ui-kit/
# Check button styles in any CSS/SCSS files
fd -e css -e scss | xargs rg -i "button.*lg|large.*button"
Length of output: 9750
playground/src/locales/langs/zh-CN/page.json (1)
7-9
: LGTM! Verify message consistency across all language files.
The new authentication messages are well-formatted and grammatically correct in Chinese.
Let's verify if these keys exist consistently across all language files:
✅ Verification successful
All authentication messages are consistently present across language files ✅
The verification shows that both English (en-US) and Chinese (zh-CN) page.json files contain all the required authentication keys with appropriate translations:
forgetPassword
sendingCode
codeSentTo
The placeholder format {0}
is also consistently used in both language files for the codeSentTo
message.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Check for consistency of new auth keys across language files
# Expected: All language files should have the same keys
# Find all language JSON files
fd -e json -p "playground/src/locales/langs/" --exec jq -r '.auth | keys | .[]' {} \; | sort | uniq -c
Length of output: 606
Script:
#!/bin/bash
# Let's verify which language files actually contain these auth keys
# and ensure we're looking at the right files
# First, find all JSON files in the langs directory
echo "=== All JSON files in langs directory ==="
fd -e json -p "playground/src/locales/langs/"
# Then check the content of files that might contain auth keys
echo -e "\n=== Content of page.json files ==="
fd "page.json" -p "playground/src/locales/langs/" --exec cat {}
Length of output: 1237
packages/@core/ui-kit/shadcn-ui/src/ui/pin-input/PinInputInput.vue (1)
27-27
: LGTM! Good responsive design approach.
The width adjustment (w-8 on mobile, w-10 on md+ screens) improves the component's usability on smaller devices while maintaining the original size on larger screens.
packages/@core/ui-kit/form-ui/src/form-api.ts (1)
133-136
: LGTM! Clean implementation of field validation check.
The method properly handles form instance access and provides a straightforward way to check field validity.
playground/src/views/_core/authentication/code-login.vue (1)
62-80
: LGTM! Well-structured validation flow.
The code properly validates the phone number before sending the code and handles loading states correctly.
Description
改进验证码登录演示模块
fix #5150
Type of change
Please delete options that are not relevant.
pnpm-lock.yaml
unless you introduce a new test example.Checklist
pnpm run docs:dev
command.pnpm test
.feat:
,fix:
,perf:
,docs:
, orchore:
.Summary by CodeRabbit
New Features
Bug Fixes
Style