mirror of
https://github.com/documenso/documenso.git
synced 2026-04-25 13:55:59 +03:00
Closed
opened 2026-02-26 19:33:11 +03:00 by kerem
·
0 comments
No Branch/Tag specified
main
chore/translations
feat/signing-required-field-colors
feat/add-field-overflow-settings
chore/extract-translations
release
feat/public-completed-document-access
feat/bulk-download
docs/signing-reminders
feat/document-file-conversion
feat/prefetch-intent-navigation-links
fix/lint-project
fix/replace-linter-with-biome
fix/security-improvements
perf/dynamic-import-posthog
deps/vite-8
chore/migrate-eslint-prettier-to-oxlint-oxfmt
chore/migrate-to-pnpm
feat/add-pdf-image-renderer
feat/add-embed-v2
fix/extract-emails
feat/table-toolbar-filters
copilot/sub-pr-2478
fix/recipients-send-500
feat/external-2fa-codes
feat/protect-signing-urls
fix/checkbox-checked-values
duncan/legacy-api-endpoints
chore/block-po-files-locally
fix/default-embed-v2-document-rejection-to-false
fix/fields-dialog-title-description
copilot/sub-pr-2323
copilot/sub-pr-2267
exp/autoplace-fields
chore/server-hostname-config
fix/template-add-signers
fix/add-field-drag-drop-colors
fix/envelope-updates
feat/allow-formdata
archive/1.13.2
copilot/add-billing-section-account-page
fix/field-coordinate-bounds
feat/update-user-via-admin-dashboard
feat/expiry-links
feat/team-dashboard
feat/change-radio-direction
feat/admin-create-user-with-org
archive/v1.12.11
feat/envelopes-polish
feat/add-attachments-reworked
fix/font-size-fields
feat/improve-resend-dialog
fix/download-certificate-audit-log-safari
fix/duplicate-document-by-id
feat/document-table-filters
fix/template-migration
exp/effect
fix/migrate-template-metadata
exp/keyboard-signature
feat/document-2fa-redo
feat/add-attachments
feat/billing-redirect-flow
fix/add-api-logging
fix/duplicate-document-template-review
feat/handle-redirectto-param
feat/document-processing-status-indicator
feat/customize-doc-audit-log-certificate
feat/document-2fa
feat/organisations-backup-pls
feat/audit-logs-on-completed-document
chore/webhook-trigger-multiselect
exp/bg
chore/single-signer-wording
fix/template-uploading
feat/bin-tab
fix/staging-test
feat/rr7
squish/rr7
archive/nextjs
power-signer
fix/field-placements
fix/team-member-invites
fix/checkbox-field-bugs
fix/leaderboard-query
fix/zapier-list-documents-endpoint
feat/dictate-signers
feat/allow-same-signer-email-multiple-times
wip/rr7-next
experiment/self-sign
fix/oidc-login-error
feat/document-qrcode
feat/mau
feat/copy-links-audit-logs
chore/december-dep-upgrades
wip/rr7
wip/rr7-auth-package
wip/rr7-better-auth-demo
experiment/what-if-user-ids-were-strings-instead-of-numbers
fix/refactor-api-routes
feat/add-owner-completed-email-setting
fix/embed-whitelabel-colors
feat/delete-archive
fun/sign-with-nose
expiry-links
chore/openpage-viral-metrics
fix/sitemap
feat/signing-reminder
feat/automated-fields-signature
feat/add-polish-translations
staging
fix/open-page
openpage-api-deploy
feat/pulumi
chore/angular-embed-docs
exp/next-15
chore/select-signer
feat/save-data-on-blur
feat/save-recipients-on-blur
feat/signature-color
feat/team-email-template
chore/documenso-url
chore/add-ctas
fix/docker-setup-and-documentation
fix/document-creation-timezone
feat/telemetry
feat/integration-animation
fix/render-deployment
feat/publicProfile
feat/redirect-templates
feat/passkey-dialog
fix/refactor-use-template
chore/resend-onUpdate
chore/subject-onBlur
fix/demo-trpc-duration
fix/self-signer-custom-email-message
fix/benchmark
feat/add-myself-as-signer-temp
feat/checkbox-type
feat/update-marketing-header
experiment/queue
feat/error-demo
feat/add-document-auth-options
feat/document-2fa-test
chore/status-widget
open-page-restructure
feat/document-passkey-test
chore/form-reset
fix/neon-db-migration-test
feat/public-profile
feat/launch-week-content
webhooks_plus_api
exp/custom-field-labels
feat/accept-text-signature
feat/document-version-history
fix/delete-recipient-owners
fix/whitespace-title
feat/refresh
exp/million
feat/doc-comments
ElTimuro-patch-1
feat/teams-slugify
pr/537
date-format-setting
exp/millionjs
feat/runtime-env
chore/next-14
feat/chat-with-documents
feat/plan-limits
fix/467-bugsafari-only-unable-to-copy-document-sharing-link
feat/admin-ui-manage-instance
feat/stripe-free-tier
fix/cascade-delete-share-links
feat/marketing-share-document
feat/single-player-mode-polish
feat/next-13-5-3
chore/github-templates
docs/render-deploy
chore/code-of-conduct
chore/team
feat/add-e2e-testing
docs/minor-readme-updatess
docs/dx
feat-early-adopters
feat/open-early-adopters
fix/432-signee-doc-version-doesnt-have-sticky-signing-area
fix/446-cancel-cta-does-nothing-when-a-signer-opens-the-document
fix/445-signer-name-not-persisting
feat/resend-transport
fix/incorrect-completed-stats
feat/update-email-templates
feat/mania
feat/copy-or-tweet
feat/add-design-system-page
feat/single-player-mode
feat/completed-share-link
feat/designsystem
feat/send-email
feat/custom-emails
blog/upcoming-blog-post
feat/single-player-mode-test
feat/reset-password
blog/selfhosting-blog-post
feat/redirect-signed-document
fix/og-description
feat/universal-upload
chore/readme
chore/blogposts
fix/building-documenso-description
feat/admin-ui-metrics
feat/avatar-fallback
feat/templates
feat/blog-post-next
fix/hide-user-selection
feat/disable-sign
feat/marketing-mobile-nav
chore/remove-console-log-warn
feat/add-email-field
fix/redirect-signin-to-dashboard
feat/blog-og-image
feat/redirect-on-send
feat/billing-page
feat/profile-password-form
fix/signature-color-dark-mode
feat/inbox
feat/promise-safety
readme
chore/reduce-refetch-time
feat/update-document-flow
feat/refactor-shared-components
feat/feature-flag
feat/document-authoring
feat/pie-chart-legend
feat/open-page
docs/add-gitpod-setup
docs/add-render-deploy
docs-coventional-commits
feat/table-actions
minor/updates-google-auth-refresh
feat/add-document-animation
feat/new-email-template
feat/password-reset
fix/send-error-double-send
fix/improve-stripe-webhook-endpoint
feat/support-custom-cert-paths
feat/DOC-170-add-name-field
fix/improve-general-styling
feat/DOC-210-sign-dialog-broken-on-second-opening
bugfix-#71/invalid-email-hint
chore/optimise-deps
test-pr
v2.9.1
v2.9.0
v2.8.1
v2.8.0
v2.7.1
v2.7.0
v2.6.1
v2.6.0
v2.5.1
v2.5.0
v2.4.0
v2.3.2
v2.3.1
v2.3.0
v2.2.8
v2.2.7
v2.2.6
v2.2.5
v2.2.4
v2.2.3
v2.2.2
v2.2.1
v2.2.0
v2.1.0
v2.0.14
v2.0.13
v2.0.12
v2.0.11
v2.0.10
v2.0.9
v2.0.8
v2.0.7
v2.0.6
v2.0.5
v2.0.4
v2.0.3
v2.0.2
v2.0.1
v2.0.0
v1.13.2
v1.13.1
v1.13.0
v1.12.10
v1.12.9
v1.12.8
v1.12.7
v1.12.6
v1.12.5
v1.12.4
v1.12.3
v1.12.2-rc.6
v1.12.2-rc.5
v1.12.2-rc.4
v1.12.2-rc.3
v1.12.2-rc.2
v1.12.2-rc.1
v1.12.2-rc.0
v1.12.1
v1.12.0
v1.12.0-rc.8
v1.12.0-rc.7
v1.12.0-rc.6
v1.12.0-rc.5
v1.12.0-rc.4
v1.12.0-rc.3
v1.12.0-rc.2
v1.12.0-rc.1
v1.12.0-rc.0
v1.11.1
v1.11.0
v1.10.3
v1.10.2
v1.10.1
v1.10.0
v1.10.0-rc.5
v1.10.0-rc.4
v1.10.0-rc.3
v1.10.0-rc.2
v1.10.0-rc.1
v1.10.0-rc.0
v1.9.1-rc.9
v1.9.1
v1.9.1-rc.8
v1.9.1-rc.7
v1.9.1-rc.6
v1.9.1-rc.5
v1.9.1-rc.4
v1.9.1-rc.3
v1.9.1-rc.2
v1.9.1-rc.1
v1.9.1-rc.0
v1.9.0
v1.9.0-rc.12
v1.9.0-rc.11
v1.9.0-rc.10
v1.9.0-rc.9
v1.9.0-rc.8
v1.9.0-rc.7
v1.9.0-rc.6
v1.9.0-rc.5
final-marketing-release
v1.9.0-rc.4
v1.9.0-rc.3
v1.9.0-rc.2
v1.9.0-rc.1
v1.9.0-rc.0
v1.8.1
v1.8.1-rc.9
v1.8.1-rc.8
v1.8.1-rc.7
v1.8.1-rc.6
v1.8.1-rc.5
v1.8.1-rc.4
v1.8.1-rc.3
v1.8.1-rc.2
v1.8.1-rc.1
v1.8.1-rc.0
v1.8.0-rc.4
v1.8.0
v1.8.0-rc.3
v1.8.0-rc.2
v1.8.0-rc.1
v1.8.0-rc.0
v1.7.2
v1.7.2-rc.4
v1.7.2-rc.3
v1.7.2-rc.2
v1.7.2-rc.1
v1.7.2-rc.0
v1.7.1-rc.3
v1.7.1
v1.7.1-rc.2
v1.7.1-rc.1
v1.7.1-rc.0
v1.7.0
v1.7.0-rc.5
v1.7.0-rc.4
v1.7.0-rc.3
v1.7.0-rc.2
v1.7.0-rc.1
v1.7.0-rc.0
v1.6.1
v1.6.1-rc.1
v1.6.1-rc.0
v1.6.0
v1.6.0-rc.3
v1.6.0-rc.2
v1.6.0-rc.1
v1.6.0-rc.0
v1.5.6
v1.5.6-rc.4
v1.5.6-rc.3
v1.5.6-rc.2
v1.5.6-rc.1
v1.5.6-rc.0
v1.5.5-rc.8
v1.5.5
v1.5.5-rc.7
v1.5.5-rc.6
v1.5.5-rc.5
v1.5.5-rc.4
v1.5.5-rc.3
v1.5.5-rc.2
v1.5.5-rc.1
v1.5.5-rc.0
v1.5.4-rc.5
v1.5.4
v1.5.4-rc.4
v1.5.4-rc.3
v1.5.4-rc.2
v1.5.4-rc.1
v1.5.4-rc.0
v1.5.3-rc.1
v1.5.3
v1.5.3-rc.0
v1.5.2-rc.8
v1.5.2
v1.5.2-rc.7
v1.5.2-rc.6
v1.5.2-rc.5
v1.5.2-rc.4
v1.5.2-rc.3
v1.5.2-rc.2
v1.5.2-rc.1
v1.5.2-rc.0
v1.5.1
v1.5.1-rc.0
v1.5.0-rc.6
v1.5.0
v1.5.0-rc.5
v1.5.0-rc.4
v1.5.0-rc.3
v1.5.0-rc.2
v1.5.0-rc.1
v1.5.0-rc.0
v1.4.0-rc.0
v1.4.0
v1.3.2-rc.0
v1.3.1-rc.2
v1.3.1
v1.3.1-rc.1
v1.3.1-rc.0
v1.3.0-rc.2
v1.3.0
v1.3.0-rc.1
v1.3.0-rc.0
v1.2.3
v1.2.2
v1.2.1
v1.2.0
v1.1
v1.0
v0.9
before-prettier
0.9-developer-preview
Labels
Clear labels
Mirrored from GitHub Pull Request
Compliance
Stale
apps: marketing
apps: web
community
component: api
component: integrations
component: ui
duplicate
effort: low
effort: medium
good first issue
hacktoberfest
help wanted
needs triage
needs-replication
needs-testing
on-hold
osshack
priority: high
priority: low
priority: medium
pull-request
Mirrored from GitHub Pull Request
question
roadmap
status: assigned
status: blocked
status: in progress
status: triage
type: bug
type: bug
type: bug
type: documentation
type: enhancement
type: feature
wontfix
💎 Bounty
💰 Rewarded
💰 Rewarded
No labels
Compliance
Stale
apps: marketing
apps: web
community
component: api
component: integrations
component: ui
duplicate
effort: low
effort: medium
good first issue
hacktoberfest
help wanted
needs triage
needs-replication
needs-testing
on-hold
osshack
priority: high
priority: low
priority: medium
pull-request
question
roadmap
status: assigned
status: blocked
status: in progress
status: triage
type: bug
type: bug
type: bug
type: documentation
type: enhancement
type: feature
wontfix
💎 Bounty
💰 Rewarded
💰 Rewarded
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference
starred/documenso#1422
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/documenso/documenso/pull/1141
Author: @catalinpit
Created: 5/3/2024
Status: ✅ Merged
Merged: 7/18/2024
Merged by: @Mythie
Base:
main← Head:feat/more-field-types📝 Commits (10+)
98b0dbcchore: add more field typesaa3ce6fchore: update fields in the ui46ad49bchore: field border8f96781chore: update fields buttons306d32fchore: field states editor changescc380a8chore: show recipients initials on hoverc52560echore: progress6c69157chore: advanced settings addition and fieldMeta field4b53678chore: add more field types735ecebchore: field format update📊 Changes
74 files changed (+5248 additions, -843 deletions)
View changed files
📝
apps/marketing/src/app/(marketing)/singleplayer/client.tsx(+3 -0)📝
apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx(+10 -1)📝
apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx(+1 -1)📝
apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx(+10 -9)📝
apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx(+101 -9)➕
apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx(+292 -0)📝
apps/web/src/app/(signing)/sign/[token]/date-field.tsx(+6 -2)➕
apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx(+209 -0)📝
apps/web/src/app/(signing)/sign/[token]/email-field.tsx(+8 -2)📝
apps/web/src/app/(signing)/sign/[token]/name-field.tsx(+8 -2)➕
apps/web/src/app/(signing)/sign/[token]/number-field.tsx(+337 -0)➕
apps/web/src/app/(signing)/sign/[token]/radio-field.tsx(+190 -0)📝
apps/web/src/app/(signing)/sign/[token]/signature-field.tsx(+3 -3)📝
apps/web/src/app/(signing)/sign/[token]/signing-field-container.tsx(+73 -37)📝
apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx(+47 -3)📝
apps/web/src/app/(signing)/sign/[token]/text-field.tsx(+143 -26)📝
apps/web/src/components/document/document-read-only-fields.tsx(+14 -4)📝
packages/api/v1/implementation.ts(+2 -0)➕
packages/lib/advanced-fields-validation/validate-checkbox.ts(+82 -0)➕
packages/lib/advanced-fields-validation/validate-dropdown.ts(+54 -0)...and 54 more files
📄 Description
Description
What I've done:
Created an optional
fieldMetafield of JSONB type in theFieldmodel (prisma/schema.prisma). This way, we can store advanced configuration for each field. Also, the selected/chosen/entered value for each field is stored in thecustomTextfield.Created schemas and types for
fieldMeta.Added the
fieldMetafield in the appropriate schemas and types.Moved the title and description (
DocumentFlowFormContainerHeader) fromedit-templatepage into each template step -add-template-settings.tsx,add-template-placeholder.tsxandadd-template-fields.tsx. They have their own title and description. Exactly like it's done for the documents.Added the code for clearing the localStorage of fields' settings when the fields get saved in a document (edit-document.tsx).
Created a new file for each field's advanced settings (checkbox, number, dropdown, radio). Also updated the text field to include advanced settings.
readOnlyandrequiredchecked at the same time, it will throw an error.readOnly, it should have a value for thetextfield.characterLimitis not a number, it will throw an error.valueentered by the user is over thecharacterLimit, it will throw an error.minValuecan't be greater than themaxValueand vice-versa.valueentered by the user can't be lower than theminValueand greater than themaxValue.valuefield empty when the field isreadOnly.readOnlyandrequiredchecked at the same time, it will throw an error.requiredandreadOnlyat the same time.readOnly, it should have at least one option.requiredandreadOnlyat the same time.readOnly, it should have at least one option.requiredandreadOnlyat the same time.readOnly, it should have at least one option.Created the field-item-advanced-settings.tsx component for the fields' advanced settings. The component renders the appropriate advanced settings form based on the field type, validates user input, and saves the field settings to local storage and triggers a callback function when the "Save" button is clicked.
Created a new file for each field for the signing page:
textvalue set by default and the field is not already inserted, the app will insert the field automatically when you visit the signing page.valuefield set by default and the field is not already inserted, the app will insert the field automatically when you visit the signing page.checkedoption set totrue, those will be checked automatically.All the validation for these fields are available on the backend as well:
Updated the d/[token]/sign-direct-template.tsx file to include all the new fields.
Added the new fields in the (signing)/sign/[token]/signing-page-view.tsx so they are visible and usable.
Modified the document audit log lib/types/document-audit-logs.ts to include all the new fields.
Modified the (signing)/sign/[token]/signing-field-container.tsx code so the Radio and Checkbox fields are clickable and work properly.
Created tRPC procedures for retrieving and updating a field - packages/trpc/server/field-router/router.ts.
Added colors for each recipient so it's easier to distinguish between them. The recipients and their associated fields will have the same color.
Added the
FieldIconcomponent - primitives/document-flow/field-icon.tsx - to avoid repeating code.Modified ui/primitives/document-flow/field-item.tsx so the fields have the same border color as the recipient.
Changed the code from the lib/server-only/pdf/insert-field-in-pdf.ts file to add a circle in front of the value from the radio field and an X in front of the values from the checkbox field. Also, the values from the checkbox field will be in a column on the signed document, each having an X in front.
Updated the
Fieldcomponent (ui/components/field/field.tsx) so the design doesn't break for checkbox and radio fields.Updated ui/primitives/document-flow/add-fields.tsx and ui/primitives/template-flow/add-template-fields.tsx contain mostly changes for the color of the fields and recipients.
Created primitives/document-flow/advanced-fields/checkbox.tsx and primitives/document-flow/advanced-fields/radio.tsx to match the design from Figma. What these 2 components do is to display the fields and their options like in the image below.
substring, which is used to shorten thecustomTextvalue which overflows and messes up the field's card design..... plus other smaller things.
What's left:
Make the new fields work in the SPM mode (not necessary after our discussion)
Cleanup the code.
For another PR:
Testing Performed
Checklist
Summary by CodeRabbit
CheckboxField,DropdownField,NumberField, andRadioFieldcomponents for document signing.SignatureFieldandNameFieldcomponents with improved styling.SigningFieldContainerto handle multiple field types.turbo.jsonconfiguration for prebuild paths and caching.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.