entasis 0.10.2 → 0.12.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/README.md +1 -1
- package/dist/attachments/disclosurePanel.svelte.d.ts +84 -0
- package/dist/attachments/disclosurePanel.svelte.js +277 -0
- package/dist/attachments/portal.d.ts +17 -1
- package/dist/attachments/portal.js +39 -2
- package/dist/attachments/spinnerOverlay.svelte.js +12 -0
- package/dist/attachments/transitionSize.d.ts +6 -0
- package/dist/attachments/transitionSize.js +30 -0
- package/dist/components/AIAskUserQuestion/AIAskUserQuestion.svelte +131 -17
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionFileStep.svelte +26 -6
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionFileStep.svelte.d.ts +6 -0
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionFooter.svelte +27 -53
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionFooter.svelte.d.ts +3 -4
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionHeader.svelte +19 -16
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionStep.svelte +180 -21
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionStep.svelte.d.ts +9 -1
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionSummary.svelte +56 -0
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionSummary.svelte.d.ts +4 -0
- package/dist/components/AIAskUserQuestion/aiAskUserQuestion.mcp.d.ts +1 -1
- package/dist/components/AIAskUserQuestion/aiAskUserQuestion.mcp.js +26 -8
- package/dist/components/AIAskUserQuestion/aiAskUserQuestion.props.d.ts +62 -5
- package/dist/components/AIAskUserQuestion/aiAskUserQuestion.theme.d.ts +42 -0
- package/dist/components/AIAskUserQuestion/aiAskUserQuestion.theme.js +53 -12
- package/dist/components/AIAskUserQuestion/aiAskUserQuestionAnswers.d.ts +17 -1
- package/dist/components/AIAskUserQuestion/aiAskUserQuestionAnswers.js +56 -8
- package/dist/components/AIAskUserQuestion/index.d.ts +3 -1
- package/dist/components/AIAskUserQuestion/index.js +2 -0
- package/dist/components/AIAskUserQuestion/schemas.d.ts +44 -0
- package/dist/components/AIAskUserQuestion/schemas.js +10 -3
- package/dist/components/AIChat/AIChat.svelte +10 -0
- package/dist/components/AIChat/AIChat.svelte.d.ts +2 -2
- package/dist/components/AIChat/AIChatComposerSurface.svelte +23 -5
- package/dist/components/AIChat/AIChatComposerSurface.svelte.d.ts +5 -0
- package/dist/components/AIChat/AIChatSkeleton.svelte +29 -37
- package/dist/components/AIChat/AIChatSurface.svelte +30 -2
- package/dist/components/AIChat/AIChatSurface.svelte.d.ts +1 -1
- package/dist/components/AIChat/AIChatThreadSurface.svelte +11 -1
- package/dist/components/AIChat/AIChatThreadSurface.svelte.d.ts +3 -1
- package/dist/components/AIChat/aiChat.mcp.d.ts +1 -1
- package/dist/components/AIChat/aiChat.mcp.js +31 -15
- package/dist/components/AIChat/aiChat.props.d.ts +36 -10
- package/dist/components/AIChat/aiChat.theme.d.ts +9 -0
- package/dist/components/AIChat/aiChat.theme.js +21 -4
- package/dist/components/AIChat/aiChatSkeleton.props.d.ts +5 -0
- package/dist/components/AIChat/index.d.ts +1 -1
- package/dist/components/AIComposer/AIComposer.svelte +102 -5
- package/dist/components/AIComposer/AIComposer.svelte.d.ts +1 -0
- package/dist/components/AIComposer/AIComposerFooter.svelte +54 -12
- package/dist/components/AIComposer/AIComposerFooter.svelte.d.ts +2 -0
- package/dist/components/AIComposer/AIComposerQueue.svelte +8 -3
- package/dist/components/AIComposer/aiComposer.editor.theme.js +13 -2
- package/dist/components/AIComposer/aiComposer.mcp.d.ts +1 -1
- package/dist/components/AIComposer/aiComposer.mcp.js +15 -7
- package/dist/components/AIComposer/aiComposer.props.d.ts +27 -7
- package/dist/components/AIComposer/aiComposer.theme.d.ts +42 -3
- package/dist/components/AIComposer/aiComposer.theme.js +37 -5
- package/dist/components/AIComposer/aiComposerFileController.svelte.d.ts +20 -0
- package/dist/components/AIComposer/aiComposerFileController.svelte.js +75 -9
- package/dist/components/AIComposer/aiComposerSourceAdapter.js +22 -4
- package/dist/components/AIComposer/aiComposerSubmitController.svelte.d.ts +12 -0
- package/dist/components/AIComposer/aiComposerSubmitController.svelte.js +16 -6
- package/dist/components/AIContext/AIContext.svelte +7 -3
- package/dist/components/AIContext/aiContext.mcp.d.ts +1 -1
- package/dist/components/AIContext/aiContext.mcp.js +1 -1
- package/dist/components/AIContext/aiContext.props.d.ts +4 -1
- package/dist/components/AIContext/aiContext.theme.d.ts +3 -0
- package/dist/components/AIContext/aiContext.theme.js +7 -2
- package/dist/components/AIConversation/AIConversation.svelte.d.ts +2 -2
- package/dist/components/AIFilePreview/aiFilePreview.theme.js +1 -1
- package/dist/components/AIMarker/AIMarker.svelte +2 -0
- package/dist/components/AIMarker/aiMarker.mcp.d.ts +1 -1
- package/dist/components/AIMarker/aiMarker.mcp.js +2 -0
- package/dist/components/AIMarker/aiMarker.props.d.ts +3 -0
- package/dist/components/AIMarker/aiMarker.theme.js +2 -2
- package/dist/components/AIMessage/AIMessage.svelte +38 -16
- package/dist/components/AIMessage/aiMessage.mcp.d.ts +1 -1
- package/dist/components/AIMessage/aiMessage.mcp.js +20 -6
- package/dist/components/AIMessage/aiMessage.props.d.ts +18 -2
- package/dist/components/AIMessage/aiMessage.theme.d.ts +51 -6
- package/dist/components/AIMessage/aiMessage.theme.js +91 -32
- package/dist/components/AIMessageActions/AIMessageActions.svelte +19 -9
- package/dist/components/AIMessageActions/aiMessageActions.mcp.d.ts +1 -1
- package/dist/components/AIMessageActions/aiMessageActions.mcp.js +11 -3
- package/dist/components/AIMessageActions/aiMessageActions.theme.js +36 -9
- package/dist/components/AIModelSelector/AIModelSelector.svelte +25 -10
- package/dist/components/AIModelSelector/aiModelSelector.mcp.d.ts +1 -1
- package/dist/components/AIModelSelector/aiModelSelector.mcp.js +1 -1
- package/dist/components/AIModelSelector/aiModelSelector.theme.d.ts +3 -0
- package/dist/components/AIModelSelector/aiModelSelector.theme.js +7 -3
- package/dist/components/AIReasoning/AIReasoning.svelte +135 -38
- package/dist/components/AIReasoning/aiReasoning.mcp.d.ts +1 -1
- package/dist/components/AIReasoning/aiReasoning.mcp.js +11 -5
- package/dist/components/AIReasoning/aiReasoning.props.d.ts +15 -4
- package/dist/components/AIReasoning/aiReasoning.theme.d.ts +45 -0
- package/dist/components/AIReasoning/aiReasoning.theme.js +47 -7
- package/dist/components/AISuggestion/AISuggestion.svelte +2 -1
- package/dist/components/AISuggestion/AISuggestions.svelte +2 -1
- package/dist/components/AISuggestion/aiSuggestion.mcp.d.ts +1 -1
- package/dist/components/AISuggestion/aiSuggestion.mcp.js +8 -1
- package/dist/components/AISuggestion/aiSuggestion.props.d.ts +4 -1
- package/dist/components/AISuggestion/aiSuggestion.theme.js +1 -1
- package/dist/components/AISuggestion/aiSuggestions.props.d.ts +7 -0
- package/dist/components/AIThread/AIThread.svelte +378 -95
- package/dist/components/AIThread/AIThreadAskUserQuestion.svelte +1 -0
- package/dist/components/AIThread/AIThreadItems.svelte +266 -64
- package/dist/components/AIThread/AIThreadItems.svelte.d.ts +7 -3
- package/dist/components/AIThread/AIThreadMarker.svelte +8 -1
- package/dist/components/AIThread/AIThreadMarker.svelte.d.ts +1 -0
- package/dist/components/AIThread/aiThread.mcp.d.ts +1 -1
- package/dist/components/AIThread/aiThread.mcp.js +34 -20
- package/dist/components/AIThread/aiThread.props.d.ts +73 -8
- package/dist/components/AIThread/aiThread.theme.d.ts +78 -0
- package/dist/components/AIThread/aiThread.theme.js +108 -9
- package/dist/components/AIThread/index.d.ts +1 -1
- package/dist/components/AIThread/threadAskUserQuestion.d.ts +4 -1
- package/dist/components/AIThread/threadAskUserQuestion.js +8 -4
- package/dist/components/AIThread/threadRenderItems.d.ts +74 -3
- package/dist/components/AIThread/threadRenderItems.js +265 -77
- package/dist/components/AIThread/threadScrollController.d.ts +0 -8
- package/dist/components/AIThread/threadScrollController.js +2 -39
- package/dist/components/AIThread/threadTools.d.ts +11 -0
- package/dist/components/AIThread/threadTools.js +79 -0
- package/dist/components/AIThreadToc/AIThreadToc.svelte +188 -18
- package/dist/components/AIThreadToc/AIThreadTocPreview.svelte +25 -2
- package/dist/components/AIThreadToc/AIThreadTocPreview.svelte.d.ts +3 -0
- package/dist/components/AIThreadToc/aiThreadToc.d.ts +4 -2
- package/dist/components/AIThreadToc/aiThreadToc.js +17 -5
- package/dist/components/AIThreadToc/aiThreadToc.mcp.d.ts +1 -1
- package/dist/components/AIThreadToc/aiThreadToc.mcp.js +13 -3
- package/dist/components/AIThreadToc/aiThreadToc.props.d.ts +11 -0
- package/dist/components/AIThreadToc/aiThreadToc.theme.d.ts +3 -0
- package/dist/components/AIThreadToc/aiThreadToc.theme.js +15 -6
- package/dist/components/AITool/AITool.svelte +56 -21
- package/dist/components/AITool/AIToolCallList.svelte +79 -29
- package/dist/components/AITool/AIToolCallList.svelte.d.ts +6 -2
- package/dist/components/AITool/AIToolStatusMark.svelte +52 -0
- package/dist/components/AITool/AIToolStatusMark.svelte.d.ts +14 -0
- package/dist/components/AITool/AIToolValueSection.svelte +126 -28
- package/dist/components/AITool/AIToolValueSection.svelte.d.ts +6 -2
- package/dist/components/AITool/AIToolValueTree.svelte +11 -16
- package/dist/components/AITool/AIToolValueTree.svelte.d.ts +2 -3
- package/dist/components/AITool/aiTool.mcp.d.ts +1 -1
- package/dist/components/AITool/aiTool.mcp.js +36 -8
- package/dist/components/AITool/aiTool.props.d.ts +52 -6
- package/dist/components/AITool/aiTool.theme.d.ts +117 -39
- package/dist/components/AITool/aiTool.theme.js +144 -140
- package/dist/components/AITool/aiToolClock.svelte.d.ts +18 -0
- package/dist/components/AITool/aiToolClock.svelte.js +62 -0
- package/dist/components/AITool/aiToolPrimitiveThemes.d.ts +0 -2
- package/dist/components/AITool/aiToolPrimitiveThemes.js +0 -10
- package/dist/components/AITool/index.d.ts +2 -1
- package/dist/components/AITool/index.js +1 -0
- package/dist/components/AITool/toolRendering.d.ts +33 -1
- package/dist/components/AITool/toolRendering.js +179 -15
- package/dist/components/AITool/toolValueTree.d.ts +14 -1
- package/dist/components/AITool/toolValueTree.js +126 -27
- package/dist/components/Accordion/Accordion.svelte +109 -109
- package/dist/components/Accordion/Accordion.svelte.d.ts +0 -1
- package/dist/components/Accordion/AccordionPanel.svelte +64 -0
- package/dist/components/Accordion/AccordionPanel.svelte.d.ts +20 -0
- package/dist/components/Accordion/accordion.attributes.d.ts +24 -0
- package/dist/components/Accordion/accordion.attributes.js +20 -0
- package/dist/components/Accordion/accordion.mcp.d.ts +1 -1
- package/dist/components/Accordion/accordion.mcp.js +78 -22
- package/dist/components/Accordion/accordion.props.d.ts +54 -10
- package/dist/components/Accordion/accordion.theme.d.ts +3 -0
- package/dist/components/Accordion/accordion.theme.js +4 -0
- package/dist/components/Accordion/index.d.ts +1 -0
- package/dist/components/Accordion/index.js +1 -0
- package/dist/components/AudioPlayer/audioPlayerVolumeControl.slider.theme.d.ts +31 -1
- package/dist/components/Avatar/Avatar.svelte +60 -10
- package/dist/components/Avatar/AvatarGroup.svelte +9 -0
- package/dist/components/Avatar/avatar.mcp.d.ts +1 -1
- package/dist/components/Avatar/avatar.mcp.js +13 -5
- package/dist/components/Avatar/avatar.props.d.ts +28 -1
- package/dist/components/Avatar/avatar.theme.js +3 -3
- package/dist/components/Avatar/index.d.ts +1 -1
- package/dist/components/Breadcrumbs/breadcrumbs.mcp.d.ts +1 -1
- package/dist/components/Breadcrumbs/breadcrumbs.mcp.js +1 -1
- package/dist/components/Button/Button.svelte +35 -15
- package/dist/components/Button/button.mcp.d.ts +1 -1
- package/dist/components/Button/button.mcp.js +8 -4
- package/dist/components/Button/button.props.d.ts +23 -8
- package/dist/components/Button/button.theme.d.ts +12 -0
- package/dist/components/Button/button.theme.js +17 -4
- package/dist/components/ButtonGroup/buttonGroup.mcp.d.ts +1 -1
- package/dist/components/ButtonGroup/buttonGroup.mcp.js +1 -1
- package/dist/components/ButtonGroup/buttonGroup.props.d.ts +4 -1
- package/dist/components/Collapsible/Collapsible.svelte +125 -19
- package/dist/components/Collapsible/collapsible.attributes.d.ts +21 -0
- package/dist/components/Collapsible/collapsible.attributes.js +17 -0
- package/dist/components/Collapsible/collapsible.mcp.d.ts +1 -1
- package/dist/components/Collapsible/collapsible.mcp.js +62 -12
- package/dist/components/Collapsible/collapsible.props.d.ts +39 -8
- package/dist/components/Collapsible/collapsible.theme.js +3 -1
- package/dist/components/Collapsible/index.d.ts +1 -0
- package/dist/components/Collapsible/index.js +1 -0
- package/dist/components/Command/Command.svelte +56 -14
- package/dist/components/Command/command.mcp.d.ts +1 -1
- package/dist/components/Command/command.mcp.js +12 -6
- package/dist/components/Command/command.props.d.ts +39 -6
- package/dist/components/Command/command.state.svelte.d.ts +40 -11
- package/dist/components/Command/command.state.svelte.js +75 -28
- package/dist/components/Command/command.theme.js +4 -3
- package/dist/components/Confirmation/Confirmation.svelte +72 -31
- package/dist/components/Confirmation/confirmation.mcp.d.ts +1 -1
- package/dist/components/Confirmation/confirmation.mcp.js +5 -4
- package/dist/components/ContextMenu/ContextMenu.svelte +126 -16
- package/dist/components/ContextMenu/contextMenu.mcp.d.ts +1 -1
- package/dist/components/ContextMenu/contextMenu.mcp.js +10 -7
- package/dist/components/ContextMenu/contextMenu.props.d.ts +13 -4
- package/dist/components/ContextMenu/contextMenu.theme.d.ts +3 -3
- package/dist/components/ContextMenu/contextMenu.theme.js +3 -2
- package/dist/components/DataTable/DataTable.svelte +4 -9
- package/dist/components/DataTable/DataTableEditor.svelte +5 -0
- package/dist/components/DataTable/DataTableFilter.svelte +1 -0
- package/dist/components/DataTable/DataTableToolbar.svelte +1 -0
- package/dist/components/DataTable/dataTable.mcp.d.ts +1 -1
- package/dist/components/DataTable/dataTable.mcp.js +4 -2
- package/dist/components/DataTable/dataTable.theme.d.ts +0 -3
- package/dist/components/DataTable/dataTable.theme.js +9 -6
- package/dist/components/Dialog/Dialog.svelte +120 -35
- package/dist/components/Dialog/Dialog.svelte.d.ts +1 -1
- package/dist/components/Dialog/DialogBackdrop.svelte +21 -1
- package/dist/components/Dialog/dialog.api.d.ts +65 -0
- package/dist/components/Dialog/dialog.api.js +1 -0
- package/dist/components/Dialog/dialog.attributes.d.ts +23 -0
- package/dist/components/Dialog/dialog.attributes.js +19 -0
- package/dist/components/Dialog/dialog.indent.d.ts +6 -0
- package/dist/components/Dialog/dialog.indent.js +16 -0
- package/dist/components/Dialog/dialog.mcp.d.ts +1 -1
- package/dist/components/Dialog/dialog.mcp.js +195 -22
- package/dist/components/Dialog/dialog.props.d.ts +102 -19
- package/dist/components/Dialog/dialog.snap.d.ts +40 -0
- package/dist/components/Dialog/dialog.snap.js +78 -0
- package/dist/components/Dialog/dialog.state.svelte.d.ts +122 -10
- package/dist/components/Dialog/dialog.state.svelte.js +525 -66
- package/dist/components/Dialog/dialog.theme.d.ts +48 -0
- package/dist/components/Dialog/dialog.theme.js +32 -9
- package/dist/components/Dialog/index.d.ts +4 -1
- package/dist/components/Dialog/index.js +1 -0
- package/dist/components/DocumentViewer/DocumentSearchControl.svelte +5 -3
- package/dist/components/DocumentViewer/documentOutput.js +2 -1
- package/dist/components/FloatingWindow/FloatingWindow.svelte +20 -32
- package/dist/components/FloatingWindow/FloatingWindow.svelte.d.ts +1 -1
- package/dist/components/FloatingWindow/floatingWindow.mcp.d.ts +1 -1
- package/dist/components/FloatingWindow/floatingWindow.mcp.js +3 -3
- package/dist/components/FloatingWindow/floatingWindow.props.d.ts +9 -4
- package/dist/components/FloatingWindow/floatingWindow.state.svelte.d.ts +8 -2
- package/dist/components/FloatingWindow/floatingWindow.state.svelte.js +18 -7
- package/dist/components/Form/Ask/Ask.svelte +9 -13
- package/dist/components/Form/Ask/ask.mcp.d.ts +1 -1
- package/dist/components/Form/Ask/ask.mcp.js +1 -1
- package/dist/components/Form/Ask/ask.props.d.ts +1 -1
- package/dist/components/Form/Autocomplete/Autocomplete.svelte +418 -0
- package/dist/components/Form/Autocomplete/Autocomplete.svelte.d.ts +4 -0
- package/dist/components/Form/Autocomplete/autocomplete.items.d.ts +30 -0
- package/dist/components/Form/Autocomplete/autocomplete.items.js +64 -0
- package/dist/components/Form/Autocomplete/autocomplete.mcp.d.ts +1 -0
- package/dist/components/Form/Autocomplete/autocomplete.mcp.js +134 -0
- package/dist/components/Form/Autocomplete/autocomplete.props.d.ts +146 -0
- package/dist/components/Form/Autocomplete/autocomplete.props.js +1 -0
- package/dist/components/Form/Autocomplete/autocomplete.theme.d.ts +213 -0
- package/dist/components/Form/Autocomplete/autocomplete.theme.js +119 -0
- package/dist/components/Form/Autocomplete/index.d.ts +3 -0
- package/dist/components/Form/Autocomplete/index.js +2 -0
- package/dist/components/Form/Calendar/CalendarInput.svelte +9 -0
- package/dist/components/Form/Calendar/CalendarMonthYearPicker.svelte +3 -0
- package/dist/components/Form/Calendar/CalendarPrimitive.svelte +5 -0
- package/dist/components/Form/Calendar/calendar.mcp.d.ts +1 -1
- package/dist/components/Form/Calendar/calendar.mcp.js +2 -1
- package/dist/components/Form/Calendar/calendarInput.props.d.ts +2 -0
- package/dist/components/Form/Calendar/useCalendar.svelte.d.ts +3 -0
- package/dist/components/Form/Calendar/useCalendar.svelte.js +3 -0
- package/dist/components/Form/Checkbox/Checkbox.svelte +17 -2
- package/dist/components/Form/Checkbox/checkbox.mcp.d.ts +1 -1
- package/dist/components/Form/Checkbox/checkbox.mcp.js +11 -1
- package/dist/components/Form/Checkbox/checkbox.props.d.ts +12 -1
- package/dist/components/Form/CheckboxesInput/CheckboxLine.svelte +69 -32
- package/dist/components/Form/CheckboxesInput/CheckboxLine.svelte.d.ts +10 -2
- package/dist/components/Form/CheckboxesInput/CheckboxesInput.svelte +123 -74
- package/dist/components/Form/CheckboxesInput/CheckboxesInput.svelte.d.ts +12 -12
- package/dist/components/Form/CheckboxesInput/checkboxesInput.mcp.d.ts +1 -1
- package/dist/components/Form/CheckboxesInput/checkboxesInput.mcp.js +11 -7
- package/dist/components/Form/CheckboxesInput/checkboxesInput.props.d.ts +25 -9
- package/dist/components/Form/CheckboxesInput/checkboxesInput.theme.d.ts +12 -0
- package/dist/components/Form/CheckboxesInput/checkboxesInput.theme.js +9 -4
- package/dist/components/Form/CheckboxesInput/choiceEnter.d.ts +11 -0
- package/dist/components/Form/CheckboxesInput/choiceEnter.js +27 -0
- package/dist/components/Form/ColorInput/ColorInput.svelte +12 -3
- package/dist/components/Form/ColorInput/colorInput.mcp.d.ts +1 -1
- package/dist/components/Form/ColorInput/colorInput.mcp.js +1 -0
- package/dist/components/Form/ColorPicker/ColorPicker.svelte +11 -2
- package/dist/components/Form/ColorPicker/ColorPickerInput.svelte +9 -0
- package/dist/components/Form/ColorPicker/colorPicker.mcp.d.ts +1 -1
- package/dist/components/Form/ColorPicker/colorPicker.mcp.js +1 -0
- package/dist/components/Form/ColorPicker/colorPicker.props.d.ts +2 -0
- package/dist/components/Form/ColorPicker/colorPicker.state.svelte.d.ts +4 -0
- package/dist/components/Form/ColorPicker/colorPicker.state.svelte.js +12 -8
- package/dist/components/Form/Combobox/Combobox.svelte +145 -185
- package/dist/components/Form/Combobox/Combobox.svelte.d.ts +1 -1
- package/dist/components/Form/Combobox/ComboboxPopup.svelte +128 -0
- package/dist/components/Form/Combobox/ComboboxPopup.svelte.d.ts +28 -0
- package/dist/components/Form/Combobox/combobox.attributes.d.ts +34 -0
- package/dist/components/Form/Combobox/combobox.attributes.js +25 -0
- package/dist/components/Form/Combobox/combobox.items.d.ts +28 -0
- package/dist/components/Form/Combobox/combobox.items.js +68 -0
- package/dist/components/Form/Combobox/combobox.mcp.d.ts +1 -1
- package/dist/components/Form/Combobox/combobox.mcp.js +104 -13
- package/dist/components/Form/Combobox/combobox.props.d.ts +113 -19
- package/dist/components/Form/Combobox/combobox.state.svelte.d.ts +137 -0
- package/dist/components/Form/Combobox/combobox.state.svelte.js +375 -0
- package/dist/components/Form/Combobox/combobox.theme.d.ts +63 -0
- package/dist/components/Form/Combobox/combobox.theme.js +37 -1
- package/dist/components/Form/Combobox/index.d.ts +2 -1
- package/dist/components/Form/Combobox/index.js +1 -0
- package/dist/components/Form/DateInput/DateInput.svelte +11 -3
- package/dist/components/Form/DateInput/dateInput.mcp.d.ts +1 -1
- package/dist/components/Form/DateInput/dateInput.mcp.js +5 -0
- package/dist/components/Form/DateSelector/DateSelector.svelte +5 -2
- package/dist/components/Form/DateSelector/DateSelectorInput.svelte +9 -0
- package/dist/components/Form/DateSelector/dateSelector.mcp.d.ts +1 -1
- package/dist/components/Form/DateSelector/dateSelector.mcp.js +2 -2
- package/dist/components/Form/DateSelector/dateSelector.props.d.ts +2 -0
- package/dist/components/Form/Field/Field.svelte +258 -32
- package/dist/components/Form/Field/Field.svelte.d.ts +15 -6
- package/dist/components/Form/Field/FieldGroup.svelte +29 -0
- package/dist/components/Form/Field/FieldGroup.svelte.d.ts +11 -0
- package/dist/components/Form/Field/FieldHiddenInputs.svelte +187 -0
- package/dist/components/Form/Field/FieldHiddenInputs.svelte.d.ts +26 -0
- package/dist/components/Form/Field/field.d.ts +75 -10
- package/dist/components/Form/Field/field.mcp.d.ts +1 -1
- package/dist/components/Form/Field/field.mcp.js +158 -18
- package/dist/components/Form/Field/field.messages.d.ts +47 -0
- package/dist/components/Form/Field/field.messages.js +64 -0
- package/dist/components/Form/Field/field.state.svelte.d.ts +117 -40
- package/dist/components/Form/Field/field.state.svelte.js +525 -16
- package/dist/components/Form/Field/field.theme.d.ts +46 -0
- package/dist/components/Form/Field/field.theme.js +33 -0
- package/dist/components/Form/Field/fieldHiddenInputs.props.d.ts +61 -0
- package/dist/components/Form/Field/fieldHiddenInputs.props.js +1 -0
- package/dist/components/Form/Field/fieldNativeForm.svelte.d.ts +14 -0
- package/dist/components/Form/Field/fieldNativeForm.svelte.js +113 -0
- package/dist/components/Form/Field/index.d.ts +5 -2
- package/dist/components/Form/Field/index.js +1 -0
- package/dist/components/Form/Field/schemas.js +7 -2
- package/dist/components/Form/File/FileInput.svelte +24 -3
- package/dist/components/Form/File/fileInput.mcp.d.ts +1 -1
- package/dist/components/Form/File/fileInput.mcp.js +1 -0
- package/dist/components/Form/Form/Form.svelte +49 -15
- package/dist/components/Form/Form/FormActions.svelte +3 -1
- package/dist/components/Form/Form/FormActions.svelte.d.ts +42 -2
- package/dist/components/Form/Form/FormFieldRenderer.svelte +96 -12
- package/dist/components/Form/Form/FormFieldRenderer.svelte.d.ts +3 -2
- package/dist/components/Form/Form/FormInputRenderer.svelte +7 -0
- package/dist/components/Form/Form/form.d.ts +84 -11
- package/dist/components/Form/Form/form.mcp.d.ts +1 -1
- package/dist/components/Form/Form/form.mcp.js +178 -12
- package/dist/components/Form/Form/form.props.d.ts +32 -1
- package/dist/components/Form/Form/form.registry.d.ts +28 -0
- package/dist/components/Form/Form/form.registry.js +59 -0
- package/dist/components/Form/Form/form.state.svelte.d.ts +1186 -420
- package/dist/components/Form/Form/form.state.svelte.js +322 -28
- package/dist/components/Form/Form/index.d.ts +4 -1
- package/dist/components/Form/Form/index.js +1 -0
- package/dist/components/Form/Form/visibility.d.ts +3130 -1863
- package/dist/components/Form/KeyValueInput/KeyValueInput.svelte +22 -10
- package/dist/components/Form/KeyValueInput/keyValueInput.mcp.d.ts +1 -1
- package/dist/components/Form/KeyValueInput/keyValueInput.mcp.js +1 -0
- package/dist/components/Form/MultiStepForm/MultiStepForm.svelte +12 -5
- package/dist/components/Form/MultiStepForm/multiStepForm.mcp.d.ts +1 -1
- package/dist/components/Form/MultiStepForm/multiStepForm.mcp.js +5 -3
- package/dist/components/Form/MultiStepForm/multiStepForm.props.d.ts +5 -0
- package/dist/components/Form/MultiStepForm/multiStepForm.state.svelte.d.ts +1050 -408
- package/dist/components/Form/MultiStepForm/multiStepForm.state.svelte.js +48 -24
- package/dist/components/Form/NumberInput/NumberInput.svelte +365 -46
- package/dist/components/Form/NumberInput/index.d.ts +1 -1
- package/dist/components/Form/NumberInput/numberInput.mcp.d.ts +1 -1
- package/dist/components/Form/NumberInput/numberInput.mcp.js +55 -30
- package/dist/components/Form/NumberInput/numberInput.props.d.ts +64 -4
- package/dist/components/Form/PasswordInput/Password.svelte +28 -1
- package/dist/components/Form/PasswordInput/index.d.ts +1 -1
- package/dist/components/Form/PasswordInput/passwordInput.mcp.d.ts +1 -1
- package/dist/components/Form/PasswordInput/passwordInput.mcp.js +20 -2
- package/dist/components/Form/PasswordInput/passwordInput.props.d.ts +23 -0
- package/dist/components/Form/PhoneInput/PhoneInput.svelte +11 -4
- package/dist/components/Form/PhoneInput/PhoneInputCountryPicker.svelte +47 -21
- package/dist/components/Form/PhoneInput/phoneInput-cdn.js +2 -1
- package/dist/components/Form/PhoneInput/phoneInput.mcp.d.ts +1 -1
- package/dist/components/Form/PhoneInput/phoneInput.mcp.js +6 -2
- package/dist/components/Form/PhoneInput/phoneInputCountry.d.ts +9 -3
- package/dist/components/Form/PhoneInput/phoneInputCountry.js +34 -24
- package/dist/components/Form/PinInput/PinInput.svelte +44 -9
- package/dist/components/Form/PinInput/PinInputCells.svelte +22 -1
- package/dist/components/Form/PinInput/PinInputCells.svelte.d.ts +1 -0
- package/dist/components/Form/PinInput/index.d.ts +1 -1
- package/dist/components/Form/PinInput/pinInput.mcp.d.ts +1 -1
- package/dist/components/Form/PinInput/pinInput.mcp.js +29 -6
- package/dist/components/Form/PinInput/pinInput.props.d.ts +38 -4
- package/dist/components/Form/PinInput/pinInput.state.svelte.d.ts +41 -0
- package/dist/components/Form/PinInput/pinInput.state.svelte.js +227 -24
- package/dist/components/Form/PinInput/pinInput.theme.d.ts +39 -3
- package/dist/components/Form/PinInput/pinInput.theme.js +27 -1
- package/dist/components/Form/RadioInput/RadioInput.svelte +94 -32
- package/dist/components/Form/RadioInput/RadioInput.svelte.d.ts +12 -12
- package/dist/components/Form/RadioInput/radioInput.mcp.d.ts +1 -1
- package/dist/components/Form/RadioInput/radioInput.mcp.js +12 -9
- package/dist/components/Form/RadioInput/radioInput.props.d.ts +22 -6
- package/dist/components/Form/RadioInput/radioInput.theme.d.ts +12 -0
- package/dist/components/Form/RadioInput/radioInput.theme.js +10 -5
- package/dist/components/Form/RatingInput/RatingInput.svelte +13 -4
- package/dist/components/Form/RatingInput/ratingInput.mcp.d.ts +1 -1
- package/dist/components/Form/RatingInput/ratingInput.mcp.js +3 -3
- package/dist/components/Form/RatingInput/ratingInput.props.d.ts +1 -1
- package/dist/components/Form/Select/Select.svelte +186 -48
- package/dist/components/Form/Select/Select.svelte.d.ts +23 -2
- package/dist/components/Form/Select/SelectOptionRow.svelte +69 -0
- package/dist/components/Form/Select/SelectOptionRow.svelte.d.ts +18 -0
- package/dist/components/Form/Select/index.d.ts +2 -1
- package/dist/components/Form/Select/index.js +1 -0
- package/dist/components/Form/Select/select.align.d.ts +5 -0
- package/dist/components/Form/Select/select.align.js +19 -5
- package/dist/components/Form/Select/select.attributes.d.ts +36 -0
- package/dist/components/Form/Select/select.attributes.js +27 -0
- package/dist/components/Form/Select/select.mcp.d.ts +1 -1
- package/dist/components/Form/Select/select.mcp.js +103 -18
- package/dist/components/Form/Select/select.props.d.ts +87 -10
- package/dist/components/Form/Select/select.state.svelte.d.ts +108 -17
- package/dist/components/Form/Select/select.state.svelte.js +354 -59
- package/dist/components/Form/Select/select.theme.d.ts +21 -0
- package/dist/components/Form/Select/select.theme.js +22 -0
- package/dist/components/Form/Slider/Slider.svelte +54 -14
- package/dist/components/Form/Slider/SliderMarks.svelte +1 -1
- package/dist/components/Form/Slider/SliderThumb.svelte +49 -19
- package/dist/components/Form/Slider/SliderThumb.svelte.d.ts +8 -2
- package/dist/components/Form/Slider/SliderTrack.svelte +33 -12
- package/dist/components/Form/Slider/SliderTrack.svelte.d.ts +6 -2
- package/dist/components/Form/Slider/index.d.ts +1 -1
- package/dist/components/Form/Slider/slider.mcp.d.ts +1 -1
- package/dist/components/Form/Slider/slider.mcp.js +55 -11
- package/dist/components/Form/Slider/slider.props.d.ts +35 -2
- package/dist/components/Form/Slider/slider.state.svelte.d.ts +66 -5
- package/dist/components/Form/Slider/slider.state.svelte.js +273 -49
- package/dist/components/Form/Slider/slider.theme.d.ts +36 -0
- package/dist/components/Form/Slider/slider.theme.js +35 -17
- package/dist/components/Form/Switch/Switch.svelte +61 -38
- package/dist/components/Form/Switch/switch.mcp.d.ts +1 -1
- package/dist/components/Form/Switch/switch.mcp.js +25 -5
- package/dist/components/Form/Switch/switch.props.d.ts +14 -1
- package/dist/components/Form/Switch/switch.theme.d.ts +12 -0
- package/dist/components/Form/Switch/switch.theme.js +8 -3
- package/dist/components/Form/TagGroup/TagGroup.svelte +8 -0
- package/dist/components/Form/TagGroup/tagGroup.mcp.d.ts +1 -1
- package/dist/components/Form/TagGroup/tagGroup.mcp.js +1 -0
- package/dist/components/Form/TagsInput/TagsInput.svelte +277 -275
- package/dist/components/Form/TagsInput/TagsInput.svelte.d.ts +1 -1
- package/dist/components/Form/TagsInput/tagsInput.mcp.d.ts +1 -1
- package/dist/components/Form/TagsInput/tagsInput.mcp.js +31 -11
- package/dist/components/Form/TagsInput/tagsInput.props.d.ts +6 -26
- package/dist/components/Form/TagsInput/tagsInput.theme.d.ts +63 -0
- package/dist/components/Form/TagsInput/tagsInput.theme.js +37 -1
- package/dist/components/Form/TextArea/TextArea.svelte +8 -0
- package/dist/components/Form/TextArea/textArea.mcp.d.ts +1 -1
- package/dist/components/Form/TextArea/textArea.mcp.js +1 -0
- package/dist/components/Form/TextInput/TextInput.svelte +8 -1
- package/dist/components/Form/TextInput/textInput.mcp.d.ts +1 -1
- package/dist/components/Form/TextInput/textInput.mcp.js +5 -0
- package/dist/components/Form/TimeInput/TimeInput.svelte +9 -1
- package/dist/components/Form/TimeInput/timeInput.mcp.d.ts +1 -1
- package/dist/components/Form/TimeInput/timeInput.mcp.js +31 -0
- package/dist/components/Form/VoiceInput/VoiceInput.svelte +10 -2
- package/dist/components/Form/VoiceInput/voiceInput.mcp.d.ts +1 -1
- package/dist/components/Form/VoiceInput/voiceInput.mcp.js +1 -0
- package/dist/components/GanttChart/GanttDependencyControl.svelte +4 -4
- package/dist/components/HoverCard/HoverCard.svelte +100 -10
- package/dist/components/HoverCard/hoverCard.attributes.d.ts +33 -0
- package/dist/components/HoverCard/hoverCard.attributes.js +24 -0
- package/dist/components/HoverCard/hoverCard.mcp.d.ts +1 -1
- package/dist/components/HoverCard/hoverCard.mcp.js +61 -2
- package/dist/components/HoverCard/hoverCard.props.d.ts +19 -0
- package/dist/components/HoverCard/hoverCard.theme.d.ts +12 -0
- package/dist/components/HoverCard/hoverCard.theme.js +9 -2
- package/dist/components/HoverCard/index.d.ts +1 -0
- package/dist/components/HoverCard/index.js +1 -0
- package/dist/components/ImageGallery/imageGallery.state.svelte.d.ts +1 -1
- package/dist/components/ImageZoom/imageZoom.lightbox.js +40 -6
- package/dist/components/ImageZoom/imageZoom.mcp.d.ts +1 -1
- package/dist/components/ImageZoom/imageZoom.mcp.js +3 -3
- package/dist/components/ImageZoom/imageZoom.props.d.ts +10 -4
- package/dist/components/ImageZoom/imageZoom.state.svelte.d.ts +16 -4
- package/dist/components/ImageZoom/imageZoom.state.svelte.js +38 -9
- package/dist/components/Kanban/kanban.theme.js +7 -3
- package/dist/components/Layout/layoutSpacing.d.ts +2 -2
- package/dist/components/LinkPreview/LinkPreview.svelte +7 -1
- package/dist/components/LinkPreview/linkPreview.mcp.d.ts +1 -1
- package/dist/components/LinkPreview/linkPreview.mcp.js +4 -1
- package/dist/components/LinkPreview/linkPreview.props.d.ts +15 -0
- package/dist/components/LinkPreview/linkPreview.theme.d.ts +12 -0
- package/dist/components/LinkPreview/linkPreview.theme.js +9 -2
- package/dist/components/Map/maplibre-cdn.js +3 -2
- package/dist/components/Markdown/markdown.mcp.d.ts +1 -1
- package/dist/components/Markdown/markdown.mcp.js +2 -1
- package/dist/components/Markdown/markdown.theme.js +18 -9
- package/dist/components/MediaVolume/MediaVolumeControl.svelte +4 -3
- package/dist/components/Menu/Menu.svelte +3 -3
- package/dist/components/Menu/Menu.svelte.d.ts +1 -1
- package/dist/components/Menu/MenuCheckboxItem.svelte +87 -0
- package/dist/components/Menu/MenuCheckboxItem.svelte.d.ts +16 -0
- package/dist/components/Menu/MenuFloating.svelte +421 -74
- package/dist/components/Menu/MenuFloating.svelte.d.ts +1 -1
- package/dist/components/Menu/MenuMirroredIcon.svelte +9 -0
- package/dist/components/Menu/MenuMirroredIcon.svelte.d.ts +7 -0
- package/dist/components/Menu/MenuRadioGroup.svelte +102 -0
- package/dist/components/Menu/MenuRadioGroup.svelte.d.ts +18 -0
- package/dist/components/Menu/MenuSearchField.svelte +54 -0
- package/dist/components/Menu/MenuSearchField.svelte.d.ts +20 -0
- package/dist/components/Menu/MenuStacked.svelte +404 -158
- package/dist/components/Menu/MenuStacked.svelte.d.ts +1 -1
- package/dist/components/Menu/MenuStackedBackHeader.svelte +6 -1
- package/dist/components/Menu/index.d.ts +2 -1
- package/dist/components/Menu/index.js +1 -0
- package/dist/components/Menu/menu.attributes.d.ts +37 -0
- package/dist/components/Menu/menu.attributes.js +28 -0
- package/dist/components/Menu/menu.filter.svelte.d.ts +52 -0
- package/dist/components/Menu/menu.filter.svelte.js +143 -0
- package/dist/components/Menu/menu.mcp.d.ts +1 -1
- package/dist/components/Menu/menu.mcp.js +227 -17
- package/dist/components/Menu/menu.platform.d.ts +5 -0
- package/dist/components/Menu/menu.platform.js +11 -0
- package/dist/components/Menu/menu.props.d.ts +172 -9
- package/dist/components/Menu/menu.theme.d.ts +147 -0
- package/dist/components/Menu/menu.theme.js +101 -0
- package/dist/components/Menu/menuTree.d.ts +35 -1
- package/dist/components/Menu/menuTree.js +158 -1
- package/dist/components/MenuBar/menuBar.mcp.d.ts +1 -1
- package/dist/components/MenuBar/menuBar.mcp.js +4 -2
- package/dist/components/MenuBar/menuBar.state.svelte.js +28 -10
- package/dist/components/MenuOption/MenuOption.svelte +5 -1
- package/dist/components/MenuOption/menuOption.mcp.d.ts +1 -1
- package/dist/components/MenuOption/menuOption.mcp.js +8 -0
- package/dist/components/MenuOption/menuOption.props.d.ts +12 -0
- package/dist/components/MenuOption/menuOption.theme.d.ts +18 -0
- package/dist/components/MenuOption/menuOption.theme.js +24 -4
- package/dist/components/Mermaid/mermaid.mcp.d.ts +1 -1
- package/dist/components/Mermaid/mermaid.mcp.js +8 -8
- package/dist/components/Mermaid/mermaid.props.d.ts +3 -4
- package/dist/components/Mermaid/mermaid.state.svelte.d.ts +20 -19
- package/dist/components/Mermaid/mermaid.state.svelte.js +80 -243
- package/dist/components/Mermaid/mermaid.theme.js +26 -1
- package/dist/components/MetadataList/MetadataList.svelte.d.ts +1 -1
- package/dist/components/Meter/Meter.svelte +110 -24
- package/dist/components/Meter/Meter.svelte.d.ts +12 -12
- package/dist/components/Meter/meter.mcp.d.ts +1 -1
- package/dist/components/Meter/meter.mcp.js +23 -37
- package/dist/components/Meter/meter.props.d.ts +36 -44
- package/dist/components/NavigationMenu/NavigationMenu.svelte +181 -0
- package/dist/components/NavigationMenu/NavigationMenu.svelte.d.ts +25 -0
- package/dist/components/NavigationMenu/NavigationMenuContent.svelte +141 -0
- package/dist/components/NavigationMenu/NavigationMenuContent.svelte.d.ts +13 -0
- package/dist/components/NavigationMenu/NavigationMenuTrigger.svelte +75 -0
- package/dist/components/NavigationMenu/NavigationMenuTrigger.svelte.d.ts +13 -0
- package/dist/components/NavigationMenu/index.d.ts +4 -0
- package/dist/components/NavigationMenu/index.js +3 -0
- package/dist/components/NavigationMenu/navigationMenu.attributes.d.ts +24 -0
- package/dist/components/NavigationMenu/navigationMenu.attributes.js +21 -0
- package/dist/components/NavigationMenu/navigationMenu.mcp.d.ts +1 -0
- package/dist/components/NavigationMenu/navigationMenu.mcp.js +138 -0
- package/dist/components/NavigationMenu/navigationMenu.props.d.ts +129 -0
- package/dist/components/NavigationMenu/navigationMenu.props.js +1 -0
- package/dist/components/NavigationMenu/navigationMenu.state.svelte.d.ts +163 -0
- package/dist/components/NavigationMenu/navigationMenu.state.svelte.js +721 -0
- package/dist/components/NavigationMenu/navigationMenu.theme.d.ts +326 -0
- package/dist/components/NavigationMenu/navigationMenu.theme.js +239 -0
- package/dist/components/Overlay/Overlay.svelte +19 -30
- package/dist/components/Overlay/index.d.ts +1 -0
- package/dist/components/Overlay/index.js +1 -0
- package/dist/components/Overlay/overlay.attributes.d.ts +16 -0
- package/dist/components/Overlay/overlay.attributes.js +14 -0
- package/dist/components/Overlay/overlay.mcp.d.ts +1 -1
- package/dist/components/Overlay/overlay.mcp.js +21 -3
- package/dist/components/Overlay/overlay.props.d.ts +8 -4
- package/dist/components/Popover/Popover.svelte +163 -52
- package/dist/components/Popover/Popover.svelte.d.ts +23 -2
- package/dist/components/Popover/PopoverSession.svelte +12 -0
- package/dist/components/Popover/PopoverSession.svelte.d.ts +7 -0
- package/dist/components/Popover/index.d.ts +10 -2
- package/dist/components/Popover/index.js +4 -1
- package/dist/components/Popover/popover.api.d.ts +83 -0
- package/dist/components/Popover/popover.api.js +1 -0
- package/dist/components/Popover/popover.attributes.d.ts +32 -0
- package/dist/components/Popover/popover.attributes.js +28 -0
- package/dist/components/Popover/popover.claims.d.ts +19 -0
- package/dist/components/Popover/popover.claims.js +45 -0
- package/dist/components/Popover/popover.mcp.d.ts +1 -1
- package/dist/components/Popover/popover.mcp.js +163 -31
- package/dist/components/Popover/popover.position.d.ts +226 -0
- package/dist/components/Popover/popover.position.js +402 -0
- package/dist/components/Popover/popover.props.d.ts +179 -24
- package/dist/components/Popover/popover.state.svelte.d.ts +169 -37
- package/dist/components/Popover/popover.state.svelte.js +1034 -194
- package/dist/components/Popover/popover.theme.d.ts +15 -0
- package/dist/components/Popover/popover.theme.js +27 -2
- package/dist/components/PopupMenu/PopupMenu.svelte +193 -22
- package/dist/components/PopupMenu/PopupMenu.svelte.d.ts +2 -2
- package/dist/components/PopupMenu/popupMenu.context.d.ts +42 -0
- package/dist/components/PopupMenu/popupMenu.context.js +52 -0
- package/dist/components/PopupMenu/popupMenu.mcp.d.ts +1 -1
- package/dist/components/PopupMenu/popupMenu.mcp.js +46 -6
- package/dist/components/PopupMenu/popupMenu.props.d.ts +29 -2
- package/dist/components/Progress/Progress.svelte +160 -0
- package/dist/components/Progress/Progress.svelte.d.ts +4 -0
- package/dist/components/Progress/index.d.ts +3 -0
- package/dist/components/Progress/index.js +2 -0
- package/dist/components/Progress/progress.mcp.d.ts +1 -0
- package/dist/components/Progress/progress.mcp.js +101 -0
- package/dist/components/Progress/progress.props.d.ts +79 -0
- package/dist/components/Progress/progress.props.js +1 -0
- package/dist/components/Progress/progress.theme.d.ts +129 -0
- package/dist/components/Progress/progress.theme.js +83 -0
- package/dist/components/ProgressCircle/ProgressCircle.svelte +51 -6
- package/dist/components/ProgressCircle/progressCircle.mcp.d.ts +1 -1
- package/dist/components/ProgressCircle/progressCircle.mcp.js +18 -4
- package/dist/components/ProgressCircle/progressCircle.props.d.ts +32 -2
- package/dist/components/ProgressCircle/progressCircle.theme.d.ts +15 -3
- package/dist/components/ProgressCircle/progressCircle.theme.js +7 -2
- package/dist/components/RichTextInput/RichTextInput.svelte +19 -1
- package/dist/components/RichTextInput/RichTextInputChrome.svelte +5 -1
- package/dist/components/RichTextInput/RichTextInputChrome.svelte.d.ts +2 -0
- package/dist/components/RichTextInput/RichTextInputViewport.svelte +3 -1
- package/dist/components/RichTextInput/RichTextInputViewport.svelte.d.ts +1 -0
- package/dist/components/RichTextInput/richTextInput.mcp.d.ts +1 -1
- package/dist/components/RichTextInput/richTextInput.mcp.js +1 -0
- package/dist/components/RichTextInput/suggestions.js +2 -0
- package/dist/components/ScrollArea/ScrollArea.svelte +166 -27
- package/dist/components/ScrollArea/index.d.ts +2 -1
- package/dist/components/ScrollArea/index.js +1 -0
- package/dist/components/ScrollArea/scrollArea.attributes.d.ts +25 -0
- package/dist/components/ScrollArea/scrollArea.attributes.js +21 -0
- package/dist/components/ScrollArea/scrollArea.mcp.d.ts +1 -1
- package/dist/components/ScrollArea/scrollArea.mcp.js +47 -3
- package/dist/components/ScrollArea/scrollArea.props.d.ts +33 -6
- package/dist/components/ScrollArea/scrollArea.svelte.d.ts +56 -12
- package/dist/components/ScrollArea/scrollArea.svelte.js +281 -71
- package/dist/components/ScrollArea/scrollArea.theme.js +5 -2
- package/dist/components/SegmentedControl/SegmentedControl.svelte +4 -3
- package/dist/components/SegmentedControl/segmentedControl.mcp.d.ts +1 -1
- package/dist/components/SegmentedControl/segmentedControl.mcp.js +3 -2
- package/dist/components/SelectionMenu/SelectionMenu.svelte +4 -2
- package/dist/components/Sidebar/SidebarAction.svelte +13 -3
- package/dist/components/Sidebar/SidebarAction.svelte.d.ts +2 -1
- package/dist/components/Sidebar/SidebarActivityBar.svelte +14 -7
- package/dist/components/Sidebar/SidebarFlyout.svelte +97 -0
- package/dist/components/Sidebar/SidebarFlyout.svelte.d.ts +32 -0
- package/dist/components/Sidebar/SidebarGroup.svelte +39 -15
- package/dist/components/Sidebar/SidebarMenuButton.svelte +6 -3
- package/dist/components/Sidebar/SidebarMenuItem.svelte +134 -31
- package/dist/components/Sidebar/SidebarMenuSubItem.svelte +30 -14
- package/dist/components/Sidebar/SidebarTreeNode.svelte +41 -61
- package/dist/components/Sidebar/index.d.ts +1 -0
- package/dist/components/Sidebar/index.js +1 -0
- package/dist/components/Sidebar/sidebar-position.d.ts +37 -2
- package/dist/components/Sidebar/sidebar-position.js +31 -2
- package/dist/components/Sidebar/sidebar.attributes.d.ts +33 -0
- package/dist/components/Sidebar/sidebar.attributes.js +29 -0
- package/dist/components/Sidebar/sidebar.mcp.d.ts +1 -1
- package/dist/components/Sidebar/sidebar.mcp.js +45 -10
- package/dist/components/Sidebar/sidebar.props.d.ts +28 -7
- package/dist/components/Sidebar/sidebar.theme.d.ts +51 -21
- package/dist/components/Sidebar/sidebar.theme.js +113 -62
- package/dist/components/Sidebar/sidebar.views.svelte.js +11 -18
- package/dist/components/Stepper/Stepper.svelte +2 -0
- package/dist/components/Stepper/stepper.mcp.d.ts +1 -1
- package/dist/components/Stepper/stepper.mcp.js +1 -0
- package/dist/components/Stepper/stepper.props.d.ts +5 -0
- package/dist/components/Stepper/stepper.state.svelte.d.ts +2 -0
- package/dist/components/Stepper/stepper.state.svelte.js +31 -12
- package/dist/components/Tabbar/Tabbar.svelte +55 -16
- package/dist/components/Tabbar/index.d.ts +1 -1
- package/dist/components/Tabbar/tabbar.mcp.d.ts +1 -1
- package/dist/components/Tabbar/tabbar.mcp.js +26 -9
- package/dist/components/Tabbar/tabbar.props.d.ts +34 -5
- package/dist/components/Tabbar/tabbar.selection.svelte.d.ts +79 -0
- package/dist/components/Tabbar/tabbar.selection.svelte.js +99 -0
- package/dist/components/TableOfContents/tableOfContents.state.svelte.js +9 -7
- package/dist/components/Tabs/Tabs.svelte +73 -16
- package/dist/components/Tabs/index.d.ts +2 -1
- package/dist/components/Tabs/tabs.direction.svelte.d.ts +25 -0
- package/dist/components/Tabs/tabs.direction.svelte.js +40 -0
- package/dist/components/Tabs/tabs.mcp.d.ts +1 -1
- package/dist/components/Tabs/tabs.mcp.js +22 -4
- package/dist/components/Tabs/tabs.props.d.ts +39 -12
- package/dist/components/Tabs/tabs.theme.js +3 -1
- package/dist/components/Theme/Theme.svelte +44 -27
- package/dist/components/Theme/helper.d.ts +16 -2
- package/dist/components/Theme/helper.js +46 -4
- package/dist/components/Theme/theme.mcp.d.ts +1 -1
- package/dist/components/Theme/theme.mcp.js +103 -0
- package/dist/components/Theme/theme.props.d.ts +16 -0
- package/dist/components/Theme/theme.state.svelte.d.ts +14 -1
- package/dist/components/Theme/theme.state.svelte.js +18 -1
- package/dist/components/Toast/Toast.svelte +184 -39
- package/dist/components/Toast/Toaster.svelte +14 -10
- package/dist/components/Toast/index.d.ts +1 -0
- package/dist/components/Toast/toast.mcp.d.ts +1 -1
- package/dist/components/Toast/toast.mcp.js +47 -6
- package/dist/components/Toast/toast.state.svelte.d.ts +172 -6
- package/dist/components/Toast/toast.state.svelte.js +513 -68
- package/dist/components/Toast/toast.theme.js +1 -1
- package/dist/components/ToggleButton/ToggleButton.svelte +23 -1
- package/dist/components/ToggleButton/toggleButton.mcp.d.ts +1 -1
- package/dist/components/ToggleButton/toggleButton.mcp.js +3 -1
- package/dist/components/ToggleButton/toggleButton.props.d.ts +13 -1
- package/dist/components/ToggleButton/toggleButton.theme.d.ts +12 -0
- package/dist/components/ToggleButton/toggleButton.theme.js +15 -3
- package/dist/components/ToggleButtonGroup/ToggleButtonGroup.svelte +29 -9
- package/dist/components/ToggleButtonGroup/index.d.ts +1 -1
- package/dist/components/ToggleButtonGroup/toggleButtonGroup.mcp.d.ts +1 -1
- package/dist/components/ToggleButtonGroup/toggleButtonGroup.mcp.js +5 -2
- package/dist/components/ToggleButtonGroup/toggleButtonGroup.props.d.ts +19 -1
- package/dist/components/ToggleButtonGroup/toggleButtonGroup.theme.d.ts +12 -0
- package/dist/components/ToggleButtonGroup/toggleButtonGroup.theme.js +21 -2
- package/dist/components/ToggleMenu/ToggleMenu.svelte +57 -43
- package/dist/components/ToggleMenu/ToggleMenuGroup.svelte +1 -0
- package/dist/components/ToggleMenu/ToggleMenuMenu.svelte +9 -3
- package/dist/components/ToggleMenu/ToggleMenuRadioGroup.svelte +7 -2
- package/dist/components/ToggleMenu/toggleMenu.mcp.d.ts +1 -1
- package/dist/components/ToggleMenu/toggleMenu.mcp.js +3 -2
- package/dist/components/ToggleMenu/toggleMenu.props.d.ts +4 -1
- package/dist/components/Tooltip/Tooltip.svelte +4 -12
- package/dist/components/Tooltip/TooltipHost.svelte +136 -15
- package/dist/components/Tooltip/index.d.ts +1 -0
- package/dist/components/Tooltip/index.js +1 -0
- package/dist/components/Tooltip/tooltip.attachment.svelte.d.ts +5 -0
- package/dist/components/Tooltip/tooltip.attachment.svelte.js +215 -33
- package/dist/components/Tooltip/tooltip.attributes.d.ts +32 -0
- package/dist/components/Tooltip/tooltip.attributes.js +28 -0
- package/dist/components/Tooltip/tooltip.mcp.d.ts +1 -1
- package/dist/components/Tooltip/tooltip.mcp.js +111 -10
- package/dist/components/Tooltip/tooltip.props.d.ts +33 -2
- package/dist/components/Tooltip/tooltip.surface.d.ts +24 -0
- package/dist/components/Tooltip/tooltip.surface.js +42 -0
- package/dist/components/Tree/TreeContextMenuSurface.svelte +16 -3
- package/dist/components/Utils/BeforeHydratation.svelte +14 -3
- package/dist/components/Utils/BeforeHydratation.svelte.d.ts +2 -0
- package/dist/components/VideoPlayer/VideoPlayer.svelte.d.ts +1 -1
- package/dist/components/VideoPlayer/VideoPlayerSettings.svelte +2 -0
- package/dist/generated/componentAliases.d.ts +3 -0
- package/dist/generated/componentAliases.js +3 -0
- package/dist/generated/componentContract.d.ts +79 -34
- package/dist/generated/componentContract.js +231 -6
- package/dist/generated/componentMcpRegistry.js +6 -0
- package/dist/i18n/ar.js +107 -3
- package/dist/i18n/context.svelte.d.ts +6 -0
- package/dist/i18n/context.svelte.js +12 -0
- package/dist/i18n/de.js +101 -3
- package/dist/i18n/en.d.ts +91 -2
- package/dist/i18n/en.js +101 -3
- package/dist/i18n/es.js +101 -3
- package/dist/i18n/fr.js +101 -3
- package/dist/i18n/ja.js +101 -3
- package/dist/i18n/pt.js +101 -3
- package/dist/i18n/zh.js +101 -3
- package/dist/tailwind/geometry.js +7 -0
- package/dist/tailwind/global.js +31 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/types.mcp.d.ts +1 -1
- package/dist/types/types.mcp.js +23 -0
- package/dist/utils/cspNonce.d.ts +16 -0
- package/dist/utils/cspNonce.js +39 -0
- package/dist/utils/cva/merge.d.ts +5 -1
- package/dist/utils/cva/merge.js +6 -4
- package/dist/utils/focus.d.ts +34 -0
- package/dist/utils/focus.js +93 -0
- package/dist/utils/focusHistory.d.ts +21 -0
- package/dist/utils/focusHistory.js +99 -0
- package/dist/utils/handlers.d.ts +7 -0
- package/dist/utils/handlers.js +14 -0
- package/dist/utils/hoverIntent.d.ts +42 -0
- package/dist/utils/hoverIntent.js +57 -0
- package/dist/utils/id.d.ts +7 -0
- package/dist/utils/id.js +15 -0
- package/dist/utils/layers.svelte.d.ts +32 -4
- package/dist/utils/layers.svelte.js +214 -21
- package/dist/utils/listFilter.d.ts +44 -0
- package/dist/utils/listFilter.js +130 -0
- package/dist/utils/match.d.ts +35 -0
- package/dist/utils/match.js +36 -0
- package/dist/utils/number.d.ts +126 -0
- package/dist/utils/number.js +401 -0
- package/dist/utils/openChange.d.ts +88 -0
- package/dist/utils/openChange.js +71 -0
- package/dist/utils/openLifecycle.svelte.d.ts +41 -0
- package/dist/utils/openLifecycle.svelte.js +134 -0
- package/dist/utils/pointerDrag.d.ts +10 -0
- package/dist/utils/pointerDrag.js +37 -2
- package/dist/utils/pragmaticDragAndDrop.d.ts +2 -1
- package/dist/utils/pragmaticDragAndDrop.js +8 -3
- package/dist/utils/range.d.ts +62 -0
- package/dist/utils/range.js +70 -0
- package/dist/utils/requestNativeSubmit.d.ts +17 -0
- package/dist/utils/requestNativeSubmit.js +47 -0
- package/dist/utils/safeArea.svelte.d.ts +10 -1
- package/dist/utils/safeArea.svelte.js +19 -11
- package/dist/utils/stateAttributes.d.ts +108 -0
- package/dist/utils/stateAttributes.js +78 -0
- package/dist/utils/swipeVelocity.d.ts +32 -0
- package/dist/utils/swipeVelocity.js +59 -0
- package/dist/utils/timer.svelte.d.ts +65 -2
- package/dist/utils/timer.svelte.js +159 -25
- package/dist/utils/trigger.d.ts +41 -0
- package/dist/utils/trigger.js +103 -0
- package/dist/utils/typeahead.d.ts +9 -0
- package/dist/utils/typeahead.js +21 -9
- package/dist/utils/useDndList.svelte.d.ts +1 -1
- package/dist/utils/useDndList.svelte.js +6 -23
- package/dist/utils/useFocusScope.svelte.d.ts +29 -0
- package/dist/utils/useFocusScope.svelte.js +189 -27
- package/dist/utils/useHoverAction.svelte.d.ts +44 -4
- package/dist/utils/useHoverAction.svelte.js +161 -51
- package/dist/utils/useKeyDown.svelte.d.ts +19 -2
- package/dist/utils/useKeyDown.svelte.js +19 -12
- package/dist/utils/useListNavigation.svelte.d.ts +94 -13
- package/dist/utils/useListNavigation.svelte.js +261 -35
- package/dist/utils/useLiveAnnouncer.svelte.d.ts +77 -2
- package/dist/utils/useLiveAnnouncer.svelte.js +119 -2
- package/dist/utils/useNavigation.svelte.d.ts +36 -3
- package/dist/utils/useNavigation.svelte.js +699 -332
- package/dist/utils/usePressAndHold.svelte.d.ts +38 -0
- package/dist/utils/usePressAndHold.svelte.js +191 -0
- package/dist/utils/useScrollLock.svelte.d.ts +20 -1
- package/dist/utils/useScrollLock.svelte.js +54 -13
- package/dist/utils/useSlidingIndicator.svelte.d.ts +2 -0
- package/dist/utils/useSlidingIndicator.svelte.js +27 -5
- package/dist/utils/useTabBridge.svelte.d.ts +20 -0
- package/dist/utils/useTabBridge.svelte.js +109 -0
- package/dist/utils/values.d.ts +15 -0
- package/dist/utils/values.js +49 -0
- package/package.json +31 -2
- package/dist/generated/componentMcpRegistry.d.ts +0 -142
- package/dist/utils/useDrag.svelte.d.ts +0 -11
- package/dist/utils/useDrag.svelte.js +0 -55
|
@@ -1,26 +1,114 @@
|
|
|
1
1
|
import { createBindableStateClass } from '../../../utils/state.svelte.js';
|
|
2
2
|
import * as v from 'valibot';
|
|
3
3
|
import { schemas } from './schemas.js';
|
|
4
|
-
import {
|
|
5
|
-
|
|
4
|
+
import { getFormInputDefinition, getRegisteredInputSchema } from '../Form/form.registry.js';
|
|
5
|
+
import { getContext, onDestroy, setContext, untrack } from 'svelte';
|
|
6
|
+
import { getFirstTabbable } from '../../../utils/focus.js';
|
|
7
|
+
import { isEmptyValue, valuesEqual } from '../../../utils/values.js';
|
|
8
|
+
import { useI18nResolver } from '../../../i18n/context.svelte.js';
|
|
9
|
+
import { describeFieldIssue, resolveFieldMessages } from './field.messages.js';
|
|
10
|
+
const FIELD_GROUP_CONTEXT = Symbol('entasis:field-group');
|
|
11
|
+
/**
|
|
12
|
+
* Makes every field created below the calling component disabled or read-only while the group is.
|
|
13
|
+
* Nested groups combine: a field is disabled when it, or any group around it, is. Call during
|
|
14
|
+
* component initialisation.
|
|
15
|
+
*/
|
|
16
|
+
export const provideFieldGroup = (own) => {
|
|
17
|
+
const parent = getContext(FIELD_GROUP_CONTEXT);
|
|
18
|
+
const group = {
|
|
19
|
+
get disabled() {
|
|
20
|
+
return Boolean(own.disabled || parent?.disabled);
|
|
21
|
+
},
|
|
22
|
+
get readOnly() {
|
|
23
|
+
return Boolean(own.readOnly || parent?.readOnly);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
setContext(FIELD_GROUP_CONTEXT, group);
|
|
27
|
+
return group;
|
|
28
|
+
};
|
|
29
|
+
// A checkbox or switch answers a required question only when it is on.
|
|
30
|
+
const BOOLEAN_TYPES = new Set(['checkbox', 'switch']);
|
|
31
|
+
const normalizeErrors = (validation, invalid) => {
|
|
6
32
|
if (!validation)
|
|
7
33
|
return [];
|
|
8
34
|
if (validation === true)
|
|
9
|
-
return [
|
|
35
|
+
return [invalid];
|
|
10
36
|
return Array.isArray(validation) ? validation : [validation];
|
|
11
37
|
};
|
|
38
|
+
const unique = (messages) => [...new Set(messages)];
|
|
39
|
+
const isThenable = (value) => value !== null &&
|
|
40
|
+
(typeof value === 'object' || typeof value === 'function') &&
|
|
41
|
+
typeof value.then === 'function';
|
|
42
|
+
const toMessages = (messages) => (Array.isArray(messages) ? messages : messages ? [messages] : []).filter((message) => typeof message === 'string' && message !== '');
|
|
43
|
+
const containsNode = (container, node) => container === node || container.contains(node);
|
|
44
|
+
// Parts of a field that take focus when pressed (WebKit leaves buttons unfocused): a press on one
|
|
45
|
+
// keeps the field's focus parked. A press on anything else in the field (its description, say)
|
|
46
|
+
// moves focus to the body, which leaves the field.
|
|
47
|
+
const PRESSABLE = 'a[href], button, input, select, textarea, label, summary, [tabindex], [role="button"], [role="checkbox"], [role="switch"], [role="radio"], [role="slider"], [role="option"], [role="tab"], [role="menuitem"], [role="combobox"], [contenteditable]:not([contenteditable="false"])';
|
|
48
|
+
const sameStrings = (a, b) => Array.isArray(a) && a.length === b.length && a.every((entry, index) => entry === b[index]);
|
|
12
49
|
export const createFieldState = (options) => {
|
|
13
50
|
let mounted = false;
|
|
14
51
|
let localValue = $state(options.value);
|
|
15
52
|
let localErrors = $state(options.errors);
|
|
16
53
|
let localFocused = $state(options.focused);
|
|
54
|
+
const group = getContext(FIELD_GROUP_CONTEXT);
|
|
55
|
+
const resolveMessages = useI18nResolver();
|
|
56
|
+
// Focus that moves into a popup the field opened (a Select listbox, a date picker) stays inside
|
|
57
|
+
// the field even though the popup is portaled elsewhere in the document.
|
|
58
|
+
const layers = getContext('entasisTheme')?.layers;
|
|
59
|
+
// Interaction state the controller keeps private: plain closure state, since the class type is
|
|
60
|
+
// exported and cannot carry `#private` members.
|
|
61
|
+
let focusWithin = false;
|
|
62
|
+
let stopWatchingFocus = null;
|
|
63
|
+
// The errors the last catalog-driven validation produced, and the locale they were written in.
|
|
64
|
+
let validation = null;
|
|
65
|
+
let initialValue = $state(undefined);
|
|
66
|
+
let hasBaseline = $state(false);
|
|
67
|
+
// Errors an app set from outside (a server response); they clear on the next accepted change.
|
|
68
|
+
let externalErrors = $state([]);
|
|
69
|
+
// True while an async validator is in flight; the field reads as neither valid nor invalid.
|
|
70
|
+
let validating = $state(false);
|
|
71
|
+
// Validation timing a Field component hands down from its props (controls forward them).
|
|
72
|
+
let fieldMode = $state(undefined);
|
|
73
|
+
let fieldDebounce = $state(undefined);
|
|
74
|
+
// Each validation run takes a token; a result carrying an older token is dropped.
|
|
75
|
+
let asyncToken = 0;
|
|
76
|
+
let pending = null;
|
|
77
|
+
let changeTimer;
|
|
78
|
+
let blurTimer;
|
|
79
|
+
let destroyed = false;
|
|
80
|
+
// The value a reset wrote: the change it causes is a restore, not an edit to validate.
|
|
81
|
+
let restored = null;
|
|
82
|
+
let hasDescription = $state(false);
|
|
83
|
+
let hasHelper = $state(false);
|
|
17
84
|
class FieldState extends createBindableStateClass() {
|
|
18
85
|
node = $state(null);
|
|
19
86
|
rootNode = $state(null);
|
|
20
87
|
labelId = `${options.id}-label`;
|
|
21
88
|
errorId = `${options.id}-errors`;
|
|
22
|
-
|
|
89
|
+
/** Id Field gives the rendered description, referenced from the control's `aria-describedby`. */
|
|
90
|
+
descriptionId = `${options.id}-description`;
|
|
91
|
+
/** Id Field gives the rendered helper text, referenced from the control's `aria-describedby`. */
|
|
92
|
+
helperId = `${options.id}-helper`;
|
|
93
|
+
/** Messages from validation (and from `errors`), without those an app set from outside. */
|
|
94
|
+
validationMessages = $derived.by(() => normalizeErrors(this.errors, this.messages.invalid));
|
|
95
|
+
/** Every message shown: validation errors first, then the ones set from outside. */
|
|
96
|
+
errorMessages = $derived.by(() => [...this.validationMessages, ...externalErrors]);
|
|
23
97
|
hasError = $derived(this.errorMessages.length > 0);
|
|
98
|
+
/** Validation failed. Unlike `hasError`, errors set from outside do not count. */
|
|
99
|
+
hasValidationError = $derived(this.validationMessages.length > 0);
|
|
100
|
+
/** True once focus has left the field after entering it (popups the field opened included). */
|
|
101
|
+
touched = $state(false);
|
|
102
|
+
/** The value differs from the initial one; empty values (`null`, `''`, `[]`) count as equal. */
|
|
103
|
+
dirty = $derived(hasBaseline && !valuesEqual(this.value, initialValue));
|
|
104
|
+
/** The field holds a value: text, a selection, a file; for a checkbox or switch, on. */
|
|
105
|
+
filled = $derived(!isEmpty(this.value));
|
|
106
|
+
/** Description, helper and error ids for the control's `aria-describedby`, errors last. */
|
|
107
|
+
describedBy = $derived([
|
|
108
|
+
hasDescription ? this.descriptionId : undefined,
|
|
109
|
+
hasHelper ? this.helperId : undefined,
|
|
110
|
+
this.hasError ? this.errorId : undefined
|
|
111
|
+
].filter((id) => id !== undefined));
|
|
24
112
|
control = (node) => {
|
|
25
113
|
this.node = node;
|
|
26
114
|
return () => {
|
|
@@ -28,16 +116,56 @@ export const createFieldState = (options) => {
|
|
|
28
116
|
this.node = null;
|
|
29
117
|
};
|
|
30
118
|
};
|
|
119
|
+
/** @internal Field attaches this to the rendered description. */
|
|
120
|
+
descriptionPart = () => {
|
|
121
|
+
hasDescription = true;
|
|
122
|
+
return () => {
|
|
123
|
+
hasDescription = false;
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
/** @internal Field attaches this to the rendered helper text. */
|
|
127
|
+
helperPart = () => {
|
|
128
|
+
hasHelper = true;
|
|
129
|
+
return () => {
|
|
130
|
+
hasHelper = false;
|
|
131
|
+
};
|
|
132
|
+
};
|
|
31
133
|
get controlAttrs() {
|
|
32
134
|
return {
|
|
33
135
|
id: this.id,
|
|
34
136
|
name: this.name,
|
|
35
137
|
disabled: this.disabled,
|
|
36
138
|
required: this.required,
|
|
139
|
+
readonly: this.readOnly || undefined,
|
|
37
140
|
'aria-invalid': this.hasError ? 'true' : undefined,
|
|
38
|
-
'aria-describedby': this.
|
|
141
|
+
'aria-describedby': this.describedBy.length > 0 ? this.describedBy.join(' ') : undefined
|
|
39
142
|
};
|
|
40
143
|
}
|
|
144
|
+
/** True while an async `onValidate` is pending; the field is neither valid nor invalid then. */
|
|
145
|
+
get validating() {
|
|
146
|
+
return validating;
|
|
147
|
+
}
|
|
148
|
+
/** Errors an app set from outside; they clear on the field's next accepted change. */
|
|
149
|
+
get externalErrors() {
|
|
150
|
+
return externalErrors;
|
|
151
|
+
}
|
|
152
|
+
/** When this field validates by itself: its own mode, else its Field's, else the Form's. */
|
|
153
|
+
get activeValidationMode() {
|
|
154
|
+
return options.validationMode ?? fieldMode ?? this.form?.validationMode ?? 'submit';
|
|
155
|
+
}
|
|
156
|
+
/** Milliseconds a change waits before the validation it triggers. */
|
|
157
|
+
get activeValidationDebounce() {
|
|
158
|
+
return options.validationDebounce ?? fieldDebounce ?? this.form?.validationDebounce ?? 0;
|
|
159
|
+
}
|
|
160
|
+
/** @internal Field forwards the validation timing its props declare. */
|
|
161
|
+
configureValidation = (timing) => {
|
|
162
|
+
fieldMode = timing.mode;
|
|
163
|
+
fieldDebounce = timing.debounce;
|
|
164
|
+
};
|
|
165
|
+
/** The value the field started with, the baseline for `dirty`; reset re-captures it. */
|
|
166
|
+
get initialValue() {
|
|
167
|
+
return initialValue;
|
|
168
|
+
}
|
|
41
169
|
constructor(options) {
|
|
42
170
|
super(options);
|
|
43
171
|
const hasValueGetter = Boolean(Object.getOwnPropertyDescriptor(options, 'value')?.get);
|
|
@@ -63,10 +191,37 @@ export const createFieldState = (options) => {
|
|
|
63
191
|
focused: {
|
|
64
192
|
get: () => (hasFocusedGetter ? options.focused : localFocused),
|
|
65
193
|
set: (focused) => {
|
|
194
|
+
// While focus is inside the root, a control's own blur handler is stale: focus
|
|
195
|
+
// moved to another part of the field. The root tracking clears `focused`.
|
|
196
|
+
if (!focused && focusWithin)
|
|
197
|
+
return;
|
|
66
198
|
options.focused = focused;
|
|
67
199
|
localFocused = options.focused;
|
|
68
200
|
}
|
|
69
201
|
},
|
|
202
|
+
// Effective state: the field's own, or that of any group around it (Form, FormGroup,
|
|
203
|
+
// a fieldset Field).
|
|
204
|
+
disabled: {
|
|
205
|
+
get: () => Boolean(options.disabled || group?.disabled),
|
|
206
|
+
set: (disabled) => {
|
|
207
|
+
options.disabled = disabled;
|
|
208
|
+
},
|
|
209
|
+
enumerable: true,
|
|
210
|
+
configurable: true
|
|
211
|
+
},
|
|
212
|
+
readOnly: {
|
|
213
|
+
get: () => Boolean(options.readOnly || group?.readOnly),
|
|
214
|
+
set: (readOnly) => {
|
|
215
|
+
options.readOnly = readOnly;
|
|
216
|
+
},
|
|
217
|
+
enumerable: true,
|
|
218
|
+
configurable: true
|
|
219
|
+
},
|
|
220
|
+
messages: {
|
|
221
|
+
get: () => resolveFieldMessages(resolveMessages(), this.type, options.messages),
|
|
222
|
+
enumerable: true,
|
|
223
|
+
configurable: true
|
|
224
|
+
},
|
|
70
225
|
size: { get: () => options.size ?? 'normal' },
|
|
71
226
|
density: { get: () => options.density ?? 'normal' }
|
|
72
227
|
});
|
|
@@ -86,11 +241,18 @@ export const createFieldState = (options) => {
|
|
|
86
241
|
const newValue = this.value;
|
|
87
242
|
untrack(() => {
|
|
88
243
|
if (!mounted) {
|
|
244
|
+
// The first settled value (after a Form or parent applied its own) is the
|
|
245
|
+
// baseline `dirty` compares against.
|
|
89
246
|
mounted = true;
|
|
247
|
+
initialValue = newValue;
|
|
248
|
+
hasBaseline = true;
|
|
90
249
|
}
|
|
91
250
|
else {
|
|
92
|
-
|
|
93
|
-
|
|
251
|
+
const wasRestored = restored !== null && Object.is(restored.value, newValue);
|
|
252
|
+
restored = null;
|
|
253
|
+
if (!wasRestored) {
|
|
254
|
+
this.clearExternalErrors();
|
|
255
|
+
validateAfterChange(newValue);
|
|
94
256
|
}
|
|
95
257
|
if (this.form) {
|
|
96
258
|
this.form.updateFieldValue(field);
|
|
@@ -98,16 +260,67 @@ export const createFieldState = (options) => {
|
|
|
98
260
|
}
|
|
99
261
|
});
|
|
100
262
|
});
|
|
263
|
+
// A shown validation message follows the active locale: errors the catalog wrote are
|
|
264
|
+
// written again when the locale changes.
|
|
265
|
+
$effect(() => {
|
|
266
|
+
const locale = resolveMessages().locale;
|
|
267
|
+
untrack(() => {
|
|
268
|
+
if (!validation || validation.locale === locale)
|
|
269
|
+
return;
|
|
270
|
+
if (!this.hasError || !sameStrings(this.errors, validation.errors)) {
|
|
271
|
+
validation = null;
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
this.validate(this.value);
|
|
275
|
+
});
|
|
276
|
+
});
|
|
277
|
+
// Focus is tracked on the field root, so every control reports it, including those with
|
|
278
|
+
// several focusable parts.
|
|
279
|
+
$effect(() => {
|
|
280
|
+
const root = this.rootNode;
|
|
281
|
+
if (!root)
|
|
282
|
+
return;
|
|
283
|
+
const onFocusIn = () => {
|
|
284
|
+
if (!focusWithin)
|
|
285
|
+
enterFocus(root);
|
|
286
|
+
};
|
|
287
|
+
root.addEventListener('focusin', onFocusIn);
|
|
288
|
+
return () => {
|
|
289
|
+
root.removeEventListener('focusin', onFocusIn);
|
|
290
|
+
queueMicrotask(releaseStaleFocus);
|
|
291
|
+
};
|
|
292
|
+
});
|
|
293
|
+
// A focused control that becomes disabled or leaves the document gets no blur in
|
|
294
|
+
// Chromium, so `focused` would stay true.
|
|
295
|
+
$effect(() => {
|
|
296
|
+
if (!this.disabled)
|
|
297
|
+
return;
|
|
298
|
+
untrack(() => leaveFocus(false));
|
|
299
|
+
});
|
|
300
|
+
$effect(() => {
|
|
301
|
+
const node = this.node;
|
|
302
|
+
return () => {
|
|
303
|
+
if (node)
|
|
304
|
+
queueMicrotask(releaseStaleFocus);
|
|
305
|
+
};
|
|
306
|
+
});
|
|
307
|
+
onDestroy(() => {
|
|
308
|
+
destroyed = true;
|
|
309
|
+
stopWatchingFocus?.();
|
|
310
|
+
cancelValidation();
|
|
311
|
+
clearTimeout(blurTimer);
|
|
312
|
+
});
|
|
101
313
|
}
|
|
102
314
|
/** Updates the control value and publishes one callback for an accepted change. */
|
|
103
315
|
setValue = (nextValue) => {
|
|
104
|
-
if (this.disabled || Object.is(this.value, nextValue))
|
|
316
|
+
if (this.disabled || this.readOnly || Object.is(this.value, nextValue))
|
|
105
317
|
return;
|
|
106
318
|
const previousValue = this.value;
|
|
107
319
|
this.syncValue(nextValue);
|
|
108
320
|
const acceptedValue = this.value;
|
|
109
321
|
if (Object.is(previousValue, acceptedValue))
|
|
110
322
|
return;
|
|
323
|
+
this.clearExternalErrors();
|
|
111
324
|
this.form?.updateFieldValue(this, true);
|
|
112
325
|
this.onValueChange?.(acceptedValue ?? null);
|
|
113
326
|
};
|
|
@@ -116,26 +329,133 @@ export const createFieldState = (options) => {
|
|
|
116
329
|
options.value = nextValue;
|
|
117
330
|
localValue = options.value;
|
|
118
331
|
};
|
|
332
|
+
/**
|
|
333
|
+
* Restores a value, the initial one by default, as the new untouched baseline: no value
|
|
334
|
+
* callback, no errors, not dirty, not touched.
|
|
335
|
+
*/
|
|
336
|
+
reset = (nextValue = initialValue) => {
|
|
337
|
+
cancelValidation();
|
|
338
|
+
clearTimeout(blurTimer);
|
|
339
|
+
this.syncValue(nextValue);
|
|
340
|
+
restored = { value: this.value };
|
|
341
|
+
initialValue = this.value;
|
|
342
|
+
hasBaseline = true;
|
|
343
|
+
this.errors = [];
|
|
344
|
+
this.clearExternalErrors();
|
|
345
|
+
this.touched = false;
|
|
346
|
+
};
|
|
347
|
+
/**
|
|
348
|
+
* Shows errors an app set from outside, a server response say, next to the validation
|
|
349
|
+
* ones. They stay through validation and clear on the next accepted change of the value.
|
|
350
|
+
*/
|
|
351
|
+
setExternalErrors = (messages) => {
|
|
352
|
+
externalErrors = toMessages(messages);
|
|
353
|
+
};
|
|
354
|
+
/** Removes the errors an app set from outside. */
|
|
355
|
+
clearExternalErrors = () => {
|
|
356
|
+
if (externalErrors.length === 0)
|
|
357
|
+
return;
|
|
358
|
+
externalErrors = [];
|
|
359
|
+
this.form?.forgetExternalErrors(this.name);
|
|
360
|
+
};
|
|
361
|
+
/** Resolves once no async validator is in flight. */
|
|
362
|
+
settle = async () => {
|
|
363
|
+
while (pending)
|
|
364
|
+
await pending;
|
|
365
|
+
};
|
|
366
|
+
/** Validates, and waits for async validators. Resolves to `[hasError, parsedValue]`. */
|
|
367
|
+
validateAsync = async (value = this.value) => {
|
|
368
|
+
const result = this.validate(value);
|
|
369
|
+
await this.settle();
|
|
370
|
+
return [this.hasValidationError, result[1]];
|
|
371
|
+
};
|
|
372
|
+
/**
|
|
373
|
+
* Moves focus to the control without activating it, as clicking a label does: a Switch is
|
|
374
|
+
* not toggled, a Select does not open. Returns whether something took focus.
|
|
375
|
+
*/
|
|
376
|
+
focusControl = () => {
|
|
377
|
+
if (this.disabled)
|
|
378
|
+
return false;
|
|
379
|
+
const target = this.node ?? (this.rootNode ? getFirstTabbable(this.rootNode) : null);
|
|
380
|
+
if (!target)
|
|
381
|
+
return false;
|
|
382
|
+
target.focus();
|
|
383
|
+
return target.ownerDocument.activeElement === target;
|
|
384
|
+
};
|
|
385
|
+
/** The registered definition behind an app-defined input type, if this field has one. */
|
|
386
|
+
get definition() {
|
|
387
|
+
return getFormInputDefinition(this.type);
|
|
388
|
+
}
|
|
119
389
|
checkSchema(value) {
|
|
120
|
-
const
|
|
390
|
+
const definition = this.definition;
|
|
391
|
+
// An explicit minimum replaces the built-in password minimum.
|
|
392
|
+
const type = this.type === 'password' && this.minLength !== undefined ? 'text' : this.type;
|
|
393
|
+
const schema = definition
|
|
394
|
+
? getRegisteredInputSchema(definition, Boolean(this.required))
|
|
395
|
+
: schemas[this.required ? 'required' : 'optional'][type];
|
|
121
396
|
return v.safeParse(schema, value);
|
|
122
397
|
}
|
|
123
398
|
get isValid() {
|
|
124
|
-
|
|
399
|
+
const value = this.value;
|
|
400
|
+
if (this.required && isEmpty(value))
|
|
401
|
+
return false;
|
|
402
|
+
return this.checkSchema(value).success && lengthMessage(value) === null;
|
|
125
403
|
}
|
|
404
|
+
/** Validates a value, writes the errors, and remembers the locale they were written in. */
|
|
126
405
|
validate = (value = this.value) => {
|
|
127
|
-
const
|
|
406
|
+
const result = this.runValidation(value);
|
|
407
|
+
validation =
|
|
408
|
+
result[0] && Array.isArray(this.errors) && this.errors.length > 0
|
|
409
|
+
? { errors: [...this.errors], locale: resolveMessages().locale }
|
|
410
|
+
: null;
|
|
411
|
+
return result;
|
|
412
|
+
};
|
|
413
|
+
/** @internal The validation `validate` wraps. */
|
|
414
|
+
runValidation = (value) => {
|
|
415
|
+
// Disabled fields are barred from validation, as in a native form; errors an app set
|
|
416
|
+
// on them stay visible.
|
|
417
|
+
if (this.disabled)
|
|
418
|
+
return [false, value];
|
|
419
|
+
cancelValidation();
|
|
420
|
+
const messages = this.messages;
|
|
128
421
|
this.errors = [];
|
|
422
|
+
// An empty required field gets one message, whatever its type check would add.
|
|
423
|
+
if (this.required && isEmpty(value)) {
|
|
424
|
+
this.errors = [messages.required];
|
|
425
|
+
return [true, value];
|
|
426
|
+
}
|
|
427
|
+
const parseResult = this.checkSchema(value);
|
|
129
428
|
if (!parseResult.success && parseResult.issues.length > 0) {
|
|
130
|
-
|
|
429
|
+
const locale = resolveMessages().locale;
|
|
430
|
+
this.errors = unique(parseResult.issues.map((issue) => describeFieldIssue(issue, messages, locale)));
|
|
431
|
+
return [true, parseResult.output];
|
|
432
|
+
}
|
|
433
|
+
const lengthError = lengthMessage(value);
|
|
434
|
+
if (lengthError !== null) {
|
|
435
|
+
this.errors = [lengthError];
|
|
131
436
|
return [true, parseResult.output];
|
|
132
437
|
}
|
|
133
438
|
// We should only call onValidate if the value is not null or undefined and not an empty string when the field is not required
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
|
|
439
|
+
const definition = this.definition;
|
|
440
|
+
const shouldCallOnValidate = definition
|
|
441
|
+
? !definition.isEmpty(value)
|
|
442
|
+
: this.required || (value !== null && value !== undefined && value !== '');
|
|
443
|
+
if (shouldCallOnValidate) {
|
|
444
|
+
// A registered type's own rule runs first; the entry's onValidate adds to it.
|
|
445
|
+
const results = [
|
|
446
|
+
definition?.validate?.(value),
|
|
447
|
+
this.onValidate?.(value)
|
|
448
|
+
];
|
|
449
|
+
if (results.some(isThenable)) {
|
|
450
|
+
// Neutral until the promises settle: no error shows, and submit waits.
|
|
451
|
+
startAsyncValidation(results);
|
|
452
|
+
return [false, parseResult.output];
|
|
453
|
+
}
|
|
454
|
+
const errors = results.flatMap((result) => normalizeErrors(result, messages.invalid));
|
|
455
|
+
if (errors.length > 0)
|
|
456
|
+
this.errors = errors;
|
|
137
457
|
}
|
|
138
|
-
return [this.
|
|
458
|
+
return [this.hasValidationError, parseResult.output];
|
|
139
459
|
};
|
|
140
460
|
}
|
|
141
461
|
const field = new FieldState(options);
|
|
@@ -144,5 +464,194 @@ export const createFieldState = (options) => {
|
|
|
144
464
|
field.form = formContext;
|
|
145
465
|
onDestroy(formContext.registerField(field));
|
|
146
466
|
}
|
|
467
|
+
// Drops any pending async result and debounced change validation.
|
|
468
|
+
function cancelValidation() {
|
|
469
|
+
asyncToken += 1;
|
|
470
|
+
validating = false;
|
|
471
|
+
pending = null;
|
|
472
|
+
clearTimeout(changeTimer);
|
|
473
|
+
changeTimer = undefined;
|
|
474
|
+
}
|
|
475
|
+
function startAsyncValidation(results) {
|
|
476
|
+
const token = asyncToken;
|
|
477
|
+
validating = true;
|
|
478
|
+
// A rejected validator marks the field invalid with the generic message, so a failed
|
|
479
|
+
// network call never lets a submit through.
|
|
480
|
+
const settled = Promise.all(results.map((result) => isThenable(result)
|
|
481
|
+
? Promise.resolve(result).then((resolved) => resolved, () => true)
|
|
482
|
+
: result)).then((resolved) => {
|
|
483
|
+
if (token !== asyncToken || destroyed)
|
|
484
|
+
return;
|
|
485
|
+
const invalid = field.messages.invalid;
|
|
486
|
+
const errors = resolved.flatMap((result) => normalizeErrors(result, invalid));
|
|
487
|
+
validating = false;
|
|
488
|
+
pending = null;
|
|
489
|
+
if (errors.length > 0)
|
|
490
|
+
field.errors = errors;
|
|
491
|
+
});
|
|
492
|
+
pending = settled;
|
|
493
|
+
}
|
|
494
|
+
// Runs the validation an edit asks for: always while errors show, and in 'change' mode or
|
|
495
|
+
// after a submit attempt for every edit. A debounce delays it; blur and submit never wait.
|
|
496
|
+
function validateAfterChange(value) {
|
|
497
|
+
const form = field.form;
|
|
498
|
+
const wanted = field.hasValidationError ||
|
|
499
|
+
field.activeValidationMode === 'change' ||
|
|
500
|
+
(form !== undefined && form.submitCount > 0);
|
|
501
|
+
if (!wanted || field.disabled) {
|
|
502
|
+
// The value moved on and nothing validates it: a pending result belongs to the old value.
|
|
503
|
+
if (validating)
|
|
504
|
+
cancelValidation();
|
|
505
|
+
return;
|
|
506
|
+
}
|
|
507
|
+
clearTimeout(changeTimer);
|
|
508
|
+
changeTimer = undefined;
|
|
509
|
+
const delay = field.activeValidationDebounce;
|
|
510
|
+
if (delay > 0) {
|
|
511
|
+
changeTimer = setTimeout(() => {
|
|
512
|
+
changeTimer = undefined;
|
|
513
|
+
if (!destroyed)
|
|
514
|
+
field.validate(field.value);
|
|
515
|
+
}, delay);
|
|
516
|
+
}
|
|
517
|
+
else {
|
|
518
|
+
field.validate(value);
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
function isEmpty(value) {
|
|
522
|
+
const definition = field.definition;
|
|
523
|
+
if (definition)
|
|
524
|
+
return definition.isEmpty(value);
|
|
525
|
+
if (BOOLEAN_TYPES.has(field.type))
|
|
526
|
+
return value !== true;
|
|
527
|
+
// A rating of zero stars is no rating.
|
|
528
|
+
if (field.type === 'rating')
|
|
529
|
+
return !value;
|
|
530
|
+
return isEmptyValue(value);
|
|
531
|
+
}
|
|
532
|
+
function lengthMessage(value) {
|
|
533
|
+
if (typeof value !== 'string' || value.length === 0)
|
|
534
|
+
return null;
|
|
535
|
+
if (field.minLength !== undefined && value.length < field.minLength) {
|
|
536
|
+
return field.messages.tooShort(field.minLength);
|
|
537
|
+
}
|
|
538
|
+
if (field.maxLength !== undefined && value.length > field.maxLength) {
|
|
539
|
+
return field.messages.tooLong(field.maxLength);
|
|
540
|
+
}
|
|
541
|
+
return null;
|
|
542
|
+
}
|
|
543
|
+
/** Inside the field root, or inside a popup layer the field opened. */
|
|
544
|
+
function isWithin(target) {
|
|
545
|
+
const root = field.rootNode;
|
|
546
|
+
if (!root || !(target instanceof Node))
|
|
547
|
+
return false;
|
|
548
|
+
if (root.contains(target))
|
|
549
|
+
return true;
|
|
550
|
+
if (!layers)
|
|
551
|
+
return false;
|
|
552
|
+
for (const layer of layers.open) {
|
|
553
|
+
if (![...layer.nodes].some((node) => containsNode(node, target)))
|
|
554
|
+
continue;
|
|
555
|
+
for (let current = layer; current; current = current.parent) {
|
|
556
|
+
if ([...current.nodes].some((node) => root.contains(node)))
|
|
557
|
+
return true;
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
return false;
|
|
561
|
+
}
|
|
562
|
+
// A press inside a popup the field opened, or on a pressable part of the field, keeps focus
|
|
563
|
+
// parked; a press on its text or padding takes focus away.
|
|
564
|
+
function pressKeepsFocus(target) {
|
|
565
|
+
const root = field.rootNode;
|
|
566
|
+
if (!root || !isWithin(target))
|
|
567
|
+
return false;
|
|
568
|
+
if (!root.contains(target))
|
|
569
|
+
return true;
|
|
570
|
+
const element = target instanceof Element ? target : target.parentElement;
|
|
571
|
+
const pressable = element?.closest(PRESSABLE);
|
|
572
|
+
return (pressable !== null &&
|
|
573
|
+
pressable !== undefined &&
|
|
574
|
+
pressable !== root &&
|
|
575
|
+
root.contains(pressable));
|
|
576
|
+
}
|
|
577
|
+
function enterFocus(root) {
|
|
578
|
+
focusWithin = true;
|
|
579
|
+
if (!field.focused && !field.disabled)
|
|
580
|
+
field.focused = true;
|
|
581
|
+
// Leaving is judged at the document: focus can leave from a portaled popup, which the root
|
|
582
|
+
// never hears about.
|
|
583
|
+
const document = root.ownerDocument;
|
|
584
|
+
// A press on a part of the field that takes no focus (a button in WebKit, a popup's
|
|
585
|
+
// padding) parks focus on the body without leaving the field; the next press or focus
|
|
586
|
+
// elsewhere decides.
|
|
587
|
+
let pressInside = false;
|
|
588
|
+
let parked = false;
|
|
589
|
+
const onPointerDown = (event) => {
|
|
590
|
+
pressInside = pressKeepsFocus(event.target);
|
|
591
|
+
if (parked && !pressInside)
|
|
592
|
+
leaveFocus(true);
|
|
593
|
+
};
|
|
594
|
+
const onPointerUp = () => {
|
|
595
|
+
setTimeout(() => (pressInside = false));
|
|
596
|
+
};
|
|
597
|
+
const onFocusIn = (event) => {
|
|
598
|
+
if (!isWithin(event.target))
|
|
599
|
+
leaveFocus(true);
|
|
600
|
+
else
|
|
601
|
+
parked = false;
|
|
602
|
+
};
|
|
603
|
+
const onFocusOut = (event) => {
|
|
604
|
+
if (!isWithin(event.target) || isWithin(event.relatedTarget))
|
|
605
|
+
return;
|
|
606
|
+
if (event.relatedTarget === null && pressInside)
|
|
607
|
+
parked = true;
|
|
608
|
+
else
|
|
609
|
+
leaveFocus(true);
|
|
610
|
+
};
|
|
611
|
+
stopWatchingFocus?.();
|
|
612
|
+
document.addEventListener('pointerdown', onPointerDown, true);
|
|
613
|
+
document.addEventListener('pointerup', onPointerUp, true);
|
|
614
|
+
document.addEventListener('pointercancel', onPointerUp, true);
|
|
615
|
+
document.addEventListener('focusin', onFocusIn, true);
|
|
616
|
+
document.addEventListener('focusout', onFocusOut, true);
|
|
617
|
+
stopWatchingFocus = () => {
|
|
618
|
+
document.removeEventListener('pointerdown', onPointerDown, true);
|
|
619
|
+
document.removeEventListener('pointerup', onPointerUp, true);
|
|
620
|
+
document.removeEventListener('pointercancel', onPointerUp, true);
|
|
621
|
+
document.removeEventListener('focusin', onFocusIn, true);
|
|
622
|
+
document.removeEventListener('focusout', onFocusOut, true);
|
|
623
|
+
stopWatchingFocus = null;
|
|
624
|
+
};
|
|
625
|
+
}
|
|
626
|
+
function leaveFocus(touch) {
|
|
627
|
+
focusWithin = false;
|
|
628
|
+
stopWatchingFocus?.();
|
|
629
|
+
if (field.focused)
|
|
630
|
+
field.focused = false;
|
|
631
|
+
if (!touch)
|
|
632
|
+
return;
|
|
633
|
+
field.touched = true;
|
|
634
|
+
if (field.activeValidationMode !== 'blur')
|
|
635
|
+
return;
|
|
636
|
+
// A control may settle its value as it blurs (trimming): validate what it settled on.
|
|
637
|
+
clearTimeout(blurTimer);
|
|
638
|
+
blurTimer = setTimeout(() => {
|
|
639
|
+
if (!destroyed && !focusWithin && !field.disabled)
|
|
640
|
+
field.validate(field.value);
|
|
641
|
+
});
|
|
642
|
+
}
|
|
643
|
+
// Runs a microtask after the control or the root left: focus that went with them is gone.
|
|
644
|
+
function releaseStaleFocus() {
|
|
645
|
+
if (!focusWithin && !field.focused)
|
|
646
|
+
return;
|
|
647
|
+
const root = field.rootNode;
|
|
648
|
+
const active = root?.ownerDocument.activeElement ?? null;
|
|
649
|
+
const stillFocused = root?.isConnected === true &&
|
|
650
|
+
active !== null &&
|
|
651
|
+
isWithin(active) &&
|
|
652
|
+
!active.matches?.(':disabled');
|
|
653
|
+
if (!stillFocused)
|
|
654
|
+
leaveFocus(false);
|
|
655
|
+
}
|
|
147
656
|
return field;
|
|
148
657
|
};
|