@morscherlab/mint-sdk 1.4.0-beta.9 → 1.4.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 +14 -3
- package/dist/{AlertBox-B2Bgr3ei.js → AlertBox-DwgNTEqf.js} +3 -3
- package/dist/{AlertBox-B2Bgr3ei.js.map → AlertBox-DwgNTEqf.js.map} +1 -1
- package/dist/{AppSidebar-Dq9W1jE2.js → AppSidebar-CZZaxni0.js} +1103 -144
- package/dist/AppSidebar-CZZaxni0.js.map +1 -0
- package/dist/{ConfirmDialog-nbJj51is.js → ConfirmDialog-CjWoxAD1.js} +2 -2
- package/dist/{ConfirmDialog-nbJj51is.js.map → ConfirmDialog-CjWoxAD1.js.map} +1 -1
- package/dist/{ExperimentPopover-5T1fAq2L.js → ExperimentPopover-DujiuQIO.js} +5 -5
- package/dist/{ExperimentPopover-5T1fAq2L.js.map → ExperimentPopover-DujiuQIO.js.map} +1 -1
- package/dist/{ExperimentSelectorModal-65peG4Up.js → ExperimentSelectorModal-B4j4eUOJ.js} +114 -98
- package/dist/ExperimentSelectorModal-B4j4eUOJ.js.map +1 -0
- package/dist/{SegmentedControl-BtnnjWzs.js → SegmentedControl-DyUPH3I5.js} +2 -2
- package/dist/{SegmentedControl-BtnnjWzs.js.map → SegmentedControl-DyUPH3I5.js.map} +1 -1
- package/dist/{SettingsModal-483nyI6b.js → SettingsModal-D2MOOtuO.js} +26 -25
- package/dist/SettingsModal-D2MOOtuO.js.map +1 -0
- package/dist/__stories__/experiment-helpers.d.ts +10 -0
- package/dist/__tests__/components/AppTopBarOnboarding.test.d.ts +1 -0
- package/dist/__tests__/components/FloatingPanelsInModal.test.d.ts +1 -0
- package/dist/__tests__/composables/useFloatingPanel.test.d.ts +1 -0
- package/dist/__tests__/composables/useOnboarding.test.d.ts +1 -0
- package/dist/__tests__/styles/paletteTokens.test.d.ts +1 -0
- package/dist/__tests__/styles/v2AuditRules.test.d.ts +1 -0
- package/dist/components/AppTopBar.vue.d.ts +20 -5
- package/dist/components/BaseButton.vue.d.ts +4 -2
- package/dist/components/ExperimentSelectorModal.vue.d.ts +15 -1
- package/dist/components/JobsStatusTray.vue.d.ts +15 -4
- package/dist/components/PluginWorkspaceView.props.d.ts +3 -0
- package/dist/components/PluginWorkspaceView.vue.d.ts +3 -0
- package/dist/components/SmartGroupFieldRecipe.vue.d.ts +3 -3
- package/dist/components/internal/AppTopBarOnboardingInternal.vue.d.ts +7 -0
- package/dist/components/internal/AppTopBarPageSelectorInternal.vue.d.ts +2 -1
- package/dist/components/internal/AutoGroupModalInternal.vue.d.ts +2 -2
- package/dist/components/internal/OnboardingLayerInternal.vue.d.ts +7 -0
- package/dist/components/internal/WorkspaceShellInternal.vue.d.ts +8 -0
- package/dist/composables/pluginWorkspaceModel.d.ts +2 -2
- package/dist/composables/useFileImport.d.ts +7 -0
- package/dist/composables/useFloatingPanel.d.ts +29 -0
- package/dist/composables/useJobCenter.d.ts +41 -3
- package/dist/composables/useOnboarding.d.ts +119 -0
- package/dist/{controlSchemaModel-B8CTXagP.js → controlSchemaModel-Bsg0t5Ab.js} +2 -2
- package/dist/{controlSchemaModel-B8CTXagP.js.map → controlSchemaModel-Bsg0t5Ab.js.map} +1 -1
- package/dist/{data-CgILxDLW.js → data-Boeh4uPI.js} +13 -12
- package/dist/{data-CgILxDLW.js.map → data-Boeh4uPI.js.map} +1 -1
- package/dist/data.d.ts +1 -1
- package/dist/data.js +9 -9
- package/dist/{experiment-43OJtH7R.js → experiment-DyO54FQB.js} +25 -61
- package/dist/experiment-DyO54FQB.js.map +1 -0
- package/dist/{experimentStatus-Cqp6qNrR.js → experimentStatus-DCn2QKG7.js} +2 -2
- package/dist/{experimentStatus-Cqp6qNrR.js.map → experimentStatus-DCn2QKG7.js.map} +1 -1
- package/dist/index.js +20 -20
- package/dist/{install-BtLWTk6H.js → install-BEHp7Mo-.js} +15 -15
- package/dist/{install-BtLWTk6H.js.map → install-BEHp7Mo-.js.map} +1 -1
- package/dist/install.js +1 -1
- package/dist/{lab-MHzp-_J8.js → lab-D61eaX6f.js} +68 -61
- package/dist/{lab-MHzp-_J8.js.map → lab-D61eaX6f.js.map} +1 -1
- package/dist/lab.js +4 -4
- package/dist/{records-B6gpM_3e.js → records-D4aQXyZu.js} +193 -133
- package/dist/records-D4aQXyZu.js.map +1 -0
- package/dist/{runtime-7vfl_bI3.js → runtime-q-R0CNLh.js} +400 -33
- package/dist/runtime-q-R0CNLh.js.map +1 -0
- package/dist/runtime.d.ts +1 -1
- package/dist/runtime.js +7 -7
- package/dist/{shell-Cs9OJMnm.js → shell-6CGFvUUw.js} +10 -5
- package/dist/{shell-Cs9OJMnm.js.map → shell-6CGFvUUw.js.map} +1 -1
- package/dist/shell.d.ts +1 -0
- package/dist/shell.js +6 -6
- package/dist/stores/index.d.ts +1 -1
- package/dist/stores/index.js +2 -2
- package/dist/stores/settings.d.ts +4 -12
- package/dist/styles.css +1191 -479
- package/dist/types/components.d.ts +2 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/jobs.d.ts +9 -0
- package/dist/types/platform.d.ts +1 -1
- package/dist/{useDropdownState-8yWMu-7_.js → useDropdownState-uFIz6Yv8.js} +16 -4
- package/dist/useDropdownState-uFIz6Yv8.js.map +1 -0
- package/dist/{useExperimentSamples-DHnxKFAF.js → useExperimentSamples-QEFoq4tf.js} +48 -6
- package/dist/useExperimentSamples-QEFoq4tf.js.map +1 -0
- package/dist/{useListReorder-BitdUhxn.js → useListReorder-DsuzwWGS.js} +122 -172
- package/dist/useListReorder-DsuzwWGS.js.map +1 -0
- package/dist/{useRackEditor-DiwCt77M.js → useRackEditor-KpZ4iJ6o.js} +22 -32
- package/dist/useRackEditor-KpZ4iJ6o.js.map +1 -0
- package/dist/useRealtime-B58Lo-Tm.js +508 -0
- package/dist/useRealtime-B58Lo-Tm.js.map +1 -0
- package/dist/{useRequest-D506eHi8.js → useRequest-BuDmW8Jc.js} +8 -37
- package/dist/useRequest-BuDmW8Jc.js.map +1 -0
- package/package.json +3 -2
- package/src/__stories__/experiment-helpers.ts +3 -3
- package/src/__tests__/components/ActionMenu.test.ts +2 -2
- package/src/__tests__/components/AppTopBar.test.ts +206 -1
- package/src/__tests__/components/AppTopBarOnboarding.test.ts +160 -0
- package/src/__tests__/components/AppTopBarPageSelector.test.ts +125 -9
- package/src/__tests__/components/BaseButton.test.ts +19 -0
- package/src/__tests__/components/BaseModal.test.ts +13 -0
- package/src/__tests__/components/ExperimentSelectorModal.test.ts +34 -1
- package/src/__tests__/components/FloatingPanelsInModal.test.ts +94 -0
- package/src/__tests__/components/GeneratedPluginView.test.ts +1 -1
- package/src/__tests__/components/JobsStatusTray.test.ts +373 -71
- package/src/__tests__/components/PluginWorkspaceView.test.ts +63 -1
- package/src/__tests__/components/SampleSelector.test.ts +20 -0
- package/src/__tests__/components/SettingsModal.test.ts +9 -2
- package/src/__tests__/composables/useFileImport.test.ts +36 -0
- package/src/__tests__/composables/useFloatingPanel.test.ts +68 -0
- package/src/__tests__/composables/useJobCenter.test.ts +262 -3
- package/src/__tests__/composables/useOnboarding.test.ts +317 -0
- package/src/__tests__/docs/frontendDocsCatalog.test.ts +4 -3
- package/src/__tests__/fixtures/table-import/cells.xlsx +0 -0
- package/src/__tests__/fixtures/table-import/samples.xlsx +0 -0
- package/src/__tests__/stores/settings.test.ts +21 -21
- package/src/__tests__/styles/cssTokens.test.ts +4 -1
- package/src/__tests__/styles/menusShellRefresh.test.ts +8 -2
- package/src/__tests__/styles/paletteTokens.test.ts +44 -0
- package/src/__tests__/styles/v2AuditRules.test.ts +104 -0
- package/src/components/ActionMenu.vue +6 -37
- package/src/components/AppTopBar.onboarding.story.vue +69 -0
- package/src/components/AppTopBar.story.vue +59 -4
- package/src/components/AppTopBar.vue +132 -10
- package/src/components/BaseButton.vue +16 -2
- package/src/components/BaseModal.vue +2 -1
- package/src/components/ExperimentSelectorModal.story.vue +38 -0
- package/src/components/ExperimentSelectorModal.vue +20 -1
- package/src/components/GeneratedPluginView.vue +4 -9
- package/src/components/GeneratedResultRenderer.vue +3 -4
- package/src/components/JobsStatusTray.story.vue +97 -43
- package/src/components/JobsStatusTray.vue +287 -290
- package/src/components/LayoutResizeHandle.story.vue +65 -4
- package/src/components/PluginWorkspaceView.props.ts +3 -0
- package/src/components/PluginWorkspaceView.vue +17 -0
- package/src/components/SampleSelector.story.vue +21 -6
- package/src/components/SampleSelector.vue +10 -3
- package/src/components/SectionCard.story.vue +33 -0
- package/src/components/SettingsModal.vue +7 -12
- package/src/components/Tooltip.vue +9 -32
- package/src/components/internal/AppTopBarOnboardingInternal.vue +172 -0
- package/src/components/internal/AppTopBarPageSelectorInternal.vue +140 -72
- package/src/components/internal/DatePickerDateInternal.vue +7 -45
- package/src/components/internal/DatePickerDateTimeInternal.vue +7 -1
- package/src/components/internal/DatePickerTimeInternal.vue +8 -1
- package/src/components/internal/NumberUnitInputInternal.vue +4 -18
- package/src/components/internal/OnboardingLayerInternal.vue +173 -0
- package/src/components/internal/SelectMultipleInternal.vue +6 -1
- package/src/components/internal/SelectSearchableInternal.vue +6 -1
- package/src/components/internal/WellEditPopupInternal.vue +11 -22
- package/src/components/internal/WorkspaceShellInternal.vue +12 -0
- package/src/composables/pluginWorkspaceModel.ts +2 -2
- package/src/composables/useFileImport.ts +51 -1
- package/src/composables/useFloatingPanel.ts +107 -0
- package/src/composables/useJobCenter.ts +188 -6
- package/src/composables/useOnboarding.ts +465 -0
- package/src/composables/usePluginWorkspace.ts +1 -1
- package/src/data.ts +1 -0
- package/src/runtime.ts +2 -1
- package/src/shell.ts +17 -0
- package/src/stores/index.ts +0 -2
- package/src/stores/settings.ts +20 -50
- package/src/styles/components/action-menu.css +1 -1
- package/src/styles/components/app-layout.css +6 -3
- package/src/styles/components/app-page-selector.css +120 -45
- package/src/styles/components/app-top-bar.css +165 -3
- package/src/styles/components/button.css +8 -0
- package/src/styles/components/dataframe.css +1 -1
- package/src/styles/components/date-picker.css +4 -2
- package/src/styles/components/datetime-picker.css +4 -4
- package/src/styles/components/experiment-selector-modal.css +13 -0
- package/src/styles/components/jobs-status-tray.css +134 -296
- package/src/styles/components/layout-resize-handle.css +59 -16
- package/src/styles/components/modal.css +3 -3
- package/src/styles/components/number-input.css +1 -1
- package/src/styles/components/onboarding.css +368 -0
- package/src/styles/components/progress-bar.css +3 -3
- package/src/styles/components/sample-selector.css +43 -0
- package/src/styles/components/searchable-select.css +3 -7
- package/src/styles/components/section-card.css +30 -6
- package/src/styles/components/settings-modal.css +7 -2
- package/src/styles/components/time-picker.css +3 -6
- package/src/styles/components/toast.css +1 -1
- package/src/styles/components/tooltip.css +2 -2
- package/src/styles/components/unit-input.css +1 -1
- package/src/styles/components/well-edit-popup.css +2 -2
- package/src/styles/index.css +1 -0
- package/src/styles/variables.css +153 -15
- package/src/types/components.ts +2 -0
- package/src/types/index.ts +1 -0
- package/src/types/jobs.ts +10 -0
- package/src/types/platform.ts +1 -1
- package/dist/AppSidebar-Dq9W1jE2.js.map +0 -1
- package/dist/ExperimentSelectorModal-65peG4Up.js.map +0 -1
- package/dist/SettingsModal-483nyI6b.js.map +0 -1
- package/dist/experiment-43OJtH7R.js.map +0 -1
- package/dist/records-B6gpM_3e.js.map +0 -1
- package/dist/runtime-7vfl_bI3.js.map +0 -1
- package/dist/useDropdownState-8yWMu-7_.js.map +0 -1
- package/dist/useExperimentSamples-DHnxKFAF.js.map +0 -1
- package/dist/useListReorder-BitdUhxn.js.map +0 -1
- package/dist/useRackEditor-DiwCt77M.js.map +0 -1
- package/dist/useRealtime-C3iy9QkU.js +0 -699
- package/dist/useRealtime-C3iy9QkU.js.map +0 -1
- package/dist/useRequest-D506eHi8.js.map +0 -1
|
@@ -130,10 +130,9 @@ function humanize(value: string): string {
|
|
|
130
130
|
|
|
131
131
|
.mint-generated-result__json {
|
|
132
132
|
overflow: auto;
|
|
133
|
-
padding: 1rem;
|
|
134
|
-
border:
|
|
135
|
-
|
|
136
|
-
background: var(--bg-secondary);
|
|
133
|
+
padding: 0.75rem 1rem;
|
|
134
|
+
border-radius: var(--radius-md);
|
|
135
|
+
background: var(--bg-tertiary);
|
|
137
136
|
font-size: 0.8125rem;
|
|
138
137
|
line-height: 1.55;
|
|
139
138
|
white-space: pre-wrap;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
+
import { defineComponent, h, onMounted, type PropType } from 'vue'
|
|
3
|
+
import AppTopBar from './AppTopBar.vue'
|
|
2
4
|
import JobsStatusTray from './JobsStatusTray.vue'
|
|
3
|
-
import
|
|
5
|
+
import { useJobCenter } from '../composables/useJobCenter'
|
|
6
|
+
import type { JobState, JobStateInput, JobStatus } from '../types/jobs'
|
|
4
7
|
|
|
5
8
|
function job(
|
|
6
9
|
status: JobStatus,
|
|
@@ -43,13 +46,6 @@ function job(
|
|
|
43
46
|
}
|
|
44
47
|
}
|
|
45
48
|
|
|
46
|
-
const mixedJobs = [
|
|
47
|
-
job('awaiting_input', 'J-104'),
|
|
48
|
-
job('running', 'J-103'),
|
|
49
|
-
job('queued', 'J-102'),
|
|
50
|
-
job('completed', 'J-101'),
|
|
51
|
-
job('failed', 'J-100'),
|
|
52
|
-
]
|
|
53
49
|
const explicitActionJobs = [
|
|
54
50
|
job('awaiting_input', 'J-201', { can_cancel: true }),
|
|
55
51
|
job('completed', 'J-200', { can_delete: false }),
|
|
@@ -57,69 +53,127 @@ const explicitActionJobs = [
|
|
|
57
53
|
const cancelJob = async () => undefined
|
|
58
54
|
const deleteJob = async () => true
|
|
59
55
|
|
|
60
|
-
function openJob(
|
|
61
|
-
console.info('open',
|
|
56
|
+
function openJob(selected: JobState) {
|
|
57
|
+
console.info('open', selected.job_id)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/** The parent owns the job center: it feeds the top-bar chip and the tray. */
|
|
61
|
+
const TrayDemo = defineComponent({
|
|
62
|
+
props: {
|
|
63
|
+
jobs: { type: Array as PropType<JobStateInput[]>, required: true },
|
|
64
|
+
title: { type: String, default: undefined },
|
|
65
|
+
open: Boolean,
|
|
66
|
+
confirm: Boolean,
|
|
67
|
+
/** Show the awaiting-input job as a browser decode, as LEAF does. */
|
|
68
|
+
decode: Boolean,
|
|
69
|
+
},
|
|
70
|
+
setup(props) {
|
|
71
|
+
// One source object: a new source identity resets the just-completed hold.
|
|
72
|
+
const center = useJobCenter({
|
|
73
|
+
source: { jobs: () => props.jobs, cancel: cancelJob, delete: deleteJob },
|
|
74
|
+
rowJob: row => (props.decode && row.status === 'awaiting_input'
|
|
75
|
+
? { status: 'running', percent: 62, message: 'Decoding in the browser · 5/8' }
|
|
76
|
+
: null),
|
|
77
|
+
topBarJob: shown => (shown.status === 'completed' ? { status: 'completed', label: `Saved to ${shown.experiment_id}` } : null),
|
|
78
|
+
})
|
|
79
|
+
onMounted(() => { if (props.open) center.open() })
|
|
80
|
+
return () => [
|
|
81
|
+
h(AppTopBar, {
|
|
82
|
+
title: 'Peak QC',
|
|
83
|
+
job: center.topBarJob.value,
|
|
84
|
+
jobsDone: center.completedCount.value,
|
|
85
|
+
jobsOpen: center.isOpen.value,
|
|
86
|
+
jobsPanelId: center.panelId,
|
|
87
|
+
onJobClick: () => center.handleTopBarClick(openJob),
|
|
88
|
+
}),
|
|
89
|
+
h(JobsStatusTray, { center, title: props.title, confirm: props.confirm, onSelect: openJob }, {
|
|
90
|
+
'job-actions': ({ job: row }: { job: JobState }) => row.status === 'completed'
|
|
91
|
+
? h('button', { type: 'button', class: 'mint-jobs-tray__section-action', onClick: () => openJob(row) }, 'Open')
|
|
92
|
+
: null,
|
|
93
|
+
}),
|
|
94
|
+
]
|
|
95
|
+
},
|
|
96
|
+
})
|
|
97
|
+
|
|
98
|
+
function playgroundJobs(percent: number, finished: boolean): JobStateInput[] {
|
|
99
|
+
const running = finished
|
|
100
|
+
? job('completed', 'J-103', { completed_at: '2026-07-14T10:12:00+00:00' })
|
|
101
|
+
: job('running', 'J-103', {
|
|
102
|
+
progress: { ...job('running', 'J-103').progress, percent, message: 'Integrating peaks' },
|
|
103
|
+
})
|
|
104
|
+
return [
|
|
105
|
+
job('awaiting_input', 'J-104'),
|
|
106
|
+
running,
|
|
107
|
+
job('queued', 'J-102'),
|
|
108
|
+
job('completed', 'J-101'),
|
|
109
|
+
job('failed', 'J-100'),
|
|
110
|
+
]
|
|
62
111
|
}
|
|
63
112
|
|
|
64
113
|
function initState() {
|
|
65
114
|
return {
|
|
66
|
-
title: '
|
|
67
|
-
|
|
115
|
+
title: 'Jobs',
|
|
116
|
+
percent: 37,
|
|
117
|
+
finished: false,
|
|
118
|
+
open: true,
|
|
119
|
+
confirm: false,
|
|
120
|
+
decode: false,
|
|
68
121
|
}
|
|
69
122
|
}
|
|
70
123
|
</script>
|
|
71
124
|
|
|
72
125
|
<template>
|
|
73
|
-
<Story title="Workflow/JobsStatusTray">
|
|
126
|
+
<Story title="Workflow/JobsStatusTray" :layout="{ type: 'single', iframe: true }">
|
|
74
127
|
<Variant title="Playground" :init-state="initState">
|
|
75
128
|
<template #default="{ state }">
|
|
76
|
-
<div style="
|
|
77
|
-
<
|
|
129
|
+
<div style="min-height: 560px;">
|
|
130
|
+
<TrayDemo
|
|
131
|
+
:key="String(state.open)"
|
|
132
|
+
:jobs="playgroundJobs(state.percent, state.finished)"
|
|
78
133
|
:title="state.title"
|
|
79
|
-
:
|
|
80
|
-
:
|
|
81
|
-
:
|
|
82
|
-
|
|
83
|
-
<template #job-actions="{ job }">
|
|
84
|
-
<button type="button" class="mint-jobs-tray__action" @click="() => openJob(job.job_id)">
|
|
85
|
-
Open
|
|
86
|
-
</button>
|
|
87
|
-
</template>
|
|
88
|
-
</JobsStatusTray>
|
|
134
|
+
:open="state.open"
|
|
135
|
+
:confirm="state.confirm"
|
|
136
|
+
:decode="state.decode"
|
|
137
|
+
/>
|
|
89
138
|
</div>
|
|
90
139
|
</template>
|
|
91
140
|
<template #controls="{ state }">
|
|
92
141
|
<HstText v-model="state.title" title="Title" />
|
|
142
|
+
<HstSlider v-model="state.percent" title="Running percent" :min="0" :max="100" />
|
|
143
|
+
<HstCheckbox v-model="state.finished" title="Running job completed (6 s chip)" />
|
|
144
|
+
<HstCheckbox v-model="state.open" title="Open on mount" />
|
|
145
|
+
<HstCheckbox v-model="state.confirm" title="Confirm cancel, delete and clear" />
|
|
146
|
+
<HstCheckbox v-model="state.decode" title="Row override: J-104 as a browser decode" />
|
|
93
147
|
</template>
|
|
94
148
|
</Variant>
|
|
95
149
|
|
|
150
|
+
<Variant title="Confirm and row override">
|
|
151
|
+
<div style="min-height: 560px;">
|
|
152
|
+
<TrayDemo :jobs="playgroundJobs(37, false)" open confirm decode />
|
|
153
|
+
</div>
|
|
154
|
+
</Variant>
|
|
155
|
+
|
|
96
156
|
<Variant title="Awaiting input">
|
|
97
|
-
<div style="
|
|
98
|
-
<
|
|
99
|
-
:source="{ jobs: [job('awaiting_input', 'J-301')] }"
|
|
100
|
-
:load-on-mount="false"
|
|
101
|
-
:teleport-to="false"
|
|
102
|
-
/>
|
|
157
|
+
<div style="min-height: 560px;">
|
|
158
|
+
<TrayDemo :jobs="[job('awaiting_input', 'J-301')]" open />
|
|
103
159
|
</div>
|
|
104
160
|
</Variant>
|
|
105
161
|
|
|
106
162
|
<Variant title="Explicit actions">
|
|
107
|
-
<div style="
|
|
108
|
-
<
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
163
|
+
<div style="min-height: 560px;">
|
|
164
|
+
<TrayDemo :jobs="explicitActionJobs" open />
|
|
165
|
+
</div>
|
|
166
|
+
</Variant>
|
|
167
|
+
|
|
168
|
+
<Variant title="Idle with completed jobs">
|
|
169
|
+
<div style="min-height: 560px;">
|
|
170
|
+
<TrayDemo :jobs="[job('completed', 'J-401'), job('completed', 'J-402'), job('cancelled', 'J-403')]" />
|
|
113
171
|
</div>
|
|
114
172
|
</Variant>
|
|
115
173
|
|
|
116
174
|
<Variant title="Empty">
|
|
117
|
-
<div style="
|
|
118
|
-
<
|
|
119
|
-
:source="{ jobs: [] }"
|
|
120
|
-
:load-on-mount="false"
|
|
121
|
-
:teleport-to="false"
|
|
122
|
-
/>
|
|
175
|
+
<div style="min-height: 560px;">
|
|
176
|
+
<TrayDemo :jobs="[]" open />
|
|
123
177
|
</div>
|
|
124
178
|
</Variant>
|
|
125
179
|
</Story>
|