@trebired/frontend 0.3.0
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/CHANGELOG.md +30 -0
- package/LICENSE +661 -0
- package/README.md +212 -0
- package/dist/actions/buttons.d.ts +8 -0
- package/dist/actions/buttons.d.ts.map +1 -0
- package/dist/actions/buttons.js +116 -0
- package/dist/actions/buttons.js.map +1 -0
- package/dist/actions/components/index.d.ts +26 -0
- package/dist/actions/components/index.d.ts.map +1 -0
- package/dist/actions/components/index.js +25 -0
- package/dist/actions/components/index.js.map +1 -0
- package/dist/actions/confetti.d.ts +12 -0
- package/dist/actions/confetti.d.ts.map +1 -0
- package/dist/actions/confetti.js +36 -0
- package/dist/actions/confetti.js.map +1 -0
- package/dist/actions/forms.d.ts +12 -0
- package/dist/actions/forms.d.ts.map +1 -0
- package/dist/actions/forms.js +159 -0
- package/dist/actions/forms.js.map +1 -0
- package/dist/actions/index.d.ts +8 -0
- package/dist/actions/index.d.ts.map +1 -0
- package/dist/actions/index.js +7 -0
- package/dist/actions/index.js.map +1 -0
- package/dist/actions/request.d.ts +13 -0
- package/dist/actions/request.d.ts.map +1 -0
- package/dist/actions/request.js +83 -0
- package/dist/actions/request.js.map +1 -0
- package/dist/actions/response.d.ts +18 -0
- package/dist/actions/response.d.ts.map +1 -0
- package/dist/actions/response.js +104 -0
- package/dist/actions/response.js.map +1 -0
- package/dist/actions/styles/index.scss +42 -0
- package/dist/actions/triggers.d.ts +24 -0
- package/dist/actions/triggers.d.ts.map +1 -0
- package/dist/actions/triggers.js +107 -0
- package/dist/actions/triggers.js.map +1 -0
- package/dist/actions/types.d.ts +63 -0
- package/dist/actions/types.d.ts.map +1 -0
- package/dist/actions/types.js +2 -0
- package/dist/actions/types.js.map +1 -0
- package/dist/components/index.d.ts +5 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +11 -0
- package/dist/components/index.js.map +1 -0
- package/dist/dom/index.d.ts +26 -0
- package/dist/dom/index.d.ts.map +1 -0
- package/dist/dom/index.js +164 -0
- package/dist/dom/index.js.map +1 -0
- package/dist/flash/components/index.d.ts +28 -0
- package/dist/flash/components/index.d.ts.map +1 -0
- package/dist/flash/components/index.js +27 -0
- package/dist/flash/components/index.js.map +1 -0
- package/dist/flash/dialogs.d.ts +6 -0
- package/dist/flash/dialogs.d.ts.map +1 -0
- package/dist/flash/dialogs.js +120 -0
- package/dist/flash/dialogs.js.map +1 -0
- package/dist/flash/duration.d.ts +8 -0
- package/dist/flash/duration.d.ts.map +1 -0
- package/dist/flash/duration.js +20 -0
- package/dist/flash/duration.js.map +1 -0
- package/dist/flash/elements.d.ts +14 -0
- package/dist/flash/elements.d.ts.map +1 -0
- package/dist/flash/elements.js +67 -0
- package/dist/flash/elements.js.map +1 -0
- package/dist/flash/index.d.ts +8 -0
- package/dist/flash/index.d.ts.map +1 -0
- package/dist/flash/index.js +18 -0
- package/dist/flash/index.js.map +1 -0
- package/dist/flash/stack.d.ts +6 -0
- package/dist/flash/stack.d.ts.map +1 -0
- package/dist/flash/stack.js +56 -0
- package/dist/flash/stack.js.map +1 -0
- package/dist/flash/styles/index.scss +118 -0
- package/dist/flash/toast.d.ts +24 -0
- package/dist/flash/toast.d.ts.map +1 -0
- package/dist/flash/toast.js +67 -0
- package/dist/flash/toast.js.map +1 -0
- package/dist/flash/types.d.ts +29 -0
- package/dist/flash/types.d.ts.map +1 -0
- package/dist/flash/types.js +2 -0
- package/dist/flash/types.js.map +1 -0
- package/dist/http/index.d.ts +30 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +104 -0
- package/dist/http/index.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +104 -0
- package/dist/index.js.map +1 -0
- package/dist/inputs/components/index.d.ts +16 -0
- package/dist/inputs/components/index.d.ts.map +1 -0
- package/dist/inputs/components/index.js +112 -0
- package/dist/inputs/components/index.js.map +1 -0
- package/dist/inputs/index.d.ts +17 -0
- package/dist/inputs/index.d.ts.map +1 -0
- package/dist/inputs/index.js +54 -0
- package/dist/inputs/index.js.map +1 -0
- package/dist/inputs/styles/cropper.scss +244 -0
- package/dist/inputs/styles/field.scss +15 -0
- package/dist/inputs/styles/index.scss +3 -0
- package/dist/inputs/styles/upload.scss +125 -0
- package/dist/inputs/upload/config.d.ts +57 -0
- package/dist/inputs/upload/config.d.ts.map +1 -0
- package/dist/inputs/upload/config.js +61 -0
- package/dist/inputs/upload/config.js.map +1 -0
- package/dist/inputs/upload/crop-session.d.ts +6 -0
- package/dist/inputs/upload/crop-session.d.ts.map +1 -0
- package/dist/inputs/upload/crop-session.js +204 -0
- package/dist/inputs/upload/crop-session.js.map +1 -0
- package/dist/inputs/upload/crop.d.ts +20 -0
- package/dist/inputs/upload/crop.d.ts.map +1 -0
- package/dist/inputs/upload/crop.js +124 -0
- package/dist/inputs/upload/crop.js.map +1 -0
- package/dist/inputs/upload/dom.d.ts +19 -0
- package/dist/inputs/upload/dom.d.ts.map +1 -0
- package/dist/inputs/upload/dom.js +74 -0
- package/dist/inputs/upload/dom.js.map +1 -0
- package/dist/inputs/upload/drop.d.ts +10 -0
- package/dist/inputs/upload/drop.d.ts.map +1 -0
- package/dist/inputs/upload/drop.js +92 -0
- package/dist/inputs/upload/drop.js.map +1 -0
- package/dist/inputs/upload/files.d.ts +14 -0
- package/dist/inputs/upload/files.d.ts.map +1 -0
- package/dist/inputs/upload/files.js +82 -0
- package/dist/inputs/upload/files.js.map +1 -0
- package/dist/inputs/upload/manager.d.ts +36 -0
- package/dist/inputs/upload/manager.d.ts.map +1 -0
- package/dist/inputs/upload/manager.js +236 -0
- package/dist/inputs/upload/manager.js.map +1 -0
- package/dist/inputs/upload/markup.d.ts +30 -0
- package/dist/inputs/upload/markup.d.ts.map +1 -0
- package/dist/inputs/upload/markup.js +118 -0
- package/dist/inputs/upload/markup.js.map +1 -0
- package/dist/inputs/upload/model.d.ts +41 -0
- package/dist/inputs/upload/model.d.ts.map +1 -0
- package/dist/inputs/upload/model.js +76 -0
- package/dist/inputs/upload/model.js.map +1 -0
- package/dist/inputs/upload/state.d.ts +16 -0
- package/dist/inputs/upload/state.d.ts.map +1 -0
- package/dist/inputs/upload/state.js +181 -0
- package/dist/inputs/upload/state.js.map +1 -0
- package/dist/inputs/upload/text.d.ts +7 -0
- package/dist/inputs/upload/text.d.ts.map +1 -0
- package/dist/inputs/upload/text.js +29 -0
- package/dist/inputs/upload/text.js.map +1 -0
- package/dist/inputs/upload/types.d.ts +86 -0
- package/dist/inputs/upload/types.d.ts.map +1 -0
- package/dist/inputs/upload/types.js +2 -0
- package/dist/inputs/upload/types.js.map +1 -0
- package/dist/layer/components/index.d.ts +12 -0
- package/dist/layer/components/index.d.ts.map +1 -0
- package/dist/layer/components/index.js +12 -0
- package/dist/layer/components/index.js.map +1 -0
- package/dist/layer/index.d.ts +22 -0
- package/dist/layer/index.d.ts.map +1 -0
- package/dist/layer/index.js +159 -0
- package/dist/layer/index.js.map +1 -0
- package/dist/layer/styles/index.scss +6 -0
- package/dist/live/components/index.d.ts +15 -0
- package/dist/live/components/index.d.ts.map +1 -0
- package/dist/live/components/index.js +12 -0
- package/dist/live/components/index.js.map +1 -0
- package/dist/live/index.d.ts +29 -0
- package/dist/live/index.d.ts.map +1 -0
- package/dist/live/index.js +103 -0
- package/dist/live/index.js.map +1 -0
- package/dist/logging/index.d.ts +17 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +68 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/modal/components/index.d.ts +18 -0
- package/dist/modal/components/index.d.ts.map +1 -0
- package/dist/modal/components/index.js +20 -0
- package/dist/modal/components/index.js.map +1 -0
- package/dist/modal/index.d.ts +24 -0
- package/dist/modal/index.d.ts.map +1 -0
- package/dist/modal/index.js +184 -0
- package/dist/modal/index.js.map +1 -0
- package/dist/modal/styles/index.scss +50 -0
- package/dist/popover/components/index.d.ts +14 -0
- package/dist/popover/components/index.d.ts.map +1 -0
- package/dist/popover/components/index.js +16 -0
- package/dist/popover/components/index.js.map +1 -0
- package/dist/popover/index.d.ts +16 -0
- package/dist/popover/index.d.ts.map +1 -0
- package/dist/popover/index.js +140 -0
- package/dist/popover/index.js.map +1 -0
- package/dist/popover/styles/index.scss +24 -0
- package/dist/progress/components/index.d.ts +10 -0
- package/dist/progress/components/index.d.ts.map +1 -0
- package/dist/progress/components/index.js +14 -0
- package/dist/progress/components/index.js.map +1 -0
- package/dist/progress/index.d.ts +18 -0
- package/dist/progress/index.d.ts.map +1 -0
- package/dist/progress/index.js +89 -0
- package/dist/progress/index.js.map +1 -0
- package/dist/progress/styles/index.scss +16 -0
- package/dist/react/index.d.ts +17 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +47 -0
- package/dist/react/index.js.map +1 -0
- package/dist/src/actions/buttons.d.ts +8 -0
- package/dist/src/actions/buttons.d.ts.map +1 -0
- package/dist/src/actions/buttons.js +116 -0
- package/dist/src/actions/buttons.js.map +1 -0
- package/dist/src/actions/components/index.d.ts +26 -0
- package/dist/src/actions/components/index.d.ts.map +1 -0
- package/dist/src/actions/components/index.js +25 -0
- package/dist/src/actions/components/index.js.map +1 -0
- package/dist/src/actions/confetti.d.ts +12 -0
- package/dist/src/actions/confetti.d.ts.map +1 -0
- package/dist/src/actions/confetti.js +36 -0
- package/dist/src/actions/confetti.js.map +1 -0
- package/dist/src/actions/forms.d.ts +12 -0
- package/dist/src/actions/forms.d.ts.map +1 -0
- package/dist/src/actions/forms.js +159 -0
- package/dist/src/actions/forms.js.map +1 -0
- package/dist/src/actions/index.d.ts +8 -0
- package/dist/src/actions/index.d.ts.map +1 -0
- package/dist/src/actions/index.js +7 -0
- package/dist/src/actions/index.js.map +1 -0
- package/dist/src/actions/request.d.ts +13 -0
- package/dist/src/actions/request.d.ts.map +1 -0
- package/dist/src/actions/request.js +83 -0
- package/dist/src/actions/request.js.map +1 -0
- package/dist/src/actions/response.d.ts +18 -0
- package/dist/src/actions/response.d.ts.map +1 -0
- package/dist/src/actions/response.js +104 -0
- package/dist/src/actions/response.js.map +1 -0
- package/dist/src/actions/triggers.d.ts +24 -0
- package/dist/src/actions/triggers.d.ts.map +1 -0
- package/dist/src/actions/triggers.js +107 -0
- package/dist/src/actions/triggers.js.map +1 -0
- package/dist/src/actions/types.d.ts +63 -0
- package/dist/src/actions/types.d.ts.map +1 -0
- package/dist/src/actions/types.js +2 -0
- package/dist/src/actions/types.js.map +1 -0
- package/dist/src/components/index.d.ts +5 -0
- package/dist/src/components/index.d.ts.map +1 -0
- package/dist/src/components/index.js +11 -0
- package/dist/src/components/index.js.map +1 -0
- package/dist/src/dom/index.d.ts +26 -0
- package/dist/src/dom/index.d.ts.map +1 -0
- package/dist/src/dom/index.js +164 -0
- package/dist/src/dom/index.js.map +1 -0
- package/dist/src/flash/components/index.d.ts +28 -0
- package/dist/src/flash/components/index.d.ts.map +1 -0
- package/dist/src/flash/components/index.js +27 -0
- package/dist/src/flash/components/index.js.map +1 -0
- package/dist/src/flash/dialogs.d.ts +6 -0
- package/dist/src/flash/dialogs.d.ts.map +1 -0
- package/dist/src/flash/dialogs.js +120 -0
- package/dist/src/flash/dialogs.js.map +1 -0
- package/dist/src/flash/duration.d.ts +8 -0
- package/dist/src/flash/duration.d.ts.map +1 -0
- package/dist/src/flash/duration.js +20 -0
- package/dist/src/flash/duration.js.map +1 -0
- package/dist/src/flash/elements.d.ts +14 -0
- package/dist/src/flash/elements.d.ts.map +1 -0
- package/dist/src/flash/elements.js +67 -0
- package/dist/src/flash/elements.js.map +1 -0
- package/dist/src/flash/index.d.ts +8 -0
- package/dist/src/flash/index.d.ts.map +1 -0
- package/dist/src/flash/index.js +18 -0
- package/dist/src/flash/index.js.map +1 -0
- package/dist/src/flash/stack.d.ts +6 -0
- package/dist/src/flash/stack.d.ts.map +1 -0
- package/dist/src/flash/stack.js +56 -0
- package/dist/src/flash/stack.js.map +1 -0
- package/dist/src/flash/toast.d.ts +24 -0
- package/dist/src/flash/toast.d.ts.map +1 -0
- package/dist/src/flash/toast.js +67 -0
- package/dist/src/flash/toast.js.map +1 -0
- package/dist/src/flash/types.d.ts +29 -0
- package/dist/src/flash/types.d.ts.map +1 -0
- package/dist/src/flash/types.js +2 -0
- package/dist/src/flash/types.js.map +1 -0
- package/dist/src/http/index.d.ts +30 -0
- package/dist/src/http/index.d.ts.map +1 -0
- package/dist/src/http/index.js +104 -0
- package/dist/src/http/index.js.map +1 -0
- package/dist/src/index.d.ts +40 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +104 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/inputs/components/index.d.ts +16 -0
- package/dist/src/inputs/components/index.d.ts.map +1 -0
- package/dist/src/inputs/components/index.js +112 -0
- package/dist/src/inputs/components/index.js.map +1 -0
- package/dist/src/inputs/index.d.ts +17 -0
- package/dist/src/inputs/index.d.ts.map +1 -0
- package/dist/src/inputs/index.js +54 -0
- package/dist/src/inputs/index.js.map +1 -0
- package/dist/src/inputs/upload/config.d.ts +57 -0
- package/dist/src/inputs/upload/config.d.ts.map +1 -0
- package/dist/src/inputs/upload/config.js +61 -0
- package/dist/src/inputs/upload/config.js.map +1 -0
- package/dist/src/inputs/upload/crop-session.d.ts +6 -0
- package/dist/src/inputs/upload/crop-session.d.ts.map +1 -0
- package/dist/src/inputs/upload/crop-session.js +204 -0
- package/dist/src/inputs/upload/crop-session.js.map +1 -0
- package/dist/src/inputs/upload/crop.d.ts +20 -0
- package/dist/src/inputs/upload/crop.d.ts.map +1 -0
- package/dist/src/inputs/upload/crop.js +124 -0
- package/dist/src/inputs/upload/crop.js.map +1 -0
- package/dist/src/inputs/upload/dom.d.ts +19 -0
- package/dist/src/inputs/upload/dom.d.ts.map +1 -0
- package/dist/src/inputs/upload/dom.js +74 -0
- package/dist/src/inputs/upload/dom.js.map +1 -0
- package/dist/src/inputs/upload/drop.d.ts +10 -0
- package/dist/src/inputs/upload/drop.d.ts.map +1 -0
- package/dist/src/inputs/upload/drop.js +92 -0
- package/dist/src/inputs/upload/drop.js.map +1 -0
- package/dist/src/inputs/upload/files.d.ts +14 -0
- package/dist/src/inputs/upload/files.d.ts.map +1 -0
- package/dist/src/inputs/upload/files.js +82 -0
- package/dist/src/inputs/upload/files.js.map +1 -0
- package/dist/src/inputs/upload/manager.d.ts +36 -0
- package/dist/src/inputs/upload/manager.d.ts.map +1 -0
- package/dist/src/inputs/upload/manager.js +236 -0
- package/dist/src/inputs/upload/manager.js.map +1 -0
- package/dist/src/inputs/upload/markup.d.ts +30 -0
- package/dist/src/inputs/upload/markup.d.ts.map +1 -0
- package/dist/src/inputs/upload/markup.js +118 -0
- package/dist/src/inputs/upload/markup.js.map +1 -0
- package/dist/src/inputs/upload/model.d.ts +41 -0
- package/dist/src/inputs/upload/model.d.ts.map +1 -0
- package/dist/src/inputs/upload/model.js +76 -0
- package/dist/src/inputs/upload/model.js.map +1 -0
- package/dist/src/inputs/upload/state.d.ts +16 -0
- package/dist/src/inputs/upload/state.d.ts.map +1 -0
- package/dist/src/inputs/upload/state.js +181 -0
- package/dist/src/inputs/upload/state.js.map +1 -0
- package/dist/src/inputs/upload/text.d.ts +7 -0
- package/dist/src/inputs/upload/text.d.ts.map +1 -0
- package/dist/src/inputs/upload/text.js +29 -0
- package/dist/src/inputs/upload/text.js.map +1 -0
- package/dist/src/inputs/upload/types.d.ts +86 -0
- package/dist/src/inputs/upload/types.d.ts.map +1 -0
- package/dist/src/inputs/upload/types.js +2 -0
- package/dist/src/inputs/upload/types.js.map +1 -0
- package/dist/src/layer/components/index.d.ts +12 -0
- package/dist/src/layer/components/index.d.ts.map +1 -0
- package/dist/src/layer/components/index.js +12 -0
- package/dist/src/layer/components/index.js.map +1 -0
- package/dist/src/layer/index.d.ts +22 -0
- package/dist/src/layer/index.d.ts.map +1 -0
- package/dist/src/layer/index.js +159 -0
- package/dist/src/layer/index.js.map +1 -0
- package/dist/src/live/components/index.d.ts +15 -0
- package/dist/src/live/components/index.d.ts.map +1 -0
- package/dist/src/live/components/index.js +12 -0
- package/dist/src/live/components/index.js.map +1 -0
- package/dist/src/live/index.d.ts +29 -0
- package/dist/src/live/index.d.ts.map +1 -0
- package/dist/src/live/index.js +103 -0
- package/dist/src/live/index.js.map +1 -0
- package/dist/src/logging/index.d.ts +17 -0
- package/dist/src/logging/index.d.ts.map +1 -0
- package/dist/src/logging/index.js +68 -0
- package/dist/src/logging/index.js.map +1 -0
- package/dist/src/modal/components/index.d.ts +18 -0
- package/dist/src/modal/components/index.d.ts.map +1 -0
- package/dist/src/modal/components/index.js +20 -0
- package/dist/src/modal/components/index.js.map +1 -0
- package/dist/src/modal/index.d.ts +24 -0
- package/dist/src/modal/index.d.ts.map +1 -0
- package/dist/src/modal/index.js +184 -0
- package/dist/src/modal/index.js.map +1 -0
- package/dist/src/popover/components/index.d.ts +14 -0
- package/dist/src/popover/components/index.d.ts.map +1 -0
- package/dist/src/popover/components/index.js +16 -0
- package/dist/src/popover/components/index.js.map +1 -0
- package/dist/src/popover/index.d.ts +16 -0
- package/dist/src/popover/index.d.ts.map +1 -0
- package/dist/src/popover/index.js +140 -0
- package/dist/src/popover/index.js.map +1 -0
- package/dist/src/progress/components/index.d.ts +10 -0
- package/dist/src/progress/components/index.d.ts.map +1 -0
- package/dist/src/progress/components/index.js +14 -0
- package/dist/src/progress/components/index.js.map +1 -0
- package/dist/src/progress/index.d.ts +18 -0
- package/dist/src/progress/index.d.ts.map +1 -0
- package/dist/src/progress/index.js +89 -0
- package/dist/src/progress/index.js.map +1 -0
- package/dist/src/react/index.d.ts +17 -0
- package/dist/src/react/index.d.ts.map +1 -0
- package/dist/src/react/index.js +47 -0
- package/dist/src/react/index.js.map +1 -0
- package/dist/src/styles/index.d.ts +3 -0
- package/dist/src/styles/index.d.ts.map +1 -0
- package/dist/src/styles/index.js +14 -0
- package/dist/src/styles/index.js.map +1 -0
- package/dist/src/theme/components/index.d.ts +14 -0
- package/dist/src/theme/components/index.d.ts.map +1 -0
- package/dist/src/theme/components/index.js +13 -0
- package/dist/src/theme/components/index.js.map +1 -0
- package/dist/src/theme/index.d.ts +26 -0
- package/dist/src/theme/index.d.ts.map +1 -0
- package/dist/src/theme/index.js +119 -0
- package/dist/src/theme/index.js.map +1 -0
- package/dist/src/tooltip/components/index.d.ts +17 -0
- package/dist/src/tooltip/components/index.d.ts.map +1 -0
- package/dist/src/tooltip/components/index.js +20 -0
- package/dist/src/tooltip/components/index.js.map +1 -0
- package/dist/src/tooltip/index.d.ts +10 -0
- package/dist/src/tooltip/index.d.ts.map +1 -0
- package/dist/src/tooltip/index.js +171 -0
- package/dist/src/tooltip/index.js.map +1 -0
- package/dist/styles/index.d.ts +3 -0
- package/dist/styles/index.d.ts.map +1 -0
- package/dist/styles/index.js +14 -0
- package/dist/styles/index.js.map +1 -0
- package/dist/styles/tokens.scss +22 -0
- package/dist/styles/utils.scss +220 -0
- package/dist/theme/components/index.d.ts +14 -0
- package/dist/theme/components/index.d.ts.map +1 -0
- package/dist/theme/components/index.js +13 -0
- package/dist/theme/components/index.js.map +1 -0
- package/dist/theme/index.d.ts +26 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +119 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/tooltip/components/index.d.ts +17 -0
- package/dist/tooltip/components/index.d.ts.map +1 -0
- package/dist/tooltip/components/index.js +20 -0
- package/dist/tooltip/components/index.js.map +1 -0
- package/dist/tooltip/index.d.ts +10 -0
- package/dist/tooltip/index.d.ts.map +1 -0
- package/dist/tooltip/index.js +171 -0
- package/dist/tooltip/index.js.map +1 -0
- package/dist/tooltip/styles/index.scss +17 -0
- package/package.json +232 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
.tbf-progress {
|
|
2
|
+
position: fixed;
|
|
3
|
+
inset: 0 0 auto 0;
|
|
4
|
+
height: 3px;
|
|
5
|
+
pointer-events: none;
|
|
6
|
+
z-index: var(--tbf-z-progress, 99999);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.tbf-progress__bar {
|
|
10
|
+
display: block;
|
|
11
|
+
height: 100%;
|
|
12
|
+
background: var(--tbf-focus, #000);
|
|
13
|
+
transform: scaleX(0);
|
|
14
|
+
transform-origin: left center;
|
|
15
|
+
transition: transform var(--tbf-transition-fast) ease;
|
|
16
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import { readJsonScript } from "../dom/index.d.ts";
|
|
3
|
+
type ReactRootOptions = {
|
|
4
|
+
hydrate?: boolean;
|
|
5
|
+
};
|
|
6
|
+
declare function mountReactRoot(root: Element, node: ReactNode, options?: ReactRootOptions): Promise<import("react-dom/client").Root>;
|
|
7
|
+
declare function renderReactRoot(root: Element, node: ReactNode): Promise<import("react-dom/client").Root>;
|
|
8
|
+
declare function unmountReactRoot(root: Element): boolean;
|
|
9
|
+
declare function mountLiveIsland(options: {
|
|
10
|
+
component: (props: any) => ReactNode;
|
|
11
|
+
initialState?: unknown;
|
|
12
|
+
root: Element | string | null;
|
|
13
|
+
stateId?: string;
|
|
14
|
+
}): Promise<import("react-dom/client").Root>;
|
|
15
|
+
export { mountLiveIsland, mountReactRoot, readJsonScript, renderReactRoot, unmountReactRoot, };
|
|
16
|
+
export type { ReactRootOptions };
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,KAAK,gBAAgB,GAAG;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAIF,iBAAe,cAAc,CAC3B,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,SAAS,EACf,OAAO,GAAE,gBAAqB,4CAc/B;AAED,iBAAe,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,4CAE5D;AAED,iBAAS,gBAAgB,CAAC,IAAI,EAAE,OAAO,WAMtC;AAED,iBAAe,eAAe,CAAC,OAAO,EAAE;IACtC,SAAS,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,SAAS,CAAC;IACrC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,4CAgBA;AAED,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,GACjB,CAAC;AACF,YAAY,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { readJsonScript } from "../dom/index.js";
|
|
2
|
+
const roots = new WeakMap();
|
|
3
|
+
async function mountReactRoot(root, node, options = {}) {
|
|
4
|
+
const client = await import("react-dom/client");
|
|
5
|
+
const existing = roots.get(root);
|
|
6
|
+
if (existing) {
|
|
7
|
+
existing.render(node);
|
|
8
|
+
return existing;
|
|
9
|
+
}
|
|
10
|
+
const created = options.hydrate === true
|
|
11
|
+
? client.hydrateRoot(root, node)
|
|
12
|
+
: client.createRoot(root);
|
|
13
|
+
if (options.hydrate !== true)
|
|
14
|
+
created.render(node);
|
|
15
|
+
roots.set(root, created);
|
|
16
|
+
return created;
|
|
17
|
+
}
|
|
18
|
+
async function renderReactRoot(root, node) {
|
|
19
|
+
return await mountReactRoot(root, node, { hydrate: false });
|
|
20
|
+
}
|
|
21
|
+
function unmountReactRoot(root) {
|
|
22
|
+
const existing = roots.get(root);
|
|
23
|
+
if (!existing)
|
|
24
|
+
return false;
|
|
25
|
+
existing.unmount();
|
|
26
|
+
roots.delete(root);
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
async function mountLiveIsland(options) {
|
|
30
|
+
const target = typeof options.root === "string"
|
|
31
|
+
? document.getElementById(options.root.replace(/^#/, ""))
|
|
32
|
+
: options.root;
|
|
33
|
+
if (!(target instanceof Element))
|
|
34
|
+
return null;
|
|
35
|
+
const state = options.stateId
|
|
36
|
+
? readJsonScript(options.stateId, {})
|
|
37
|
+
: options.initialState || {};
|
|
38
|
+
const react = await import("react");
|
|
39
|
+
const node = react.createElement(options.component, { initialState: state });
|
|
40
|
+
const root = await mountReactRoot(target, node, {
|
|
41
|
+
hydrate: target.childNodes.length > 0,
|
|
42
|
+
});
|
|
43
|
+
target.setAttribute("data-tbf-live-hydrated", "true");
|
|
44
|
+
return root;
|
|
45
|
+
}
|
|
46
|
+
export { mountLiveIsland, mountReactRoot, readJsonScript, renderReactRoot, unmountReactRoot, };
|
|
47
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAM/C,MAAM,KAAK,GAAG,IAAI,OAAO,EAAuE,CAAC;AAEjG,KAAK,UAAU,cAAc,CAC3B,IAAa,EACb,IAAe,EACf,UAA4B,EAAE;IAE9B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,IAAI;QACtC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,IAAW,CAAC;QACvC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO,CAAC,MAAM,CAAC,IAAW,CAAC,CAAC;IAC1D,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,IAAa,EAAE,IAAe;IAC3D,OAAO,MAAM,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAa;IACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,OAK9B;IACC,MAAM,MAAM,GACV,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;QAC9B,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACzD,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACnB,IAAI,CAAC,CAAC,MAAM,YAAY,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO;QAC3B,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QACrC,CAAC,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;QAC9C,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;KACtC,CAAC,CAAC;IACH,MAAM,CAAC,YAAY,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;IACtD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,GACjB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type BindRoot } from "../../dom/index.d.ts";
|
|
2
|
+
import type { ActionJson, SubmitActionButtonOptions } from "./types.js";
|
|
3
|
+
declare const ACTION_BUTTON_SELECTOR = "[data-tbf-submit],[data-tbf-action-url]";
|
|
4
|
+
declare function submitActionButton(button: HTMLElement, event?: Event, options?: SubmitActionButtonOptions): Promise<ActionJson>;
|
|
5
|
+
declare function bindActionButton(button: HTMLElement | null, options?: SubmitActionButtonOptions): boolean;
|
|
6
|
+
declare function bindActionButtons(root?: BindRoot, options?: SubmitActionButtonOptions): void;
|
|
7
|
+
export { ACTION_BUTTON_SELECTOR, bindActionButton, bindActionButtons, submitActionButton, };
|
|
8
|
+
//# sourceMappingURL=buttons.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buttons.d.ts","sourceRoot":"","sources":["../../../src/actions/buttons.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,eAAe,CAAC;AAKvB,OAAO,KAAK,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAExE,QAAA,MAAM,sBAAsB,4CACe,CAAC;AAqE5C,iBAAe,kBAAkB,CAC/B,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,KAAK,EACb,OAAO,GAAE,yBAA8B,uBAmCxC;AAED,iBAAS,gBAAgB,CACvB,MAAM,EAAE,WAAW,GAAG,IAAI,EAC1B,OAAO,GAAE,yBAA8B,WASxC;AAED,iBAAS,iBAAiB,CAAC,IAAI,GAAE,QAAmB,EAAE,OAAO,GAAE,yBAA8B,QAI5F;AAED,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,CAAC"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { queryAll, readDataJson, setControlDisabled, } from "../../dom/index.js";
|
|
2
|
+
import { flash as defaultFlash } from "../../flash/index.js";
|
|
3
|
+
import { maybeFireActionSuccessConfetti } from "./confetti.js";
|
|
4
|
+
import { handleJson } from "./request.js";
|
|
5
|
+
import { actionResponseOk } from "./response.js";
|
|
6
|
+
const ACTION_BUTTON_SELECTOR = "[data-tbf-submit],[data-tbf-action-url]";
|
|
7
|
+
const boundButtons = new WeakMap();
|
|
8
|
+
function buttonUrl(button, options) {
|
|
9
|
+
return String(options.url || button.getAttribute("data-tbf-action-url") || "").trim();
|
|
10
|
+
}
|
|
11
|
+
function buttonMethod(button, options) {
|
|
12
|
+
return String(options.method || button.getAttribute("data-tbf-action-method") || "post").toUpperCase();
|
|
13
|
+
}
|
|
14
|
+
function readButtonBody(button, options) {
|
|
15
|
+
if (options.body !== undefined)
|
|
16
|
+
return options.body;
|
|
17
|
+
return readDataJson(button, "data-tbf-action-body", {});
|
|
18
|
+
}
|
|
19
|
+
function dispatchActionButtonEvent(button, name, detail, cancelable = false) {
|
|
20
|
+
const event = new CustomEvent(name, {
|
|
21
|
+
bubbles: true,
|
|
22
|
+
cancelable,
|
|
23
|
+
detail: { ...detail, button },
|
|
24
|
+
});
|
|
25
|
+
button.dispatchEvent(event);
|
|
26
|
+
return event;
|
|
27
|
+
}
|
|
28
|
+
async function confirmActionButton(button, options) {
|
|
29
|
+
const configured = options.confirm === true || button.hasAttribute("data-tbf-confirm");
|
|
30
|
+
if (!configured && !button.hasAttribute("data-tbf-confirm-title"))
|
|
31
|
+
return true;
|
|
32
|
+
const detail = { button, confirm: null };
|
|
33
|
+
const event = dispatchActionButtonEvent(button, "tbf:action-confirm", detail, true);
|
|
34
|
+
if (event.defaultPrevented)
|
|
35
|
+
return false;
|
|
36
|
+
if (detail.confirm !== null && detail.confirm !== undefined) {
|
|
37
|
+
const value = typeof detail.confirm === "function" ? detail.confirm() : detail.confirm;
|
|
38
|
+
return Boolean(await value);
|
|
39
|
+
}
|
|
40
|
+
const flashApi = options.adapters?.flash || defaultFlash;
|
|
41
|
+
return await flashApi.confirmElement?.(button, button);
|
|
42
|
+
}
|
|
43
|
+
async function resolveCustomActionButtonRequest(button, options) {
|
|
44
|
+
if (typeof options.request === "function") {
|
|
45
|
+
return { handled: true, json: await options.request() };
|
|
46
|
+
}
|
|
47
|
+
const detail = { button, handled: false, json: null, request: null };
|
|
48
|
+
const event = dispatchActionButtonEvent(button, "tbf:action-request", detail, true);
|
|
49
|
+
if (!event.defaultPrevented && !detail.handled && detail.request == null) {
|
|
50
|
+
return { handled: false, json: null };
|
|
51
|
+
}
|
|
52
|
+
if (typeof detail.request === "function") {
|
|
53
|
+
return { handled: true, json: await detail.request() };
|
|
54
|
+
}
|
|
55
|
+
if (detail.request && typeof detail.request.then === "function") {
|
|
56
|
+
return { handled: true, json: await detail.request };
|
|
57
|
+
}
|
|
58
|
+
return { handled: true, json: detail.json };
|
|
59
|
+
}
|
|
60
|
+
async function submitActionButton(button, event, options = {}) {
|
|
61
|
+
event?.preventDefault();
|
|
62
|
+
event?.stopImmediatePropagation();
|
|
63
|
+
if (!(await confirmActionButton(button, options)))
|
|
64
|
+
return null;
|
|
65
|
+
const wasDisabled = button.hasAttribute("disabled") || button.disabled === true;
|
|
66
|
+
let json = null;
|
|
67
|
+
setControlDisabled(button, true);
|
|
68
|
+
try {
|
|
69
|
+
dispatchActionButtonEvent(button, "tbf:action-submit", {});
|
|
70
|
+
const custom = await resolveCustomActionButtonRequest(button, options);
|
|
71
|
+
json = custom.handled
|
|
72
|
+
? custom.json
|
|
73
|
+
: await handleJson(buttonUrl(button, options), {
|
|
74
|
+
adapters: options.adapters,
|
|
75
|
+
body: readButtonBody(button, options),
|
|
76
|
+
method: buttonMethod(button, options),
|
|
77
|
+
ui: options.ui,
|
|
78
|
+
});
|
|
79
|
+
const ok = actionResponseOk(json);
|
|
80
|
+
if (ok)
|
|
81
|
+
maybeFireActionSuccessConfetti(button, options.successConfetti === true);
|
|
82
|
+
dispatchActionButtonEvent(button, "tbf:action-complete", { json, ok });
|
|
83
|
+
return json;
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
dispatchActionButtonEvent(button, "tbf:action-complete", {
|
|
87
|
+
error,
|
|
88
|
+
json: null,
|
|
89
|
+
ok: false,
|
|
90
|
+
});
|
|
91
|
+
throw error;
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
if (!wasDisabled && options.keepDisabled?.(json) !== true) {
|
|
95
|
+
setControlDisabled(button, false);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function bindActionButton(button, options = {}) {
|
|
100
|
+
if (!(button instanceof HTMLElement) || boundButtons.has(button))
|
|
101
|
+
return false;
|
|
102
|
+
const handler = (event) => {
|
|
103
|
+
if (!event.defaultPrevented)
|
|
104
|
+
void submitActionButton(button, event, options);
|
|
105
|
+
};
|
|
106
|
+
button.addEventListener("click", handler);
|
|
107
|
+
boundButtons.set(button, handler);
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
function bindActionButtons(root = document, options = {}) {
|
|
111
|
+
queryAll(root, ACTION_BUTTON_SELECTOR).forEach((button) => {
|
|
112
|
+
bindActionButton(button, options);
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
export { ACTION_BUTTON_SELECTOR, bindActionButton, bindActionButtons, submitActionButton, };
|
|
116
|
+
//# sourceMappingURL=buttons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buttons.js","sourceRoot":"","sources":["../../../src/actions/buttons.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ButtonHTMLAttributes, FormHTMLAttributes, HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
type ActionFormProps = FormHTMLAttributes<HTMLFormElement> & {
|
|
3
|
+
actionConfig?: Record<string, unknown>;
|
|
4
|
+
children?: ReactNode;
|
|
5
|
+
confirm?: boolean;
|
|
6
|
+
jsonBody?: boolean;
|
|
7
|
+
silent?: boolean;
|
|
8
|
+
successConfetti?: boolean;
|
|
9
|
+
};
|
|
10
|
+
type ActionButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
11
|
+
actionBody?: Record<string, unknown>;
|
|
12
|
+
actionMethod?: string;
|
|
13
|
+
actionUrl?: string;
|
|
14
|
+
confirm?: boolean;
|
|
15
|
+
successConfetti?: boolean;
|
|
16
|
+
};
|
|
17
|
+
type ActionTriggerProps = HTMLAttributes<HTMLButtonElement> & {
|
|
18
|
+
action: string;
|
|
19
|
+
href?: string;
|
|
20
|
+
};
|
|
21
|
+
declare function ActionForm(props: ActionFormProps): import("react").JSX.Element;
|
|
22
|
+
declare function ActionButton(props: ActionButtonProps): import("react").JSX.Element;
|
|
23
|
+
declare function ActionTrigger(props: ActionTriggerProps): import("react").JSX.Element;
|
|
24
|
+
export { ActionButton, ActionForm, ActionTrigger };
|
|
25
|
+
export type { ActionButtonProps, ActionFormProps, ActionTriggerProps };
|
|
26
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/actions/components/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,SAAS,EACV,MAAM,OAAO,CAAC;AAGf,KAAK,eAAe,GAAG,kBAAkB,CAAC,eAAe,CAAC,GAAG;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,KAAK,iBAAiB,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,GAAG;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,KAAK,kBAAkB,GAAG,cAAc,CAAC,iBAAiB,CAAC,GAAG;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAWF,iBAAS,UAAU,CAAC,KAAK,EAAE,eAAe,+BA8BzC;AAED,iBAAS,YAAY,CAAC,KAAK,EAAE,iBAAiB,+BA0B7C;AAED,iBAAS,aAAa,CAAC,KAAK,EAAE,kBAAkB,+BAe/C;AAED,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;AACnD,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { classNames, dataBool, jsonScript } from "../../../components/index.js";
|
|
3
|
+
function actionConfig(props) {
|
|
4
|
+
return {
|
|
5
|
+
...(props.actionConfig || {}),
|
|
6
|
+
...(props.jsonBody ? { body: "json" } : {}),
|
|
7
|
+
...(props.silent ? { silent: true } : {}),
|
|
8
|
+
...(props.successConfetti ? { successConfetti: true } : {}),
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
function ActionForm(props) {
|
|
12
|
+
const { actionConfig: _actionConfig, children, className, confirm, jsonBody: _jsonBody, silent: _silent, successConfetti: _successConfetti, ...rest } = props;
|
|
13
|
+
const config = actionConfig(props);
|
|
14
|
+
return (_jsxs("form", { ...rest, className: classNames("tbf-form", className), "data-tbf-action": "", "data-tbf-confirm": dataBool(confirm), children: [Object.keys(config).length ? (_jsx("script", { "data-tbf-action-config": "", hidden: true, type: "application/json", dangerouslySetInnerHTML: { __html: jsonScript(config) } })) : null, children] }));
|
|
15
|
+
}
|
|
16
|
+
function ActionButton(props) {
|
|
17
|
+
const { actionBody, actionMethod, actionUrl, children, className, confirm, successConfetti, type = "button", ...rest } = props;
|
|
18
|
+
return (_jsx("button", { ...rest, className: classNames("tbf-button", className), "data-tbf-action-body": actionBody ? jsonScript(actionBody) : undefined, "data-tbf-action-method": actionMethod, "data-tbf-action-url": actionUrl, "data-tbf-confetti": dataBool(successConfetti), "data-tbf-confirm": dataBool(confirm), type: type, children: children }));
|
|
19
|
+
}
|
|
20
|
+
function ActionTrigger(props) {
|
|
21
|
+
const { action, children, className, href, role, tabIndex, ...rest } = props;
|
|
22
|
+
return (_jsx("button", { ...rest, className: classNames("tbf-action-trigger", className), "data-tbf-action-trigger": action, "data-tbf-href": href, role: role, tabIndex: tabIndex, type: "button", children: children }));
|
|
23
|
+
}
|
|
24
|
+
export { ActionButton, ActionForm, ActionTrigger };
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/actions/components/index.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAwBjE,SAAS,YAAY,CAAC,KAAsB;IAC1C,OAAO;QACL,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;QAC7B,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5D,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAsB;IACxC,MAAM,EACJ,YAAY,EAAE,aAAa,EAC3B,QAAQ,EACR,SAAS,EACT,OAAO,EACP,QAAQ,EAAE,SAAS,EACnB,MAAM,EAAE,OAAO,EACf,eAAe,EAAE,gBAAgB,EACjC,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;IACV,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,CACL,mBACM,IAAI,EACR,SAAS,EAAE,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC,qBAC5B,EAAE,sBACA,QAAQ,CAAC,OAAO,CAAC,aAElC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAC5B,2CACyB,EAAE,EACzB,MAAM,QACN,IAAI,EAAC,kBAAkB,EACvB,uBAAuB,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,GACvD,CACH,CAAC,CAAC,CAAC,IAAI,EACP,QAAQ,IACJ,CACR,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAwB;IAC5C,MAAM,EACJ,UAAU,EACV,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,SAAS,EACT,OAAO,EACP,eAAe,EACf,IAAI,GAAG,QAAQ,EACf,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;IACV,OAAO,CACL,oBACM,IAAI,EACR,SAAS,EAAE,UAAU,CAAC,YAAY,EAAE,SAAS,CAAC,0BACxB,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,4BAC7C,YAAY,yBACf,SAAS,uBACX,QAAQ,CAAC,eAAe,CAAC,sBAC1B,QAAQ,CAAC,OAAO,CAAC,EACnC,IAAI,EAAE,IAAI,YAET,QAAQ,GACF,CACV,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAyB;IAC9C,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAC7E,OAAO,CACL,oBACM,IAAI,EACR,SAAS,EAAE,UAAU,CAAC,oBAAoB,EAAE,SAAS,CAAC,6BAC7B,MAAM,mBAChB,IAAI,EACnB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAC,QAAQ,YAEZ,QAAQ,GACF,CACV,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
declare const CONFETTI_EVENT = "tbf:confetti";
|
|
2
|
+
declare const CONFETTI_SELECTOR = "[data-tbf-confetti=\"true\"],[data-tbf-confetti=\"1\"]";
|
|
3
|
+
type ConfettiOptions = {
|
|
4
|
+
durationMs?: number;
|
|
5
|
+
particles?: number;
|
|
6
|
+
};
|
|
7
|
+
declare function shouldFireActionSuccessConfetti(trigger: HTMLElement | null, configured?: boolean): boolean;
|
|
8
|
+
declare function fireSuccessConfetti(options?: ConfettiOptions): boolean;
|
|
9
|
+
declare function maybeFireActionSuccessConfetti(trigger: HTMLElement | null, configured?: boolean, options?: ConfettiOptions): boolean;
|
|
10
|
+
export { CONFETTI_EVENT, CONFETTI_SELECTOR, fireSuccessConfetti, maybeFireActionSuccessConfetti, shouldFireActionSuccessConfetti, };
|
|
11
|
+
export type { ConfettiOptions };
|
|
12
|
+
//# sourceMappingURL=confetti.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confetti.d.ts","sourceRoot":"","sources":["../../../src/actions/confetti.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,cAAc,iBAAiB,CAAC;AACtC,QAAA,MAAM,iBAAiB,2DAAuD,CAAC;AAE/E,KAAK,eAAe,GAAG;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,iBAAS,+BAA+B,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,EAAE,UAAU,UAAQ,WAGvF;AAED,iBAAS,mBAAmB,CAAC,OAAO,GAAE,eAAoB,WAsBzD;AAED,iBAAS,8BAA8B,CACrC,OAAO,EAAE,WAAW,GAAG,IAAI,EAC3B,UAAU,UAAQ,EAClB,OAAO,GAAE,eAAoB,WAI9B;AAED,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,8BAA8B,EAC9B,+BAA+B,GAChC,CAAC;AACF,YAAY,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
const CONFETTI_EVENT = "tbf:confetti";
|
|
2
|
+
const CONFETTI_SELECTOR = '[data-tbf-confetti="true"],[data-tbf-confetti="1"]';
|
|
3
|
+
function shouldFireActionSuccessConfetti(trigger, configured = false) {
|
|
4
|
+
if (configured)
|
|
5
|
+
return true;
|
|
6
|
+
return Boolean(trigger && trigger.matches(CONFETTI_SELECTOR));
|
|
7
|
+
}
|
|
8
|
+
function fireSuccessConfetti(options = {}) {
|
|
9
|
+
if (typeof document === "undefined")
|
|
10
|
+
return false;
|
|
11
|
+
const particles = Math.max(8, Math.min(80, Number(options.particles) || 36));
|
|
12
|
+
const layer = document.createElement("div");
|
|
13
|
+
layer.className = "tbf-confetti";
|
|
14
|
+
layer.setAttribute("aria-hidden", "true");
|
|
15
|
+
for (let index = 0; index < particles; index += 1) {
|
|
16
|
+
const piece = document.createElement("i");
|
|
17
|
+
piece.style.setProperty("--x", `${Math.random() * 100}vw`);
|
|
18
|
+
piece.style.setProperty("--d", `${Math.random() * 0.7 + 0.4}s`);
|
|
19
|
+
piece.style.setProperty("--r", `${Math.random() * 360}deg`);
|
|
20
|
+
piece.style.setProperty("--tbf-confetti-hue", `${Math.floor(Math.random() * 360)}deg`);
|
|
21
|
+
layer.appendChild(piece);
|
|
22
|
+
}
|
|
23
|
+
document.body.appendChild(layer);
|
|
24
|
+
document.dispatchEvent(new CustomEvent(CONFETTI_EVENT, {
|
|
25
|
+
detail: { layer, options },
|
|
26
|
+
}));
|
|
27
|
+
window.setTimeout(() => layer.remove(), Number(options.durationMs) || 1400);
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
function maybeFireActionSuccessConfetti(trigger, configured = false, options = {}) {
|
|
31
|
+
if (!shouldFireActionSuccessConfetti(trigger, configured))
|
|
32
|
+
return false;
|
|
33
|
+
return fireSuccessConfetti(options);
|
|
34
|
+
}
|
|
35
|
+
export { CONFETTI_EVENT, CONFETTI_SELECTOR, fireSuccessConfetti, maybeFireActionSuccessConfetti, shouldFireActionSuccessConfetti, };
|
|
36
|
+
//# sourceMappingURL=confetti.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confetti.js","sourceRoot":"","sources":["../../../src/actions/confetti.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,cAAc,CAAC;AACtC,MAAM,iBAAiB,GAAG,oDAAoD,CAAC;AAO/E,SAAS,+BAA+B,CAAC,OAA2B,EAAE,UAAU,GAAG,KAAK;IACtF,IAAI,UAAU;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,mBAAmB,CAAC,UAA2B,EAAE;IACxD,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5C,KAAK,CAAC,SAAS,GAAG,cAAc,CAAC;IACjC,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC1C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC1C,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC;QAC3D,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAChE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC;QAC5D,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QACvF,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACjC,QAAQ,CAAC,aAAa,CACpB,IAAI,WAAW,CAAC,cAAc,EAAE;QAC9B,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;KAC3B,CAAC,CACH,CAAC;IACF,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC;IAC5E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,8BAA8B,CACrC,OAA2B,EAC3B,UAAU,GAAG,KAAK,EAClB,UAA2B,EAAE;IAE7B,IAAI,CAAC,+BAA+B,CAAC,OAAO,EAAE,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IACxE,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,8BAA8B,EAC9B,+BAA+B,GAChC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type BindRoot } from "../../dom/index.d.ts";
|
|
2
|
+
import type { SubmitActionFormOptions } from "./types.js";
|
|
3
|
+
declare const ACTION_FORM_SELECTOR = "form[data-tbf-action]";
|
|
4
|
+
declare const ACTION_CONFIG_SELECTOR = "script[type=\"application/json\"][data-tbf-action-config]";
|
|
5
|
+
declare function readActionFormConfig(form: HTMLFormElement): {
|
|
6
|
+
[x: string]: unknown;
|
|
7
|
+
};
|
|
8
|
+
declare function submitActionForm(form: HTMLFormElement, event?: SubmitEvent, options?: SubmitActionFormOptions): Promise<any>;
|
|
9
|
+
declare function bindActionForm(form: HTMLFormElement | null, options?: SubmitActionFormOptions): boolean;
|
|
10
|
+
declare function bindActionForms(root?: BindRoot, options?: SubmitActionFormOptions): void;
|
|
11
|
+
export { ACTION_CONFIG_SELECTOR, ACTION_FORM_SELECTOR, bindActionForm, bindActionForms, readActionFormConfig, submitActionForm, };
|
|
12
|
+
//# sourceMappingURL=forms.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forms.d.ts","sourceRoot":"","sources":["../../../src/actions/forms.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,QAAQ,EACd,MAAM,eAAe,CAAC;AAMvB,OAAO,KAAK,EAEV,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAEpB,QAAA,MAAM,oBAAoB,0BAA0B,CAAC;AACrD,QAAA,MAAM,sBAAsB,8DAC+B,CAAC;AAW5D,iBAAS,oBAAoB,CAAC,IAAI,EAAE,eAAe;;EAKlD;AA8GD,iBAAe,gBAAgB,CAC7B,IAAI,EAAE,eAAe,EACrB,KAAK,CAAC,EAAE,WAAW,EACnB,OAAO,GAAE,uBAA4B,gBA+CtC;AAED,iBAAS,cAAc,CACrB,IAAI,EAAE,eAAe,GAAG,IAAI,EAC5B,OAAO,GAAE,uBAA4B,WAStC;AAED,iBAAS,eAAe,CAAC,IAAI,GAAE,QAAmB,EAAE,OAAO,GAAE,uBAA4B,QAIxF;AAED,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,gBAAgB,GACjB,CAAC"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { formDataFlatRecord, formDataSearchParams, queryAll, readDataJson, readElementJson, setControlDisabled, } from "../../dom/index.js";
|
|
2
|
+
import { ensureFormCsrfToken } from "../../http/index.js";
|
|
3
|
+
import { flash as defaultFlash } from "../../flash/index.js";
|
|
4
|
+
import { maybeFireActionSuccessConfetti } from "./confetti.js";
|
|
5
|
+
import { handleJson } from "./request.js";
|
|
6
|
+
import { actionResponseOk } from "./response.js";
|
|
7
|
+
const ACTION_FORM_SELECTOR = "form[data-tbf-action]";
|
|
8
|
+
const ACTION_CONFIG_SELECTOR = 'script[type="application/json"][data-tbf-action-config]';
|
|
9
|
+
const boundForms = new WeakMap();
|
|
10
|
+
function submitterFor(event) {
|
|
11
|
+
return event?.submitter instanceof HTMLElement ? event.submitter : null;
|
|
12
|
+
}
|
|
13
|
+
function submitterAttr(submitter, attr) {
|
|
14
|
+
return String(submitter?.getAttribute(attr) || "").trim();
|
|
15
|
+
}
|
|
16
|
+
function readActionFormConfig(form) {
|
|
17
|
+
return {
|
|
18
|
+
...readElementJson(form, ACTION_CONFIG_SELECTOR, {}),
|
|
19
|
+
...readDataJson(form, "data-tbf-action-config", {}),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function resolveSubmitAction(form, submitter) {
|
|
23
|
+
return submitterAttr(submitter, "formaction") || form.action;
|
|
24
|
+
}
|
|
25
|
+
function resolveSubmitMethod(form, submitter) {
|
|
26
|
+
return (submitterAttr(submitter, "formmethod") ||
|
|
27
|
+
String(form.getAttribute("method") || form.method || "post")).toUpperCase();
|
|
28
|
+
}
|
|
29
|
+
function resolveSubmitEnctype(form, submitter) {
|
|
30
|
+
return (submitterAttr(submitter, "formenctype") ||
|
|
31
|
+
String(form.getAttribute("enctype") || form.enctype || "")).toLowerCase();
|
|
32
|
+
}
|
|
33
|
+
function formDataFromSubmit(form, submitter) {
|
|
34
|
+
const data = new FormData(form);
|
|
35
|
+
if (submitter instanceof HTMLButtonElement &&
|
|
36
|
+
submitter.name &&
|
|
37
|
+
submitter.value &&
|
|
38
|
+
!data.has(submitter.name)) {
|
|
39
|
+
data.append(submitter.name, submitter.value);
|
|
40
|
+
}
|
|
41
|
+
return data;
|
|
42
|
+
}
|
|
43
|
+
function createSubmitBody(form, submitter, config) {
|
|
44
|
+
const data = formDataFromSubmit(form, submitter);
|
|
45
|
+
if (config.body === "json")
|
|
46
|
+
return formDataFlatRecord(data);
|
|
47
|
+
return resolveSubmitEnctype(form, submitter) === "multipart/form-data"
|
|
48
|
+
? data
|
|
49
|
+
: formDataSearchParams(data);
|
|
50
|
+
}
|
|
51
|
+
function dispatchActionFormEvent(form, name, detail, cancelable = false) {
|
|
52
|
+
const event = new CustomEvent(name, {
|
|
53
|
+
bubbles: true,
|
|
54
|
+
cancelable,
|
|
55
|
+
detail: { ...detail, form },
|
|
56
|
+
});
|
|
57
|
+
form.dispatchEvent(event);
|
|
58
|
+
return event;
|
|
59
|
+
}
|
|
60
|
+
async function confirmActionForm(form, submitter, options) {
|
|
61
|
+
const configured = options.confirm === true || form.hasAttribute("data-tbf-confirm");
|
|
62
|
+
if (!configured && !form.hasAttribute("data-tbf-confirm-title"))
|
|
63
|
+
return true;
|
|
64
|
+
const detail = { confirm: null, form, submitter };
|
|
65
|
+
const event = dispatchActionFormEvent(form, "tbf:action-confirm", detail, true);
|
|
66
|
+
if (event.defaultPrevented)
|
|
67
|
+
return false;
|
|
68
|
+
if (detail.confirm !== null && detail.confirm !== undefined) {
|
|
69
|
+
const value = typeof detail.confirm === "function" ? detail.confirm() : detail.confirm;
|
|
70
|
+
return Boolean(await value);
|
|
71
|
+
}
|
|
72
|
+
const flashApi = options.adapters?.flash || defaultFlash;
|
|
73
|
+
return await flashApi.confirmElement?.(submitter, form);
|
|
74
|
+
}
|
|
75
|
+
async function resolveCustomActionFormRequest(form, submitter, options) {
|
|
76
|
+
if (typeof options.request === "function") {
|
|
77
|
+
return { handled: true, json: await options.request(form, submitter) };
|
|
78
|
+
}
|
|
79
|
+
const detail = { form, handled: false, json: null, request: null, submitter };
|
|
80
|
+
const event = dispatchActionFormEvent(form, "tbf:action-request", detail, true);
|
|
81
|
+
if (!event.defaultPrevented && !detail.handled && detail.request == null) {
|
|
82
|
+
return { handled: false, json: null };
|
|
83
|
+
}
|
|
84
|
+
if (typeof detail.request === "function") {
|
|
85
|
+
return { handled: true, json: await detail.request() };
|
|
86
|
+
}
|
|
87
|
+
if (detail.request && typeof detail.request.then === "function") {
|
|
88
|
+
return { handled: true, json: await detail.request };
|
|
89
|
+
}
|
|
90
|
+
return { handled: true, json: detail.json };
|
|
91
|
+
}
|
|
92
|
+
function formUi(options, config) {
|
|
93
|
+
return {
|
|
94
|
+
...(options.ui || {}),
|
|
95
|
+
ignoreResponseAction: options.ui?.ignoreResponseAction === true ||
|
|
96
|
+
config.ignoreResponseAction === true,
|
|
97
|
+
silent: options.ui?.silent === true || config.silent === true,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
async function submitActionForm(form, event, options = {}) {
|
|
101
|
+
event?.preventDefault();
|
|
102
|
+
event?.stopImmediatePropagation();
|
|
103
|
+
const submitter = submitterFor(event);
|
|
104
|
+
if (!(await confirmActionForm(form, submitter, options)))
|
|
105
|
+
return null;
|
|
106
|
+
const config = readActionFormConfig(form);
|
|
107
|
+
setControlDisabled(submitter, true);
|
|
108
|
+
try {
|
|
109
|
+
ensureFormCsrfToken(form);
|
|
110
|
+
options.beforeSubmit?.(form, submitter);
|
|
111
|
+
dispatchActionFormEvent(form, "tbf:action-submit", { submitter });
|
|
112
|
+
const custom = await resolveCustomActionFormRequest(form, submitter, options);
|
|
113
|
+
const json = custom.handled
|
|
114
|
+
? custom.json
|
|
115
|
+
: await handleJson(resolveSubmitAction(form, submitter), {
|
|
116
|
+
adapters: options.adapters,
|
|
117
|
+
body: createSubmitBody(form, submitter, config),
|
|
118
|
+
method: resolveSubmitMethod(form, submitter),
|
|
119
|
+
ui: formUi(options, config),
|
|
120
|
+
}, formUi(options, config));
|
|
121
|
+
const ok = actionResponseOk(json);
|
|
122
|
+
if (ok) {
|
|
123
|
+
maybeFireActionSuccessConfetti(submitter || form, config.successConfetti === true);
|
|
124
|
+
}
|
|
125
|
+
options.onComplete?.(ok, json);
|
|
126
|
+
dispatchActionFormEvent(form, "tbf:action-complete", { json, ok, submitter });
|
|
127
|
+
return json;
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
options.onComplete?.(false, { ok: false });
|
|
131
|
+
dispatchActionFormEvent(form, "tbf:action-complete", {
|
|
132
|
+
error,
|
|
133
|
+
json: null,
|
|
134
|
+
ok: false,
|
|
135
|
+
submitter,
|
|
136
|
+
});
|
|
137
|
+
throw error;
|
|
138
|
+
}
|
|
139
|
+
finally {
|
|
140
|
+
setControlDisabled(submitter, false);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
function bindActionForm(form, options = {}) {
|
|
144
|
+
if (!(form instanceof HTMLFormElement) || boundForms.has(form))
|
|
145
|
+
return false;
|
|
146
|
+
const handler = ((event) => {
|
|
147
|
+
void submitActionForm(form, event, options);
|
|
148
|
+
});
|
|
149
|
+
form.addEventListener("submit", handler, true);
|
|
150
|
+
boundForms.set(form, handler);
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
function bindActionForms(root = document, options = {}) {
|
|
154
|
+
queryAll(root, ACTION_FORM_SELECTOR).forEach((form) => {
|
|
155
|
+
bindActionForm(form, options);
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
export { ACTION_CONFIG_SELECTOR, ACTION_FORM_SELECTOR, bindActionForm, bindActionForms, readActionFormConfig, submitActionForm, };
|
|
159
|
+
//# sourceMappingURL=forms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forms.js","sourceRoot":"","sources":["../../../src/actions/forms.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { CONFETTI_EVENT, CONFETTI_SELECTOR, fireSuccessConfetti, maybeFireActionSuccessConfetti, shouldFireActionSuccessConfetti, } from "./confetti.js";
|
|
2
|
+
export { ACTION_BUTTON_SELECTOR, bindActionButton, bindActionButtons, submitActionButton, } from "./buttons.js";
|
|
3
|
+
export { ACTION_CONFIG_SELECTOR, ACTION_FORM_SELECTOR, bindActionForm, bindActionForms, readActionFormConfig, submitActionForm, } from "./forms.js";
|
|
4
|
+
export { ACTION_TRIGGER_SELECTOR, bindActionTrigger, bindActionTriggers, dispatchAction, on, unbindActionTrigger, } from "./triggers.js";
|
|
5
|
+
export { handleJson, handleXhrJson, networkFailure, requestJsonPayload, } from "./request.js";
|
|
6
|
+
export { actionResponseOk, computeFlashMeta, handleResponseAction, isNoop, pickResponseAction, scheduleRedirectOrReload, shouldShowFlash, showResponseFlash, } from "./response.js";
|
|
7
|
+
export type { ActionAdapters, ActionFlashMeta, ActionJson, ActionRequestUi, SubmitActionButtonOptions, SubmitActionFormOptions, } from "./types.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/actions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,8BAA8B,EAC9B,+BAA+B,GAChC,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,EAAE,EACF,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,aAAa,EACb,cAAc,EACd,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,MAAM,EACN,kBAAkB,EAClB,wBAAwB,EACxB,eAAe,EACf,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,cAAc,EACd,eAAe,EACf,UAAU,EACV,eAAe,EACf,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { CONFETTI_EVENT, CONFETTI_SELECTOR, fireSuccessConfetti, maybeFireActionSuccessConfetti, shouldFireActionSuccessConfetti, } from "./confetti.js";
|
|
2
|
+
export { ACTION_BUTTON_SELECTOR, bindActionButton, bindActionButtons, submitActionButton, } from "./buttons.js";
|
|
3
|
+
export { ACTION_CONFIG_SELECTOR, ACTION_FORM_SELECTOR, bindActionForm, bindActionForms, readActionFormConfig, submitActionForm, } from "./forms.js";
|
|
4
|
+
export { ACTION_TRIGGER_SELECTOR, bindActionTrigger, bindActionTriggers, dispatchAction, on, unbindActionTrigger, } from "./triggers.js";
|
|
5
|
+
export { handleJson, handleXhrJson, networkFailure, requestJsonPayload, } from "./request.js";
|
|
6
|
+
export { actionResponseOk, computeFlashMeta, handleResponseAction, isNoop, pickResponseAction, scheduleRedirectOrReload, shouldShowFlash, showResponseFlash, } from "./response.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/actions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,8BAA8B,EAC9B,+BAA+B,GAChC,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,EAAE,EACF,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,aAAa,EACb,cAAc,EACd,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,MAAM,EACN,kBAAkB,EAClB,wBAAwB,EACxB,eAAe,EACf,iBAAiB,GAClB,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ActionAdapters, ActionJson, ActionRequestUi } from "./types.js";
|
|
2
|
+
type ActionRequestOptions = Omit<RequestInit, "body"> & {
|
|
3
|
+
adapters?: ActionAdapters;
|
|
4
|
+
body?: BodyInit | Record<string, unknown> | null;
|
|
5
|
+
ui?: ActionRequestUi;
|
|
6
|
+
};
|
|
7
|
+
declare function networkFailure(): ActionJson;
|
|
8
|
+
declare function handleJson(url: string, options?: ActionRequestOptions, ui?: ActionRequestUi): Promise<any>;
|
|
9
|
+
declare function handleXhrJson(url: string, body: FormData, options?: ActionRequestOptions, onProgress?: (event: ProgressEvent) => void): Promise<ActionJson>;
|
|
10
|
+
declare function requestJsonPayload(url: string, options?: ActionRequestOptions): Promise<any>;
|
|
11
|
+
export { handleJson, handleXhrJson, networkFailure, requestJsonPayload, };
|
|
12
|
+
export type { ActionRequestOptions };
|
|
13
|
+
//# sourceMappingURL=request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/actions/request.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE9E,KAAK,oBAAoB,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG;IACtD,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACjD,EAAE,CAAC,EAAE,eAAe,CAAC;CACtB,CAAC;AAEF,iBAAS,cAAc,IAAI,UAAU,CASpC;AAED,iBAAe,UAAU,CACvB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,oBAAyB,EAClC,EAAE,GAAE,eAAoB,gBAgBzB;AAkBD,iBAAS,aAAa,CACpB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,QAAQ,EACd,OAAO,GAAE,oBAAyB,EAClC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,uBA6B5C;AAED,iBAAe,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,gBAGhF;AAED,OAAO,EACL,UAAU,EACV,aAAa,EACb,cAAc,EACd,kBAAkB,GACnB,CAAC;AACF,YAAY,EAAE,oBAAoB,EAAE,CAAC"}
|