@morscherlab/mint-sdk 1.3.9 → 1.4.0-beta.2
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 +152 -177
- package/dist/ActionMenu-CScINahU.js +445 -0
- package/dist/ActionMenu-CScINahU.js.map +1 -0
- package/dist/AppSidebar-BmiiPfz9.js +3514 -0
- package/dist/AppSidebar-BmiiPfz9.js.map +1 -0
- package/dist/{experiment-utils-DTANyVKV.js → BaseModal-DfRIuVoj.js} +74 -149
- package/dist/BaseModal-DfRIuVoj.js.map +1 -0
- package/dist/ConfirmDialog-CJ7hqYUP.js +102 -0
- package/dist/ConfirmDialog-CJ7hqYUP.js.map +1 -0
- package/dist/ExperimentPopover-C4sGw-is.js +359 -0
- package/dist/ExperimentPopover-C4sGw-is.js.map +1 -0
- package/dist/ExperimentSelectorModal-D-9z7cNx.js +527 -0
- package/dist/ExperimentSelectorModal-D-9z7cNx.js.map +1 -0
- package/dist/SegmentedControl-DERBN-Xd.js +129 -0
- package/dist/SegmentedControl-DERBN-Xd.js.map +1 -0
- package/dist/SettingsModal-CSLE31yg.js +666 -0
- package/dist/SettingsModal-CSLE31yg.js.map +1 -0
- package/dist/analysisArtifactTypes-Cy3D0Ipg.js.map +1 -1
- package/dist/auth-SliLnFre.js +65 -0
- package/dist/auth-SliLnFre.js.map +1 -0
- package/dist/components/ActionMenu.vue.d.ts +1 -1
- package/dist/components/AdductText.vue.d.ts +1 -1
- package/dist/components/AlertBox.vue.d.ts +3 -3
- package/dist/components/AppContainer.vue.d.ts +1 -1
- package/dist/components/AppSidebar.vue.d.ts +14 -94
- package/dist/components/AppTopBar.vue.d.ts +16 -70
- package/dist/components/ArtifactSaveDialog.vue.d.ts +4 -4
- package/dist/components/ArtifactSelectorModal.vue.d.ts +4 -4
- package/dist/components/AuditTrail.vue.d.ts +2 -2
- package/dist/components/BaseButton.vue.d.ts +11 -4
- package/dist/components/BaseCheckbox.vue.d.ts +9 -3
- package/dist/components/BaseInput.vue.d.ts +13 -9
- package/dist/components/BaseModal.vue.d.ts +4 -4
- package/dist/components/BasePill.vue.d.ts +15 -8
- package/dist/components/BaseRadioGroup.vue.d.ts +2 -2
- package/dist/components/BaseSelect.vue.d.ts +51 -19
- package/dist/components/BaseTabs.vue.d.ts +6 -5
- package/dist/components/BatchProgressList.vue.d.ts +2 -2
- package/dist/components/ChartContainer.vue.d.ts +2 -2
- package/dist/components/ChemicalFormula.vue.d.ts +2 -2
- package/dist/components/CollapsibleCard.vue.d.ts +3 -3
- package/dist/components/ComponentBindingRenderer.vue.d.ts +2 -3
- package/dist/components/ConcentrationInput.vue.d.ts +2 -2
- package/dist/components/ConfirmDialog.vue.d.ts +8 -7
- package/dist/components/DataFrame.vue.d.ts +32 -74
- package/dist/components/DatePicker.vue.d.ts +24 -2
- package/dist/components/DoseCalculator.vue.d.ts +1 -1
- package/dist/components/DoseCalculatorVolumeField.vue.d.ts +1 -1
- package/dist/components/EmptyState.vue.d.ts +3 -2
- package/dist/components/ExperimentSelectorModal.vue.d.ts +3 -3
- package/dist/components/FormBuilder.vue.d.ts +17 -74
- package/dist/components/FormulaInput.vue.d.ts +2 -2
- package/dist/components/GeneratedPluginView.vue.d.ts +1 -1
- package/dist/components/GeneratedResultRenderer.vue.d.ts +5 -1
- package/dist/components/{StatusIndicator.vue.d.ts → InstrumentStatusPanels.vue.d.ts} +8 -9
- package/dist/components/JobsStatusTray.vue.d.ts +2 -9
- package/dist/components/LoadingSpinner.vue.d.ts +3 -3
- package/dist/components/MoleculeInput.vue.d.ts +2 -2
- package/dist/components/NumberInput.vue.d.ts +19 -5
- package/dist/components/PlateEditor.vue.d.ts +11 -61
- package/dist/components/PlotlyChart.vue.d.ts +2 -2
- package/dist/components/PluginIcon.vue.d.ts +5 -1
- package/dist/components/PluginWorkspaceView.controls.d.ts +2 -9
- package/dist/components/PluginWorkspaceView.navigation.d.ts +1 -7
- package/dist/components/PluginWorkspaceView.props.d.ts +18 -137
- package/dist/components/PluginWorkspaceView.shell.d.ts +2 -10
- package/dist/components/PluginWorkspaceView.vue.d.ts +14 -84
- package/dist/components/PresenceAvatars.vue.d.ts +31 -0
- package/dist/components/ProgressBar.vue.d.ts +3 -2
- package/dist/components/ProtocolStep.presentation.d.ts +0 -1
- package/dist/components/SampleHierarchyTree.vue.d.ts +3 -3
- package/dist/components/SampleSelector.vue.d.ts +3 -3
- package/dist/components/ScheduleCalendar.vue.d.ts +1 -1
- package/dist/components/ScientificNumber.vue.d.ts +1 -1
- package/dist/components/SecretInput.vue.d.ts +2 -2
- package/dist/components/SegmentedControl.vue.d.ts +2 -2
- package/dist/components/SequenceInput.vue.d.ts +2 -2
- package/dist/components/SettingsModal.vue.d.ts +12 -20
- package/dist/components/SmartGroup.types.d.ts +0 -1
- package/dist/components/SmartGroupFieldRecipe.vue.d.ts +1 -1
- package/dist/components/StaleFormBanner.vue.d.ts +20 -0
- package/dist/components/TagsInput.vue.d.ts +4 -3
- package/dist/components/TimeRangeInput.vue.d.ts +2 -2
- package/dist/components/VersionConflictDialog.vue.d.ts +24 -0
- package/dist/components/WellPlate.geometry.d.ts +0 -6
- package/dist/components/WellPlate.rendering.d.ts +0 -2
- package/dist/components/WellPlate.vue.d.ts +7 -52
- package/dist/components/index.d.ts +0 -90
- package/dist/components/{AutoGroupModal.adapter.d.ts → internal/AutoGroupModalInternal.adapter.d.ts} +6 -6
- package/dist/components/{AutoGroupModal.vue.d.ts → internal/AutoGroupModalInternal.vue.d.ts} +6 -6
- package/dist/components/{BaseToggle.vue.d.ts → internal/CheckboxSwitchInternal.vue.d.ts} +2 -2
- package/dist/components/internal/DatePickerDateInternal.vue.d.ts +22 -0
- package/dist/components/{DateTimePicker.vue.d.ts → internal/DatePickerDateTimeInternal.vue.d.ts} +2 -2
- package/dist/components/{TimePicker.vue.d.ts → internal/DatePickerTimeInternal.vue.d.ts} +3 -3
- package/dist/components/internal/FilePickerListInternal.vue.d.ts +2 -2
- package/dist/components/internal/FormSchemaInternal.vue.d.ts +95 -0
- package/dist/components/{UnitInput.vue.d.ts → internal/NumberUnitInputInternal.vue.d.ts} +6 -14
- package/dist/components/internal/PlateEditorBindingInternal.vue.d.ts +3 -2
- package/dist/components/internal/ResourcePickerListInternal.vue.d.ts +3 -3
- package/dist/components/{MultiSelect.vue.d.ts → internal/SelectMultipleInternal.vue.d.ts} +11 -8
- package/dist/components/{SearchableSelect.vue.d.ts → internal/SelectSearchableInternal.vue.d.ts} +5 -2
- package/dist/components/internal/WorkspaceShellInternal.vue.d.ts +1 -15
- package/dist/components/internal/WorkspaceSidebarInternal.vue.d.ts +4 -4
- package/dist/{composables → components/internal}/autoGroup/classKey.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/classify.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/columns.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/compose.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/cooccurrence.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/csv-shim.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/fingerprint.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/template.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/tokenLength.d.ts +1 -1
- package/dist/components/internal/generatedJobsApi.d.ts +1 -1
- package/dist/{composables → components/internal}/useAutoGroup.d.ts +9 -18
- package/dist/composables/componentSpecs.d.ts +41 -0
- package/dist/composables/controlComponentBindings.d.ts +6 -0
- package/dist/composables/controlSchemaAdapters.d.ts +28 -2
- package/dist/composables/controlSchemaDoseDesign.d.ts +1 -1
- package/dist/composables/controlSchemaModel.d.ts +1 -1
- package/dist/composables/controlSchemaTypes.d.ts +35 -23
- package/dist/composables/{usePluginClient.d.ts → createClient.d.ts} +20 -49
- package/dist/composables/{useEventStream.d.ts → eventStream.d.ts} +2 -2
- package/dist/composables/experiment-utils.d.ts +1 -6
- package/dist/composables/index.d.ts +6 -59
- package/dist/composables/platformContextHelpers.d.ts +0 -11
- package/dist/composables/pluginEndpointBuilder.d.ts +2 -2
- package/dist/composables/pluginWorkspaceModel.d.ts +14 -97
- package/dist/composables/useApi.d.ts +1 -3
- package/dist/composables/useAppExperiment.d.ts +1 -1
- package/dist/composables/{useAnalysisArtifacts.d.ts → useArtifacts.d.ts} +6 -6
- package/dist/composables/useExperiment.d.ts +30 -0
- package/dist/composables/useFilePicker.d.ts +2 -2
- package/dist/composables/useJobCenter.d.ts +63 -0
- package/dist/composables/{useGeneratedAnalysis.d.ts → useJobsEndpoint.d.ts} +22 -23
- package/dist/composables/useMenuKeyboard.d.ts +1 -1
- package/dist/composables/usePlatform.d.ts +63 -0
- package/dist/composables/usePluginWorkspace.d.ts +6 -11
- package/dist/composables/usePresence.d.ts +41 -0
- package/dist/composables/useRackEditor.d.ts +2 -2
- package/dist/composables/useRealtime.d.ts +71 -0
- package/dist/composables/{useRequestSyncState.d.ts → useRequest.d.ts} +12 -17
- package/dist/composables/useToast.d.ts +7 -5
- package/dist/composables/useVersionedSave.d.ts +76 -0
- package/dist/controlSchemaModel-CP5-_nAj.js +95 -0
- package/dist/controlSchemaModel-CP5-_nAj.js.map +1 -0
- package/dist/data-C2PwI_dn.js +3811 -0
- package/dist/data-C2PwI_dn.js.map +1 -0
- package/dist/data.d.ts +32 -0
- package/dist/data.js +10 -0
- package/dist/deprecatedRootExports.d.ts +191 -0
- package/dist/experiment-43OJtH7R.js +673 -0
- package/dist/experiment-43OJtH7R.js.map +1 -0
- package/dist/experimentStatus-BZmU4czV.js +60 -0
- package/dist/experimentStatus-BZmU4czV.js.map +1 -0
- package/dist/host.d.ts +10 -0
- package/dist/host.js +26 -0
- package/dist/host.js.map +1 -0
- package/dist/index.d.ts +1 -12
- package/dist/index.js +65 -277
- package/dist/index.js.map +1 -1
- package/dist/install-DAID6c2-.js +668 -0
- package/dist/install-DAID6c2-.js.map +1 -0
- package/dist/install.d.ts +2 -1
- package/dist/install.js +1 -21
- package/dist/instrument.d.ts +0 -6
- package/dist/lab-DLwRl_Ql.js +7513 -0
- package/dist/lab-DLwRl_Ql.js.map +1 -0
- package/dist/lab.d.ts +42 -0
- package/dist/lab.js +4 -0
- package/dist/permissions.d.ts +0 -4
- package/dist/permissions.js +1 -20
- package/dist/permissions.js.map +1 -1
- package/dist/records-BzTcxekG.js +3070 -0
- package/dist/records-BzTcxekG.js.map +1 -0
- package/dist/runtime-D6gVat6r.js +1495 -0
- package/dist/runtime-D6gVat6r.js.map +1 -0
- package/dist/runtime.d.ts +25 -0
- package/dist/runtime.js +8 -0
- package/dist/shell-5ju97nOS.js +197 -0
- package/dist/shell-5ju97nOS.js.map +1 -0
- package/dist/shell.d.ts +16 -0
- package/dist/shell.js +8 -0
- package/dist/stores/auth.d.ts +13 -35
- package/dist/stores/experiment.d.ts +4 -0
- package/dist/stores/index.js +2 -2
- package/dist/styles.css +12030 -14845
- package/dist/types/analysisArtifactTypes.d.ts +1 -1
- package/dist/types/auth.d.ts +0 -8
- package/dist/types/componentLabTypes.d.ts +98 -34
- package/dist/types/componentWorkflowTypes.d.ts +0 -27
- package/dist/types/components.d.ts +145 -74
- package/dist/types/form-builder.d.ts +4 -0
- package/dist/types/generated/platformContext.d.ts +52 -0
- package/dist/types/generated-ui.d.ts +2 -2
- package/dist/types/index.d.ts +4 -5
- package/dist/types/instrument.d.ts +41 -0
- package/dist/types/platform.d.ts +20 -58
- package/dist/useDebouncedWatch-BPwyl6eS.js +73 -0
- package/dist/useDebouncedWatch-BPwyl6eS.js.map +1 -0
- package/dist/useExpansionSet-CvoNMZJi.js +68 -0
- package/dist/useExpansionSet-CvoNMZJi.js.map +1 -0
- package/dist/useExperimentSamples-CxcnxZ8h.js +366 -0
- package/dist/useExperimentSamples-CxcnxZ8h.js.map +1 -0
- package/dist/useListReorder-CcbEYxX-.js +5462 -0
- package/dist/useListReorder-CcbEYxX-.js.map +1 -0
- package/dist/useRackEditor-BD5NIo5s.js +5916 -0
- package/dist/useRackEditor-BD5NIo5s.js.map +1 -0
- package/dist/useRealtime-PalKue84.js +696 -0
- package/dist/useRealtime-PalKue84.js.map +1 -0
- package/dist/useRequest-D5JDfsgZ.js +76 -0
- package/dist/useRequest-D5JDfsgZ.js.map +1 -0
- package/dist/utils/color.d.ts +0 -5
- package/dist/{composables/useDoseCalculator.d.ts → utils/dose.d.ts} +10 -13
- package/dist/utils/experimentStatus.d.ts +9 -0
- package/dist/{composables/useChemicalFormula.d.ts → utils/formula.d.ts} +3 -6
- package/dist/utils/integrationHost.d.ts +18 -0
- package/dist/utils/plotlyTemplate.d.ts +2 -0
- package/dist/utils/pluginSecrets.d.ts +12 -12
- package/dist/utils/presenceAvatars.d.ts +30 -0
- package/dist/utils/records.d.ts +0 -2
- package/dist/{composables/useTimeUtils.d.ts → utils/time.d.ts} +0 -18
- package/package.json +20 -17
- package/src/__tests__/components/ActionMenu.test.ts +0 -13
- package/src/__tests__/components/AlertBox.test.ts +1 -1
- package/src/__tests__/components/AppSidebar.test.ts +119 -167
- package/src/__tests__/components/AppToastContainer.test.ts +2 -2
- package/src/__tests__/components/AppTopBar.test.ts +181 -176
- package/src/__tests__/components/ArtifactSaveDialog.test.ts +5 -3
- package/src/__tests__/components/ArtifactSelectorModal.test.ts +6 -4
- package/src/__tests__/components/AuditTrail.test.ts +1 -1
- package/src/__tests__/components/AutoGroupModal.adapter.test.ts +1 -1
- package/src/__tests__/components/AutoGroupModal.anatomy.test.ts +2 -2
- package/src/__tests__/components/AutoGroupModal.wiring.test.ts +2 -2
- package/src/__tests__/components/BaseButton.test.ts +51 -0
- package/src/__tests__/components/{BaseToggle.test.ts → BaseCheckbox.switch.test.ts} +8 -6
- package/src/__tests__/components/BaseInput.test.ts +13 -34
- package/src/__tests__/components/BaseModal.test.ts +6 -6
- package/src/__tests__/components/BasePill.test.ts +33 -39
- package/src/__tests__/components/{MultiSelect.test.ts → BaseSelect.multiple.test.ts} +16 -7
- package/src/__tests__/components/{SearchableSelect.test.ts → BaseSelect.searchable.test.ts} +19 -9
- package/src/__tests__/components/BaseSelect.test.ts +10 -0
- package/src/__tests__/components/BaseTabs.test.ts +13 -13
- package/src/__tests__/components/CollapsibleCard.test.ts +1 -1
- package/src/__tests__/components/ComponentBindingRenderer.test.ts +25 -73
- package/src/__tests__/components/ConcentrationInput.test.ts +3 -3
- package/src/__tests__/components/ConfirmDialog.test.ts +23 -0
- package/src/__tests__/components/DataFrame.test.ts +140 -142
- package/src/__tests__/components/DataStates.test.ts +6 -22
- package/src/__tests__/components/{DateTimePicker.test.ts → DatePicker.datetime.test.ts} +9 -7
- package/src/__tests__/components/{TimePicker.test.ts → DatePicker.time.test.ts} +18 -17
- package/src/__tests__/components/DoseCalculator.test.ts +12 -7
- package/src/__tests__/components/DoseCalculatorVolumeField.test.ts +6 -6
- package/src/__tests__/components/ExperimentSelectorModal.test.ts +15 -15
- package/src/__tests__/components/FormBuilder.test.ts +49 -167
- package/src/__tests__/components/FormSchemaInternal.test.ts +91 -0
- package/src/__tests__/components/GeneratedPathInput.test.ts +18 -13
- package/src/__tests__/components/GeneratedPluginView.test.ts +38 -24
- package/src/__tests__/components/GeneratedResultRenderer.test.ts +6 -4
- package/src/__tests__/components/InstrumentStatusPanels.test.ts +79 -0
- package/src/__tests__/components/JobsStatusTray.test.ts +4 -4
- package/src/__tests__/components/NumberInput.test.ts +28 -0
- package/src/__tests__/components/{UnitInput.test.ts → NumberInput.units.test.ts} +6 -6
- package/src/__tests__/components/PlateEditor.test.ts +108 -108
- package/src/__tests__/components/PlateEditorBindingInternal.test.ts +13 -13
- package/src/__tests__/components/PlotlyChart.test.ts +1 -1
- package/src/__tests__/components/PluginIcon.test.ts +9 -4
- package/src/__tests__/components/PluginWorkspaceView.controls.test.ts +16 -29
- package/src/__tests__/components/PluginWorkspaceView.internal.test.ts +28 -34
- package/src/__tests__/components/PluginWorkspaceView.navigation.test.ts +4 -19
- package/src/__tests__/components/PluginWorkspaceView.shell.test.ts +1 -6
- package/src/__tests__/components/PluginWorkspaceView.test.ts +176 -155
- package/src/__tests__/components/PresenceAvatars.test.ts +90 -0
- package/src/__tests__/components/ProtocolStep.presentation.test.ts +1 -3
- package/src/__tests__/components/ProtocolStepEditor.test.ts +10 -11
- package/src/__tests__/components/ProtocolStepParameterField.test.ts +8 -7
- package/src/__tests__/components/ResourcePickerListInternal.test.ts +2 -2
- package/src/__tests__/components/RetiredStyles.test.ts +0 -18
- package/src/__tests__/components/SampleSelector.test.ts +17 -17
- package/src/__tests__/components/SecretInput.test.ts +14 -19
- package/src/__tests__/components/SettingsModal.test.ts +76 -84
- package/src/__tests__/components/StaleFormBanner.test.ts +48 -0
- package/src/__tests__/components/ThemeToggle.test.ts +1 -1
- package/src/__tests__/components/WellPlate.decoration.test.ts +10 -8
- package/src/__tests__/components/WellPlate.interaction.test.ts +6 -7
- package/src/__tests__/components/WellPlate.keyboard.test.ts +2 -2
- package/src/__tests__/components/deprecationTags.test.ts +90 -0
- package/src/__tests__/composables/analysisArtifactTarget.test.ts +1 -12
- package/src/__tests__/composables/autoGroup/classKey.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/classify.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/columns.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/compose.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/cooccurrence.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/fieldEdits.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/fingerprint.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/golden.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/groupByOrder.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/groupTree.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/integration.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/template.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/tokenLength.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/tokenize.test.ts +1 -1
- package/src/__tests__/composables/{usePluginClient.test.ts → createClient.test.ts} +84 -222
- package/src/__tests__/composables/{useEventStream.test.ts → eventStream.test.ts} +6 -6
- package/src/__tests__/composables/experiment-utils.test.ts +13 -14
- package/src/__tests__/composables/useApi.test.ts +32 -21
- package/src/__tests__/composables/useAppExperiment.test.ts +19 -2
- package/src/__tests__/composables/{useAnalysisArtifacts.test.ts → useArtifacts.test.ts} +19 -27
- package/src/__tests__/composables/useAutoGroup.test.ts +3 -13
- package/src/__tests__/composables/useControlSchema.test.ts +41 -99
- package/src/__tests__/composables/useExperiment.test.ts +63 -0
- package/src/__tests__/composables/useFileBrowser.test.ts +4 -6
- package/src/__tests__/composables/{useJobsStatusTray.test.ts → useJobCenter.test.ts} +31 -31
- package/src/__tests__/composables/{useGeneratedAnalysis.test.ts → useJobsEndpoint.test.ts} +213 -139
- package/src/__tests__/composables/usePlatform.test.ts +102 -0
- package/src/__tests__/composables/usePresence.test.ts +164 -0
- package/src/__tests__/composables/useRackEditor.test.ts +2 -2
- package/src/__tests__/composables/useRealtime.test.ts +196 -0
- package/src/__tests__/composables/{useRequestSyncState.test.ts → useRequest.test.ts} +32 -47
- package/src/__tests__/composables/useVersionedSave.test.ts +194 -0
- package/src/__tests__/docs/extractDocsComponents.test.ts +36 -0
- package/src/__tests__/docs/extractDocsParsing.test.ts +2 -2
- package/src/__tests__/docs/extractDocsTheme.test.ts +1 -46
- package/src/__tests__/docs/frontendDocsCatalog.test.ts +164 -84
- package/src/__tests__/styles/baseControlsRules.test.ts +1 -1
- package/src/__tests__/styles/darkModeRules.test.ts +0 -6
- package/src/__tests__/{composables/useChemicalFormula.test.ts → utils/formula.test.ts} +3 -5
- package/src/__tests__/utils/permissions.test.ts +1 -36
- package/src/__tests__/utils/plotlyTemplate.test.ts +16 -1
- package/src/__tests__/{composables/useTimeUtils.test.ts → utils/time.test.ts} +2 -9
- package/src/components/ActionMenu.vue +7 -13
- package/src/components/AlertBox.story.vue +25 -25
- package/src/components/AlertBox.vue +8 -8
- package/src/components/AppLayout.story.vue +33 -44
- package/src/components/AppLayout.vue +1 -1
- package/src/components/AppSidebar.story.vue +40 -73
- package/src/components/AppSidebar.vue +66 -147
- package/src/components/AppToastContainer.story.vue +1 -1
- package/src/components/AppTopBar.story.vue +51 -100
- package/src/components/AppTopBar.vue +74 -198
- package/src/components/ArtifactSaveDialog.story.vue +9 -9
- package/src/components/ArtifactSaveDialog.vue +23 -26
- package/src/components/ArtifactSelectorModal.story.vue +4 -4
- package/src/components/ArtifactSelectorModal.vue +10 -10
- package/src/components/AuditTrail.story.vue +4 -4
- package/src/components/AuditTrail.vue +3 -3
- package/src/components/Avatar.story.vue +2 -3
- package/src/components/Avatar.vue +1 -2
- package/src/components/BaseButton.story.vue +25 -0
- package/src/components/BaseButton.vue +39 -10
- package/src/components/BaseCheckbox.story.vue +2 -2
- package/src/components/{BaseToggle.story.vue → BaseCheckbox.switch.story.vue} +22 -19
- package/src/components/BaseCheckbox.vue +39 -7
- package/src/components/BaseInput.story.vue +3 -15
- package/src/components/{BaseTextarea.story.vue → BaseInput.textarea.story.vue} +14 -10
- package/src/components/BaseInput.vue +53 -26
- package/src/components/BaseModal.story.vue +11 -11
- package/src/components/BaseModal.vue +8 -8
- package/src/components/BasePill.story.vue +48 -28
- package/src/components/BasePill.vue +22 -11
- package/src/components/BaseRadioGroup.story.vue +4 -4
- package/src/components/BaseRadioGroup.vue +3 -3
- package/src/components/{MultiSelect.story.vue → BaseSelect.multiple.story.vue} +20 -14
- package/src/components/{SearchableSelect.story.vue → BaseSelect.searchable.story.vue} +4 -4
- package/src/components/BaseSelect.story.vue +2 -2
- package/src/components/BaseSelect.vue +117 -22
- package/src/components/BaseTabs.story.vue +20 -20
- package/src/components/BaseTabs.vue +17 -9
- package/src/components/BatchProgressList.vue +3 -3
- package/src/components/ChartContainer.story.vue +8 -13
- package/src/components/ChartContainer.vue +3 -3
- package/src/components/ChemicalFormula.vue +1 -2
- package/src/components/CollapsibleCard.vue +5 -4
- package/src/components/ComponentBindingRenderer.story.vue +0 -29
- package/src/components/ComponentBindingRenderer.vue +15 -39
- package/src/components/ConcentrationInput.story.vue +2 -2
- package/src/components/ConcentrationInput.vue +9 -9
- package/src/components/ConfirmDialog.story.vue +21 -21
- package/src/components/ConfirmDialog.vue +15 -14
- package/src/components/DataFrame.story.vue +28 -40
- package/src/components/DataFrame.vue +112 -128
- package/src/components/{DateTimePicker.story.vue → DatePicker.datetime.story.vue} +19 -14
- package/src/components/DatePicker.story.vue +2 -2
- package/src/components/{TimePicker.story.vue → DatePicker.time.story.vue} +15 -12
- package/src/components/DatePicker.vue +82 -220
- package/src/components/DoseCalculator.vue +13 -19
- package/src/components/DoseCalculatorVolumeField.vue +6 -6
- package/src/components/EmptyState.story.vue +17 -17
- package/src/components/EmptyState.vue +5 -4
- package/src/components/ExperimentPopover.story.vue +1 -1
- package/src/components/ExperimentPopover.vue +4 -4
- package/src/components/ExperimentSelectorModal.story.vue +5 -5
- package/src/components/ExperimentSelectorModal.vue +11 -13
- package/src/components/FilePicker.vue +1 -1
- package/src/components/FormBuilder.story.vue +9 -4
- package/src/components/FormBuilder.vue +46 -253
- package/src/components/FormField.story.vue +1 -2
- package/src/components/FormulaInput.story.vue +2 -2
- package/src/components/FormulaInput.vue +5 -6
- package/src/components/GeneratedPathInput.vue +8 -9
- package/src/components/GeneratedPluginView.story.vue +1 -1
- package/src/components/GeneratedPluginView.vue +23 -22
- package/src/components/GeneratedResultRenderer.vue +16 -17
- package/src/components/InstrumentStatusPanels.story.vue +64 -0
- package/src/components/InstrumentStatusPanels.vue +133 -0
- package/src/components/JobsStatusTray.story.vue +2 -2
- package/src/components/JobsStatusTray.vue +4 -19
- package/src/components/LoadingSpinner.story.vue +11 -11
- package/src/components/LoadingSpinner.vue +6 -4
- package/src/components/MoleculeInput.story.vue +2 -2
- package/src/components/MoleculeInput.vue +3 -3
- package/src/components/NumberInput.story.vue +55 -15
- package/src/components/NumberInput.vue +80 -18
- package/src/components/PlateEditor.story.vue +51 -43
- package/src/components/PlateEditor.vue +97 -128
- package/src/components/PlotlyChart.story.vue +1 -1
- package/src/components/PlotlyChart.vue +6 -4
- package/src/components/PluginIcon.story.vue +9 -6
- package/src/components/PluginIcon.vue +7 -2
- package/src/components/PluginWorkspaceView.controls.ts +9 -29
- package/src/components/PluginWorkspaceView.navigation.ts +2 -23
- package/src/components/PluginWorkspaceView.props.ts +17 -151
- package/src/components/PluginWorkspaceView.shell.ts +13 -24
- package/src/components/PluginWorkspaceView.story.vue +64 -62
- package/src/components/PluginWorkspaceView.vue +21 -78
- package/src/components/PresenceAvatars.story.vue +75 -0
- package/src/components/PresenceAvatars.vue +114 -0
- package/src/components/ProgressBar.story.vue +7 -7
- package/src/components/ProgressBar.vue +4 -3
- package/src/components/ProtocolStep.presentation.ts +0 -11
- package/src/components/ProtocolStepEditor.vue +6 -5
- package/src/components/ProtocolStepParameterField.vue +15 -12
- package/src/components/SampleSelector.colors.ts +1 -1
- package/src/components/SampleSelector.vue +6 -6
- package/src/components/ScheduleCalendar.vue +4 -4
- package/src/components/SecretInput.story.vue +1 -1
- package/src/components/SecretInput.vue +16 -25
- package/src/components/SegmentedControl.story.vue +7 -7
- package/src/components/SegmentedControl.vue +5 -3
- package/src/components/SequenceInput.story.vue +2 -2
- package/src/components/SequenceInput.vue +3 -3
- package/src/components/SettingsModal.story.vue +13 -14
- package/src/components/SettingsModal.vue +29 -47
- package/src/components/SmartGroup.types.ts +4 -6
- package/src/components/SmartGroupFieldRecipe.vue +7 -5
- package/src/components/StaleFormBanner.story.vue +90 -0
- package/src/components/StaleFormBanner.vue +83 -0
- package/src/components/TagsInput.story.vue +7 -7
- package/src/components/TagsInput.vue +7 -6
- package/src/components/ThemeToggle.vue +5 -30
- package/src/components/TimeRangeInput.story.vue +1 -1
- package/src/components/TimeRangeInput.vue +10 -8
- package/src/components/VersionConflictDialog.story.vue +60 -0
- package/src/components/VersionConflictDialog.vue +79 -0
- package/src/components/WellPlate.geometry.ts +0 -38
- package/src/components/WellPlate.rendering.ts +0 -13
- package/src/components/WellPlate.story.vue +61 -50
- package/src/components/WellPlate.vue +61 -87
- package/src/components/index.ts +3 -105
- package/src/components/{AutoGroupModal.adapter.ts → internal/AutoGroupModalInternal.adapter.ts} +8 -8
- package/src/components/{AutoGroupModal.vue → internal/AutoGroupModalInternal.vue} +23 -23
- package/src/components/{BaseToggle.vue → internal/CheckboxSwitchInternal.vue} +8 -8
- package/src/components/internal/DataStateInternal.vue +1 -1
- package/src/components/internal/DatePickerDateInternal.vue +243 -0
- package/src/components/{DateTimePicker.vue → internal/DatePickerDateTimeInternal.vue} +9 -9
- package/src/components/{TimePicker.vue → internal/DatePickerTimeInternal.vue} +7 -7
- package/src/components/internal/FilePickerListInternal.vue +8 -14
- package/src/components/{FormActions.vue → internal/FormActionsInternal.vue} +2 -2
- package/src/components/internal/FormFieldRendererInternal.vue +1 -1
- package/src/components/internal/FormSchemaInternal.vue +253 -0
- package/src/components/{UnitInput.vue → internal/NumberUnitInputInternal.vue} +28 -28
- package/src/components/internal/PlateEditorBindingInternal.vue +8 -7
- package/src/components/internal/ResourcePickerListInternal.vue +4 -4
- package/src/components/{MultiSelect.vue → internal/SelectMultipleInternal.vue} +21 -15
- package/src/components/{SearchableSelect.vue → internal/SelectSearchableInternal.vue} +24 -8
- package/src/components/internal/WellEditPopupInternal.vue +4 -9
- package/src/components/internal/WorkspaceShellInternal.vue +3 -36
- package/src/components/internal/WorkspaceSidebarInternal.vue +4 -25
- package/src/{composables → components/internal}/autoGroup/classKey.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/classify.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/columns.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/compose.ts +3 -3
- package/src/{composables → components/internal}/autoGroup/cooccurrence.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/csv-shim.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/fingerprint.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/index.ts +1 -2
- package/src/{composables → components/internal}/autoGroup/template.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/tokenLength.ts +1 -1
- package/src/components/internal/generatedJobsApi.ts +1 -1
- package/src/{composables → components/internal}/useAutoGroup.ts +3 -57
- package/src/composables/componentSpecs.ts +62 -0
- package/src/composables/controlComponentBindings.ts +7 -0
- package/src/composables/controlSchemaAdapters.ts +45 -7
- package/src/composables/controlSchemaDoseDesign.ts +16 -5
- package/src/composables/controlSchemaModel.ts +1 -1
- package/src/composables/controlSchemaTypes.ts +31 -22
- package/src/composables/{usePluginClient.ts → createClient.ts} +52 -190
- package/src/composables/{useEventStream.ts → eventStream.ts} +3 -3
- package/src/composables/experiment-utils.ts +1 -39
- package/src/composables/formBuilderRegistry.ts +6 -12
- package/src/composables/index.ts +16 -480
- package/src/composables/platformContextHelpers.ts +0 -57
- package/src/composables/pluginEndpointBuilder.ts +8 -10
- package/src/composables/pluginWorkspaceModel.ts +14 -105
- package/src/composables/useApi.ts +18 -30
- package/src/composables/useAppExperiment.ts +6 -5
- package/src/composables/{useAnalysisArtifacts.ts → useArtifacts.ts} +18 -19
- package/src/composables/useControlSchema.ts +5 -9
- package/src/composables/useControlWorkspace.ts +4 -7
- package/src/composables/useExperiment.ts +49 -0
- package/src/composables/useExperimentData.ts +4 -4
- package/src/composables/useExperimentSelector.ts +5 -5
- package/src/composables/useFileBrowser.ts +5 -13
- package/src/composables/useFilePicker.ts +2 -2
- package/src/composables/useFormBuilder.ts +3 -4
- package/src/composables/useJobCenter.ts +324 -0
- package/src/composables/{useGeneratedAnalysis.ts → useJobsEndpoint.ts} +53 -67
- package/src/composables/useMenuKeyboard.ts +1 -1
- package/src/composables/usePlatform.ts +95 -0
- package/src/composables/usePlatformFilePickerAdapter.ts +2 -1
- package/src/composables/usePluginWorkspace.ts +62 -107
- package/src/composables/usePresence.ts +110 -0
- package/src/composables/useRackEditor.ts +3 -3
- package/src/composables/useRealtime.ts +194 -0
- package/src/composables/{useRequestSyncState.ts → useRequest.ts} +25 -48
- package/src/composables/useScheduleCalendarLayout.ts +1 -1
- package/src/composables/useToast.ts +14 -11
- package/src/composables/useVersionedSave.ts +165 -0
- package/src/data.ts +130 -0
- package/src/deprecatedRootExports.ts +226 -0
- package/src/generated/schema.ts +1 -0
- package/src/host.ts +27 -0
- package/src/index.ts +2 -71
- package/src/install.ts +15 -2
- package/src/instrument.ts +1 -6
- package/src/lab.ts +128 -0
- package/src/permissions.ts +0 -27
- package/src/runtime.ts +145 -0
- package/src/shell.ts +103 -0
- package/src/stores/auth.ts +26 -162
- package/src/stores/experiment.ts +27 -1
- package/src/styles/components/action-menu.css +0 -5
- package/src/styles/components/alert-box.css +18 -0
- package/src/styles/components/app-top-bar.css +7 -48
- package/src/styles/components/button.css +12 -0
- package/src/styles/components/checkbox.css +1 -1
- package/src/styles/components/collapsible-card.css +1 -1
- package/src/styles/components/confirm-dialog.css +18 -2
- package/src/styles/components/empty-state.css +4 -2
- package/src/styles/components/file-picker.css +1 -1
- package/src/styles/components/icon-button.css +1 -1
- package/src/styles/components/loading-spinner.css +9 -12
- package/src/styles/components/multi-select.css +6 -1
- package/src/styles/components/pill.css +40 -35
- package/src/styles/components/plugin-icon.css +9 -0
- package/src/styles/components/presence-avatars.css +194 -0
- package/src/styles/components/progress-bar.css +2 -0
- package/src/styles/components/searchable-select.css +3 -0
- package/src/styles/components/smart-group.css +1 -6
- package/src/styles/components/textarea.css +1 -1
- package/src/styles/components/toggle.css +2 -2
- package/src/styles/components/version-conflict.css +122 -0
- package/src/styles/components/well-plate.css +0 -7
- package/src/styles/index.css +2 -11
- package/src/styles/variables.css +1 -527
- package/src/types/analysisArtifactTypes.ts +1 -1
- package/src/types/auth.ts +0 -10
- package/src/types/componentLabTypes.ts +103 -53
- package/src/types/componentWorkflowTypes.ts +2 -33
- package/src/types/components.ts +148 -114
- package/src/types/form-builder.ts +4 -0
- package/src/types/generated/platformContext.ts +59 -0
- package/src/types/generated-ui.ts +2 -2
- package/src/types/index.ts +15 -53
- package/src/types/instrument.ts +27 -0
- package/src/types/platform.ts +25 -89
- package/src/utils/color.ts +1 -12
- package/src/utils/dose.ts +335 -0
- package/src/utils/experimentStatus.ts +43 -0
- package/src/utils/formula.ts +292 -0
- package/src/utils/integrationHost.ts +27 -0
- package/src/utils/plotlyTemplate.ts +6 -0
- package/src/utils/pluginSecrets.ts +23 -23
- package/src/utils/presenceAvatars.ts +53 -0
- package/src/utils/records.ts +0 -5
- package/src/{composables/useTimeUtils.ts → utils/time.ts} +0 -21
- package/dist/ResourcePickerListInternal-CFAw4vTZ.js +0 -605
- package/dist/ResourcePickerListInternal-CFAw4vTZ.js.map +0 -1
- package/dist/__tests__/composables/useBioTemplatePackWorkspace.test.d.ts +0 -1
- package/dist/__tests__/composables/useBioTemplatePresetWorkspace.test.d.ts +0 -1
- package/dist/__tests__/composables/useBioTemplateWorkspace.test.d.ts +0 -1
- package/dist/__tests__/composables/useChemicalFormula.test.d.ts +0 -1
- package/dist/__tests__/composables/useEventStream.test.d.ts +0 -1
- package/dist/__tests__/composables/useExperimentSave.test.d.ts +0 -1
- package/dist/__tests__/composables/useGeneratedAnalysis.test.d.ts +0 -1
- package/dist/__tests__/composables/useGroupAssignment.test.d.ts +0 -1
- package/dist/__tests__/composables/useJobsStatusTray.test.d.ts +0 -1
- package/dist/__tests__/composables/useMobileSupportGate.test.d.ts +0 -1
- package/dist/__tests__/composables/usePlatformContext.test.d.ts +0 -1
- package/dist/__tests__/composables/usePluginClient.test.d.ts +0 -1
- package/dist/__tests__/composables/usePresenceHeartbeat.test.d.ts +0 -1
- package/dist/__tests__/composables/useRequestSyncState.test.d.ts +0 -1
- package/dist/__tests__/composables/useRuntimeAlignment.test.d.ts +0 -1
- package/dist/__tests__/composables/useTemplateCollection.test.d.ts +0 -1
- package/dist/__tests__/composables/useTimeUtils.test.d.ts +0 -1
- package/dist/__tests__/docs/extractDocsTemplates.test.d.ts +0 -1
- package/dist/__tests__/templates/templates.test.d.ts +0 -1
- package/dist/__tests__/templates/templatesDeprecation.test.d.ts +0 -1
- package/dist/__tests__/utils/lcms.test.d.ts +0 -1
- package/dist/__tests__/utils/rack.test.d.ts +0 -1
- package/dist/components/AppAvatarMenu.vue.d.ts +0 -47
- package/dist/components/AppTopBar.navigation.d.ts +0 -10
- package/dist/components/BaseTextarea.vue.d.ts +0 -31
- package/dist/components/BioTemplateExperimentWorkspaceView.vue.d.ts +0 -112
- package/dist/components/BioTemplatePackWorkspaceView.vue.d.ts +0 -86
- package/dist/components/BioTemplatePresetWorkspaceView.vue.d.ts +0 -80
- package/dist/components/BioTemplateRenderer.vue.d.ts +0 -30
- package/dist/components/ControlWorkspaceView.vue.d.ts +0 -138
- package/dist/components/DoseDesignWorkspaceView.vue.d.ts +0 -140
- package/dist/components/ExperimentDataViewer.vue.d.ts +0 -54
- package/dist/components/ExperimentTimeline.vue.d.ts +0 -70
- package/dist/components/FitPanel.vue.d.ts +0 -56
- package/dist/components/GroupAssigner.vue.d.ts +0 -26
- package/dist/components/IconButton.vue.d.ts +0 -30
- package/dist/components/MobileSupportGate.vue.d.ts +0 -32
- package/dist/components/ReagentEditor.vue.d.ts +0 -31
- package/dist/components/ReagentList.presentation.d.ts +0 -17
- package/dist/components/ReagentList.vue.d.ts +0 -58
- package/dist/components/SampleLegend.vue.d.ts +0 -33
- package/dist/components/SmartGroupModal.vue.d.ts +0 -29
- package/dist/components/index.js +0 -5
- package/dist/components-BOA5e7kb.js +0 -23137
- package/dist/components-BOA5e7kb.js.map +0 -1
- package/dist/composables/flattenWorkspaceBindings.d.ts +0 -61
- package/dist/composables/index.js +0 -7
- package/dist/composables/useBioTemplateComponents.d.ts +0 -34
- package/dist/composables/useBioTemplateControls.d.ts +0 -10
- package/dist/composables/useBioTemplatePackWorkspace.d.ts +0 -56
- package/dist/composables/useBioTemplatePresetWorkspace.d.ts +0 -79
- package/dist/composables/useBioTemplateWorkspace.d.ts +0 -39
- package/dist/composables/useExperimentSave.d.ts +0 -69
- package/dist/composables/useGroupAssignment.d.ts +0 -35
- package/dist/composables/useJobsStatusTray.d.ts +0 -87
- package/dist/composables/useMobileSupportGate.d.ts +0 -14
- package/dist/composables/usePlatformContext.d.ts +0 -218
- package/dist/composables/usePresenceHeartbeat.d.ts +0 -49
- package/dist/composables/useRuntimeAlignment.d.ts +0 -44
- package/dist/composables/useTemplateCollection.d.ts +0 -62
- package/dist/composables/workspaceRecipes.d.ts +0 -189
- package/dist/composables-izSQH8Ky.js +0 -591
- package/dist/composables-izSQH8Ky.js.map +0 -1
- package/dist/experiment-D49y_Kro.js +0 -459
- package/dist/experiment-D49y_Kro.js.map +0 -1
- package/dist/experiment-utils-DTANyVKV.js.map +0 -1
- package/dist/install.js.map +0 -1
- package/dist/lcms.d.ts +0 -38
- package/dist/settings-BG6v13Zq.js +0 -341
- package/dist/settings-BG6v13Zq.js.map +0 -1
- package/dist/tailwind.preset.d.ts +0 -63
- package/dist/tailwind.preset.js +0 -71
- package/dist/tailwind.preset.js.map +0 -1
- package/dist/templates/adapters.d.ts +0 -19
- package/dist/templates/assayLookups.d.ts +0 -3
- package/dist/templates/assayMatrixAdapters.d.ts +0 -13
- package/dist/templates/assayMatrixBuilder.d.ts +0 -3
- package/dist/templates/assayNormalizers.d.ts +0 -4
- package/dist/templates/builderIdUtils.d.ts +0 -4
- package/dist/templates/builderPresetControls.d.ts +0 -11
- package/dist/templates/builderReadUtils.d.ts +0 -8
- package/dist/templates/builders.d.ts +0 -26
- package/dist/templates/calibrationCurveAdapters.d.ts +0 -7
- package/dist/templates/calibrationCurveBuilder.d.ts +0 -3
- package/dist/templates/calibrationNormalizers.d.ts +0 -5
- package/dist/templates/catalog.d.ts +0 -192
- package/dist/templates/componentBindingCatalog.d.ts +0 -25
- package/dist/templates/componentBindingHelpers.d.ts +0 -17
- package/dist/templates/componentBindings.d.ts +0 -97
- package/dist/templates/componentDoseResponseProps.d.ts +0 -3
- package/dist/templates/componentGenericProps.d.ts +0 -8
- package/dist/templates/componentPlateHelpers.d.ts +0 -11
- package/dist/templates/componentPlateMapProps.d.ts +0 -3
- package/dist/templates/componentPropsFactory.d.ts +0 -3
- package/dist/templates/componentQpcrPlateProps.d.ts +0 -3
- package/dist/templates/componentTargetResolvers.d.ts +0 -5
- package/dist/templates/componentTemplateProps.d.ts +0 -3
- package/dist/templates/controlSchemaClone.d.ts +0 -4
- package/dist/templates/controlSchemaConstants.d.ts +0 -10
- package/dist/templates/controlSchemaMerge.d.ts +0 -3
- package/dist/templates/controlSchemaTargets.d.ts +0 -17
- package/dist/templates/controlSchemaTypes.d.ts +0 -4
- package/dist/templates/controlSchemas.d.ts +0 -34
- package/dist/templates/defaultBioTemplateBuilder.d.ts +0 -3
- package/dist/templates/doseResponseAdapters.d.ts +0 -6
- package/dist/templates/doseResponseBuilder.d.ts +0 -3
- package/dist/templates/elisaAssayCollectionBuilder.d.ts +0 -3
- package/dist/templates/flowCytometryAssayCollectionBuilder.d.ts +0 -3
- package/dist/templates/flowCytometryPanelBuilder.d.ts +0 -3
- package/dist/templates/flowNormalizers.d.ts +0 -8
- package/dist/templates/flowPanelAdapters.d.ts +0 -7
- package/dist/templates/index.d.ts +0 -15
- package/dist/templates/index.js +0 -2
- package/dist/templates/instrumentRunAdapterHelpers.d.ts +0 -8
- package/dist/templates/instrumentRunAdapters.d.ts +0 -19
- package/dist/templates/instrumentRunBuilder.d.ts +0 -3
- package/dist/templates/lcmsBatchCollectionBuilder.d.ts +0 -3
- package/dist/templates/lookup.d.ts +0 -4
- package/dist/templates/packs.d.ts +0 -21
- package/dist/templates/plateMapAdapters.d.ts +0 -5
- package/dist/templates/plateMapBuilder.d.ts +0 -3
- package/dist/templates/presetControlSchemas.d.ts +0 -534
- package/dist/templates/presets.d.ts +0 -106
- package/dist/templates/protocolAdapters.d.ts +0 -9
- package/dist/templates/protocolNormalizers.d.ts +0 -6
- package/dist/templates/protocolStepsBuilder.d.ts +0 -3
- package/dist/templates/qpcrAdapters.d.ts +0 -9
- package/dist/templates/qpcrExpressionCollectionBuilder.d.ts +0 -3
- package/dist/templates/qpcrPlateBuilder.d.ts +0 -3
- package/dist/templates/reagentAdapters.d.ts +0 -9
- package/dist/templates/reagentListBuilder.d.ts +0 -3
- package/dist/templates/runNormalizers.d.ts +0 -10
- package/dist/templates/sampleNormalizers.d.ts +0 -4
- package/dist/templates/samplePrepAdapters.d.ts +0 -7
- package/dist/templates/samplePrepBuilder.d.ts +0 -3
- package/dist/templates/sampleSheetAdapters.d.ts +0 -9
- package/dist/templates/sampleSheetBuilder.d.ts +0 -3
- package/dist/templates/targetedMetabolomicsCollectionBuilder.d.ts +0 -3
- package/dist/templates/targetedMetabolomicsHelpers.d.ts +0 -5
- package/dist/templates/templateAdapterTypes.d.ts +0 -48
- package/dist/templates/templateControlSchemas.d.ts +0 -400
- package/dist/templates/templateCreateOptions.d.ts +0 -165
- package/dist/templates/templateEnvelopes.d.ts +0 -17
- package/dist/templates/templatePackCollectionBuilder.d.ts +0 -3
- package/dist/templates/templatePresetCollectionBuilder.d.ts +0 -20
- package/dist/templates/templateQpcrTypes.d.ts +0 -42
- package/dist/templates/templateValidators.d.ts +0 -25
- package/dist/templates/timeCourseAdapters.d.ts +0 -9
- package/dist/templates/timeCourseBuilder.d.ts +0 -3
- package/dist/templates/types.d.ts +0 -304
- package/dist/templates/wellPlateScreenCollectionBuilder.d.ts +0 -3
- package/dist/templates/westernBlotAssayCollectionBuilder.d.ts +0 -3
- package/dist/templates-B2DB0MCM.js +0 -12304
- package/dist/templates-B2DB0MCM.js.map +0 -1
- package/dist/utils/rack.d.ts +0 -63
- package/dist/validation-C_eH_vIg.js +0 -7999
- package/dist/validation-C_eH_vIg.js.map +0 -1
- package/src/__tests__/components/AppAvatarMenu.test.ts +0 -186
- package/src/__tests__/components/AppTopBar.navigation.test.ts +0 -68
- package/src/__tests__/components/AppTopBarPresence.test.ts +0 -47
- package/src/__tests__/components/BioTemplateExperimentWorkspaceView.test.ts +0 -159
- package/src/__tests__/components/BioTemplatePackWorkspaceView.test.ts +0 -192
- package/src/__tests__/components/BioTemplatePresetWorkspaceView.test.ts +0 -307
- package/src/__tests__/components/BioTemplateRenderer.test.ts +0 -96
- package/src/__tests__/components/ControlWorkspaceView.test.ts +0 -1100
- package/src/__tests__/components/DoseDesignWorkspaceView.test.ts +0 -183
- package/src/__tests__/components/ExperimentTimeline.test.ts +0 -108
- package/src/__tests__/components/FitPanel.test.ts +0 -96
- package/src/__tests__/components/GroupAssigner.test.ts +0 -101
- package/src/__tests__/components/MobileSupportGate.test.ts +0 -120
- package/src/__tests__/components/ReagentList.presentation.test.ts +0 -73
- package/src/__tests__/components/ReagentList.test.ts +0 -167
- package/src/__tests__/components/SampleLegend.test.ts +0 -18
- package/src/__tests__/components/SmartGroupModal.test.ts +0 -69
- package/src/__tests__/components/WellPlate.sampleTypeIndicator.test.ts +0 -58
- package/src/__tests__/components/iconButtonIconSizing.test.ts +0 -18
- package/src/__tests__/composables/useBioTemplatePackWorkspace.test.ts +0 -125
- package/src/__tests__/composables/useBioTemplatePresetWorkspace.test.ts +0 -199
- package/src/__tests__/composables/useBioTemplateWorkspace.test.ts +0 -104
- package/src/__tests__/composables/useExperimentSave.test.ts +0 -542
- package/src/__tests__/composables/useGroupAssignment.test.ts +0 -73
- package/src/__tests__/composables/useMobileSupportGate.test.ts +0 -74
- package/src/__tests__/composables/usePlatformContext.test.ts +0 -148
- package/src/__tests__/composables/usePresenceHeartbeat.test.ts +0 -164
- package/src/__tests__/composables/useRuntimeAlignment.test.ts +0 -145
- package/src/__tests__/composables/useTemplateCollection.test.ts +0 -147
- package/src/__tests__/docs/extractDocsTemplates.test.ts +0 -53
- package/src/__tests__/fixtures/templates/dose-response.json +0 -81
- package/src/__tests__/fixtures/templates/plate-map.json +0 -54
- package/src/__tests__/fixtures/templates/qpcr-plate.json +0 -96
- package/src/__tests__/fixtures/templates/sample-sheet.json +0 -71
- package/src/__tests__/templates/templates.test.ts +0 -1235
- package/src/__tests__/templates/templatesDeprecation.test.ts +0 -78
- package/src/__tests__/utils/lcms.test.ts +0 -73
- package/src/__tests__/utils/rack.test.ts +0 -120
- package/src/components/AppAvatarMenu.story.vue +0 -155
- package/src/components/AppAvatarMenu.vue +0 -154
- package/src/components/AppTopBar.navigation.ts +0 -60
- package/src/components/AutoGroupModal.story.vue +0 -458
- package/src/components/BaseTextarea.vue +0 -58
- package/src/components/BioTemplateExperimentWorkspaceView.story.vue +0 -123
- package/src/components/BioTemplateExperimentWorkspaceView.vue +0 -339
- package/src/components/BioTemplatePackWorkspaceView.story.vue +0 -107
- package/src/components/BioTemplatePackWorkspaceView.vue +0 -180
- package/src/components/BioTemplatePresetWorkspaceView.story.vue +0 -163
- package/src/components/BioTemplatePresetWorkspaceView.vue +0 -403
- package/src/components/BioTemplateRenderer.story.vue +0 -57
- package/src/components/BioTemplateRenderer.vue +0 -64
- package/src/components/ControlWorkspaceView.story.vue +0 -347
- package/src/components/ControlWorkspaceView.vue +0 -370
- package/src/components/DoseDesignWorkspaceView.story.vue +0 -77
- package/src/components/DoseDesignWorkspaceView.vue +0 -243
- package/src/components/ExperimentDataViewer.story.vue +0 -177
- package/src/components/ExperimentDataViewer.vue +0 -313
- package/src/components/ExperimentTimeline.story.vue +0 -208
- package/src/components/ExperimentTimeline.vue +0 -383
- package/src/components/FitPanel.story.vue +0 -191
- package/src/components/FitPanel.vue +0 -168
- package/src/components/FormActions.story.vue +0 -96
- package/src/components/GroupAssigner.story.vue +0 -83
- package/src/components/GroupAssigner.vue +0 -319
- package/src/components/IconButton.story.vue +0 -140
- package/src/components/IconButton.vue +0 -69
- package/src/components/MobileSupportGate.story.vue +0 -52
- package/src/components/MobileSupportGate.vue +0 -111
- package/src/components/ReagentEditor.story.vue +0 -153
- package/src/components/ReagentEditor.vue +0 -414
- package/src/components/ReagentList.presentation.ts +0 -106
- package/src/components/ReagentList.story.vue +0 -155
- package/src/components/ReagentList.vue +0 -438
- package/src/components/SampleLegend.story.vue +0 -91
- package/src/components/SampleLegend.vue +0 -121
- package/src/components/SmartGroupModal.story.vue +0 -61
- package/src/components/SmartGroupModal.vue +0 -61
- package/src/components/StatusIndicator.story.vue +0 -99
- package/src/components/StatusIndicator.vue +0 -36
- package/src/components/UnitInput.story.vue +0 -194
- package/src/composables/flattenWorkspaceBindings.ts +0 -104
- package/src/composables/useBioTemplateComponents.ts +0 -117
- package/src/composables/useBioTemplateControls.ts +0 -45
- package/src/composables/useBioTemplatePackWorkspace.ts +0 -201
- package/src/composables/useBioTemplatePresetWorkspace.ts +0 -329
- package/src/composables/useBioTemplateWorkspace.ts +0 -120
- package/src/composables/useChemicalFormula.ts +0 -301
- package/src/composables/useDoseCalculator.ts +0 -370
- package/src/composables/useExperimentSave.ts +0 -348
- package/src/composables/useGroupAssignment.ts +0 -152
- package/src/composables/useJobsStatusTray.ts +0 -493
- package/src/composables/useMobileSupportGate.ts +0 -80
- package/src/composables/usePlatformContext.ts +0 -299
- package/src/composables/usePresenceHeartbeat.ts +0 -201
- package/src/composables/useRuntimeAlignment.ts +0 -184
- package/src/composables/useTemplateCollection.ts +0 -233
- package/src/composables/workspaceRecipes.ts +0 -268
- package/src/lcms.ts +0 -119
- package/src/styles/components/app-avatar-menu.css +0 -121
- package/src/styles/components/experiment-data-viewer.css +0 -138
- package/src/styles/components/experiment-timeline.css +0 -572
- package/src/styles/components/fit-panel.css +0 -153
- package/src/styles/components/group-assigner.css +0 -198
- package/src/styles/components/mobile-support-gate.css +0 -117
- package/src/styles/components/reagent-editor.css +0 -501
- package/src/styles/components/reagent-list.css +0 -408
- package/src/styles/components/sample-legend.css +0 -212
- package/src/styles/components/status-indicator.css +0 -66
- package/src/styles/components/theme-toggle.css +0 -6
- package/src/tailwind.preset.ts +0 -66
- package/src/templates/adapters.ts +0 -141
- package/src/templates/assayLookups.ts +0 -33
- package/src/templates/assayMatrixAdapters.ts +0 -85
- package/src/templates/assayMatrixBuilder.ts +0 -60
- package/src/templates/assayNormalizers.ts +0 -34
- package/src/templates/builderIdUtils.ts +0 -20
- package/src/templates/builderPresetControls.ts +0 -166
- package/src/templates/builderReadUtils.ts +0 -55
- package/src/templates/builders.ts +0 -122
- package/src/templates/calibrationCurveAdapters.ts +0 -62
- package/src/templates/calibrationCurveBuilder.ts +0 -100
- package/src/templates/calibrationNormalizers.ts +0 -60
- package/src/templates/catalog.ts +0 -249
- package/src/templates/componentBindingCatalog.ts +0 -90
- package/src/templates/componentBindingHelpers.ts +0 -93
- package/src/templates/componentBindings.ts +0 -279
- package/src/templates/componentDoseResponseProps.ts +0 -41
- package/src/templates/componentGenericProps.ts +0 -77
- package/src/templates/componentPlateHelpers.ts +0 -52
- package/src/templates/componentPlateMapProps.ts +0 -34
- package/src/templates/componentPropsFactory.ts +0 -21
- package/src/templates/componentQpcrPlateProps.ts +0 -27
- package/src/templates/componentTargetResolvers.ts +0 -67
- package/src/templates/componentTemplateProps.ts +0 -78
- package/src/templates/controlSchemaClone.ts +0 -32
- package/src/templates/controlSchemaConstants.ts +0 -11
- package/src/templates/controlSchemaMerge.ts +0 -40
- package/src/templates/controlSchemaTargets.ts +0 -85
- package/src/templates/controlSchemaTypes.ts +0 -20
- package/src/templates/controlSchemas.ts +0 -113
- package/src/templates/defaultBioTemplateBuilder.ts +0 -125
- package/src/templates/doseResponseAdapters.ts +0 -36
- package/src/templates/doseResponseBuilder.ts +0 -45
- package/src/templates/elisaAssayCollectionBuilder.ts +0 -63
- package/src/templates/flowCytometryAssayCollectionBuilder.ts +0 -42
- package/src/templates/flowCytometryPanelBuilder.ts +0 -54
- package/src/templates/flowNormalizers.ts +0 -58
- package/src/templates/flowPanelAdapters.ts +0 -61
- package/src/templates/index.ts +0 -330
- package/src/templates/instrumentRunAdapterHelpers.ts +0 -94
- package/src/templates/instrumentRunAdapters.ts +0 -174
- package/src/templates/instrumentRunBuilder.ts +0 -98
- package/src/templates/lcmsBatchCollectionBuilder.ts +0 -39
- package/src/templates/lookup.ts +0 -18
- package/src/templates/packs.ts +0 -166
- package/src/templates/plateMapAdapters.ts +0 -38
- package/src/templates/plateMapBuilder.ts +0 -44
- package/src/templates/presetControlSchemas.ts +0 -258
- package/src/templates/presets.ts +0 -183
- package/src/templates/protocolAdapters.ts +0 -73
- package/src/templates/protocolNormalizers.ts +0 -37
- package/src/templates/protocolStepsBuilder.ts +0 -37
- package/src/templates/qpcrAdapters.ts +0 -108
- package/src/templates/qpcrExpressionCollectionBuilder.ts +0 -34
- package/src/templates/qpcrPlateBuilder.ts +0 -97
- package/src/templates/reagentAdapters.ts +0 -81
- package/src/templates/reagentListBuilder.ts +0 -31
- package/src/templates/runNormalizers.ts +0 -63
- package/src/templates/sampleNormalizers.ts +0 -58
- package/src/templates/samplePrepAdapters.ts +0 -66
- package/src/templates/samplePrepBuilder.ts +0 -52
- package/src/templates/sampleSheetAdapters.ts +0 -79
- package/src/templates/sampleSheetBuilder.ts +0 -24
- package/src/templates/targetedMetabolomicsCollectionBuilder.ts +0 -80
- package/src/templates/targetedMetabolomicsHelpers.ts +0 -102
- package/src/templates/templateAdapterTypes.ts +0 -58
- package/src/templates/templateControlSchemas.ts +0 -320
- package/src/templates/templateCreateOptions.ts +0 -208
- package/src/templates/templateEnvelopes.ts +0 -145
- package/src/templates/templatePackCollectionBuilder.ts +0 -24
- package/src/templates/templatePresetCollectionBuilder.ts +0 -141
- package/src/templates/templateQpcrTypes.ts +0 -48
- package/src/templates/templateValidators.ts +0 -426
- package/src/templates/timeCourseAdapters.ts +0 -77
- package/src/templates/timeCourseBuilder.ts +0 -65
- package/src/templates/types.ts +0 -493
- package/src/templates/wellPlateScreenCollectionBuilder.ts +0 -37
- package/src/templates/westernBlotAssayCollectionBuilder.ts +0 -69
- package/src/utils/rack.ts +0 -225
- /package/dist/__tests__/components/{AppAvatarMenu.test.d.ts → BaseButton.test.d.ts} +0 -0
- /package/dist/__tests__/components/{AppTopBar.navigation.test.d.ts → BaseCheckbox.switch.test.d.ts} +0 -0
- /package/dist/__tests__/components/{AppTopBarPresence.test.d.ts → BaseSelect.multiple.test.d.ts} +0 -0
- /package/dist/__tests__/components/{BaseToggle.test.d.ts → BaseSelect.searchable.test.d.ts} +0 -0
- /package/dist/__tests__/components/{BioTemplateExperimentWorkspaceView.test.d.ts → ConfirmDialog.test.d.ts} +0 -0
- /package/dist/__tests__/components/{BioTemplatePackWorkspaceView.test.d.ts → DatePicker.datetime.test.d.ts} +0 -0
- /package/dist/__tests__/components/{BioTemplatePresetWorkspaceView.test.d.ts → DatePicker.time.test.d.ts} +0 -0
- /package/dist/__tests__/components/{BioTemplateRenderer.test.d.ts → FormSchemaInternal.test.d.ts} +0 -0
- /package/dist/__tests__/components/{ControlWorkspaceView.test.d.ts → InstrumentStatusPanels.test.d.ts} +0 -0
- /package/dist/__tests__/components/{DateTimePicker.test.d.ts → NumberInput.units.test.d.ts} +0 -0
- /package/dist/__tests__/components/{DoseDesignWorkspaceView.test.d.ts → PresenceAvatars.test.d.ts} +0 -0
- /package/dist/__tests__/components/{ExperimentTimeline.test.d.ts → StaleFormBanner.test.d.ts} +0 -0
- /package/dist/__tests__/components/{FitPanel.test.d.ts → deprecationTags.test.d.ts} +0 -0
- /package/dist/__tests__/{components/GroupAssigner.test.d.ts → composables/createClient.test.d.ts} +0 -0
- /package/dist/__tests__/{components/MobileSupportGate.test.d.ts → composables/eventStream.test.d.ts} +0 -0
- /package/dist/__tests__/{components/MultiSelect.test.d.ts → composables/useArtifacts.test.d.ts} +0 -0
- /package/dist/__tests__/{components/ReagentList.presentation.test.d.ts → composables/useExperiment.test.d.ts} +0 -0
- /package/dist/__tests__/{components/ReagentList.test.d.ts → composables/useJobCenter.test.d.ts} +0 -0
- /package/dist/__tests__/{components/SampleLegend.test.d.ts → composables/useJobsEndpoint.test.d.ts} +0 -0
- /package/dist/__tests__/{components/SearchableSelect.test.d.ts → composables/usePlatform.test.d.ts} +0 -0
- /package/dist/__tests__/{components/SmartGroupModal.test.d.ts → composables/usePresence.test.d.ts} +0 -0
- /package/dist/__tests__/{components/TimePicker.test.d.ts → composables/useRealtime.test.d.ts} +0 -0
- /package/dist/__tests__/{components/UnitInput.test.d.ts → composables/useRequest.test.d.ts} +0 -0
- /package/dist/__tests__/{components/WellPlate.sampleTypeIndicator.test.d.ts → composables/useVersionedSave.test.d.ts} +0 -0
- /package/dist/__tests__/{components/iconButtonIconSizing.test.d.ts → utils/formula.test.d.ts} +0 -0
- /package/dist/__tests__/{composables/useAnalysisArtifacts.test.d.ts → utils/time.test.d.ts} +0 -0
- /package/dist/components/{FormActions.vue.d.ts → internal/FormActionsInternal.vue.d.ts} +0 -0
- /package/dist/{composables → components/internal}/autoGroup/colors.d.ts +0 -0
- /package/dist/{composables → components/internal}/autoGroup/index.d.ts +0 -0
- /package/dist/{composables → components/internal}/autoGroup/tokenize.d.ts +0 -0
- /package/src/{composables → components/internal}/autoGroup/colors.ts +0 -0
- /package/src/{composables → components/internal}/autoGroup/tokenize.ts +0 -0
- /package/src/{composables → components/internal}/autoGroup/vocab.json +0 -0
package/src/components/index.ts
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
|
+
// Components exported from the package root. Lab, shell, data and runtime
|
|
2
|
+
// components are exported from their subpath entries (`src/lab.ts`, ...).
|
|
3
|
+
|
|
1
4
|
// Base components
|
|
2
5
|
export { default as BaseButton } from './BaseButton.vue'
|
|
3
6
|
export { default as BaseInput } from './BaseInput.vue'
|
|
4
|
-
export { default as BaseTextarea } from './BaseTextarea.vue'
|
|
5
7
|
export { default as BaseSelect } from './BaseSelect.vue'
|
|
6
|
-
export { default as SearchableSelect } from './SearchableSelect.vue'
|
|
7
8
|
export { default as BaseCheckbox } from './BaseCheckbox.vue'
|
|
8
|
-
export { default as BaseToggle } from './BaseToggle.vue'
|
|
9
9
|
export { default as BaseRadioGroup } from './BaseRadioGroup.vue'
|
|
10
10
|
export { default as BaseSlider } from './BaseSlider.vue'
|
|
11
11
|
export { default as BaseTabs } from './BaseTabs.vue'
|
|
12
12
|
export { default as BaseModal } from './BaseModal.vue'
|
|
13
13
|
export { default as SegmentedControl } from './SegmentedControl.vue'
|
|
14
|
-
export { default as MultiSelect } from './MultiSelect.vue'
|
|
15
14
|
export { default as BasePill } from './BasePill.vue'
|
|
16
15
|
export { default as Calendar } from './Calendar.vue'
|
|
17
16
|
export { default as DataFrame } from './DataFrame.vue'
|
|
@@ -19,140 +18,39 @@ export { default as DataFrame } from './DataFrame.vue'
|
|
|
19
18
|
// Form components
|
|
20
19
|
export { default as FormField } from './FormField.vue'
|
|
21
20
|
export { default as DatePicker } from './DatePicker.vue'
|
|
22
|
-
export { default as TimePicker } from './TimePicker.vue'
|
|
23
|
-
export { default as TagsInput } from './TagsInput.vue'
|
|
24
|
-
export { default as SecretInput } from './SecretInput.vue'
|
|
25
21
|
export { default as NumberInput } from './NumberInput.vue'
|
|
26
22
|
export { default as FileUploader } from './FileUploader.vue'
|
|
27
23
|
|
|
28
24
|
// Feedback components
|
|
29
25
|
export { default as AlertBox } from './AlertBox.vue'
|
|
30
26
|
export { default as AppToastContainer } from './AppToastContainer.vue'
|
|
31
|
-
export { default as RuntimeUpdateNotice } from './RuntimeUpdateNotice.vue'
|
|
32
27
|
|
|
33
28
|
// Action components
|
|
34
29
|
export { default as ActionMenu } from './ActionMenu.vue'
|
|
35
|
-
export { default as IconButton } from './IconButton.vue'
|
|
36
30
|
export { default as ThemeToggle } from './ThemeToggle.vue'
|
|
37
31
|
|
|
38
32
|
// Layout components
|
|
39
33
|
export { default as CollapsibleCard } from './CollapsibleCard.vue'
|
|
40
|
-
export { default as AppTopBar } from './AppTopBar.vue'
|
|
41
|
-
export { default as AppAvatarMenu } from './AppAvatarMenu.vue'
|
|
42
|
-
export { default as AppSidebar } from './AppSidebar.vue'
|
|
43
|
-
export { default as AppLayout } from './AppLayout.vue'
|
|
44
|
-
export { default as MobileSupportGate } from './MobileSupportGate.vue'
|
|
45
34
|
export { default as PluginWorkspaceView } from './PluginWorkspaceView.vue'
|
|
46
|
-
export { default as GeneratedPluginView } from './GeneratedPluginView.vue'
|
|
47
|
-
export { default as GeneratedResultRenderer } from './GeneratedResultRenderer.vue'
|
|
48
|
-
export { default as GeneratedPlotlyResult } from './GeneratedPlotlyResult.vue'
|
|
49
|
-
export { default as ComponentBindingRenderer } from './ComponentBindingRenderer.vue'
|
|
50
|
-
export { default as ControlWorkspaceView } from './ControlWorkspaceView.vue'
|
|
51
|
-
/** Complete ControlWorkspaceView page shell for WellPlate + DoseCalculator dose design. @deprecated Scheduled for removal in MINT 1.4; use `ControlWorkspaceView` instead, with `defineDoseDesignControlModel()`. */
|
|
52
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as DoseDesignWorkspaceView } from './DoseDesignWorkspaceView.vue'
|
|
53
35
|
export { default as AppContainer } from './AppContainer.vue'
|
|
54
36
|
export { default as PluginIcon } from './PluginIcon.vue'
|
|
55
|
-
export { default as LayoutResizeHandle } from './LayoutResizeHandle.vue'
|
|
56
37
|
|
|
57
38
|
// Utility components
|
|
58
39
|
export { default as Skeleton } from './Skeleton.vue'
|
|
59
40
|
export { default as LoadingSpinner } from './LoadingSpinner.vue'
|
|
60
41
|
export { default as Divider } from './Divider.vue'
|
|
61
|
-
export { default as StatusIndicator } from './StatusIndicator.vue'
|
|
62
42
|
export { default as ProgressBar } from './ProgressBar.vue'
|
|
63
43
|
export { default as Avatar } from './Avatar.vue'
|
|
64
44
|
export { default as EmptyState } from './EmptyState.vue'
|
|
65
45
|
export { default as Breadcrumb } from './Breadcrumb.vue'
|
|
66
46
|
export { default as Tooltip } from './Tooltip.vue'
|
|
67
47
|
export { default as ConfirmDialog } from './ConfirmDialog.vue'
|
|
68
|
-
export { default as ChartContainer } from './ChartContainer.vue'
|
|
69
|
-
export { default as AdductText } from './AdductText.vue'
|
|
70
48
|
export { default as SettingsModal } from './SettingsModal.vue'
|
|
71
49
|
|
|
72
|
-
// Biological experiment components
|
|
73
|
-
/** Render biology template envelopes with matching SDK components such as WellPlate, DoseCalculator, and DataFrame. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
74
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as BioTemplateRenderer } from './BioTemplateRenderer.vue'
|
|
75
|
-
/** Current-experiment template workspace with load/save/reset controls and WellPlate/DataFrame/DoseCalculator previews. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
76
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as BioTemplateExperimentWorkspaceView } from './BioTemplateExperimentWorkspaceView.vue'
|
|
77
|
-
/** Complete current-experiment workspace for a curated biology template pack with save/load controls and component-prop slots. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
78
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as BioTemplatePackWorkspaceView } from './BioTemplatePackWorkspaceView.vue'
|
|
79
|
-
/** Complete editable biology template preset workspace for WellPlate/DoseCalculator, LC-MS, qPCR, generated controls, preview components, and current-experiment save wiring. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
80
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as BioTemplatePresetWorkspaceView } from './BioTemplatePresetWorkspaceView.vue'
|
|
81
|
-
export { default as WellPlate } from './WellPlate.vue'
|
|
82
|
-
export { default as PlateEditor } from './PlateEditor.vue'
|
|
83
|
-
/** Clickable color-swatch legend for plate sample types, supporting selection, count display, add/remove, and custom color assignment. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
84
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as SampleLegend } from './SampleLegend.vue'
|
|
85
|
-
/** Horizontal or vertical timeline of ordered protocol steps with status indicators, drag-to-reorder, and step-type iconography. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
86
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as ExperimentTimeline } from './ExperimentTimeline.vue'
|
|
87
|
-
|
|
88
|
-
// Sample management components
|
|
89
|
-
/** Interactive sample list with drag-and-drop group assignment, color labeling, and smart-group support. */
|
|
90
|
-
export { default as SampleSelector } from './SampleSelector.vue'
|
|
91
|
-
/** Smart Group modal wired to the `useAutoGroup` engine. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
92
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as AutoGroupModal } from './AutoGroupModal.vue'
|
|
93
|
-
/** Drag-and-drop two-zone assigner for splitting sample groups into control and treatment arms. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
94
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as GroupAssigner } from './GroupAssigner.vue'
|
|
95
|
-
/** Smart Group modal with the auto Field Recipe and the manual cohort builder. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
96
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as SmartGroupModal } from './SmartGroupModal.vue'
|
|
97
|
-
/** Smart Group auto mode: groups samples by a field recipe. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
98
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as SmartGroupFieldRecipe } from './SmartGroupFieldRecipe.vue'
|
|
99
|
-
/** Smart Group manual mode: builds cohorts from selected samples. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
100
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as SmartGroupManual } from './SmartGroupManual.vue'
|
|
101
|
-
|
|
102
|
-
// Lab/Experiment components
|
|
103
|
-
export { default as MoleculeInput } from './MoleculeInput.vue'
|
|
104
|
-
export { default as ConcentrationInput } from './ConcentrationInput.vue'
|
|
105
|
-
export { default as DoseCalculator } from './DoseCalculator.vue'
|
|
106
|
-
/** Editor for a single reagent definition with axis orientation, dilution-series generator, and position-count validation for 96/384-well plates. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
107
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as ReagentEditor, type ReagentDefinition } from './ReagentEditor.vue'
|
|
108
|
-
/** Sortable, searchable table of experiment reagents showing lot number, expiry, storage conditions, and stock level with low-stock warnings. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
109
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as ReagentList } from './ReagentList.vue'
|
|
110
|
-
export { default as SampleHierarchyTree } from './SampleHierarchyTree.vue'
|
|
111
|
-
export { default as ProtocolStepEditor } from './ProtocolStepEditor.vue'
|
|
112
|
-
|
|
113
|
-
// Scientific display components
|
|
114
|
-
export { default as PlotlyChart } from './PlotlyChart.vue'
|
|
115
|
-
export { default as ScientificNumber } from './ScientificNumber.vue'
|
|
116
|
-
export { default as ChemicalFormula } from './ChemicalFormula.vue'
|
|
117
|
-
/** Displays LC/MS or GC/MS acquisition sequence progress with ETA and remaining-time labels. */
|
|
118
|
-
export { default as SequenceProgressBar } from './SequenceProgressBar.vue'
|
|
119
|
-
/** Status badge for instrument states: a tone dot (or dash / hollow shape for offline, never-reported and inactive) plus a label. */
|
|
120
|
-
export { default as InstrumentStateBadge } from './InstrumentStateBadge.vue'
|
|
121
|
-
|
|
122
50
|
// Scientific input components
|
|
123
|
-
export { default as FormulaInput } from './FormulaInput.vue'
|
|
124
|
-
export { default as SequenceInput } from './SequenceInput.vue'
|
|
125
|
-
export { default as UnitInput } from './UnitInput.vue'
|
|
126
|
-
|
|
127
|
-
// Workflow components
|
|
128
|
-
export { default as StepWizard } from './StepWizard.vue'
|
|
129
|
-
export { default as AuditTrail } from './AuditTrail.vue'
|
|
130
|
-
export { default as BatchProgressList } from './BatchProgressList.vue'
|
|
131
|
-
export { default as JobsStatusTray } from './JobsStatusTray.vue'
|
|
132
51
|
|
|
133
52
|
// Form builder components
|
|
134
53
|
export { default as FormBuilder } from './FormBuilder.vue'
|
|
135
|
-
export { default as FormActions } from './FormActions.vue'
|
|
136
|
-
|
|
137
|
-
// Experiment data display components
|
|
138
|
-
export { default as ExperimentDataViewer } from './ExperimentDataViewer.vue'
|
|
139
|
-
export { default as ExperimentCodeBadge } from './ExperimentCodeBadge.vue'
|
|
140
54
|
|
|
141
55
|
// Scheduling / booking components
|
|
142
|
-
export { default as DateTimePicker } from './DateTimePicker.vue'
|
|
143
|
-
export { default as TimeRangeInput } from './TimeRangeInput.vue'
|
|
144
|
-
export { default as ScheduleCalendar } from './ScheduleCalendar.vue'
|
|
145
|
-
export { default as ResourceCard } from './ResourceCard.vue'
|
|
146
56
|
export { default as SectionCard } from './SectionCard.vue'
|
|
147
|
-
|
|
148
|
-
// Experiment / analysis components
|
|
149
|
-
export { default as ExperimentSelectorModal } from './ExperimentSelectorModal.vue'
|
|
150
|
-
export { default as ArtifactSelectorModal } from './ArtifactSelectorModal.vue'
|
|
151
|
-
/** Modal picker over the read-only server mounts, recording paths rather than copying data. */
|
|
152
|
-
export { default as GeneratedPathInput } from './GeneratedPathInput.vue'
|
|
153
|
-
export { default as ArtifactSaveDialog } from './ArtifactSaveDialog.vue'
|
|
154
|
-
export { default as ExperimentPopover } from './ExperimentPopover.vue'
|
|
155
|
-
/** Control panel for running a curve-fit job with progress bar, results table, and error display. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
156
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as FitPanel } from './FitPanel.vue'
|
|
157
|
-
|
|
158
|
-
export { default as FilePicker } from './FilePicker.vue'
|
package/src/components/{AutoGroupModal.adapter.ts → internal/AutoGroupModalInternal.adapter.ts}
RENAMED
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
* Pure adapters mapping the `useAutoGroup` engine state to the controlled
|
|
3
3
|
* Smart Group UI (`SmartGroupFieldRecipe` / `SmartGroupManual`) and back to an
|
|
4
4
|
* `AutoGroupResult`. Framework-free so the mapping is unit-testable in isolation
|
|
5
|
-
* from `
|
|
5
|
+
* from `AutoGroupModalInternal.vue`.
|
|
6
6
|
*/
|
|
7
|
-
import type { AutoGroupResult, ClassSchema, ColumnInfo, ColumnRole, SampleClass } from '
|
|
8
|
-
import type { SampleGroup } from '
|
|
9
|
-
import type { FieldRecipeGroup, QcRoute, SmartGroupField } from '
|
|
10
|
-
import type { ManualSample } from '
|
|
11
|
-
import type { FieldRecipeAnatomyToken, FieldRecipeQcChip, SmartGroupSeed } from '
|
|
12
|
-
import { GROUPING_FIELD_ROLES, classKey, isExperimentalKind } from '
|
|
13
|
-
import type { ExperimentHeader } from '
|
|
7
|
+
import type { AutoGroupResult, ClassSchema, ColumnInfo, ColumnRole, SampleClass } from '../../types/auto-group'
|
|
8
|
+
import type { SampleGroup } from '../../types'
|
|
9
|
+
import type { FieldRecipeGroup, QcRoute, SmartGroupField } from '../SmartGroupFieldRecipe.groups'
|
|
10
|
+
import type { ManualSample } from '../SmartGroupManual.cohorts'
|
|
11
|
+
import type { FieldRecipeAnatomyToken, FieldRecipeQcChip, SmartGroupSeed } from '../SmartGroup.types'
|
|
12
|
+
import { GROUPING_FIELD_ROLES, classKey, isExperimentalKind } from './autoGroup'
|
|
13
|
+
import type { ExperimentHeader } from './autoGroup'
|
|
14
14
|
|
|
15
15
|
const PREVIEW_VALUES = 3
|
|
16
16
|
|
|
@@ -5,17 +5,17 @@
|
|
|
5
5
|
* staying wired to the `useAutoGroup` engine. The UI is the Smart Group design
|
|
6
6
|
* (`SmartGroupFieldRecipe` / `SmartGroupManual`) driven in controlled mode; this
|
|
7
7
|
* component is the adapter that maps engine state ↔ that UI and emits the
|
|
8
|
-
* resulting `AutoGroupResult`.
|
|
9
|
-
*
|
|
8
|
+
* resulting `AutoGroupResult`. Private to `SampleSelector`, which emits that
|
|
9
|
+
* result as its `smartGroup` event.
|
|
10
10
|
*/
|
|
11
11
|
import { ref, computed, watch } from 'vue'
|
|
12
|
-
import BaseModal from '
|
|
13
|
-
import AlertBox from '
|
|
14
|
-
import SmartGroupFieldRecipe from '
|
|
15
|
-
import SmartGroupManual from '
|
|
16
|
-
import { useAutoGroup, parseCSV } from '
|
|
17
|
-
import { useApi } from '
|
|
18
|
-
import { readFileAsText } from '
|
|
12
|
+
import BaseModal from '../BaseModal.vue'
|
|
13
|
+
import AlertBox from '../AlertBox.vue'
|
|
14
|
+
import SmartGroupFieldRecipe from '../SmartGroupFieldRecipe.vue'
|
|
15
|
+
import SmartGroupManual from '../SmartGroupManual.vue'
|
|
16
|
+
import { useAutoGroup, parseCSV } from './useAutoGroup'
|
|
17
|
+
import { useApi } from '../../composables/useApi'
|
|
18
|
+
import { readFileAsText } from '../../composables/useFileImport'
|
|
19
19
|
import {
|
|
20
20
|
engineAnatomy,
|
|
21
21
|
engineColumnNames,
|
|
@@ -27,18 +27,18 @@ import {
|
|
|
27
27
|
manualSamplesToResult,
|
|
28
28
|
qcRouteToEngine,
|
|
29
29
|
seedFromGroups,
|
|
30
|
-
} from './
|
|
31
|
-
import { SAMPLE_GROUP_COLOR_OPTIONS } from '
|
|
32
|
-
import { mostlySingletons, type QcRoute } from '
|
|
33
|
-
import type { ManualSample } from '
|
|
34
|
-
import type { ManualPaletteEntry } from '
|
|
35
|
-
import type { AutoGroupResult } from '
|
|
36
|
-
import type { SampleGroup } from '
|
|
30
|
+
} from './AutoGroupModalInternal.adapter'
|
|
31
|
+
import { SAMPLE_GROUP_COLOR_OPTIONS } from '../SampleSelector.colors'
|
|
32
|
+
import { mostlySingletons, type QcRoute } from '../SmartGroupFieldRecipe.groups'
|
|
33
|
+
import type { ManualSample } from '../SmartGroupManual.cohorts'
|
|
34
|
+
import type { ManualPaletteEntry } from '../SmartGroup.types'
|
|
35
|
+
import type { AutoGroupResult } from '../../types/auto-group'
|
|
36
|
+
import type { SampleGroup } from '../../types'
|
|
37
37
|
|
|
38
38
|
type GroupingWorkflow = 'auto' | 'manual'
|
|
39
39
|
|
|
40
40
|
export interface Props {
|
|
41
|
-
|
|
41
|
+
open: boolean
|
|
42
42
|
samples?: string[]
|
|
43
43
|
groups?: SampleGroup[]
|
|
44
44
|
initialMode?: GroupingWorkflow
|
|
@@ -56,7 +56,7 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
56
56
|
})
|
|
57
57
|
|
|
58
58
|
const emit = defineEmits<{
|
|
59
|
-
'update:
|
|
59
|
+
'update:open': [value: boolean]
|
|
60
60
|
'apply': [result: AutoGroupResult]
|
|
61
61
|
}>()
|
|
62
62
|
|
|
@@ -206,7 +206,7 @@ function applyManual(payload: { samples: ManualSample[] }) {
|
|
|
206
206
|
}
|
|
207
207
|
|
|
208
208
|
function close() {
|
|
209
|
-
emit('update:
|
|
209
|
+
emit('update:open', false)
|
|
210
210
|
}
|
|
211
211
|
|
|
212
212
|
async function fetchExperimentData() {
|
|
@@ -242,7 +242,7 @@ async function fetchExperimentData() {
|
|
|
242
242
|
// comes from the `samples` / `designData` / `experimentId` props exactly as
|
|
243
243
|
// before — the redesign just drops the multi-step input/schema/merge UI.
|
|
244
244
|
watch(
|
|
245
|
-
() => props.
|
|
245
|
+
() => props.open,
|
|
246
246
|
(open) => {
|
|
247
247
|
if (!open) return
|
|
248
248
|
activeWorkflow.value = props.initialMode
|
|
@@ -268,14 +268,14 @@ watch(
|
|
|
268
268
|
<template>
|
|
269
269
|
<BaseModal
|
|
270
270
|
class="sg-host"
|
|
271
|
-
:
|
|
271
|
+
:open="open"
|
|
272
272
|
:closable="false"
|
|
273
273
|
:close-on-overlay="false"
|
|
274
274
|
:close-on-escape="false"
|
|
275
275
|
size="lg"
|
|
276
|
-
@update:
|
|
276
|
+
@update:open="emit('update:open', $event)"
|
|
277
277
|
>
|
|
278
|
-
<AlertBox v-if="experimentError"
|
|
278
|
+
<AlertBox v-if="experimentError" tone="error" class="sg-host__error">
|
|
279
279
|
{{ experimentError }}
|
|
280
280
|
</AlertBox>
|
|
281
281
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
/**
|
|
3
|
-
import Tooltip from '
|
|
2
|
+
/** BaseCheckbox with `type="switch"`: an on/off switch with label, size, and keyboard interaction support. */
|
|
3
|
+
import Tooltip from '../Tooltip.vue'
|
|
4
4
|
|
|
5
5
|
interface Props {
|
|
6
6
|
modelValue?: boolean
|
|
@@ -14,7 +14,7 @@ interface Props {
|
|
|
14
14
|
disabled?: boolean
|
|
15
15
|
size?: 'sm' | 'md' | 'lg'
|
|
16
16
|
reverse?: boolean
|
|
17
|
-
|
|
17
|
+
layout?: 'inline' | 'row'
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
const props = withDefaults(defineProps<Props>(), {
|
|
@@ -22,7 +22,7 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
22
22
|
disabled: false,
|
|
23
23
|
size: 'md',
|
|
24
24
|
reverse: false,
|
|
25
|
-
|
|
25
|
+
layout: 'inline',
|
|
26
26
|
})
|
|
27
27
|
|
|
28
28
|
const emit = defineEmits<{
|
|
@@ -58,7 +58,7 @@ function iconStyle(): Record<string, string> {
|
|
|
58
58
|
<div
|
|
59
59
|
:class="[
|
|
60
60
|
'mint-toggle',
|
|
61
|
-
`mint-toggle--${
|
|
61
|
+
`mint-toggle--${layout}`,
|
|
62
62
|
reverse ? 'mint-toggle--reverse' : '',
|
|
63
63
|
disabled ? 'mint-toggle--disabled' : '',
|
|
64
64
|
modelValue ? 'mint-toggle--checked' : '',
|
|
@@ -66,7 +66,7 @@ function iconStyle(): Record<string, string> {
|
|
|
66
66
|
@click="toggle"
|
|
67
67
|
>
|
|
68
68
|
<span
|
|
69
|
-
v-if="
|
|
69
|
+
v-if="layout === 'row' && icon"
|
|
70
70
|
class="mint-toggle__row-icon"
|
|
71
71
|
:style="iconStyle()"
|
|
72
72
|
aria-hidden="true"
|
|
@@ -89,7 +89,7 @@ function iconStyle(): Record<string, string> {
|
|
|
89
89
|
<span v-else class="mint-toggle__row-text-icon">{{ icon }}</span>
|
|
90
90
|
</span>
|
|
91
91
|
<span
|
|
92
|
-
v-if="
|
|
92
|
+
v-if="layout === 'row' && label"
|
|
93
93
|
class="mint-toggle__copy"
|
|
94
94
|
>
|
|
95
95
|
<Tooltip
|
|
@@ -124,7 +124,7 @@ function iconStyle(): Record<string, string> {
|
|
|
124
124
|
<span :class="['mint-toggle__knob', `mint-toggle__knob--${size}`]" />
|
|
125
125
|
</div>
|
|
126
126
|
<span
|
|
127
|
-
v-if="label &&
|
|
127
|
+
v-if="label && layout !== 'row'"
|
|
128
128
|
:class="['mint-toggle__label', `mint-toggle__label--${size}`]"
|
|
129
129
|
>
|
|
130
130
|
{{ label }}
|
|
@@ -61,7 +61,7 @@ const spinnerSize = computed(() => (props.size === 'sm' ? 'sm' : props.size ===
|
|
|
61
61
|
:title="title"
|
|
62
62
|
:description="description"
|
|
63
63
|
:icon-path="state === 'error' ? ERROR_ICON_PATH : iconPath"
|
|
64
|
-
:
|
|
64
|
+
:tone="state === 'error' ? 'error' : 'neutral'"
|
|
65
65
|
:size="size"
|
|
66
66
|
:variant="variant"
|
|
67
67
|
:action-label="actionLabel"
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
/** DatePicker type="date": input that opens a calendar dropdown for selecting a single date, with clearable support. */
|
|
3
|
+
import { autoUpdate, computePosition, flip, offset, shift } from '@floating-ui/dom'
|
|
4
|
+
import { ref, computed, nextTick, onBeforeUnmount, watch, useTemplateRef } from 'vue'
|
|
5
|
+
import { useCalendarGrid, type CalendarGridDay } from '../../composables/useCalendarGrid'
|
|
6
|
+
import { useDropdownState } from '../../composables/useDropdownState'
|
|
7
|
+
import { useFocusTrap } from '../../composables/useFocusTrap'
|
|
8
|
+
import CalendarGridPanelInternal from './CalendarGridPanelInternal.vue'
|
|
9
|
+
|
|
10
|
+
interface Props {
|
|
11
|
+
modelValue?: string
|
|
12
|
+
placeholder?: string
|
|
13
|
+
disabled?: boolean
|
|
14
|
+
invalid?: boolean
|
|
15
|
+
size?: 'sm' | 'md' | 'lg'
|
|
16
|
+
min?: string
|
|
17
|
+
max?: string
|
|
18
|
+
clearable?: boolean
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const props = withDefaults(defineProps<Props>(), {
|
|
22
|
+
disabled: false,
|
|
23
|
+
invalid: false,
|
|
24
|
+
size: 'md',
|
|
25
|
+
clearable: true,
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
const emit = defineEmits<{
|
|
29
|
+
'update:modelValue': [value: string | undefined]
|
|
30
|
+
}>()
|
|
31
|
+
|
|
32
|
+
const dropdownRef = ref<HTMLElement | null>(null)
|
|
33
|
+
const dropdownStyle = ref<Record<string, string>>({})
|
|
34
|
+
const { isOpen, triggerRef, open, close, toggle } = useDropdownState({
|
|
35
|
+
rootRef: useTemplateRef<HTMLElement>('container'),
|
|
36
|
+
insideRefs: [dropdownRef],
|
|
37
|
+
})
|
|
38
|
+
// The panel is a non-modal dialog: Tab cycles inside it while it is open, and
|
|
39
|
+
// focus returns to the input when it closes.
|
|
40
|
+
useFocusTrap({ containerRef: dropdownRef, active: isOpen })
|
|
41
|
+
const {
|
|
42
|
+
weekDays,
|
|
43
|
+
monthYear,
|
|
44
|
+
calendarDays,
|
|
45
|
+
isDateDisabled,
|
|
46
|
+
formatDateValue,
|
|
47
|
+
setCurrentMonthFromDate,
|
|
48
|
+
prevMonth,
|
|
49
|
+
nextMonth,
|
|
50
|
+
} = useCalendarGrid({
|
|
51
|
+
min: () => props.min,
|
|
52
|
+
max: () => props.max,
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
const selectedDate = computed(() => {
|
|
56
|
+
if (!props.modelValue) return null
|
|
57
|
+
const date = new Date(props.modelValue + 'T00:00:00')
|
|
58
|
+
return isNaN(date.getTime()) ? null : date
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
const displayValue = computed(() => {
|
|
62
|
+
if (!selectedDate.value) return ''
|
|
63
|
+
return selectedDate.value.toLocaleDateString('en-US', {
|
|
64
|
+
year: 'numeric',
|
|
65
|
+
month: 'short',
|
|
66
|
+
day: 'numeric',
|
|
67
|
+
})
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
function selectDate(day: CalendarGridDay) {
|
|
71
|
+
if (day.isDisabled || props.disabled) return
|
|
72
|
+
emit('update:modelValue', formatDateValue(day.date))
|
|
73
|
+
close()
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function goToToday() {
|
|
77
|
+
const today = new Date()
|
|
78
|
+
setCurrentMonthFromDate(today)
|
|
79
|
+
if (!isDateDisabled(today)) {
|
|
80
|
+
emit('update:modelValue', formatDateValue(today))
|
|
81
|
+
close()
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function clear() {
|
|
86
|
+
emit('update:modelValue', undefined)
|
|
87
|
+
close()
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function toggleCalendar() {
|
|
91
|
+
if (props.disabled) return
|
|
92
|
+
toggle()
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function handleTriggerKeydown(event: KeyboardEvent) {
|
|
96
|
+
if (props.disabled || isOpen.value) return
|
|
97
|
+
if (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown') {
|
|
98
|
+
event.preventDefault()
|
|
99
|
+
open()
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// floating-ui keeps the panel anchored (flip/shift) while the page scrolls,
|
|
104
|
+
// instead of the panel closing on every scroll or resize.
|
|
105
|
+
let stopAutoUpdate: (() => void) | null = null
|
|
106
|
+
|
|
107
|
+
async function updateDropdownPosition() {
|
|
108
|
+
const trigger = triggerRef.value
|
|
109
|
+
const panel = dropdownRef.value
|
|
110
|
+
if (!trigger || !panel) return
|
|
111
|
+
|
|
112
|
+
const { x, y } = await computePosition(trigger, panel, {
|
|
113
|
+
placement: 'bottom-start',
|
|
114
|
+
strategy: 'fixed',
|
|
115
|
+
middleware: [offset(4), flip(), shift({ padding: 8 })],
|
|
116
|
+
})
|
|
117
|
+
dropdownStyle.value = {
|
|
118
|
+
position: 'fixed',
|
|
119
|
+
top: `${y}px`,
|
|
120
|
+
left: `${x}px`,
|
|
121
|
+
zIndex: '9999',
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
function stopPositioning() {
|
|
126
|
+
stopAutoUpdate?.()
|
|
127
|
+
stopAutoUpdate = null
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
function startPositioning() {
|
|
131
|
+
const trigger = triggerRef.value
|
|
132
|
+
const panel = dropdownRef.value
|
|
133
|
+
if (!trigger || !panel) return
|
|
134
|
+
stopPositioning()
|
|
135
|
+
stopAutoUpdate = autoUpdate(trigger, panel, () => void updateDropdownPosition())
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/** Moves focus into the calendar grid: selected day, else today, else the first day. */
|
|
139
|
+
function focusCalendar() {
|
|
140
|
+
const panel = dropdownRef.value
|
|
141
|
+
if (!panel) return
|
|
142
|
+
const target =
|
|
143
|
+
panel.querySelector<HTMLElement>('.mint-date-picker__day--selected') ??
|
|
144
|
+
panel.querySelector<HTMLElement>('.mint-date-picker__day--today') ??
|
|
145
|
+
panel.querySelector<HTMLElement>('.mint-date-picker__day:not([disabled])')
|
|
146
|
+
target?.focus()
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
watch(isOpen, async (opened) => {
|
|
150
|
+
if (!opened) {
|
|
151
|
+
stopPositioning()
|
|
152
|
+
return
|
|
153
|
+
}
|
|
154
|
+
if (selectedDate.value) {
|
|
155
|
+
setCurrentMonthFromDate(selectedDate.value)
|
|
156
|
+
}
|
|
157
|
+
await nextTick()
|
|
158
|
+
startPositioning()
|
|
159
|
+
// A second tick so this focus lands after the focus trap's initial focus.
|
|
160
|
+
await nextTick()
|
|
161
|
+
focusCalendar()
|
|
162
|
+
})
|
|
163
|
+
|
|
164
|
+
onBeforeUnmount(stopPositioning)
|
|
165
|
+
</script>
|
|
166
|
+
|
|
167
|
+
<template>
|
|
168
|
+
<div ref="container" class="mint-date-picker">
|
|
169
|
+
<div class="mint-date-picker__input-wrapper">
|
|
170
|
+
<input
|
|
171
|
+
ref="triggerRef"
|
|
172
|
+
type="text"
|
|
173
|
+
readonly
|
|
174
|
+
aria-haspopup="dialog"
|
|
175
|
+
:aria-expanded="isOpen"
|
|
176
|
+
:value="displayValue"
|
|
177
|
+
:placeholder="placeholder || 'Select date'"
|
|
178
|
+
:disabled="disabled"
|
|
179
|
+
:class="[
|
|
180
|
+
'mint-date-picker__input',
|
|
181
|
+
`mint-date-picker__input--${size}`,
|
|
182
|
+
invalid ? 'mint-date-picker__input--error' : '',
|
|
183
|
+
disabled ? 'mint-date-picker__input--disabled' : '',
|
|
184
|
+
]"
|
|
185
|
+
@click="toggleCalendar"
|
|
186
|
+
@keydown="handleTriggerKeydown"
|
|
187
|
+
/>
|
|
188
|
+
<div class="mint-date-picker__icon">
|
|
189
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
190
|
+
<path d="M8 2v4" /><path d="M16 2v4" /><rect width="18" height="18" x="3" y="4" rx="2" /><path d="M3 10h18" />
|
|
191
|
+
</svg>
|
|
192
|
+
</div>
|
|
193
|
+
</div>
|
|
194
|
+
|
|
195
|
+
<Teleport to="body">
|
|
196
|
+
<Transition
|
|
197
|
+
enter-active-class="mint-date-picker__dropdown-enter-active"
|
|
198
|
+
enter-from-class="mint-date-picker__dropdown-enter-from"
|
|
199
|
+
enter-to-class="mint-date-picker__dropdown-enter-to"
|
|
200
|
+
leave-active-class="mint-date-picker__dropdown-leave-active"
|
|
201
|
+
leave-from-class="mint-date-picker__dropdown-leave-from"
|
|
202
|
+
leave-to-class="mint-date-picker__dropdown-leave-to"
|
|
203
|
+
>
|
|
204
|
+
<div
|
|
205
|
+
v-if="isOpen"
|
|
206
|
+
ref="dropdownRef"
|
|
207
|
+
class="mint-popover mint-date-picker__dropdown"
|
|
208
|
+
:style="dropdownStyle"
|
|
209
|
+
role="dialog"
|
|
210
|
+
aria-label="Date picker"
|
|
211
|
+
>
|
|
212
|
+
<CalendarGridPanelInternal
|
|
213
|
+
:week-days="weekDays"
|
|
214
|
+
:month-year="monthYear"
|
|
215
|
+
:days="calendarDays"
|
|
216
|
+
:selected-date="selectedDate"
|
|
217
|
+
@previous-month="prevMonth"
|
|
218
|
+
@next-month="nextMonth"
|
|
219
|
+
@select="selectDate"
|
|
220
|
+
/>
|
|
221
|
+
|
|
222
|
+
<div class="mint-date-picker__footer">
|
|
223
|
+
<button
|
|
224
|
+
type="button"
|
|
225
|
+
class="mint-date-picker__footer-btn mint-date-picker__today-btn"
|
|
226
|
+
@click="goToToday"
|
|
227
|
+
>
|
|
228
|
+
Today
|
|
229
|
+
</button>
|
|
230
|
+
<button
|
|
231
|
+
v-if="clearable && modelValue"
|
|
232
|
+
type="button"
|
|
233
|
+
class="mint-date-picker__footer-btn mint-date-picker__clear-btn"
|
|
234
|
+
@click="clear"
|
|
235
|
+
>
|
|
236
|
+
Clear
|
|
237
|
+
</button>
|
|
238
|
+
</div>
|
|
239
|
+
</div>
|
|
240
|
+
</Transition>
|
|
241
|
+
</Teleport>
|
|
242
|
+
</div>
|
|
243
|
+
</template>
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
/**
|
|
2
|
+
/** DatePicker type="datetime": combined date and time picker with a dropdown calendar, time slots, and 12/24 h format support. */
|
|
3
3
|
import { computed, ref, watch, nextTick, useTemplateRef } from 'vue'
|
|
4
|
-
import { useCalendarGrid, type CalendarGridDay } from '
|
|
5
|
-
import { useDropdownState } from '
|
|
6
|
-
import { useFocusTrap } from '
|
|
7
|
-
import { formatTime, formatTimeSlot, generateTimeSlots, toMinutes } from '
|
|
8
|
-
import CalendarGridPanelInternal from './
|
|
4
|
+
import { useCalendarGrid, type CalendarGridDay } from '../../composables/useCalendarGrid'
|
|
5
|
+
import { useDropdownState } from '../../composables/useDropdownState'
|
|
6
|
+
import { useFocusTrap } from '../../composables/useFocusTrap'
|
|
7
|
+
import { formatTime, formatTimeSlot, generateTimeSlots, toMinutes } from '../../utils/time'
|
|
8
|
+
import CalendarGridPanelInternal from './CalendarGridPanelInternal.vue'
|
|
9
9
|
|
|
10
10
|
interface Props {
|
|
11
11
|
modelValue?: string
|
|
12
12
|
placeholder?: string
|
|
13
13
|
disabled?: boolean
|
|
14
|
-
|
|
14
|
+
invalid?: boolean
|
|
15
15
|
size?: 'sm' | 'md' | 'lg'
|
|
16
16
|
min?: string
|
|
17
17
|
max?: string
|
|
@@ -24,7 +24,7 @@ interface Props {
|
|
|
24
24
|
const props = withDefaults(defineProps<Props>(), {
|
|
25
25
|
placeholder: 'Select date & time',
|
|
26
26
|
disabled: false,
|
|
27
|
-
|
|
27
|
+
invalid: false,
|
|
28
28
|
size: 'md',
|
|
29
29
|
timeStep: 15,
|
|
30
30
|
timeFormat: '24h',
|
|
@@ -214,7 +214,7 @@ watch(isOpen, async (opened) => {
|
|
|
214
214
|
:class="[
|
|
215
215
|
'mint-datetime-picker__input',
|
|
216
216
|
`mint-datetime-picker__input--${size}`,
|
|
217
|
-
|
|
217
|
+
invalid ? 'mint-datetime-picker__input--error' : '',
|
|
218
218
|
disabled ? 'mint-datetime-picker__input--disabled' : '',
|
|
219
219
|
]"
|
|
220
220
|
aria-label="Select date and time"
|