@morscherlab/mint-sdk 1.3.9 → 1.4.0-beta.1
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
|
@@ -11,7 +11,7 @@ describe('SettingsModal', () => {
|
|
|
11
11
|
function mountSettingsModal(props = {}, slots = {}, pinia = createPinia()) {
|
|
12
12
|
return mount(SettingsModal, {
|
|
13
13
|
props: {
|
|
14
|
-
|
|
14
|
+
open: true,
|
|
15
15
|
showAppearance: false,
|
|
16
16
|
...props,
|
|
17
17
|
},
|
|
@@ -77,10 +77,10 @@ describe('SettingsModal', () => {
|
|
|
77
77
|
],
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
const wrapper = mountSettingsModal({
|
|
80
|
+
const wrapper = mountSettingsModal({ spec: baseSchema, layout: 'horizontal' })
|
|
81
81
|
|
|
82
82
|
await wrapper.find('.mint-settings-modal input').setValue('0.5')
|
|
83
|
-
await wrapper.setProps({
|
|
83
|
+
await wrapper.setProps({ spec: nextSchema })
|
|
84
84
|
|
|
85
85
|
// "1" = the tab's modified-from-default count (threshold 0.1 → 0.5).
|
|
86
86
|
const tabs = wrapper.findAll('.mint-modal__tab')
|
|
@@ -119,12 +119,12 @@ describe('SettingsModal', () => {
|
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
const wrapper = mountSettingsModal({
|
|
122
|
-
|
|
122
|
+
spec: baseSchema,
|
|
123
123
|
values: { threshold: '0.25' },
|
|
124
124
|
})
|
|
125
125
|
|
|
126
126
|
await wrapper.find('.mint-settings-modal input').setValue('0.5')
|
|
127
|
-
await wrapper.setProps({
|
|
127
|
+
await wrapper.setProps({ spec: nextSchema })
|
|
128
128
|
|
|
129
129
|
const inputs = wrapper.findAll('.mint-settings-modal input')
|
|
130
130
|
expect((inputs[0].element as HTMLInputElement).value).toBe('0.25')
|
|
@@ -148,7 +148,7 @@ describe('SettingsModal', () => {
|
|
|
148
148
|
],
|
|
149
149
|
}
|
|
150
150
|
const wrapper = mountSettingsModal({
|
|
151
|
-
schema,
|
|
151
|
+
spec: schema,
|
|
152
152
|
values: {
|
|
153
153
|
threshold: 0.25,
|
|
154
154
|
database_url: '**********',
|
|
@@ -163,7 +163,7 @@ describe('SettingsModal', () => {
|
|
|
163
163
|
})
|
|
164
164
|
})
|
|
165
165
|
|
|
166
|
-
it('renders
|
|
166
|
+
it('renders a control model as schema-driven settings', async () => {
|
|
167
167
|
const controls: ControlSchema = {
|
|
168
168
|
threshold: {
|
|
169
169
|
label: 'Threshold',
|
|
@@ -180,7 +180,7 @@ describe('SettingsModal', () => {
|
|
|
180
180
|
},
|
|
181
181
|
}
|
|
182
182
|
|
|
183
|
-
const wrapper = mountSettingsModal({ controls, layout: 'horizontal' })
|
|
183
|
+
const wrapper = mountSettingsModal({ spec: defineControlModel({ controls }), layout: 'horizontal' })
|
|
184
184
|
|
|
185
185
|
const tabs = wrapper.findAll('.mint-modal__tab')
|
|
186
186
|
expect(tabs.map(tab => tab.text())).toEqual(['Parameters', 'Advanced'])
|
|
@@ -196,7 +196,7 @@ describe('SettingsModal', () => {
|
|
|
196
196
|
})
|
|
197
197
|
})
|
|
198
198
|
|
|
199
|
-
it('uses
|
|
199
|
+
it('uses the control model initialValues over control defaults', async () => {
|
|
200
200
|
const controls: ControlSchema = {
|
|
201
201
|
threshold: {
|
|
202
202
|
label: 'Threshold',
|
|
@@ -213,13 +213,13 @@ describe('SettingsModal', () => {
|
|
|
213
213
|
}
|
|
214
214
|
|
|
215
215
|
const wrapper = mountSettingsModal({
|
|
216
|
-
|
|
217
|
-
|
|
216
|
+
spec: defineControlModel({
|
|
217
|
+
controls,
|
|
218
218
|
initialValues: {
|
|
219
219
|
threshold: 0.35,
|
|
220
220
|
method: 'logistic',
|
|
221
221
|
},
|
|
222
|
-
},
|
|
222
|
+
}),
|
|
223
223
|
})
|
|
224
224
|
|
|
225
225
|
expect((wrapper.find('.mint-settings-modal input').element as HTMLInputElement).value).toBe('0.35')
|
|
@@ -251,7 +251,7 @@ describe('SettingsModal', () => {
|
|
|
251
251
|
},
|
|
252
252
|
})
|
|
253
253
|
|
|
254
|
-
const wrapper = mountSettingsModal({ model })
|
|
254
|
+
const wrapper = mountSettingsModal({ spec: model })
|
|
255
255
|
|
|
256
256
|
expect(wrapper.text()).toContain('Threshold')
|
|
257
257
|
expect(wrapper.text()).toContain('Method')
|
|
@@ -265,42 +265,7 @@ describe('SettingsModal', () => {
|
|
|
265
265
|
})
|
|
266
266
|
})
|
|
267
267
|
|
|
268
|
-
it('
|
|
269
|
-
const model = defineControlModel({
|
|
270
|
-
initialValues: {
|
|
271
|
-
threshold: 0.75,
|
|
272
|
-
method: 'logistic',
|
|
273
|
-
},
|
|
274
|
-
views: {
|
|
275
|
-
run: {
|
|
276
|
-
label: 'Run',
|
|
277
|
-
sections: {
|
|
278
|
-
parameters: {
|
|
279
|
-
label: 'Parameters',
|
|
280
|
-
controls: {
|
|
281
|
-
threshold: { label: 'Threshold', default: 0.25 },
|
|
282
|
-
method: { label: 'Method', default: 'linear', options: ['linear', 'logistic'] },
|
|
283
|
-
},
|
|
284
|
-
},
|
|
285
|
-
},
|
|
286
|
-
},
|
|
287
|
-
},
|
|
288
|
-
})
|
|
289
|
-
|
|
290
|
-
const wrapper = mountSettingsModal({
|
|
291
|
-
model,
|
|
292
|
-
controlOptions: {
|
|
293
|
-
initialValues: {
|
|
294
|
-
method: 'linear',
|
|
295
|
-
},
|
|
296
|
-
},
|
|
297
|
-
})
|
|
298
|
-
|
|
299
|
-
expect((wrapper.find('.mint-settings-modal input').element as HTMLInputElement).value).toBe('0.75')
|
|
300
|
-
expect((wrapper.find('select').element as HTMLSelectElement).value).toBe('linear')
|
|
301
|
-
})
|
|
302
|
-
|
|
303
|
-
it('activates compact controls that are loaded after mount', async () => {
|
|
268
|
+
it('activates a control model that is loaded after mount', async () => {
|
|
304
269
|
const controls: ControlSchema = {
|
|
305
270
|
threshold: {
|
|
306
271
|
label: 'Threshold',
|
|
@@ -318,7 +283,7 @@ describe('SettingsModal', () => {
|
|
|
318
283
|
|
|
319
284
|
expect(wrapper.find('.manual-tab').exists()).toBe(true)
|
|
320
285
|
|
|
321
|
-
await wrapper.setProps({ controls })
|
|
286
|
+
await wrapper.setProps({ spec: defineControlModel({ controls }) })
|
|
322
287
|
|
|
323
288
|
expect(wrapper.text()).toContain('Threshold')
|
|
324
289
|
expect(wrapper.find('.manual-tab').exists()).toBe(false)
|
|
@@ -351,14 +316,14 @@ describe('SettingsModal', () => {
|
|
|
351
316
|
],
|
|
352
317
|
}
|
|
353
318
|
|
|
354
|
-
const userWrapper = mountSettingsModal({ schema, userType: 'user' })
|
|
319
|
+
const userWrapper = mountSettingsModal({ spec: schema, userType: 'user' })
|
|
355
320
|
|
|
356
321
|
expect(userWrapper.text()).toContain('Common')
|
|
357
322
|
expect(userWrapper.text()).toContain('User Note')
|
|
358
323
|
expect(userWrapper.text()).not.toContain('Admin Secret')
|
|
359
324
|
expect(userWrapper.text()).not.toContain('Admin Only')
|
|
360
325
|
|
|
361
|
-
const adminWrapper = mountSettingsModal({ schema, userType: 'admin', layout: 'horizontal' })
|
|
326
|
+
const adminWrapper = mountSettingsModal({ spec: schema, userType: 'admin', layout: 'horizontal' })
|
|
362
327
|
|
|
363
328
|
expect(adminWrapper.findAll('.mint-modal__tab').map(tab => tab.text())).toEqual([
|
|
364
329
|
'General',
|
|
@@ -376,7 +341,7 @@ describe('SettingsModal', () => {
|
|
|
376
341
|
it('uses SDK auth permissions when no user type override is passed', () => {
|
|
377
342
|
const pinia = createPinia()
|
|
378
343
|
const auth = useAuthStore(pinia)
|
|
379
|
-
auth.
|
|
344
|
+
auth.userInfo = ({
|
|
380
345
|
id: 1,
|
|
381
346
|
username: 'admin',
|
|
382
347
|
shortname: null,
|
|
@@ -402,7 +367,7 @@ describe('SettingsModal', () => {
|
|
|
402
367
|
],
|
|
403
368
|
}
|
|
404
369
|
|
|
405
|
-
const wrapper = mountSettingsModal({ schema }, {}, pinia)
|
|
370
|
+
const wrapper = mountSettingsModal({ spec: schema }, {}, pinia)
|
|
406
371
|
|
|
407
372
|
expect(wrapper.text()).toContain('Registry')
|
|
408
373
|
expect(wrapper.text()).not.toContain('Danger Zone')
|
|
@@ -410,7 +375,7 @@ describe('SettingsModal', () => {
|
|
|
410
375
|
|
|
411
376
|
it('should hide an admin-only group from a non-admin when the Python SDK marks it admin', () => {
|
|
412
377
|
const pinia = createPinia()
|
|
413
|
-
useAuthStore(pinia).
|
|
378
|
+
useAuthStore(pinia).userInfo = ({
|
|
414
379
|
id: 2,
|
|
415
380
|
username: 'member',
|
|
416
381
|
shortname: null,
|
|
@@ -432,11 +397,38 @@ describe('SettingsModal', () => {
|
|
|
432
397
|
],
|
|
433
398
|
}
|
|
434
399
|
|
|
435
|
-
const wrapper = mountSettingsModal({ schema }, {}, pinia)
|
|
400
|
+
const wrapper = mountSettingsModal({ spec: schema }, {}, pinia)
|
|
436
401
|
|
|
437
402
|
expect(wrapper.text()).not.toContain('NAS root')
|
|
438
403
|
})
|
|
439
404
|
|
|
405
|
+
it.each([
|
|
406
|
+
[false, true],
|
|
407
|
+
[true, false],
|
|
408
|
+
])('should show an admin-only group to an integrated page with no user when authRequired is %s', (authRequired, shown) => {
|
|
409
|
+
// With sign-in turned off every caller is the implicit administrator.
|
|
410
|
+
const injected = window as Window & { __MINT_PLATFORM__?: unknown }
|
|
411
|
+
injected.__MINT_PLATFORM__ = { isIntegrated: true, authRequired, platformOrigin: '', platformApiUrl: '/api', features: {} }
|
|
412
|
+
try {
|
|
413
|
+
const schema: SettingsModalSchema = {
|
|
414
|
+
groups: [
|
|
415
|
+
{
|
|
416
|
+
id: 'storage',
|
|
417
|
+
label: 'Storage',
|
|
418
|
+
access: { requiresAdmin: true },
|
|
419
|
+
fields: [{ name: 'nasRoot', label: 'NAS root', type: 'text' }],
|
|
420
|
+
},
|
|
421
|
+
],
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
const wrapper = mountSettingsModal({ spec: schema })
|
|
425
|
+
|
|
426
|
+
expect(wrapper.text().includes('NAS root')).toBe(shown)
|
|
427
|
+
} finally {
|
|
428
|
+
delete injected.__MINT_PLATFORM__
|
|
429
|
+
}
|
|
430
|
+
})
|
|
431
|
+
|
|
440
432
|
it('should read access rules only from the nested access policy', () => {
|
|
441
433
|
// The flat duplicates were removed in 1.3; a leftover flat key no longer gates anything.
|
|
442
434
|
const schema = {
|
|
@@ -450,7 +442,7 @@ describe('SettingsModal', () => {
|
|
|
450
442
|
],
|
|
451
443
|
} as unknown as SettingsModalSchema
|
|
452
444
|
|
|
453
|
-
const wrapper = mountSettingsModal({ schema, userType: 'user' })
|
|
445
|
+
const wrapper = mountSettingsModal({ spec: schema, userType: 'user' })
|
|
454
446
|
|
|
455
447
|
expect(wrapper.text()).toContain('Legacy field')
|
|
456
448
|
})
|
|
@@ -517,25 +509,25 @@ describe('SettingsModal', () => {
|
|
|
517
509
|
}
|
|
518
510
|
|
|
519
511
|
it('should render the rail when the schema has more than three groups', () => {
|
|
520
|
-
const wrapper = mountSettingsModal({
|
|
512
|
+
const wrapper = mountSettingsModal({ spec: railSchema })
|
|
521
513
|
|
|
522
514
|
expect(wrapper.find('.mint-modal__rail').exists()).toBe(true)
|
|
523
515
|
})
|
|
524
516
|
|
|
525
517
|
it('should stack every group without a rail when the schema has three groups or fewer', () => {
|
|
526
|
-
const wrapper = mountSettingsModal({
|
|
518
|
+
const wrapper = mountSettingsModal({ spec: shortSchema })
|
|
527
519
|
|
|
528
520
|
expect(wrapper.findAll('.mint-settings-modal__group')).toHaveLength(2)
|
|
529
521
|
})
|
|
530
522
|
|
|
531
523
|
it('should keep the tab strip when the layout is horizontal', () => {
|
|
532
|
-
const wrapper = mountSettingsModal({
|
|
524
|
+
const wrapper = mountSettingsModal({ spec: railSchema, layout: 'horizontal' })
|
|
533
525
|
|
|
534
526
|
expect(wrapper.findAll('.mint-modal__tab')).toHaveLength(4)
|
|
535
527
|
})
|
|
536
528
|
|
|
537
529
|
it('should split the rail into Plugin and Personal sections when appearance is shown', () => {
|
|
538
|
-
const wrapper = mountSettingsModal({
|
|
530
|
+
const wrapper = mountSettingsModal({ spec: railSchema, showAppearance: true })
|
|
539
531
|
|
|
540
532
|
expect(wrapper.findAll('.mint-modal__rail-section').map(heading => heading.text())).toEqual(['Plugin', 'Personal'])
|
|
541
533
|
})
|
|
@@ -563,38 +555,38 @@ describe('SettingsModal', () => {
|
|
|
563
555
|
})
|
|
564
556
|
|
|
565
557
|
it('should not render rail section headings when appearance is hidden', () => {
|
|
566
|
-
const wrapper = mountSettingsModal({
|
|
558
|
+
const wrapper = mountSettingsModal({ spec: railSchema })
|
|
567
559
|
|
|
568
560
|
expect(wrapper.find('.mint-modal__rail-section').exists()).toBe(false)
|
|
569
561
|
})
|
|
570
562
|
|
|
571
563
|
it('should show the group description in the pane header when a group is active', () => {
|
|
572
|
-
const wrapper = mountSettingsModal({
|
|
564
|
+
const wrapper = mountSettingsModal({ spec: railSchema })
|
|
573
565
|
|
|
574
566
|
expect(wrapper.get('.mint-modal__pane-header').text()).toContain('Name and locale')
|
|
575
567
|
})
|
|
576
568
|
|
|
577
569
|
it('should show the modified count in the rail when a group has changed fields', () => {
|
|
578
|
-
const wrapper = mountSettingsModal({
|
|
570
|
+
const wrapper = mountSettingsModal({ spec: railSchema, values: { bottom: 5, top: 50 } })
|
|
579
571
|
|
|
580
572
|
expect(railItem(wrapper, 'Model').get('.mint-modal__rail-item-meta').text()).toBe('2')
|
|
581
573
|
})
|
|
582
574
|
|
|
583
575
|
it('should mark a row modified when its value differs from the default', () => {
|
|
584
|
-
const wrapper = mountSettingsModal({
|
|
576
|
+
const wrapper = mountSettingsModal({ spec: railSchema, values: { pluginName: 'Dose' } })
|
|
585
577
|
|
|
586
578
|
expect(wrapper.find('.mint-settings-modal__row--modified').exists()).toBe(true)
|
|
587
579
|
})
|
|
588
580
|
|
|
589
581
|
it('should not mark a row modified when the field has no default', () => {
|
|
590
|
-
const wrapper = mountSettingsModal({
|
|
582
|
+
const wrapper = mountSettingsModal({ spec: shortSchema, values: { note: 'hello' } })
|
|
591
583
|
|
|
592
584
|
expect(wrapper.find('.mint-settings-modal__row--modified').exists()).toBe(false)
|
|
593
585
|
})
|
|
594
586
|
|
|
595
587
|
it('should not mark a stored secret modified when its default is null', () => {
|
|
596
588
|
const wrapper = mountSettingsModal({
|
|
597
|
-
|
|
589
|
+
spec: { groups: [{ id: 'auth', label: 'Auth', fields: [{ name: 'apiKey', label: 'API key', type: 'secret', defaultValue: null }] }] },
|
|
598
590
|
values: { apiKey: { $secret: 'sec_1', set: true } },
|
|
599
591
|
})
|
|
600
592
|
|
|
@@ -602,7 +594,7 @@ describe('SettingsModal', () => {
|
|
|
602
594
|
})
|
|
603
595
|
|
|
604
596
|
it('should restore the field default when the row reset button is clicked', async () => {
|
|
605
|
-
const wrapper = mountSettingsModal({
|
|
597
|
+
const wrapper = mountSettingsModal({ spec: railSchema, values: { pluginName: 'Dose' } })
|
|
606
598
|
|
|
607
599
|
await wrapper.get('.mint-settings-modal__reset').trigger('click')
|
|
608
600
|
|
|
@@ -610,13 +602,13 @@ describe('SettingsModal', () => {
|
|
|
610
602
|
})
|
|
611
603
|
|
|
612
604
|
it('should place the row reset in the field cell when the row is modified', () => {
|
|
613
|
-
const wrapper = mountSettingsModal({
|
|
605
|
+
const wrapper = mountSettingsModal({ spec: railSchema, values: { pluginName: 'Dose' } })
|
|
614
606
|
|
|
615
607
|
expect(wrapper.find('.mint-settings-modal__row-field > .mint-settings-modal__reset').exists()).toBe(true)
|
|
616
608
|
})
|
|
617
609
|
|
|
618
610
|
it('should restore every field in the group when Restore group defaults is clicked', async () => {
|
|
619
|
-
const wrapper = mountSettingsModal({
|
|
611
|
+
const wrapper = mountSettingsModal({ spec: railSchema, values: { bottom: 5, top: 50 } })
|
|
620
612
|
await railItem(wrapper, 'Model').trigger('click')
|
|
621
613
|
|
|
622
614
|
await wrapper.get('.mint-settings-modal__restore-group').trigger('click')
|
|
@@ -625,13 +617,13 @@ describe('SettingsModal', () => {
|
|
|
625
617
|
})
|
|
626
618
|
|
|
627
619
|
it('should disable Restore group defaults when nothing in the group is modified', () => {
|
|
628
|
-
const wrapper = mountSettingsModal({
|
|
620
|
+
const wrapper = mountSettingsModal({ spec: railSchema })
|
|
629
621
|
|
|
630
622
|
expect(wrapper.get('.mint-settings-modal__restore-group').attributes('disabled')).toBeDefined()
|
|
631
623
|
})
|
|
632
624
|
|
|
633
625
|
it('should list matching fields from every group when searching by hint', async () => {
|
|
634
|
-
const wrapper = mountSettingsModal({
|
|
626
|
+
const wrapper = mountSettingsModal({ spec: railSchema })
|
|
635
627
|
|
|
636
628
|
await wrapper.get('.mint-settings-modal__search input').setValue('flagged')
|
|
637
629
|
|
|
@@ -639,7 +631,7 @@ describe('SettingsModal', () => {
|
|
|
639
631
|
})
|
|
640
632
|
|
|
641
633
|
it('should label each search result with its group', async () => {
|
|
642
|
-
const wrapper = mountSettingsModal({
|
|
634
|
+
const wrapper = mountSettingsModal({ spec: railSchema })
|
|
643
635
|
|
|
644
636
|
await wrapper.get('.mint-settings-modal__search input').setValue('flagged')
|
|
645
637
|
|
|
@@ -647,7 +639,7 @@ describe('SettingsModal', () => {
|
|
|
647
639
|
})
|
|
648
640
|
|
|
649
641
|
it('should show the result count in the pane header when searching', async () => {
|
|
650
|
-
const wrapper = mountSettingsModal({
|
|
642
|
+
const wrapper = mountSettingsModal({ spec: railSchema })
|
|
651
643
|
|
|
652
644
|
await wrapper.get('.mint-settings-modal__search input').setValue('o')
|
|
653
645
|
|
|
@@ -655,7 +647,7 @@ describe('SettingsModal', () => {
|
|
|
655
647
|
})
|
|
656
648
|
|
|
657
649
|
it('should show an empty state when nothing matches the search', async () => {
|
|
658
|
-
const wrapper = mountSettingsModal({
|
|
650
|
+
const wrapper = mountSettingsModal({ spec: railSchema })
|
|
659
651
|
|
|
660
652
|
await wrapper.get('.mint-settings-modal__search input').setValue('zzz')
|
|
661
653
|
|
|
@@ -663,7 +655,7 @@ describe('SettingsModal', () => {
|
|
|
663
655
|
})
|
|
664
656
|
|
|
665
657
|
it('should clear the search when a rail item is clicked', async () => {
|
|
666
|
-
const wrapper = mountSettingsModal({
|
|
658
|
+
const wrapper = mountSettingsModal({ spec: railSchema })
|
|
667
659
|
await wrapper.get('.mint-settings-modal__search input').setValue('flagged')
|
|
668
660
|
|
|
669
661
|
await railItem(wrapper, 'Model').trigger('click')
|
|
@@ -672,27 +664,27 @@ describe('SettingsModal', () => {
|
|
|
672
664
|
})
|
|
673
665
|
|
|
674
666
|
it('should render a checkbox field as a toggle inside settings rows', () => {
|
|
675
|
-
const wrapper = mountSettingsModal({
|
|
667
|
+
const wrapper = mountSettingsModal({ spec: shortSchema })
|
|
676
668
|
|
|
677
669
|
expect(wrapper.find('.mint-settings-modal__row .mint-toggle').exists()).toBe(true)
|
|
678
670
|
})
|
|
679
671
|
|
|
680
672
|
it('should print a toggle hint under the row when the boolean field has one', () => {
|
|
681
673
|
const wrapper = mountSettingsModal({
|
|
682
|
-
|
|
674
|
+
spec: { groups: [{ id: 'g', label: 'G', fields: [{ name: 'weighted', label: 'Weighted', type: 'toggle', hint: 'Use when variance differs' }] }] },
|
|
683
675
|
})
|
|
684
676
|
|
|
685
677
|
expect(wrapper.get('.mint-settings-modal__row-hint').text()).toBe('Use when variance differs')
|
|
686
678
|
})
|
|
687
679
|
|
|
688
680
|
it('should say changes take effect immediately before anything changes', () => {
|
|
689
|
-
const wrapper = mountSettingsModal({
|
|
681
|
+
const wrapper = mountSettingsModal({ spec: shortSchema })
|
|
690
682
|
|
|
691
683
|
expect(wrapper.get('.mint-settings-modal__status').text()).toBe('Changes take effect immediately')
|
|
692
684
|
})
|
|
693
685
|
|
|
694
686
|
it('should show the applied status after a value changes', async () => {
|
|
695
|
-
const wrapper = mountSettingsModal({
|
|
687
|
+
const wrapper = mountSettingsModal({ spec: shortSchema })
|
|
696
688
|
|
|
697
689
|
await wrapper.get('.mint-settings-modal input').setValue('Dose')
|
|
698
690
|
|
|
@@ -700,7 +692,7 @@ describe('SettingsModal', () => {
|
|
|
700
692
|
})
|
|
701
693
|
|
|
702
694
|
it('should keep the not-yet-applied status when the parent replaces the values', async () => {
|
|
703
|
-
const wrapper = mountSettingsModal({
|
|
695
|
+
const wrapper = mountSettingsModal({ spec: shortSchema, values: { pluginName: 'IC50' } })
|
|
704
696
|
|
|
705
697
|
await wrapper.setProps({ values: { pluginName: 'Loaded' } })
|
|
706
698
|
|
|
@@ -708,15 +700,15 @@ describe('SettingsModal', () => {
|
|
|
708
700
|
})
|
|
709
701
|
|
|
710
702
|
it('should close when Done is clicked', async () => {
|
|
711
|
-
const wrapper = mountSettingsModal({
|
|
703
|
+
const wrapper = mountSettingsModal({ spec: shortSchema })
|
|
712
704
|
|
|
713
705
|
await wrapper.get('.mint-settings-modal__done').trigger('click')
|
|
714
706
|
|
|
715
|
-
expect(wrapper.emitted('update:
|
|
707
|
+
expect(wrapper.emitted('update:open')?.at(-1)).toEqual([false])
|
|
716
708
|
})
|
|
717
709
|
|
|
718
710
|
it('should render a custom footer slot in place of the Done button', () => {
|
|
719
|
-
const wrapper = mountSettingsModal({
|
|
711
|
+
const wrapper = mountSettingsModal({ spec: shortSchema }, { footer: '<button class="custom-save">Save</button>' })
|
|
720
712
|
|
|
721
713
|
expect(wrapper.find('.mint-settings-modal__done').exists()).toBe(false)
|
|
722
714
|
})
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { mount } from '@vue/test-utils'
|
|
2
|
+
import { describe, expect, it } from 'vitest'
|
|
3
|
+
import StaleFormBanner from '../../components/StaleFormBanner.vue'
|
|
4
|
+
import VersionConflictDialog from '../../components/VersionConflictDialog.vue'
|
|
5
|
+
|
|
6
|
+
const at = new Date().toISOString()
|
|
7
|
+
|
|
8
|
+
describe('StaleFormBanner', () => {
|
|
9
|
+
it.each([
|
|
10
|
+
[['Alice Chen'], ['Notes', 'Status'], 'Alice Chen changed Notes and Status'],
|
|
11
|
+
[['Alice Chen', 'Dana Wu'], ['Notes', 'Status', 'Tags'], 'Alice Chen and Dana Wu changed 3 fields'],
|
|
12
|
+
[['Alice Chen'], [], 'Alice Chen changed this experiment'],
|
|
13
|
+
])('should name the writers %j and the fields %j', (actors, fields, summary) => {
|
|
14
|
+
const wrapper = mount(StaleFormBanner, {
|
|
15
|
+
props: { change: { actors, fields, at }, entityNoun: 'this experiment' },
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
expect(wrapper.find('strong').text()).toBe(summary)
|
|
19
|
+
wrapper.unmount()
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
it.each([
|
|
23
|
+
['/experiments/42', true],
|
|
24
|
+
['', false],
|
|
25
|
+
])('should offer Review only with a review link (%s)', (reviewHref, shown) => {
|
|
26
|
+
const wrapper = mount(StaleFormBanner, {
|
|
27
|
+
props: { change: { actors: ['Alice Chen'], fields: [], at }, reviewHref },
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
expect(wrapper.find('a.mint-stale-banner__action').exists()).toBe(shown)
|
|
31
|
+
wrapper.unmount()
|
|
32
|
+
})
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
describe('VersionConflictDialog', () => {
|
|
36
|
+
it.each([
|
|
37
|
+
[['Notes', 'End date'], 'Your 2 changes (Notes, End date) are not saved. Pick what to keep.'],
|
|
38
|
+
[['Notes'], 'Your 1 change (Notes) is not saved. Pick what to keep.'],
|
|
39
|
+
[[], 'Your changes are not saved. Pick what to keep.'],
|
|
40
|
+
])('should name the unsaved changes %j', (changes, message) => {
|
|
41
|
+
const wrapper = mount(VersionConflictDialog, {
|
|
42
|
+
props: { open: true, changes },
|
|
43
|
+
global: { stubs: { teleport: true } },
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
expect(wrapper.find('.mint-version-conflict__message').text()).toBe(message)
|
|
47
|
+
})
|
|
48
|
+
})
|
|
@@ -29,7 +29,7 @@ describe('ThemeToggle', () => {
|
|
|
29
29
|
})
|
|
30
30
|
})
|
|
31
31
|
|
|
32
|
-
it('renders
|
|
32
|
+
it('renders an icon-only BaseButton while preserving the public theme-toggle class', async () => {
|
|
33
33
|
const wrapper = mount(ThemeToggle, {
|
|
34
34
|
props: { size: 'sm' },
|
|
35
35
|
})
|
|
@@ -7,15 +7,17 @@ describe('WellPlate per-well decoration', () => {
|
|
|
7
7
|
it('applies custom classes and lets custom styles override heatmap borders', () => {
|
|
8
8
|
const wrapper = mount(WellPlate, {
|
|
9
9
|
props: {
|
|
10
|
-
|
|
10
|
+
spec: {
|
|
11
|
+
format: 6,
|
|
12
|
+
heatmap: { enabled: true, min: 0, max: 1 },
|
|
13
|
+
wellClass: well => well.id === 'A1' ? 'mint-well-plate__well--outlier' : undefined,
|
|
14
|
+
wellStyle: well => well.id === 'A1'
|
|
15
|
+
? { borderWidth: '2px', borderStyle: 'solid', borderColor: 'var(--mint-warning)' }
|
|
16
|
+
: undefined,
|
|
17
|
+
},
|
|
11
18
|
wells: {
|
|
12
19
|
A1: { id: 'A1', row: 0, col: 0, state: 'filled', value: 0.5 },
|
|
13
20
|
},
|
|
14
|
-
heatmap: { enabled: true, min: 0, max: 1 },
|
|
15
|
-
wellClass: well => well.id === 'A1' ? 'mint-well-plate__well--outlier' : undefined,
|
|
16
|
-
wellStyle: well => well.id === 'A1'
|
|
17
|
-
? { borderWidth: '2px', borderStyle: 'solid', borderColor: 'var(--mint-warning)' }
|
|
18
|
-
: undefined,
|
|
19
21
|
},
|
|
20
22
|
})
|
|
21
23
|
|
|
@@ -29,7 +31,7 @@ describe('WellPlate per-well decoration', () => {
|
|
|
29
31
|
it('should render no glyph when a QC well has no label or id', () => {
|
|
30
32
|
const wrapper = mount(WellPlate, {
|
|
31
33
|
props: {
|
|
32
|
-
format: 6,
|
|
34
|
+
spec: { format: 6 },
|
|
33
35
|
wells: { A1: { id: 'A1', row: 0, col: 0, state: 'filled', sampleType: 'qc' } },
|
|
34
36
|
},
|
|
35
37
|
})
|
|
@@ -38,7 +40,7 @@ describe('WellPlate per-well decoration', () => {
|
|
|
38
40
|
})
|
|
39
41
|
|
|
40
42
|
it('should draw plain legend swatches when the legend is shown', () => {
|
|
41
|
-
const wrapper = mount(WellPlate, { props: { format: 6, showLegend: true } })
|
|
43
|
+
const wrapper = mount(WellPlate, { props: { spec: { format: 6, showLegend: true } } })
|
|
42
44
|
|
|
43
45
|
const dots = wrapper.findAll('.mint-well-plate__sample-legend-dot')
|
|
44
46
|
expect(dots.map(dot => dot.text())).toEqual(['', '', '', ''])
|
|
@@ -292,15 +292,14 @@ describe('WellPlate interaction for PlateEditor (7a)', () => {
|
|
|
292
292
|
describe('WellPlate well names', () => {
|
|
293
293
|
it('should name the sample in the well label even when names are not drawn', () => {
|
|
294
294
|
const wrapper = mount(WellPlate, {
|
|
295
|
-
props: { format: 6, showWellLabels: false, wells: { A1: { sampleType: 'sample', metadata: { label: 'S001' } } } },
|
|
295
|
+
props: { spec: { format: 6, showWellLabels: false }, wells: { A1: { sampleType: 'sample', metadata: { label: 'S001' } } } },
|
|
296
296
|
})
|
|
297
297
|
|
|
298
298
|
expect(wrapper.find('[aria-label="Well A1, Name: S001, Sample type: sample"]').exists()).toBe(true)
|
|
299
299
|
})
|
|
300
300
|
|
|
301
301
|
const grouped = {
|
|
302
|
-
format: 6 as const,
|
|
303
|
-
legendItems: [{ type: 'ctrl', label: 'Control', color: 'red' }],
|
|
302
|
+
spec: { format: 6 as const, legendItems: [{ type: 'ctrl', label: 'Control', color: 'red' }] },
|
|
304
303
|
wells: { A1: { sampleType: 'qc', group: 'ctrl' } },
|
|
305
304
|
}
|
|
306
305
|
|
|
@@ -319,11 +318,11 @@ describe('WellPlate well names', () => {
|
|
|
319
318
|
|
|
320
319
|
describe('WellPlate edit popover', () => {
|
|
321
320
|
it('should not reopen a popover that closed when the plate stopped being editable', async () => {
|
|
322
|
-
const wrapper = mount(WellPlate, { props: { format: 6, editable: true }, global: { stubs: { teleport: true } } })
|
|
321
|
+
const wrapper = mount(WellPlate, { props: { spec: { format: 6, editable: true } }, global: { stubs: { teleport: true } } })
|
|
323
322
|
await wrapper.get('[aria-label="Well B2"]').trigger('click')
|
|
324
323
|
|
|
325
|
-
await wrapper.setProps({ editable: false })
|
|
326
|
-
await wrapper.setProps({ editable: true })
|
|
324
|
+
await wrapper.setProps({ spec: { format: 6, editable: false } })
|
|
325
|
+
await wrapper.setProps({ spec: { format: 6, editable: true } })
|
|
327
326
|
|
|
328
327
|
expect(wrapper.findComponent(WellEditPopupInternal).exists()).toBe(false)
|
|
329
328
|
})
|
|
@@ -431,7 +430,7 @@ describe('WellPlate Shift-click range selection', () => {
|
|
|
431
430
|
})
|
|
432
431
|
|
|
433
432
|
it('should emit the range on Shift+Enter from a focused well', async () => {
|
|
434
|
-
const wrapper = mount(WellPlate, { props: { format: 6 } })
|
|
433
|
+
const wrapper = mount(WellPlate, { props: { spec: { format: 6 } } })
|
|
435
434
|
const cells = wrapper.findAll('[role="gridcell"]')
|
|
436
435
|
|
|
437
436
|
await cells[0].trigger('keydown', { key: 'Enter' })
|
|
@@ -6,7 +6,7 @@ import WellPlate from '../../components/WellPlate.vue'
|
|
|
6
6
|
// unrelated input must keep selecting text.
|
|
7
7
|
describe('WellPlate keyboard scope', () => {
|
|
8
8
|
it('should ignore Ctrl+A pressed outside the plate', () => {
|
|
9
|
-
const wrapper = mount(WellPlate, { props: { format: 6 }, attachTo: document.body })
|
|
9
|
+
const wrapper = mount(WellPlate, { props: { spec: { format: 6 } }, attachTo: document.body })
|
|
10
10
|
|
|
11
11
|
document.dispatchEvent(new KeyboardEvent('keydown', { key: 'a', ctrlKey: true, bubbles: true }))
|
|
12
12
|
|
|
@@ -15,7 +15,7 @@ describe('WellPlate keyboard scope', () => {
|
|
|
15
15
|
})
|
|
16
16
|
|
|
17
17
|
it('should select every well on Ctrl+A pressed inside the plate', async () => {
|
|
18
|
-
const wrapper = mount(WellPlate, { props: { format: 6 } })
|
|
18
|
+
const wrapper = mount(WellPlate, { props: { spec: { format: 6 } } })
|
|
19
19
|
|
|
20
20
|
await wrapper.get('[role="gridcell"]').trigger('keydown', { key: 'a', ctrlKey: true })
|
|
21
21
|
|