-
Notifications
You must be signed in to change notification settings - Fork 298
feat(modal): [modal] enhance TINYModal functionality, add type definition andoption interface #3247
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Conversation
… option interface
WalkthroughThe changes update the modal component in the Vue package by introducing new type definitions and interfaces. The Changes
Sequence Diagram(s)sequenceDiagram
participant U as Caller
participant M as Modal Function
participant C as TINYModalComponent
U->>M: Call Modal(options)
M->>C: Instantiate modal component
C-->>M: Return component instance
M->>U: Return ModalPromise with modal methods
Possibly related PRs
Suggested labels
Poem
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/vue/src/modal/index.tsOops! Something went wrong! :( ESLint: 8.57.1 ESLint couldn't find the plugin "eslint-plugin-vue". (The package "eslint-plugin-vue" was not found when loaded as a Node module from the directory "".) It's likely that the plugin isn't installed correctly. Try reinstalling by running the following:
The plugin "eslint-plugin-vue" was referenced from the config file in ".eslintrc.js » @antfu/eslint-config » @antfu/eslint-config-vue". If you still can't figure out the problem, please stop by https://eslint.org/chat/help to chat with the team. ✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 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 (
|
[e2e-test-warn] The title of the Pull request should look like "fix(vue-renderless): [action-menu, alert] fix xxx bug". Please make sure you've read our contributing guide |
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: 0
🧹 Nitpick comments (5)
packages/vue/src/modal/index.ts (5)
72-72
: Avoid double casting
Consider removing the extra cast for readability.-const TINYModalComponent = TINYModal as unknown as TINYModalInstance +const TINYModalComponent = TINYModal as TINYModalInstance
81-126
: Consider adding rejection handling inModal
The current design only callsresolve
. If you encounter unexpected errors, you might want to reject the promise for more robust error handling.export function Modal(options: ModalOptions): ModalPromise { const modalPromise = new Promise<string>((resolve, reject) => { // ... } else { try { // ... modal creation logic ... } catch (err) { - resolve('failed') + reject(err) } } }) as ModalPromise // ... }🧰 Tools
🪛 Biome (1.9.4)
[error] 83-83: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
[error] 91-91: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
[error] 97-100: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
[error] 101-104: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
[error] 119-120: Don't use 'Function' as a type.
Prefer explicitly define the function shape. This type accepts any function-like value, which can be a common source of bugs.
(lint/complexity/noBannedTypes)
87-91
: Use optional chaining
The static analysis suggests replacing&&
checks with optional chaining for safer and more concise code.- events.hide && events.hide.call(this, params) + events.hide?.call(this, params)🧰 Tools
🪛 Biome (1.9.4)
[error] 91-91: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
116-116
: Avoid usingFunction
as a type
This type is too broad and can weaken type checking.- const open = $modal[options.componentType === 'popconfirm' ? 'show' : 'open'] as Function + const open = $modal[ + options.componentType === 'popconfirm' ? 'show' : 'open' + ] as (...args: any[]) => unknown
193-195
: Leverage optional chaining
Optional chaining here can simplify your code and avoid potential undefined checks.- TINYModalComponent.tiny_mode = specifyPc || (tinyMode && tinyMode.value) - TINYModalComponent.tiny_theme = tinyTheme && tinyTheme.value + TINYModalComponent.tiny_mode = specifyPc || tinyMode?.value + TINYModalComponent.tiny_theme = tinyTheme?.value🧰 Tools
🪛 Biome (1.9.4)
[error] 194-194: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
packages/vue/src/modal/index.ts
(5 hunks)
🧰 Additional context used
🪛 Biome (1.9.4)
packages/vue/src/modal/index.ts
[error] 83-83: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
[error] 91-91: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
[error] 119-120: Don't use 'Function' as a type.
Prefer explicitly define the function shape. This type accepts any function-like value, which can be a common source of bugs.
(lint/complexity/noBannedTypes)
[error] 194-194: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
[error] 195-197: Change to an optional chain.
Unsafe fix: Change to an optional chain.
(lint/complexity/useOptionalChain)
🔇 Additional comments (4)
packages/vue/src/modal/index.ts (4)
20-39
: Great job with theModalOptions
interface
The interface is well-defined and flexible, making it easy to extend.
41-44
: ExtendingPromise
withvm
property
This approach is somewhat unusual but well-typed. Consider documenting how to access and use thevm
property for clarity.
46-61
: Clear definitions inTINYModalInstance
The interface methods align neatly with the rest of the code, improving consistency.
63-69
:SetupComponent
interface
No issues found. It's well structured and straightforward.
增强TINYModal功能,添加类型定义和选项接口
PR
PR Checklist
Please check if your PR fulfills the following requirements:
PR Type
What kind of change does this PR introduce?
What is the current behavior?
Issue Number: N/A
What is the new behavior?
Does this PR introduce a breaking change?
Other information
Summary by CodeRabbit
New Features
Refactor