@vandenberghinc/volt 1.1.26 → 1.1.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/backend/dist/cjs/{blacklist.d.ts → backend/src/blacklist.d.ts} +5 -3
- package/backend/dist/cjs/{blacklist.js → backend/src/blacklist.js} +8 -5
- package/backend/dist/cjs/{cli.js → backend/src/cli.js} +29 -47
- package/backend/dist/cjs/backend/src/database/collection.d.ts +1543 -0
- package/backend/dist/cjs/backend/src/database/collection.js +3042 -0
- package/backend/dist/cjs/backend/src/database/database.d.ts +66 -0
- package/backend/dist/cjs/{database → backend/src/database}/database.js +48 -43
- package/backend/dist/cjs/backend/src/database/filters/filters.d.ts +6 -0
- package/backend/dist/cjs/backend/src/database/filters/filters.js +15 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter.d.ts +223 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter.js +15 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter_test.js +443 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter_test_v0.js +15 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter_v0.d.ts +50 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter_v0.js +15 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter_v1.d.ts +76 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter_v1.js +15 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter_v2.d.ts +75 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter_v2.js +15 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter_v3.d.ts +219 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_filter_v3.js +15 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_update_filter.d.ts +165 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_update_filter.js +15 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_update_filter_test.d.ts +5 -0
- package/backend/dist/cjs/backend/src/database/filters/strict_update_filter_test.js +355 -0
- package/backend/dist/cjs/backend/src/database/flatten.d.ts +75 -0
- package/backend/dist/cjs/{logger.js → backend/src/database/flatten.js} +18 -7
- package/backend/dist/cjs/backend/src/database/flatten_test.js +175 -0
- package/backend/dist/cjs/backend/src/database/quota/quota.d.ts +461 -0
- package/backend/dist/cjs/backend/src/database/quota/quota.js +1014 -0
- package/backend/dist/cjs/backend/src/database/quota/quota_v1.d.ts +534 -0
- package/backend/dist/cjs/backend/src/database/quota/quota_v1.js +1087 -0
- package/backend/dist/cjs/backend/src/database/quota/safe_int.d.ts +293 -0
- package/backend/dist/cjs/backend/src/database/quota/safe_int.js +573 -0
- package/backend/dist/{esm → cjs/backend/src}/endpoint.d.ts +69 -46
- package/backend/dist/cjs/{endpoint.js → backend/src/endpoint.js} +87 -101
- package/backend/dist/cjs/backend/src/errors/index.d.ts +7 -0
- package/backend/dist/cjs/backend/src/errors/index.js +25 -0
- package/backend/dist/{esm/utils.d.ts → cjs/backend/src/errors/internal_external.d.ts} +14 -22
- package/backend/dist/cjs/backend/src/errors/internal_external.js +85 -0
- package/backend/dist/cjs/backend/src/errors/invalid_usage_error.d.ts +38 -0
- package/backend/dist/cjs/{mutex.js → backend/src/errors/invalid_usage_error.js} +20 -37
- package/backend/dist/cjs/backend/src/errors/system_error.d.ts +230 -0
- package/backend/dist/cjs/backend/src/errors/system_error.js +393 -0
- package/backend/dist/cjs/backend/src/events.d.ts +54 -0
- package/backend/dist/cjs/backend/src/events.js +15 -0
- package/backend/dist/cjs/{frontend.js → backend/src/frontend.js} +1 -1
- package/backend/dist/cjs/{image_endpoint.d.ts → backend/src/image_endpoint.d.ts} +16 -1
- package/backend/dist/cjs/{image_endpoint.js → backend/src/image_endpoint.js} +3 -5
- package/backend/dist/cjs/backend/src/logger.d.ts +5 -0
- package/backend/dist/cjs/backend/src/logger.js +15 -0
- package/backend/dist/cjs/backend/src/meta.d.ts +64 -0
- package/backend/dist/cjs/{meta.js → backend/src/meta.js} +9 -12
- package/backend/dist/cjs/backend/src/payments/paddle.d.ts +326 -0
- package/backend/dist/cjs/{payments → backend/src/payments}/paddle.js +377 -327
- package/backend/dist/cjs/backend/src/plugins/browser.d.ts +1 -0
- package/backend/dist/cjs/backend/src/plugins/browser.js +15 -0
- package/backend/dist/cjs/backend/src/plugins/mail/mail.d.ts +248 -0
- package/backend/dist/cjs/backend/src/plugins/mail/mail.js +379 -0
- package/backend/dist/{esm → cjs/backend/src}/plugins/mail/ui.d.ts +23 -0
- package/backend/dist/cjs/backend/src/plugins/pdf.d.ts +1 -0
- package/backend/dist/cjs/backend/src/rate_limit.d.ts +145 -0
- package/backend/dist/cjs/backend/src/rate_limit.js +549 -0
- package/backend/dist/cjs/{route.d.ts → backend/src/route.d.ts} +3 -10
- package/backend/dist/cjs/{route.js → backend/src/route.js} +23 -21
- package/backend/dist/cjs/backend/src/server.d.ts +485 -0
- package/backend/dist/cjs/{server.js → backend/src/server.js} +688 -873
- package/backend/dist/cjs/backend/src/splash_screen.d.ts +80 -0
- package/backend/dist/cjs/{splash_screen.js → backend/src/splash_screen.js} +24 -3
- package/backend/dist/cjs/backend/src/status.d.ts +74 -0
- package/backend/dist/cjs/{status.js → backend/src/status.js} +64 -64
- package/backend/dist/cjs/backend/src/stream.d.ts +376 -0
- package/backend/dist/cjs/{stream.js → backend/src/stream.js} +299 -276
- package/backend/dist/cjs/backend/src/users.d.ts +807 -0
- package/backend/dist/cjs/backend/src/users.js +1971 -0
- package/backend/dist/cjs/backend/src/utils.d.ts +16 -0
- package/backend/dist/cjs/{utils.js → backend/src/utils.js} +14 -77
- package/backend/dist/{esm → cjs/backend/src}/view.d.ts +33 -11
- package/backend/dist/cjs/backend/src/view.js +508 -0
- package/backend/dist/{esm → cjs/backend/src}/volt.d.ts +10 -1
- package/backend/dist/cjs/{volt.js → backend/src/volt.js} +8 -5
- package/backend/dist/cjs/frontend/src/modules/request.d.ts +70 -0
- package/backend/dist/cjs/frontend/src/modules/request.js +99 -0
- package/backend/dist/esm/{blacklist.d.ts → backend/src/blacklist.d.ts} +5 -3
- package/backend/dist/esm/{blacklist.js → backend/src/blacklist.js} +9 -6
- package/backend/dist/esm/{cli.js → backend/src/cli.js} +43 -60
- package/backend/dist/esm/backend/src/database/collection.d.ts +1543 -0
- package/backend/dist/esm/backend/src/database/collection.js +3510 -0
- package/backend/dist/esm/backend/src/database/database.d.ts +66 -0
- package/backend/dist/esm/{database → backend/src/database}/database.js +62 -103
- package/backend/dist/esm/backend/src/database/document.d.ts +1 -0
- package/backend/dist/esm/backend/src/database/document.js +558 -0
- package/backend/dist/esm/backend/src/database/filters/filters.d.ts +6 -0
- package/backend/dist/esm/backend/src/database/filters/filters.js +1 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter.d.ts +223 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter.js +3 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter_test.d.ts +1 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter_test.js +505 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter_test_v0.d.ts +1 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter_test_v0.js +712 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter_v0.d.ts +50 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter_v0.js +5 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter_v1.d.ts +76 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter_v1.js +44 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter_v2.d.ts +75 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter_v2.js +5 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter_v3.d.ts +219 -0
- package/backend/dist/esm/backend/src/database/filters/strict_filter_v3.js +1 -0
- package/backend/dist/esm/backend/src/database/filters/strict_update_filter.d.ts +165 -0
- package/backend/dist/esm/backend/src/database/filters/strict_update_filter.js +5 -0
- package/backend/dist/esm/backend/src/database/filters/strict_update_filter_test.d.ts +5 -0
- package/backend/dist/esm/backend/src/database/filters/strict_update_filter_test.js +405 -0
- package/backend/dist/esm/backend/src/database/flatten.d.ts +75 -0
- package/backend/dist/esm/backend/src/database/flatten.js +22 -0
- package/backend/dist/esm/backend/src/database/flatten_test.d.ts +1 -0
- package/backend/dist/esm/backend/src/database/flatten_test.js +174 -0
- package/backend/dist/esm/backend/src/database/quota/quota.d.ts +461 -0
- package/backend/dist/esm/backend/src/database/quota/quota.js +1118 -0
- package/backend/dist/esm/backend/src/database/quota/quota_v1.d.ts +534 -0
- package/backend/dist/esm/backend/src/database/quota/quota_v1.js +1242 -0
- package/backend/dist/esm/backend/src/database/quota/safe_int.d.ts +293 -0
- package/backend/dist/esm/backend/src/database/quota/safe_int.js +602 -0
- package/backend/dist/{cjs → esm/backend/src}/endpoint.d.ts +69 -46
- package/backend/dist/esm/{endpoint.js → backend/src/endpoint.js} +136 -127
- package/backend/dist/esm/backend/src/errors/index.d.ts +7 -0
- package/backend/dist/esm/backend/src/errors/index.js +7 -0
- package/backend/dist/{cjs/utils.d.ts → esm/backend/src/errors/internal_external.d.ts} +14 -22
- package/backend/dist/esm/backend/src/errors/internal_external.js +70 -0
- package/backend/dist/esm/backend/src/errors/invalid_usage_error.d.ts +38 -0
- package/backend/dist/esm/backend/src/errors/invalid_usage_error.js +30 -0
- package/backend/dist/esm/backend/src/errors/system_error.d.ts +230 -0
- package/backend/dist/esm/backend/src/errors/system_error.js +402 -0
- package/backend/dist/esm/backend/src/events.d.ts +54 -0
- package/backend/dist/esm/backend/src/events.js +5 -0
- package/backend/dist/esm/{frontend.js → backend/src/frontend.js} +1 -1
- package/backend/dist/esm/{image_endpoint.d.ts → backend/src/image_endpoint.d.ts} +16 -1
- package/backend/dist/esm/{image_endpoint.js → backend/src/image_endpoint.js} +16 -20
- package/backend/dist/esm/backend/src/logger.d.ts +5 -0
- package/backend/dist/esm/backend/src/logger.js +8 -0
- package/backend/dist/esm/backend/src/meta.d.ts +64 -0
- package/backend/dist/esm/{meta.js → backend/src/meta.js} +15 -54
- package/backend/dist/esm/backend/src/payments/paddle.d.ts +326 -0
- package/backend/dist/esm/{payments → backend/src/payments}/paddle.js +417 -452
- package/backend/dist/esm/backend/src/plugins/browser.d.ts +1 -0
- package/backend/dist/esm/backend/src/plugins/browser.js +170 -0
- package/backend/dist/esm/backend/src/plugins/mail/mail.d.ts +248 -0
- package/backend/dist/esm/backend/src/plugins/mail/mail.js +389 -0
- package/backend/dist/{cjs → esm/backend/src}/plugins/mail/ui.d.ts +23 -0
- package/backend/dist/esm/{plugins → backend/src/plugins}/mail/ui.js +3 -6
- package/backend/dist/esm/backend/src/plugins/pdf.d.ts +1 -0
- package/backend/dist/esm/{plugins → backend/src/plugins}/pdf.js +3 -3
- package/backend/dist/esm/backend/src/rate_limit.d.ts +145 -0
- package/backend/dist/esm/backend/src/rate_limit.js +667 -0
- package/backend/dist/esm/{route.d.ts → backend/src/route.d.ts} +3 -10
- package/backend/dist/esm/{route.js → backend/src/route.js} +26 -21
- package/backend/dist/esm/backend/src/server.d.ts +485 -0
- package/backend/dist/esm/{server.js → backend/src/server.js} +891 -1441
- package/backend/dist/esm/backend/src/splash_screen.d.ts +80 -0
- package/backend/dist/esm/{splash_screen.js → backend/src/splash_screen.js} +42 -55
- package/backend/dist/esm/backend/src/status.d.ts +74 -0
- package/backend/dist/esm/backend/src/status.js +199 -0
- package/backend/dist/esm/backend/src/stream.d.ts +376 -0
- package/backend/dist/esm/{stream.js → backend/src/stream.js} +327 -292
- package/backend/dist/esm/backend/src/users.d.ts +809 -0
- package/backend/dist/esm/backend/src/users.js +2140 -0
- package/backend/dist/esm/backend/src/utils.d.ts +16 -0
- package/backend/dist/esm/{utils.js → backend/src/utils.js} +20 -81
- package/backend/dist/{cjs → esm/backend/src}/view.d.ts +33 -11
- package/backend/dist/esm/{view.js → backend/src/view.js} +266 -86
- package/backend/dist/{cjs → esm/backend/src}/volt.d.ts +10 -1
- package/backend/dist/esm/{volt.js → backend/src/volt.js} +7 -4
- package/backend/dist/esm/frontend/src/modules/request.d.ts +70 -0
- package/backend/dist/esm/frontend/src/modules/request.js +117 -0
- package/frontend/dist/backend/src/database/collection.d.ts +1543 -0
- package/frontend/dist/backend/src/database/collection.js +3510 -0
- package/frontend/dist/backend/src/database/database.d.ts +66 -0
- package/frontend/dist/backend/src/database/database.js +196 -0
- package/frontend/dist/backend/src/database/filters/filters.d.ts +6 -0
- package/frontend/dist/backend/src/database/filters/filters.js +1 -0
- package/frontend/dist/backend/src/database/filters/strict_filter.d.ts +223 -0
- package/frontend/dist/backend/src/database/filters/strict_filter.js +3 -0
- package/frontend/dist/backend/src/database/filters/strict_update_filter.d.ts +165 -0
- package/frontend/dist/backend/src/database/filters/strict_update_filter.js +5 -0
- package/frontend/dist/backend/src/database/flatten.d.ts +75 -0
- package/frontend/dist/backend/src/database/flatten.js +22 -0
- package/frontend/dist/backend/src/endpoint.d.ts +204 -0
- package/frontend/dist/backend/src/endpoint.js +570 -0
- package/frontend/dist/backend/src/errors/index.d.ts +7 -0
- package/frontend/dist/backend/src/errors/index.js +7 -0
- package/frontend/dist/backend/src/errors/internal_external.d.ts +38 -0
- package/frontend/dist/backend/src/errors/internal_external.js +70 -0
- package/frontend/dist/backend/src/errors/invalid_usage_error.d.ts +38 -0
- package/frontend/dist/backend/src/errors/invalid_usage_error.js +30 -0
- package/frontend/dist/backend/src/errors/system_error.d.ts +230 -0
- package/frontend/dist/backend/src/errors/system_error.js +402 -0
- package/frontend/dist/backend/src/events.d.ts +54 -0
- package/frontend/dist/backend/src/events.js +5 -0
- package/frontend/dist/backend/src/frontend.d.ts +11 -0
- package/frontend/dist/backend/src/frontend.js +12 -0
- package/frontend/dist/backend/src/image_endpoint.d.ts +39 -0
- package/frontend/dist/backend/src/image_endpoint.js +202 -0
- package/frontend/dist/backend/src/meta.d.ts +64 -0
- package/frontend/dist/backend/src/meta.js +110 -0
- package/frontend/dist/backend/src/payments/paddle.d.ts +326 -0
- package/frontend/dist/backend/src/payments/paddle.js +2256 -0
- package/frontend/dist/backend/src/plugins/mail/mail.d.ts +248 -0
- package/frontend/dist/backend/src/plugins/mail/mail.js +389 -0
- package/{backend/dist/esm/plugins/mail.d.ts → frontend/dist/backend/src/plugins/mail/ui.d.ts} +23 -0
- package/{backend/dist/esm/plugins/mail.js → frontend/dist/backend/src/plugins/mail/ui.js} +3 -6
- package/frontend/dist/backend/src/rate_limit.d.ts +145 -0
- package/frontend/dist/backend/src/rate_limit.js +673 -0
- package/frontend/dist/backend/src/route.d.ts +35 -0
- package/frontend/dist/backend/src/route.js +212 -0
- package/frontend/dist/backend/src/server.d.ts +485 -0
- package/frontend/dist/backend/src/server.js +2670 -0
- package/frontend/dist/backend/src/splash_screen.d.ts +80 -0
- package/frontend/dist/backend/src/splash_screen.js +135 -0
- package/frontend/dist/backend/src/status.d.ts +74 -0
- package/frontend/dist/backend/src/status.js +199 -0
- package/frontend/dist/backend/src/stream.d.ts +376 -0
- package/frontend/dist/backend/src/stream.js +1007 -0
- package/frontend/dist/backend/src/users.d.ts +807 -0
- package/frontend/dist/backend/src/users.js +2118 -0
- package/frontend/dist/backend/src/utils.d.ts +16 -0
- package/frontend/dist/backend/src/utils.js +241 -0
- package/frontend/dist/backend/src/view.d.ts +162 -0
- package/frontend/dist/backend/src/view.js +720 -0
- package/frontend/dist/frontend/src/elements/base.d.ts +4414 -0
- package/frontend/dist/{elements → frontend/src/elements}/base.js +3624 -260
- package/frontend/dist/frontend/src/elements/module.d.ts +95 -0
- package/frontend/dist/{elements → frontend/src/elements}/module.js +53 -52
- package/frontend/dist/frontend/src/elements/types.d.ts +52 -0
- package/frontend/dist/frontend/src/elements/types.js +5 -0
- package/frontend/dist/frontend/src/modules/attachment.d.ts +126 -0
- package/frontend/dist/frontend/src/modules/attachment.js +306 -0
- package/frontend/dist/frontend/src/modules/auth.d.ts +44 -0
- package/frontend/dist/frontend/src/modules/auth.js +80 -0
- package/frontend/dist/{modules → frontend/src/modules}/color.js +2 -2
- package/frontend/dist/frontend/src/modules/compression.d.ts +39 -0
- package/frontend/dist/frontend/src/modules/compression.js +102 -0
- package/frontend/dist/frontend/src/modules/cookies.d.ts +44 -0
- package/frontend/dist/frontend/src/modules/cookies.js +143 -0
- package/frontend/dist/frontend/src/modules/events.d.ts +31 -0
- package/frontend/dist/frontend/src/modules/events.js +74 -0
- package/frontend/dist/frontend/src/modules/google.d.ts +23 -0
- package/frontend/dist/frontend/src/modules/google.js +52 -0
- package/frontend/dist/frontend/src/modules/meta.d.ts +14 -0
- package/frontend/dist/{modules → frontend/src/modules}/meta.js +9 -7
- package/frontend/dist/{modules → frontend/src/modules}/paddle.d.ts +37 -134
- package/frontend/dist/{modules → frontend/src/modules}/paddle.js +620 -568
- package/frontend/dist/frontend/src/modules/request.d.ts +70 -0
- package/frontend/dist/frontend/src/modules/request.js +117 -0
- package/frontend/dist/frontend/src/modules/settings.d.ts +3 -0
- package/frontend/dist/frontend/src/modules/settings.js +5 -0
- package/frontend/dist/frontend/src/modules/statics.d.ts +21 -0
- package/frontend/dist/{modules → frontend/src/modules}/statics.js +15 -18
- package/frontend/dist/frontend/src/modules/support.d.ts +30 -0
- package/frontend/dist/frontend/src/modules/support.js +53 -0
- package/frontend/dist/{modules → frontend/src/modules}/theme.d.ts +67 -0
- package/frontend/dist/{modules → frontend/src/modules}/theme.js +68 -38
- package/frontend/dist/frontend/src/modules/themes.d.ts +12 -0
- package/frontend/dist/frontend/src/modules/themes.js +22 -0
- package/frontend/dist/frontend/src/modules/user.d.ts +164 -0
- package/frontend/dist/frontend/src/modules/user.js +268 -0
- package/frontend/dist/frontend/src/modules/utils.d.ts +176 -0
- package/frontend/dist/frontend/src/modules/utils.js +569 -0
- package/frontend/dist/frontend/src/types/gradient.d.ts +29 -0
- package/frontend/dist/{types → frontend/src/types}/gradient.js +14 -18
- package/frontend/dist/frontend/src/ui/border_button.d.ts +94 -0
- package/frontend/dist/{ui → frontend/src/ui}/border_button.js +7 -13
- package/frontend/dist/frontend/src/ui/button.d.ts +28 -0
- package/frontend/dist/{ui → frontend/src/ui}/button.js +21 -12
- package/frontend/dist/frontend/src/ui/canvas.d.ts +138 -0
- package/frontend/dist/{ui → frontend/src/ui}/canvas.js +88 -55
- package/frontend/dist/frontend/src/ui/checkbox.d.ts +74 -0
- package/frontend/dist/{ui → frontend/src/ui}/checkbox.js +80 -41
- package/frontend/dist/{ui → frontend/src/ui}/code.d.ts +73 -6
- package/frontend/dist/{ui → frontend/src/ui}/code.js +55 -52
- package/frontend/dist/{ui → frontend/src/ui}/context_menu.d.ts +4 -0
- package/frontend/dist/{ui → frontend/src/ui}/context_menu.js +12 -17
- package/frontend/dist/{ui → frontend/src/ui}/css.d.ts +4 -0
- package/frontend/dist/{ui → frontend/src/ui}/css.js +3 -3
- package/frontend/dist/{ui → frontend/src/ui}/divider.d.ts +4 -0
- package/frontend/dist/{ui → frontend/src/ui}/divider.js +3 -3
- package/frontend/dist/{ui → frontend/src/ui}/dropdown.d.ts +57 -2
- package/frontend/dist/{ui → frontend/src/ui}/dropdown.js +87 -94
- package/frontend/dist/{ui → frontend/src/ui}/for_each.d.ts +4 -0
- package/frontend/dist/{ui → frontend/src/ui}/for_each.js +3 -3
- package/frontend/dist/{ui → frontend/src/ui}/form.d.ts +6 -2
- package/frontend/dist/{ui → frontend/src/ui}/form.js +10 -7
- package/frontend/dist/frontend/src/ui/frame_modes.d.ts +37 -0
- package/frontend/dist/{ui → frontend/src/ui}/frame_modes.js +16 -22
- package/frontend/dist/{ui → frontend/src/ui}/google_map.d.ts +4 -0
- package/frontend/dist/{ui → frontend/src/ui}/google_map.js +4 -4
- package/frontend/dist/{ui → frontend/src/ui}/gradient.d.ts +4 -0
- package/frontend/dist/{ui → frontend/src/ui}/gradient.js +3 -3
- package/frontend/dist/{ui → frontend/src/ui}/image.d.ts +4 -0
- package/frontend/dist/{ui → frontend/src/ui}/image.js +5 -5
- package/frontend/dist/frontend/src/ui/input.d.ts +392 -0
- package/frontend/dist/{ui → frontend/src/ui}/input.js +346 -360
- package/frontend/dist/{ui → frontend/src/ui}/link.d.ts +4 -0
- package/frontend/dist/{ui → frontend/src/ui}/link.js +3 -3
- package/frontend/dist/{ui → frontend/src/ui}/list.d.ts +4 -0
- package/frontend/dist/{ui → frontend/src/ui}/list.js +12 -6
- package/frontend/dist/frontend/src/ui/loader_button.d.ts +80 -0
- package/frontend/dist/{ui → frontend/src/ui}/loader_button.js +35 -47
- package/frontend/dist/frontend/src/ui/loaders.d.ts +57 -0
- package/frontend/dist/{ui → frontend/src/ui}/loaders.js +11 -11
- package/frontend/dist/{ui → frontend/src/ui}/popup.d.ts +11 -6
- package/frontend/dist/{ui → frontend/src/ui}/popup.js +32 -18
- package/frontend/dist/frontend/src/ui/pseudo.d.ts +44 -0
- package/frontend/dist/{ui → frontend/src/ui}/pseudo.js +84 -8
- package/frontend/dist/{ui → frontend/src/ui}/scroller.d.ts +14 -2
- package/frontend/dist/{ui → frontend/src/ui}/scroller.js +37 -43
- package/frontend/dist/{ui → frontend/src/ui}/slider.d.ts +5 -1
- package/frontend/dist/{ui → frontend/src/ui}/slider.js +4 -4
- package/frontend/dist/{ui → frontend/src/ui}/spacer.d.ts +4 -0
- package/frontend/dist/{ui → frontend/src/ui}/spacer.js +3 -3
- package/frontend/dist/{ui → frontend/src/ui}/span.d.ts +4 -0
- package/frontend/dist/{ui → frontend/src/ui}/span.js +3 -3
- package/frontend/dist/{ui → frontend/src/ui}/stack.d.ts +4 -0
- package/frontend/dist/{ui → frontend/src/ui}/stack.js +3 -9
- package/frontend/dist/frontend/src/ui/steps.d.ts +131 -0
- package/frontend/dist/{ui → frontend/src/ui}/steps.js +30 -45
- package/frontend/dist/{ui → frontend/src/ui}/style.d.ts +4 -0
- package/frontend/dist/{ui → frontend/src/ui}/style.js +3 -3
- package/frontend/dist/{ui → frontend/src/ui}/switch.d.ts +5 -1
- package/frontend/dist/{ui → frontend/src/ui}/switch.js +4 -4
- package/frontend/dist/{ui → frontend/src/ui}/table.d.ts +4 -0
- package/frontend/dist/{ui → frontend/src/ui}/table.js +6 -6
- package/frontend/dist/{ui → frontend/src/ui}/tabs.d.ts +45 -3
- package/frontend/dist/{ui → frontend/src/ui}/tabs.js +65 -40
- package/frontend/dist/{ui → frontend/src/ui}/text.d.ts +4 -0
- package/frontend/dist/{ui → frontend/src/ui}/text.js +3 -3
- package/frontend/dist/frontend/src/ui/title.d.ts +91 -0
- package/frontend/dist/frontend/src/ui/title.js +272 -0
- package/frontend/dist/{ui → frontend/src/ui}/view.d.ts +4 -0
- package/frontend/dist/{ui → frontend/src/ui}/view.js +3 -3
- package/frontend/dist/{volt.d.ts → frontend/src/volt.d.ts} +3 -0
- package/frontend/dist/{volt.js → frontend/src/volt.js} +4 -0
- package/frontend/tools/bundle_d_ts.js +71 -0
- package/frontend/tools/convert_to_jsdoc_input.txt +9452 -0
- package/frontend/tools/convert_to_jsdoc_output.txt +7626 -0
- package/frontend/tools/convert_to_jsdoc_tmp.js +345 -0
- package/package.json +11 -12
- package/backend/dist/cjs/database/collection.d.ts +0 -160
- package/backend/dist/cjs/database/collection.js +0 -842
- package/backend/dist/cjs/database/database.d.ts +0 -121
- package/backend/dist/cjs/database/document.d.ts +0 -131
- package/backend/dist/cjs/database/document.js +0 -224
- package/backend/dist/cjs/database.d.ts +0 -502
- package/backend/dist/cjs/database.js +0 -2248
- package/backend/dist/cjs/logger.d.ts +0 -3
- package/backend/dist/cjs/meta.d.ts +0 -50
- package/backend/dist/cjs/mutex.d.ts +0 -24
- package/backend/dist/cjs/payments/paddle.d.ts +0 -160
- package/backend/dist/cjs/plugins/browser.d.ts +0 -36
- package/backend/dist/cjs/plugins/browser.js +0 -198
- package/backend/dist/cjs/plugins/css.d.ts +0 -11
- package/backend/dist/cjs/plugins/css.js +0 -80
- package/backend/dist/cjs/plugins/mail.d.ts +0 -277
- package/backend/dist/cjs/plugins/mail.js +0 -1370
- package/backend/dist/cjs/plugins/ts/compiler.d.ts +0 -139
- package/backend/dist/cjs/plugins/ts/compiler.js +0 -750
- package/backend/dist/cjs/plugins/ts/preprocessing.d.ts +0 -14
- package/backend/dist/cjs/plugins/ts/preprocessing.js +0 -440
- package/backend/dist/cjs/rate_limit.d.ts +0 -63
- package/backend/dist/cjs/rate_limit.js +0 -348
- package/backend/dist/cjs/request.deprc.d.ts +0 -48
- package/backend/dist/cjs/request.deprc.js +0 -572
- package/backend/dist/cjs/response.deprc.d.ts +0 -55
- package/backend/dist/cjs/response.deprc.js +0 -275
- package/backend/dist/cjs/server.d.ts +0 -342
- package/backend/dist/cjs/splash_screen.d.ts +0 -35
- package/backend/dist/cjs/status.d.ts +0 -61
- package/backend/dist/cjs/stream.d.ts +0 -79
- package/backend/dist/cjs/users.d.ts +0 -111
- package/backend/dist/cjs/users.js +0 -1817
- package/backend/dist/cjs/view.js +0 -352
- package/backend/dist/cjs/vinc.dev.d.ts +0 -3
- package/backend/dist/cjs/vinc.dev.js +0 -7
- package/backend/dist/css/adyen.css +0 -92
- package/backend/dist/css/volt.css +0 -70
- package/backend/dist/esm/database/collection.d.ts +0 -160
- package/backend/dist/esm/database/collection.js +0 -1328
- package/backend/dist/esm/database/database.d.ts +0 -121
- package/backend/dist/esm/database/document.d.ts +0 -131
- package/backend/dist/esm/database/document.js +0 -247
- package/backend/dist/esm/database.d.ts +0 -502
- package/backend/dist/esm/database.js +0 -2423
- package/backend/dist/esm/file_watcher.js +0 -329
- package/backend/dist/esm/logger.d.ts +0 -3
- package/backend/dist/esm/logger.js +0 -11
- package/backend/dist/esm/meta.d.ts +0 -50
- package/backend/dist/esm/mutex.d.ts +0 -24
- package/backend/dist/esm/mutex.js +0 -48
- package/backend/dist/esm/payments/paddle.d.ts +0 -160
- package/backend/dist/esm/plugins/browser.d.ts +0 -36
- package/backend/dist/esm/plugins/browser.js +0 -176
- package/backend/dist/esm/plugins/css.d.ts +0 -11
- package/backend/dist/esm/plugins/css.js +0 -90
- package/backend/dist/esm/plugins/ts/compiler.d.ts +0 -139
- package/backend/dist/esm/plugins/ts/compiler.js +0 -1194
- package/backend/dist/esm/plugins/ts/preprocessing.d.ts +0 -14
- package/backend/dist/esm/plugins/ts/preprocessing.js +0 -726
- package/backend/dist/esm/rate_limit.d.ts +0 -63
- package/backend/dist/esm/rate_limit.js +0 -417
- package/backend/dist/esm/request.deprc.d.ts +0 -48
- package/backend/dist/esm/request.deprc.js +0 -572
- package/backend/dist/esm/response.deprc.d.ts +0 -55
- package/backend/dist/esm/response.deprc.js +0 -275
- package/backend/dist/esm/server.d.ts +0 -342
- package/backend/dist/esm/splash_screen.d.ts +0 -35
- package/backend/dist/esm/status.d.ts +0 -61
- package/backend/dist/esm/status.js +0 -197
- package/backend/dist/esm/stream.d.ts +0 -79
- package/backend/dist/esm/users.d.ts +0 -111
- package/backend/dist/esm/users.js +0 -1935
- package/backend/dist/esm/vinc.dev.d.ts +0 -3
- package/backend/dist/esm/vinc.dev.js +0 -7
- package/frontend/dist/elements/base.d.ts +0 -9889
- package/frontend/dist/elements/module.d.ts +0 -30
- package/frontend/dist/modules/array.d.ts +0 -94
- package/frontend/dist/modules/array.js +0 -634
- package/frontend/dist/modules/auth.d.ts +0 -46
- package/frontend/dist/modules/auth.js +0 -139
- package/frontend/dist/modules/colors.d.ts +0 -1
- package/frontend/dist/modules/colors.js +0 -417
- package/frontend/dist/modules/compression.d.ts +0 -6
- package/frontend/dist/modules/compression.js +0 -999
- package/frontend/dist/modules/cookies.d.ts +0 -18
- package/frontend/dist/modules/cookies.js +0 -167
- package/frontend/dist/modules/date.d.ts +0 -142
- package/frontend/dist/modules/date.js +0 -493
- package/frontend/dist/modules/events.d.ts +0 -8
- package/frontend/dist/modules/events.js +0 -91
- package/frontend/dist/modules/google.d.ts +0 -11
- package/frontend/dist/modules/google.js +0 -54
- package/frontend/dist/modules/meta.d.ts +0 -10
- package/frontend/dist/modules/mutex.d.ts +0 -7
- package/frontend/dist/modules/mutex.js +0 -51
- package/frontend/dist/modules/number.d.ts +0 -16
- package/frontend/dist/modules/number.js +0 -23
- package/frontend/dist/modules/object.d.ts +0 -52
- package/frontend/dist/modules/object.js +0 -383
- package/frontend/dist/modules/scheme.d.ts +0 -227
- package/frontend/dist/modules/scheme.js +0 -531
- package/frontend/dist/modules/settings.d.ts +0 -3
- package/frontend/dist/modules/settings.js +0 -4
- package/frontend/dist/modules/statics.d.ts +0 -5
- package/frontend/dist/modules/string.d.ts +0 -124
- package/frontend/dist/modules/string.js +0 -745
- package/frontend/dist/modules/support.d.ts +0 -19
- package/frontend/dist/modules/support.js +0 -103
- package/frontend/dist/modules/themes.d.ts +0 -8
- package/frontend/dist/modules/themes.js +0 -18
- package/frontend/dist/modules/user.d.ts +0 -59
- package/frontend/dist/modules/user.js +0 -280
- package/frontend/dist/modules/utils.d.ts +0 -87
- package/frontend/dist/modules/utils.js +0 -923
- package/frontend/dist/types/gradient.d.ts +0 -12
- package/frontend/dist/ui/border_button.d.ts +0 -152
- package/frontend/dist/ui/button.d.ts +0 -21
- package/frontend/dist/ui/canvas.d.ts +0 -56
- package/frontend/dist/ui/checkbox.d.ts +0 -52
- package/frontend/dist/ui/frame_modes.d.ts +0 -25
- package/frontend/dist/ui/input.d.ts +0 -241
- package/frontend/dist/ui/loader_button.d.ts +0 -93
- package/frontend/dist/ui/loaders.d.ts +0 -57
- package/frontend/dist/ui/pseudo.d.ts +0 -16
- package/frontend/dist/ui/steps.d.ts +0 -59
- package/frontend/dist/ui/title.d.ts +0 -21
- package/frontend/dist/ui/title.js +0 -121
- package/frontend/examples/dashboard/dashboard.ts +0 -776
- /package/backend/dist/cjs/{cli.d.ts → backend/src/cli.d.ts} +0 -0
- /package/backend/dist/cjs/{file_watcher.d.ts → backend/src/database/document.d.ts} +0 -0
- /package/backend/dist/cjs/{file_watcher.js → backend/src/database/document.js} +0 -0
- /package/backend/dist/cjs/{plugins/pdf.d.ts → backend/src/database/filters/strict_filter_test.d.ts} +0 -0
- /package/backend/dist/{esm/file_watcher.d.ts → cjs/backend/src/database/filters/strict_filter_test_v0.d.ts} +0 -0
- /package/backend/dist/{esm/plugins/pdf.d.ts → cjs/backend/src/database/flatten_test.d.ts} +0 -0
- /package/backend/dist/cjs/{frontend.d.ts → backend/src/frontend.d.ts} +0 -0
- /package/backend/dist/cjs/{plugins → backend/src/plugins}/communication.d.ts +0 -0
- /package/backend/dist/cjs/{plugins → backend/src/plugins}/communication.js +0 -0
- /package/backend/dist/cjs/{plugins → backend/src/plugins}/mail/ui.js +0 -0
- /package/backend/dist/cjs/{plugins → backend/src/plugins}/pdf.js +0 -0
- /package/backend/dist/cjs/{plugins → backend/src/plugins}/thread_monitor.d.ts +0 -0
- /package/backend/dist/cjs/{plugins → backend/src/plugins}/thread_monitor.js +0 -0
- /package/backend/dist/cjs/{vinc.d.ts → backend/src/vinc.d.ts} +0 -0
- /package/backend/dist/cjs/{vinc.js → backend/src/vinc.js} +0 -0
- /package/backend/dist/esm/{cli.d.ts → backend/src/cli.d.ts} +0 -0
- /package/backend/dist/esm/{frontend.d.ts → backend/src/frontend.d.ts} +0 -0
- /package/backend/dist/esm/{plugins → backend/src/plugins}/communication.d.ts +0 -0
- /package/backend/dist/esm/{plugins → backend/src/plugins}/communication.js +0 -0
- /package/backend/dist/esm/{plugins → backend/src/plugins}/thread_monitor.d.ts +0 -0
- /package/backend/dist/esm/{plugins → backend/src/plugins}/thread_monitor.js +0 -0
- /package/backend/dist/esm/{vinc.d.ts → backend/src/vinc.d.ts} +0 -0
- /package/backend/dist/esm/{vinc.js → backend/src/vinc.js} +0 -0
- /package/frontend/dist/{elements → frontend/src/elements}/register_element.d.ts +0 -0
- /package/frontend/dist/{elements → frontend/src/elements}/register_element.js +0 -0
- /package/frontend/dist/{modules → frontend/src/modules}/color.d.ts +0 -0
- /package/frontend/dist/{ui → frontend/src/ui}/ui.d.ts +0 -0
- /package/frontend/dist/{ui → frontend/src/ui}/ui.js +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
3
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* @author Daan van den Bergh
|
|
3
|
+
* @copyright © 2022 - 2025 Daan van den Bergh. All rights reserved
|
|
4
4
|
*/
|
|
5
5
|
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
6
6
|
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
@@ -37,16 +37,16 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
|
|
|
37
37
|
return useValue ? value : void 0;
|
|
38
38
|
};
|
|
39
39
|
// External imports.
|
|
40
|
-
import
|
|
40
|
+
import * as vlib from "@vandenberghinc/vlib/frontend";
|
|
41
41
|
// Imports.
|
|
42
42
|
import { Elements, VElementTagMap } from "../elements/module.js";
|
|
43
43
|
import { Utils } from "../modules/utils.js";
|
|
44
|
-
import { HStack, VStack, VStackElement } from "./stack";
|
|
45
|
-
import { Text } from "./text";
|
|
46
|
-
import { ImageMask } from "./image";
|
|
47
|
-
import { GradientBorder } from "./gradient";
|
|
48
|
-
import { Scroller } from "./scroller";
|
|
49
|
-
import { Divider } from "./divider";
|
|
44
|
+
import { HStack, VStack, VStackElement } from "./stack.js";
|
|
45
|
+
import { Text } from "./text.js";
|
|
46
|
+
import { ImageMask } from "./image.js";
|
|
47
|
+
import { GradientBorder } from "./gradient.js";
|
|
48
|
+
import { Scroller } from "./scroller.js";
|
|
49
|
+
import { Divider } from "./divider.js";
|
|
50
50
|
// Input.
|
|
51
51
|
let InputElement = (() => {
|
|
52
52
|
let _classDecorators = [Elements.create({
|
|
@@ -110,11 +110,18 @@ let InputElement = (() => {
|
|
|
110
110
|
this.type(type ?? "text");
|
|
111
111
|
this.value(value ?? "");
|
|
112
112
|
}
|
|
113
|
-
value(val) {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
113
|
+
value(val) {
|
|
114
|
+
if (this._e === undefined) {
|
|
115
|
+
return super.value(val);
|
|
116
|
+
}
|
|
117
|
+
if (val == null) {
|
|
118
|
+
return this._e.value ?? "";
|
|
119
|
+
}
|
|
120
|
+
this._e.value = val.toString();
|
|
121
|
+
// if (val == null) { return this._e.getAttribute("value") ?? ""; }
|
|
122
|
+
// this._e.setAttribute("value", val.toString());
|
|
123
|
+
return this;
|
|
124
|
+
}
|
|
118
125
|
required(val) { if (this._e === undefined) {
|
|
119
126
|
return super.required(val);
|
|
120
127
|
} if (val == null) {
|
|
@@ -336,19 +343,6 @@ let ExtendedInputElement = (() => {
|
|
|
336
343
|
...VStackElement.default_style,
|
|
337
344
|
"color": "inherit",
|
|
338
345
|
"font-size": "16px",
|
|
339
|
-
// Custom.
|
|
340
|
-
"--input-padding": "12px 6px",
|
|
341
|
-
"--input-border-radius": "5px",
|
|
342
|
-
"--input-border-color": "gray",
|
|
343
|
-
"--input-hover-border-color": "gray",
|
|
344
|
-
"--input-background": "transparent",
|
|
345
|
-
"--image-mask-color": "#000",
|
|
346
|
-
"--image-size": "20px",
|
|
347
|
-
"--image-margin-right": "10px",
|
|
348
|
-
"--image-margin-left": "5px",
|
|
349
|
-
"--image-alt": "VWeb",
|
|
350
|
-
"--focus-color": "#8EB8EB",
|
|
351
|
-
"--missing-color": "#E8454E",
|
|
352
346
|
},
|
|
353
347
|
})];
|
|
354
348
|
let _classDescriptor;
|
|
@@ -364,63 +358,113 @@ let ExtendedInputElement = (() => {
|
|
|
364
358
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
365
359
|
__runInitializers(_classThis, _classExtraInitializers);
|
|
366
360
|
}
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
_initial_border_color;
|
|
371
|
-
_hover_border_color;
|
|
361
|
+
copy_opts;
|
|
362
|
+
input_opts;
|
|
363
|
+
/** The label node, always defined even when `opts.label` is undefined, so the user can still style it. */
|
|
372
364
|
// @ts-expect-error
|
|
373
365
|
label;
|
|
366
|
+
/** The left image element created by the `opts.image` field. */
|
|
374
367
|
image;
|
|
368
|
+
/** The clickable copy node created by the `opts.copy` field. */
|
|
369
|
+
copyable;
|
|
370
|
+
/** The input element created by the `opts.input` field. */
|
|
375
371
|
input;
|
|
372
|
+
/** The (gradient) border element used for the input field. */
|
|
376
373
|
input_border;
|
|
374
|
+
/** The container element for the input field. */
|
|
377
375
|
container;
|
|
378
|
-
error
|
|
379
|
-
|
|
376
|
+
/** The error text element shown when the input is marked as missing. */
|
|
377
|
+
error_text;
|
|
378
|
+
/** Has error state. */
|
|
379
|
+
has_error = false;
|
|
380
|
+
/** Is focused state. */
|
|
380
381
|
is_focused = false;
|
|
381
|
-
|
|
382
|
+
/** Validation options. */
|
|
383
|
+
validation_entry;
|
|
382
384
|
// Constructor.
|
|
383
|
-
constructor({ label
|
|
385
|
+
constructor({ label, image, placeholder = "Input", id, readonly = false, required = false, type = "text", value, copy, input, validate, }) {
|
|
384
386
|
// Initialize super.
|
|
385
387
|
super();
|
|
386
388
|
this._init({
|
|
387
389
|
derived: ExtendedInputElement,
|
|
388
390
|
});
|
|
391
|
+
// Cast image.
|
|
392
|
+
if (typeof image === "string") {
|
|
393
|
+
image = { url: image };
|
|
394
|
+
}
|
|
395
|
+
// Cast label.
|
|
396
|
+
if (typeof label === "string") {
|
|
397
|
+
label = { text: label };
|
|
398
|
+
}
|
|
399
|
+
// Direct attributes.
|
|
400
|
+
this.validation_entry = validate;
|
|
389
401
|
// Set id.
|
|
390
402
|
if (id != null) {
|
|
391
403
|
this.id(id);
|
|
392
404
|
}
|
|
393
|
-
//
|
|
394
|
-
this.
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
405
|
+
// Set input options..
|
|
406
|
+
this.input_opts = {
|
|
407
|
+
...(input ?? {}),
|
|
408
|
+
border: {
|
|
409
|
+
color: input?.border?.color ?? "gray",
|
|
410
|
+
hover: input?.border?.hover ?? "gray",
|
|
411
|
+
focused: input?.border?.focused ?? "#8EB8EB",
|
|
412
|
+
missing: input?.border?.missing ?? "#E8454E",
|
|
413
|
+
width: input?.border?.width ?? "1px",
|
|
414
|
+
radius: input?.border?.radius ?? "5px",
|
|
415
|
+
type: input?.border?.type ?? "full",
|
|
416
|
+
},
|
|
417
|
+
};
|
|
418
|
+
// Set copy options.
|
|
419
|
+
this.copy_opts = copy;
|
|
399
420
|
// Set default styling.
|
|
400
421
|
this.styles(ExtendedInputElement.default_style);
|
|
401
422
|
// Title element.
|
|
402
|
-
this.label = Text(label)
|
|
423
|
+
this.label = Text(label?.text)
|
|
403
424
|
.parent(this)
|
|
404
|
-
.font_size("inherit")
|
|
405
|
-
.margin(0, 0, 7.5, 0)
|
|
406
|
-
.color("inherit")
|
|
407
|
-
|
|
408
|
-
.
|
|
409
|
-
if (label == null) {
|
|
425
|
+
.font_size(label?.font_size ?? "inherit")
|
|
426
|
+
.margin(0, 0, label?.spacing ?? (input?.border?.type === "bottom" ? 12.5 : 7.5), 0)
|
|
427
|
+
.color(label?.color ?? "inherit");
|
|
428
|
+
if (!label) {
|
|
429
|
+
// always keep label present so uses can still style it with single-line code when needed.
|
|
410
430
|
this.label.hide();
|
|
411
431
|
}
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
432
|
+
else {
|
|
433
|
+
if (label.wrap) {
|
|
434
|
+
this.label
|
|
435
|
+
.width("fit-content")
|
|
436
|
+
.overflow_wrap("break-word") // or "anywhere" for more aggressive breaking
|
|
437
|
+
.hyphens("auto")
|
|
438
|
+
.display("inline-block") // so width constraints apply
|
|
439
|
+
.max_width(label.max_width ?? "100%"); // ensure there’s something to wrap to
|
|
440
|
+
}
|
|
441
|
+
else {
|
|
442
|
+
this.label.ellipsis_overflow(true)
|
|
443
|
+
.width("fit-content")
|
|
444
|
+
.max_width(label.max_width ?? "100%"); // ensure there’s something to wrap to
|
|
445
|
+
}
|
|
423
446
|
}
|
|
447
|
+
// Input left image.
|
|
448
|
+
this.image = !image ? undefined : ImageMask(image.url)
|
|
449
|
+
.parent(this)
|
|
450
|
+
.mask_color(image.color ?? "#000")
|
|
451
|
+
.square(image.size ?? 20)
|
|
452
|
+
.margin(0, 10, 0, 5)
|
|
453
|
+
.alt(image?.alt ?? "Volt");
|
|
454
|
+
// Copyable right image.
|
|
455
|
+
this.copyable = !this.copy_opts ? undefined : ImageMask(this.copy_opts.url)
|
|
456
|
+
.parent(this)
|
|
457
|
+
.mask_color(this.copy_opts?.color ?? image?.color ?? "#000")
|
|
458
|
+
.square(this.copy_opts.size ?? 20)
|
|
459
|
+
.margin(0, 5, 0, 10)
|
|
460
|
+
.alt(this.copy_opts?.alt ?? "Copy")
|
|
461
|
+
.on_click(() => {
|
|
462
|
+
if (this.copy_opts?.on_click) {
|
|
463
|
+
this.copy_opts.on_click(this.input.value());
|
|
464
|
+
}
|
|
465
|
+
})
|
|
466
|
+
.transition_mask("background 200ms ease-in-out")
|
|
467
|
+
.on_mouse_over_out(e => e.mask_color(this.copy_opts?.hover ?? image?.color ?? "#000"), e => e.mask_color(this.copy_opts?.color ?? image?.color ?? "#000"));
|
|
424
468
|
// Input element.
|
|
425
469
|
if (type === "box" || type === "area") {
|
|
426
470
|
this.input = InputBox(placeholder);
|
|
@@ -437,7 +481,8 @@ let ExtendedInputElement = (() => {
|
|
|
437
481
|
.margin(0)
|
|
438
482
|
.width("100%")
|
|
439
483
|
.stretch(true)
|
|
440
|
-
.padding(0, 5)
|
|
484
|
+
// .padding(0, 5)
|
|
485
|
+
.padding(0)
|
|
441
486
|
.line_height("1.6em")
|
|
442
487
|
.box_shadow("none")
|
|
443
488
|
.border("none")
|
|
@@ -445,54 +490,68 @@ let ExtendedInputElement = (() => {
|
|
|
445
490
|
.z_index(1)
|
|
446
491
|
.border_radius(0) // is required.
|
|
447
492
|
.on_focus(() => {
|
|
448
|
-
if (!this.
|
|
493
|
+
if (!this.has_error) {
|
|
449
494
|
this.is_focused = true;
|
|
450
|
-
this.
|
|
451
|
-
this.container.box_shadow(`0 0 0 3px ${this._focus_color}80`);
|
|
495
|
+
this._set_border_color(this.input_opts.border.focused, true);
|
|
452
496
|
}
|
|
453
497
|
})
|
|
454
498
|
.on_blur(() => {
|
|
455
|
-
if (!this.
|
|
499
|
+
if (!this.has_error) {
|
|
456
500
|
this.is_focused = false;
|
|
457
|
-
this.
|
|
458
|
-
this.container.box_shadow(`0 0 0 0px transparent`);
|
|
501
|
+
this._set_border_color(this.input_opts.border.color);
|
|
459
502
|
}
|
|
460
503
|
});
|
|
504
|
+
// Set input height.
|
|
505
|
+
if (input?.height != null) {
|
|
506
|
+
console.log("Setting fixed height to", input.height);
|
|
507
|
+
this.input.fixed_height(input.height);
|
|
508
|
+
}
|
|
461
509
|
// The input border to support gradients.
|
|
462
510
|
this.input_border = GradientBorder()
|
|
463
511
|
.z_index(0)
|
|
464
512
|
.position(0, 0, 0, 0)
|
|
465
|
-
.
|
|
466
|
-
.
|
|
467
|
-
.border_color(
|
|
468
|
-
.border_color("0px solid transparent")
|
|
513
|
+
.border_width(this.input_opts.border.width)
|
|
514
|
+
.border_radius(this.input_opts.border.radius)
|
|
515
|
+
.border_color(this.input_opts.border.color)
|
|
469
516
|
.box_shadow(`0 0 0 0px transparent`)
|
|
470
|
-
.transition("background 200ms ease-in-out")
|
|
517
|
+
.transition("background 200ms ease-in-out")
|
|
518
|
+
.pointer_events("none");
|
|
519
|
+
if (this.input_opts.border.type === "bottom") {
|
|
520
|
+
this.input_border.hide();
|
|
521
|
+
}
|
|
471
522
|
// The hstack container.
|
|
472
|
-
this.container = HStack(VStack(this.image)
|
|
523
|
+
this.container = HStack(!this.image ? undefined : VStack(this.image) // wrap in container for height.
|
|
473
524
|
.width("fit-content")
|
|
474
525
|
.height("1.6em")
|
|
475
|
-
.center_vertical(), this.
|
|
526
|
+
.center_vertical(), this.input, !this.copyable ? undefined : VStack(this.copyable) // wrap in container for height.
|
|
527
|
+
.width("fit-content")
|
|
528
|
+
.height("1.6em")
|
|
529
|
+
.center_vertical(), this.input_border)
|
|
476
530
|
.parent(this)
|
|
477
531
|
.position("relative")
|
|
478
|
-
.background(
|
|
479
|
-
.padding(
|
|
532
|
+
.background(input?.background ?? "transparent")
|
|
533
|
+
.padding((input?.padding ?? "12px 6px"))
|
|
534
|
+
.border_radius(this.input_opts.border.radius) // for outline when focused or missing etc.
|
|
480
535
|
.transition("box-shadow 0.2s ease-in-out")
|
|
481
536
|
.outline("0px solid transparent")
|
|
482
537
|
.box_shadow(`0 0 0 0px transparent`)
|
|
483
538
|
.width("100%")
|
|
484
539
|
.on_mouse_over_out((e) => {
|
|
485
|
-
if (!this.
|
|
486
|
-
this.
|
|
540
|
+
if (!this.has_error && !this.is_focused) {
|
|
541
|
+
this._set_border_color(this.input_opts.border.hover);
|
|
487
542
|
}
|
|
488
543
|
}, (e) => {
|
|
489
|
-
if (!this.
|
|
490
|
-
this.
|
|
544
|
+
if (!this.has_error && !this.is_focused) {
|
|
545
|
+
this._set_border_color(this.input_opts.border.color);
|
|
491
546
|
}
|
|
492
547
|
});
|
|
548
|
+
if (this.input_opts.border.type === "bottom") {
|
|
549
|
+
this._set_border_color(this.input_opts.border.color);
|
|
550
|
+
this.container.padding_left(0).padding_right(0);
|
|
551
|
+
}
|
|
493
552
|
// The error message.
|
|
494
|
-
this.
|
|
495
|
-
.color(this.
|
|
553
|
+
this.error_text = Text("Incomplete field")
|
|
554
|
+
.color(this.input_opts.border.missing)
|
|
496
555
|
.font_size("0.8em")
|
|
497
556
|
.margin(7.5, 0, 0, 2.5)
|
|
498
557
|
.padding(0)
|
|
@@ -503,122 +562,104 @@ let ExtendedInputElement = (() => {
|
|
|
503
562
|
this.id(id);
|
|
504
563
|
}
|
|
505
564
|
// Set required.
|
|
506
|
-
|
|
507
|
-
this.required(required);
|
|
508
|
-
}
|
|
565
|
+
this.required(required);
|
|
509
566
|
// Append.
|
|
510
|
-
this.append(this.label, this.container, this.
|
|
567
|
+
this.append(this.label, this.container, this.error_text);
|
|
511
568
|
// Set value.
|
|
512
569
|
if (value) {
|
|
513
570
|
this.value(value);
|
|
514
571
|
}
|
|
515
572
|
}
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
styles["--image-margin-right"] = this.image.margin_right().toString();
|
|
527
|
-
styles["--image-margin-left"] = this.image.margin_left().toString();
|
|
528
|
-
styles["--image-alt"] = this.image.alt() || "VWeb";
|
|
529
|
-
styles["--focus-color"] = this._focus_color;
|
|
530
|
-
styles["--missing-color"] = this._missing_color;
|
|
531
|
-
return styles;
|
|
573
|
+
/** Helper to set the border color. */
|
|
574
|
+
_set_border_color(color, set_outline = false) {
|
|
575
|
+
if (this.input_opts.border.type === "full") {
|
|
576
|
+
this.input_border.border_color(color);
|
|
577
|
+
if (set_outline) {
|
|
578
|
+
this.container.box_shadow(`0 0 0 3px ${color}80`);
|
|
579
|
+
}
|
|
580
|
+
else {
|
|
581
|
+
this.container.box_shadow(`0 0 0 0px transparent`);
|
|
582
|
+
}
|
|
532
583
|
}
|
|
533
584
|
else {
|
|
534
|
-
|
|
585
|
+
this.container.border_bottom(this.input_opts.border.width, color);
|
|
535
586
|
}
|
|
536
587
|
}
|
|
537
|
-
// Set
|
|
538
|
-
set_default() {
|
|
539
|
-
return super.set_default(ExtendedInputElement);
|
|
540
|
-
}
|
|
588
|
+
// Set the focus color.
|
|
541
589
|
focus_color(val) {
|
|
542
590
|
if (val == null) {
|
|
543
|
-
return this.
|
|
591
|
+
return (this.input_opts.border.focused ?? "");
|
|
544
592
|
}
|
|
545
|
-
this.
|
|
593
|
+
this.input_opts.border.focused = val;
|
|
546
594
|
return this;
|
|
547
595
|
}
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
}
|
|
552
|
-
this._missing_color = val;
|
|
553
|
-
this.error.color(this._missing_color);
|
|
554
|
-
return this;
|
|
596
|
+
// Set default since it inherits an element.
|
|
597
|
+
set_default() {
|
|
598
|
+
return super.set_default(ExtendedInputElement);
|
|
555
599
|
}
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
this.
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
600
|
+
/**
|
|
601
|
+
* Set the error state and message.
|
|
602
|
+
* Providing a truthy value will enable the error state and return the current instance for chaining.
|
|
603
|
+
* Providing a falsy value will disable the error state and return the current instance for chaining.
|
|
604
|
+
* Providing no value will return the current error message or `undefined` when no error is set.
|
|
605
|
+
*/
|
|
606
|
+
error(err) {
|
|
607
|
+
if (err == null) {
|
|
608
|
+
return (this.has_error ? this.error_text.text() : undefined);
|
|
609
|
+
}
|
|
610
|
+
else if (err) {
|
|
611
|
+
this.has_error = true;
|
|
612
|
+
this._set_border_color(this.input_opts.border.missing, true);
|
|
613
|
+
// this.image.mask_color(this._border_opts.missing)
|
|
614
|
+
this.error_text.show();
|
|
615
|
+
this.error_text.text(err);
|
|
570
616
|
}
|
|
571
617
|
else {
|
|
572
|
-
this.
|
|
573
|
-
this.
|
|
574
|
-
|
|
575
|
-
this.container.box_shadow(`0 0 0 0px transparent`);
|
|
576
|
-
// this.image.mask_color(this._mask_color)
|
|
577
|
-
this.error.hide();
|
|
618
|
+
this.has_error = false;
|
|
619
|
+
this._set_border_color(this.input_opts.border.color);
|
|
620
|
+
this.error_text.hide();
|
|
578
621
|
}
|
|
579
622
|
return this;
|
|
580
623
|
}
|
|
581
|
-
|
|
582
|
-
|
|
624
|
+
/** Remove the error state and mark as valid. */
|
|
625
|
+
valid() {
|
|
626
|
+
return this.error(false);
|
|
583
627
|
}
|
|
584
|
-
|
|
628
|
+
/** Submit the item, throws an error when the item is not defined. */
|
|
585
629
|
submit() {
|
|
630
|
+
// Get value.
|
|
586
631
|
const value = this.value();
|
|
587
|
-
console.log("id:", this.id(), "value:", value);
|
|
588
632
|
if (value == null || value === "") {
|
|
589
|
-
this.
|
|
633
|
+
this.error("Incomplete field");
|
|
590
634
|
throw Error("Fill in all the required fields.");
|
|
591
635
|
}
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
636
|
+
// Validate.
|
|
637
|
+
if (this.validation_entry) {
|
|
638
|
+
const res = vlib.Schema.validate_entry(value, this.validation_entry, { throw: false, field_type: "field" });
|
|
639
|
+
if (res.error) {
|
|
640
|
+
// use raw error for showing.
|
|
641
|
+
this.error(res.raw_error ?? "Invalid value");
|
|
642
|
+
// use full error for throwing.
|
|
643
|
+
throw Error(res.error);
|
|
644
|
+
}
|
|
598
645
|
}
|
|
599
|
-
|
|
600
|
-
this.
|
|
601
|
-
return
|
|
602
|
-
}
|
|
603
|
-
// Show error.
|
|
604
|
-
show_error(err = "Incomplete field") {
|
|
605
|
-
this.missing(true, err);
|
|
606
|
-
return this;
|
|
607
|
-
}
|
|
608
|
-
// Hide error.
|
|
609
|
-
hide_error() {
|
|
610
|
-
this.missing(false);
|
|
611
|
-
return this;
|
|
646
|
+
// Success.
|
|
647
|
+
this.valid();
|
|
648
|
+
return value;
|
|
612
649
|
}
|
|
613
650
|
readonly(val) { if (val == null) {
|
|
614
651
|
return this.input.readonly();
|
|
615
652
|
} this.input.readonly(val); return this; }
|
|
616
653
|
text(val) { if (val == null) {
|
|
617
|
-
return this.label
|
|
618
|
-
} this.label
|
|
619
|
-
value(val) {
|
|
620
|
-
|
|
621
|
-
|
|
654
|
+
return this.label?.text() ?? "";
|
|
655
|
+
} this.label?.text(val); return this; }
|
|
656
|
+
value(val) {
|
|
657
|
+
if (val == null) {
|
|
658
|
+
return this.input.value();
|
|
659
|
+
}
|
|
660
|
+
this.input.value(val);
|
|
661
|
+
return this;
|
|
662
|
+
}
|
|
622
663
|
required(val) { if (val == null) {
|
|
623
664
|
return this.input.required();
|
|
624
665
|
} this.input.required(val); return this; }
|
|
@@ -636,31 +677,6 @@ let ExtendedInputElement = (() => {
|
|
|
636
677
|
this.input.on_input((x, y) => val(this, y));
|
|
637
678
|
return this;
|
|
638
679
|
}
|
|
639
|
-
border_radius(val) { if (val == null) {
|
|
640
|
-
return this.container.border_radius();
|
|
641
|
-
} this.container.border_radius(val); this.input_border.border_radius(val); return this; }
|
|
642
|
-
border_color(val) {
|
|
643
|
-
if (val == null) {
|
|
644
|
-
return this.container.border_color();
|
|
645
|
-
}
|
|
646
|
-
this._initial_border_color = val;
|
|
647
|
-
this.container.border_color(val);
|
|
648
|
-
this.input_border.border_color(val);
|
|
649
|
-
return this;
|
|
650
|
-
}
|
|
651
|
-
hover_border_color(val) {
|
|
652
|
-
if (val == null) {
|
|
653
|
-
return this._hover_border_color;
|
|
654
|
-
}
|
|
655
|
-
this._hover_border_color = val;
|
|
656
|
-
return this;
|
|
657
|
-
}
|
|
658
|
-
border_width(val) { if (val == null) {
|
|
659
|
-
return this.container.border_width();
|
|
660
|
-
} this.container.border_width(val); this.input_border.border_width(val); return this; }
|
|
661
|
-
border_style(val) { if (val == null) {
|
|
662
|
-
return this.container.border_style();
|
|
663
|
-
} this.container.border_style(val); this.input_border.border_style(val); return this; }
|
|
664
680
|
background(val) { if (val == null) {
|
|
665
681
|
return this.container.background();
|
|
666
682
|
} this.container.background(val); return this; }
|
|
@@ -671,13 +687,6 @@ let ExtendedInputElement = (() => {
|
|
|
671
687
|
this.container.padding(...values);
|
|
672
688
|
return this;
|
|
673
689
|
}
|
|
674
|
-
border(...args) {
|
|
675
|
-
if (args.length === 0 || (args.length === 1 && args[0] == null)) {
|
|
676
|
-
return this.input_border.border();
|
|
677
|
-
}
|
|
678
|
-
this.input_border.border(...args);
|
|
679
|
-
return this;
|
|
680
|
-
}
|
|
681
690
|
};
|
|
682
691
|
return ExtendedInputElement = _classThis;
|
|
683
692
|
})();
|
|
@@ -693,18 +702,6 @@ let ExtendedSelectElement = (() => {
|
|
|
693
702
|
"color": "inherit",
|
|
694
703
|
"font-size": "16px",
|
|
695
704
|
"background": "#FFFFFF",
|
|
696
|
-
// Custom.
|
|
697
|
-
"--input-padding": "12px 6px",
|
|
698
|
-
"--input-border-radius": "5px",
|
|
699
|
-
"--input-border-color": "gray",
|
|
700
|
-
"--image-mask-color": "#000",
|
|
701
|
-
"--image-size": "20px",
|
|
702
|
-
"--image-margin-right": "10px",
|
|
703
|
-
"--image-margin-left": "5px",
|
|
704
|
-
"--image-alt": "VWeb",
|
|
705
|
-
"--hover-bg": "#00000007",
|
|
706
|
-
"--focus-color": "#8EB8EB",
|
|
707
|
-
"--missing-color": "#E8454E",
|
|
708
705
|
}
|
|
709
706
|
})];
|
|
710
707
|
let _classDescriptor;
|
|
@@ -720,32 +717,59 @@ let ExtendedSelectElement = (() => {
|
|
|
720
717
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
721
718
|
__runInitializers(_classThis, _classExtraInitializers);
|
|
722
719
|
}
|
|
723
|
-
|
|
724
|
-
_missing_color;
|
|
725
|
-
_mask_color;
|
|
726
|
-
_border_color;
|
|
727
|
-
_hover_bg;
|
|
720
|
+
/** The selectable items. */
|
|
728
721
|
items;
|
|
722
|
+
/** The label node. */
|
|
729
723
|
// @ts-expect-error
|
|
730
724
|
label;
|
|
725
|
+
/** The image node. */
|
|
731
726
|
image;
|
|
727
|
+
/** The input node (readonly) with the selected value. */
|
|
732
728
|
input;
|
|
729
|
+
/** The container node. */
|
|
733
730
|
container;
|
|
734
|
-
error
|
|
731
|
+
/** The error text node. */
|
|
732
|
+
error_text;
|
|
733
|
+
/** The dropdown scroller element. */
|
|
735
734
|
dropdown;
|
|
736
|
-
|
|
735
|
+
/** Has error state. */
|
|
736
|
+
has_error = false;
|
|
737
|
+
/** Is focused state. */
|
|
738
|
+
is_focused = false;
|
|
739
|
+
// Internal attributes.
|
|
740
|
+
input_opts;
|
|
741
|
+
image_opts;
|
|
742
|
+
_dropdown_item_hover;
|
|
737
743
|
_on_change_callback;
|
|
738
744
|
_on_dropdown_close;
|
|
739
745
|
_dropdown_height;
|
|
740
746
|
_value;
|
|
741
747
|
// Constructor.
|
|
742
|
-
constructor({ label = undefined, image = undefined,
|
|
743
|
-
|
|
748
|
+
constructor({ label = undefined, image = undefined, placeholder = "Placeholder", id = undefined, required = false, items = [{ id: "option", text: "Option", image: undefined }], // may also be an array with strings which will be used as the item's id and text.
|
|
749
|
+
dropdown, input, }) {
|
|
744
750
|
// Initialize super.
|
|
745
751
|
super();
|
|
746
752
|
this._init({
|
|
747
753
|
derived: ExtendedSelectElement,
|
|
748
754
|
});
|
|
755
|
+
// Cast image.
|
|
756
|
+
if (typeof image === "string") {
|
|
757
|
+
image = { url: image };
|
|
758
|
+
}
|
|
759
|
+
this.image_opts = image;
|
|
760
|
+
// Set input options..
|
|
761
|
+
this.input_opts = {
|
|
762
|
+
...(input ?? {}),
|
|
763
|
+
border: {
|
|
764
|
+
color: input?.border?.color ?? "gray",
|
|
765
|
+
hover: input?.border?.hover ?? "gray",
|
|
766
|
+
focused: input?.border?.focused ?? "#8EB8EB",
|
|
767
|
+
missing: input?.border?.missing ?? "#E8454E",
|
|
768
|
+
width: input?.border?.width ?? "1px",
|
|
769
|
+
radius: input?.border?.radius ?? "5px",
|
|
770
|
+
type: input?.border?.type ?? "full",
|
|
771
|
+
},
|
|
772
|
+
};
|
|
749
773
|
// Arguments.
|
|
750
774
|
if (Array.isArray(items)) {
|
|
751
775
|
this.items = [];
|
|
@@ -785,11 +809,7 @@ let ExtendedSelectElement = (() => {
|
|
|
785
809
|
throw Error(`Parameter "items" should be a defined value of type "array" or "object".`);
|
|
786
810
|
}
|
|
787
811
|
// Attributes.
|
|
788
|
-
this.
|
|
789
|
-
this._missing_color = ExtendedSelectElement.default_style["--missing-color"];
|
|
790
|
-
this._mask_color = ExtendedSelectElement.default_style["--image-mask-color"];
|
|
791
|
-
this._border_color = ExtendedSelectElement.default_style["--input-border-color"];
|
|
792
|
-
this._hover_bg = ExtendedSelectElement.default_style["--hover-bg"];
|
|
812
|
+
this._dropdown_item_hover = dropdown?.hover ?? "#00000007";
|
|
793
813
|
// Set default styling.
|
|
794
814
|
this.styles(ExtendedSelectElement.default_style);
|
|
795
815
|
// Title element.
|
|
@@ -804,17 +824,12 @@ let ExtendedSelectElement = (() => {
|
|
|
804
824
|
this.label.hide();
|
|
805
825
|
}
|
|
806
826
|
// Title element.
|
|
807
|
-
this.image = ImageMask(image)
|
|
827
|
+
this.image = !image ? undefined : ImageMask(image.url)
|
|
808
828
|
.parent(this)
|
|
809
|
-
.mask_color(
|
|
810
|
-
.
|
|
811
|
-
.margin(0)
|
|
812
|
-
.
|
|
813
|
-
.margin_left(ExtendedSelectElement.default_style["--image-margin-left"])
|
|
814
|
-
.alt(alt ? alt : ExtendedSelectElement.default_style["--image-alt"]);
|
|
815
|
-
if (image == null) {
|
|
816
|
-
this.image.hide();
|
|
817
|
-
}
|
|
829
|
+
.mask_color(image?.color ?? "#000")
|
|
830
|
+
.square(image?.size ?? 20)
|
|
831
|
+
.margin(0, 10, 0, 5)
|
|
832
|
+
.alt(image?.alt ?? "Volt");
|
|
818
833
|
// Input element.
|
|
819
834
|
this.input = Input(placeholder)
|
|
820
835
|
.parent(this)
|
|
@@ -831,29 +846,40 @@ let ExtendedSelectElement = (() => {
|
|
|
831
846
|
.cursor("pointer")
|
|
832
847
|
.border_radius(0); // is required
|
|
833
848
|
// The hstack container.
|
|
834
|
-
this.container = HStack(VStack(this.image)
|
|
849
|
+
this.container = HStack(!this.image ? undefined : VStack(this.image)
|
|
835
850
|
.width("fit-content")
|
|
836
851
|
.height("1.6em")
|
|
837
852
|
.center_vertical(), this.input)
|
|
838
853
|
.parent(this)
|
|
839
|
-
.background(
|
|
840
|
-
.padding(
|
|
841
|
-
.border_radius(
|
|
842
|
-
.border_width(
|
|
854
|
+
.background(input?.background ?? "transparent")
|
|
855
|
+
.padding((input?.padding ?? "12px 6px"))
|
|
856
|
+
.border_radius(this.input_opts.border.radius)
|
|
857
|
+
.border_width(this.input_opts.border.width)
|
|
843
858
|
.border_style("solid")
|
|
844
|
-
.
|
|
845
|
-
.transition("outline 0.2s ease-in-out, box-shadow 0.2s ease-in-out")
|
|
846
|
-
.outline("0px solid transparent")
|
|
859
|
+
.transition("border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out")
|
|
847
860
|
.box_shadow(`0 0 0 0px transparent`)
|
|
848
861
|
.width("100%")
|
|
862
|
+
.on_mouse_over_out((e) => {
|
|
863
|
+
if (!this.has_error && !this.is_focused) {
|
|
864
|
+
this._set_border_color(this.input_opts.border.hover);
|
|
865
|
+
}
|
|
866
|
+
}, (e) => {
|
|
867
|
+
if (!this.has_error && !this.is_focused) {
|
|
868
|
+
this._set_border_color(this.input_opts.border.color);
|
|
869
|
+
}
|
|
870
|
+
})
|
|
849
871
|
.on_click(() => {
|
|
850
872
|
if (this.dropdown.is_hidden()) {
|
|
851
873
|
this.expand();
|
|
852
874
|
}
|
|
853
875
|
});
|
|
876
|
+
this._set_border_color(this.input_opts.border.color);
|
|
877
|
+
if (this.input_opts.border.type === "bottom") {
|
|
878
|
+
this.container.padding_left(0).padding_right(0);
|
|
879
|
+
}
|
|
854
880
|
// The error message.
|
|
855
|
-
this.
|
|
856
|
-
.color(this.
|
|
881
|
+
this.error_text = Text("Incomplete field")
|
|
882
|
+
.color(this.input_opts.border.missing)
|
|
857
883
|
.font_size("0.8em")
|
|
858
884
|
.margin(7.5, 0, 0, 2.5)
|
|
859
885
|
.padding(0)
|
|
@@ -864,16 +890,16 @@ let ExtendedSelectElement = (() => {
|
|
|
864
890
|
.parent(this)
|
|
865
891
|
.position(0, null, null, null)
|
|
866
892
|
.background(ExtendedSelectElement.default_style["background"])
|
|
867
|
-
.border_radius(
|
|
868
|
-
.border_width(
|
|
893
|
+
.border_radius(this.input_opts.border.radius)
|
|
894
|
+
.border_width(this.input_opts.border.width)
|
|
869
895
|
.border_style("solid")
|
|
870
|
-
.border_color(this.
|
|
896
|
+
.border_color(this.input_opts.border.color)
|
|
871
897
|
.box_shadow("0px 0px 5px #00000050")
|
|
872
898
|
.frame("100%", "100%")
|
|
873
899
|
.z_index(10)
|
|
874
900
|
.hide();
|
|
875
901
|
// Append.
|
|
876
|
-
this.append(this.label, this.container, this.
|
|
902
|
+
this.append(this.label, this.container, this.error_text, this.dropdown);
|
|
877
903
|
// Styling.
|
|
878
904
|
this.position("relative");
|
|
879
905
|
this.overflow("visible");
|
|
@@ -903,92 +929,103 @@ let ExtendedSelectElement = (() => {
|
|
|
903
929
|
if (stop) {
|
|
904
930
|
this.dropdown.hide();
|
|
905
931
|
window.removeEventListener("mousedown", this._on_dropdown_close);
|
|
932
|
+
// Unfocus.
|
|
933
|
+
if (!this.has_error) {
|
|
934
|
+
this.is_focused = false;
|
|
935
|
+
this._set_border_color(this.input_opts.border.color);
|
|
936
|
+
}
|
|
906
937
|
}
|
|
907
938
|
};
|
|
908
939
|
}
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
styles["--input-padding"] = this.container.padding();
|
|
920
|
-
styles["--input-border-radius"] = this.container.border_radius();
|
|
921
|
-
styles["--input-border-color"] = this._border_color;
|
|
922
|
-
styles["--image-mask-color"] = this._mask_color;
|
|
923
|
-
styles["--image-size"] = this.image.width().toString();
|
|
924
|
-
styles["--image-margin-right"] = this.image.margin_right().toString();
|
|
925
|
-
styles["--image-margin-left"] = this.image.margin_left().toString();
|
|
926
|
-
styles["--image-alt"] = this.image.alt() || "VWeb";
|
|
927
|
-
styles["--focus-color"] = this._focus_color;
|
|
928
|
-
styles["--missing-color"] = this._missing_color;
|
|
929
|
-
return styles;
|
|
940
|
+
/** Helper to set the border color. */
|
|
941
|
+
_set_border_color(color, set_outline = false) {
|
|
942
|
+
if (this.input_opts.border.type === "full") {
|
|
943
|
+
this.container.border_color(color);
|
|
944
|
+
if (set_outline) {
|
|
945
|
+
this.container.box_shadow(`0 0 0 3px ${color}80`);
|
|
946
|
+
}
|
|
947
|
+
else {
|
|
948
|
+
this.container.box_shadow(`0 0 0 0px transparent`);
|
|
949
|
+
}
|
|
930
950
|
}
|
|
931
951
|
else {
|
|
932
|
-
|
|
952
|
+
this.container.border_bottom(this.input_opts.border.width, color);
|
|
933
953
|
}
|
|
934
954
|
}
|
|
935
|
-
// Set default since it inherits an element.
|
|
936
|
-
set_default() {
|
|
937
|
-
return super.set_default(ExtendedSelectElement);
|
|
938
|
-
}
|
|
939
955
|
focus_color(val) {
|
|
940
956
|
if (val == null) {
|
|
941
|
-
return this.
|
|
957
|
+
return this.input_opts.border.focused ?? "";
|
|
942
958
|
}
|
|
943
|
-
this.
|
|
959
|
+
this.input_opts.border.focused = val;
|
|
944
960
|
return this;
|
|
945
961
|
}
|
|
946
|
-
|
|
962
|
+
error_color(val) {
|
|
947
963
|
if (val == null) {
|
|
948
|
-
return this.
|
|
964
|
+
return this.input_opts.border.missing ?? "";
|
|
949
965
|
}
|
|
950
|
-
this.
|
|
951
|
-
this.
|
|
966
|
+
this.input_opts.border.missing = val;
|
|
967
|
+
this.error_text.color(this.input_opts.border.missing);
|
|
952
968
|
return this;
|
|
953
969
|
}
|
|
954
|
-
|
|
955
|
-
if (
|
|
956
|
-
return this.
|
|
957
|
-
}
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
970
|
+
dropdown_height(val) {
|
|
971
|
+
if (val === undefined) {
|
|
972
|
+
return this._dropdown_height;
|
|
973
|
+
}
|
|
974
|
+
this._dropdown_height = val;
|
|
975
|
+
return this;
|
|
976
|
+
}
|
|
977
|
+
/** Set default since it inherits an element. */
|
|
978
|
+
set_default() {
|
|
979
|
+
return super.set_default(ExtendedSelectElement);
|
|
980
|
+
}
|
|
981
|
+
/**
|
|
982
|
+
* Set the error state and message.
|
|
983
|
+
* Providing a truthy value will enable the error state and return the current instance for chaining.
|
|
984
|
+
* Providing a falsy value will disable the error state and return the current instance for chaining.
|
|
985
|
+
* Providing no value will return the current error message or `undefined` when no error is set.
|
|
986
|
+
*/
|
|
987
|
+
error(err) {
|
|
988
|
+
if (err == null) {
|
|
989
|
+
return (this.has_error ? this.error_text.text() : undefined);
|
|
990
|
+
}
|
|
991
|
+
else if (err) {
|
|
992
|
+
this.has_error = true;
|
|
993
|
+
this._set_border_color(this.input_opts.border.missing, true);
|
|
994
|
+
this.image?.mask_color(this.input_opts.border.missing);
|
|
995
|
+
this.error_text.show();
|
|
964
996
|
if (err) {
|
|
965
|
-
this.
|
|
997
|
+
this.error_text.text(err);
|
|
966
998
|
}
|
|
967
999
|
}
|
|
968
1000
|
else {
|
|
969
|
-
this.
|
|
970
|
-
this.
|
|
971
|
-
this.
|
|
972
|
-
this.
|
|
973
|
-
this.error.hide();
|
|
1001
|
+
this.has_error = false;
|
|
1002
|
+
this._set_border_color(this.input_opts.border.color);
|
|
1003
|
+
this.image?.mask_color(this.image_opts?.color ?? "#000");
|
|
1004
|
+
this.error_text.hide();
|
|
974
1005
|
}
|
|
975
1006
|
return this;
|
|
976
1007
|
}
|
|
977
|
-
|
|
978
|
-
|
|
1008
|
+
/** Remove the error state and mark as valid. */
|
|
1009
|
+
valid() {
|
|
1010
|
+
return this.error(false);
|
|
979
1011
|
}
|
|
980
|
-
|
|
1012
|
+
/** Submit the item, throws an error when the item is not defined. */
|
|
981
1013
|
submit() {
|
|
982
1014
|
const value = this.value();
|
|
983
1015
|
if (value == null || value === "") {
|
|
984
|
-
this.
|
|
1016
|
+
this.error("Incomplete field");
|
|
985
1017
|
throw Error("Fill in all the required fields.");
|
|
986
1018
|
}
|
|
987
|
-
this.
|
|
1019
|
+
this.valid();
|
|
988
1020
|
return value;
|
|
989
1021
|
}
|
|
990
|
-
|
|
1022
|
+
/** Expand dropdown. */
|
|
991
1023
|
expand() {
|
|
1024
|
+
// Set focus.
|
|
1025
|
+
if (!this.has_error) {
|
|
1026
|
+
this.is_focused = true;
|
|
1027
|
+
this._set_border_color(this.input_opts.border.focused, true);
|
|
1028
|
+
}
|
|
992
1029
|
// Add event listener.
|
|
993
1030
|
window.addEventListener("mousedown", this._on_dropdown_close);
|
|
994
1031
|
// Clear.
|
|
@@ -1015,7 +1052,7 @@ let ExtendedSelectElement = (() => {
|
|
|
1015
1052
|
});
|
|
1016
1053
|
}
|
|
1017
1054
|
else {
|
|
1018
|
-
const results = fuzzy.search({
|
|
1055
|
+
const results = vlib.fuzzy.search({
|
|
1019
1056
|
query,
|
|
1020
1057
|
targets: this.items,
|
|
1021
1058
|
limit: undefined,
|
|
@@ -1042,12 +1079,10 @@ let ExtendedSelectElement = (() => {
|
|
|
1042
1079
|
let img;
|
|
1043
1080
|
if (item.image != null) {
|
|
1044
1081
|
img = ImageMask(item.image)
|
|
1045
|
-
.mask_color(this.
|
|
1046
|
-
.
|
|
1047
|
-
.margin(0)
|
|
1048
|
-
.
|
|
1049
|
-
.margin_left(ExtendedSelectElement.default_style["--image-margin-left"])
|
|
1050
|
-
.alt(ExtendedSelectElement.default_style["--image-alt"])
|
|
1082
|
+
.mask_color(this.image_opts?.color ?? "#000")
|
|
1083
|
+
.square(this.image_opts?.size ?? 20)
|
|
1084
|
+
.margin(0, 10, 0, 5)
|
|
1085
|
+
.alt(this.image_opts?.alt ?? "Volt")
|
|
1051
1086
|
.pointer_events("none"); // so target element of mouse down is easier.
|
|
1052
1087
|
}
|
|
1053
1088
|
// Text.
|
|
@@ -1074,7 +1109,7 @@ let ExtendedSelectElement = (() => {
|
|
|
1074
1109
|
}
|
|
1075
1110
|
window.removeEventListener("mousedown", this._on_dropdown_close);
|
|
1076
1111
|
})
|
|
1077
|
-
.on_mouse_over((e) => e.background(this.
|
|
1112
|
+
.on_mouse_over((e) => e.background(this._dropdown_item_hover))
|
|
1078
1113
|
.on_mouse_out((e) => e.background("transparent"));
|
|
1079
1114
|
// Update the item with the stack for searches.
|
|
1080
1115
|
item.stack = stack;
|
|
@@ -1087,7 +1122,7 @@ let ExtendedSelectElement = (() => {
|
|
|
1087
1122
|
if (this.items.length > 15) {
|
|
1088
1123
|
this.dropdown.append(search, Divider()
|
|
1089
1124
|
.margin(0)
|
|
1090
|
-
.background(this.
|
|
1125
|
+
.background(this.input_opts.border.color), content);
|
|
1091
1126
|
}
|
|
1092
1127
|
else {
|
|
1093
1128
|
this.dropdown.append(content);
|
|
@@ -1127,14 +1162,6 @@ let ExtendedSelectElement = (() => {
|
|
|
1127
1162
|
});
|
|
1128
1163
|
return this;
|
|
1129
1164
|
}
|
|
1130
|
-
mask_color(val) {
|
|
1131
|
-
if (val == null) {
|
|
1132
|
-
return this._mask_color;
|
|
1133
|
-
}
|
|
1134
|
-
this._mask_color = val;
|
|
1135
|
-
this.image.mask_color(this._mask_color);
|
|
1136
|
-
return this;
|
|
1137
|
-
}
|
|
1138
1165
|
background(val) {
|
|
1139
1166
|
if (val == null) {
|
|
1140
1167
|
return this.background();
|
|
@@ -1143,39 +1170,6 @@ let ExtendedSelectElement = (() => {
|
|
|
1143
1170
|
this.dropdown.background(val);
|
|
1144
1171
|
return this;
|
|
1145
1172
|
}
|
|
1146
|
-
border_radius(val) {
|
|
1147
|
-
if (val == null) {
|
|
1148
|
-
return this.container.border_radius();
|
|
1149
|
-
}
|
|
1150
|
-
this.container.border_radius(val);
|
|
1151
|
-
this.dropdown.border_radius(val);
|
|
1152
|
-
return this;
|
|
1153
|
-
}
|
|
1154
|
-
border_color(val) {
|
|
1155
|
-
if (val == null) {
|
|
1156
|
-
return this._border_color;
|
|
1157
|
-
}
|
|
1158
|
-
this._border_color = val;
|
|
1159
|
-
this.container.border_color(this._border_color);
|
|
1160
|
-
this.dropdown.border_color(this._border_color);
|
|
1161
|
-
return this;
|
|
1162
|
-
}
|
|
1163
|
-
border_width(val) {
|
|
1164
|
-
if (val == null) {
|
|
1165
|
-
return this.container.border_width();
|
|
1166
|
-
}
|
|
1167
|
-
this.container.border_width(val);
|
|
1168
|
-
this.dropdown.border_width(val);
|
|
1169
|
-
return this;
|
|
1170
|
-
}
|
|
1171
|
-
border_style(val) {
|
|
1172
|
-
if (val == null) {
|
|
1173
|
-
return this.container.border_style();
|
|
1174
|
-
}
|
|
1175
|
-
this.container.border_style(val);
|
|
1176
|
-
this.dropdown.border_style(val);
|
|
1177
|
-
return this;
|
|
1178
|
-
}
|
|
1179
1173
|
padding(...values) {
|
|
1180
1174
|
if (values.length === 0 || (values.length === 1 && values[0] == null)) {
|
|
1181
1175
|
return this.container.padding();
|
|
@@ -1184,14 +1178,6 @@ let ExtendedSelectElement = (() => {
|
|
|
1184
1178
|
this.dropdown.padding(...values);
|
|
1185
1179
|
return this;
|
|
1186
1180
|
}
|
|
1187
|
-
border(...args) {
|
|
1188
|
-
if (args.length === 0 || (args.length === 1 && args[0] == null)) {
|
|
1189
|
-
return this.container.border();
|
|
1190
|
-
}
|
|
1191
|
-
this.container.border(...args);
|
|
1192
|
-
this.dropdown.border(...args);
|
|
1193
|
-
return this;
|
|
1194
|
-
}
|
|
1195
1181
|
// @ts-expect-error
|
|
1196
1182
|
on_change(callback) {
|
|
1197
1183
|
if (callback == null) {
|