@morscherlab/mint-sdk 1.0.0-alpha.8 → 1.0.0-alpha.9
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 +15 -15
- package/dist/{auth-BYmxZdJl.js → auth-DsI0rQ7_.js} +6 -6
- package/dist/auth-DsI0rQ7_.js.map +1 -0
- package/dist/components/index.js +2 -2
- package/dist/{components-CKf-UpGi.js → components-CzbQQPCb.js} +1429 -1429
- package/dist/components-CzbQQPCb.js.map +1 -0
- package/dist/composables/index.js +2 -2
- package/dist/composables/usePlatformContext.d.ts +3 -3
- package/dist/{composables-D0QfFzq1.js → composables-BXklV5ii.js} +3 -3
- package/dist/{composables-D0QfFzq1.js.map → composables-BXklV5ii.js.map} +1 -1
- package/dist/index.js +4 -4
- package/dist/install.d.ts +3 -3
- package/dist/install.js +5 -5
- package/dist/install.js.map +1 -1
- package/dist/stores/auth.d.ts +1 -1
- package/dist/stores/index.js +1 -1
- package/dist/stores/settings.d.ts +1 -1
- package/dist/styles.css +5388 -5388
- package/dist/types/platform.d.ts +1 -1
- package/dist/{useScheduleDrag-DAJueTbK.js → useScheduleDrag-CxBeqYcu.js} +331 -331
- package/dist/useScheduleDrag-CxBeqYcu.js.map +1 -0
- package/package.json +2 -2
- package/src/__tests__/components/AppLayout.test.ts +23 -23
- package/src/__tests__/components/AppSidebar.test.ts +29 -29
- package/src/__tests__/components/AppTopBar.test.ts +45 -45
- package/src/__tests__/components/BaseInput.test.ts +2 -2
- package/src/__tests__/components/BasePill.test.ts +37 -37
- package/src/__tests__/components/Calendar.test.ts +52 -52
- package/src/__tests__/components/CollapsibleCard.test.ts +81 -81
- package/src/__tests__/components/DataFrame.test.ts +80 -80
- package/src/__tests__/components/DropdownButton.test.ts +80 -80
- package/src/__tests__/composables/usePlatformContext.test.ts +1 -1
- package/src/components/AlertBox.story.vue +1 -1
- package/src/components/AlertBox.vue +14 -14
- package/src/components/AppAvatarMenu.vue +26 -26
- package/src/components/AppContainer.vue +3 -3
- package/src/components/AppLayout.vue +7 -7
- package/src/components/AppPageSelector.vue +30 -30
- package/src/components/AppPillNav.vue +10 -10
- package/src/components/AppPluginSwitcher.vue +31 -31
- package/src/components/AppSidebar.vue +8 -8
- package/src/components/AppTopBar.story.vue +7 -7
- package/src/components/AppTopBar.vue +102 -102
- package/src/components/AuditTrail.vue +19 -19
- package/src/components/AutoGroupModal.vue +76 -76
- package/src/components/Avatar.vue +6 -6
- package/src/components/BaseButton.vue +6 -6
- package/src/components/BaseCheckbox.vue +9 -9
- package/src/components/BaseInput.vue +4 -4
- package/src/components/BaseModal.story.vue +1 -1
- package/src/components/BaseModal.vue +14 -14
- package/src/components/BasePill.vue +9 -9
- package/src/components/BaseRadioGroup.vue +21 -21
- package/src/components/BaseSelect.vue +6 -6
- package/src/components/BaseSlider.vue +8 -8
- package/src/components/BaseTabs.vue +7 -7
- package/src/components/BaseTextarea.vue +5 -5
- package/src/components/BaseToggle.vue +10 -10
- package/src/components/BatchProgressList.vue +25 -25
- package/src/components/Breadcrumb.vue +8 -8
- package/src/components/Calendar.vue +19 -19
- package/src/components/ChartContainer.vue +9 -9
- package/src/components/ChemicalFormula.vue +7 -7
- package/src/components/CollapsibleCard.vue +20 -20
- package/src/components/ColorSlider.vue +6 -6
- package/src/components/ConcentrationInput.vue +12 -12
- package/src/components/ConfirmDialog.story.vue +1 -1
- package/src/components/ConfirmDialog.vue +7 -7
- package/src/components/DataFrame.vue +40 -40
- package/src/components/DatePicker.vue +29 -29
- package/src/components/DateTimePicker.vue +41 -41
- package/src/components/Divider.vue +9 -9
- package/src/components/DoseCalculator.vue +66 -66
- package/src/components/DropdownButton.vue +19 -19
- package/src/components/EmptyState.vue +9 -9
- package/src/components/ExperimentCodeBadge.vue +3 -3
- package/src/components/ExperimentDataViewer.vue +25 -25
- package/src/components/ExperimentPopover.vue +35 -35
- package/src/components/ExperimentSelectorModal.vue +40 -40
- package/src/components/ExperimentTimeline.vue +48 -48
- package/src/components/FileUploader.vue +31 -31
- package/src/components/FitPanel.vue +9 -9
- package/src/components/FormActions.vue +1 -1
- package/src/components/FormBuilder.vue +2 -2
- package/src/components/FormField.vue +7 -7
- package/src/components/FormSection.vue +7 -7
- package/src/components/FormulaInput.vue +10 -10
- package/src/components/GroupAssigner.vue +40 -40
- package/src/components/GroupingModal.vue +45 -45
- package/src/components/IconButton.vue +6 -6
- package/src/components/LoadingSpinner.vue +5 -5
- package/src/components/MoleculeInput.vue +21 -21
- package/src/components/MultiSelect.vue +13 -13
- package/src/components/NumberInput.vue +13 -13
- package/src/components/PlateMapEditor.vue +63 -63
- package/src/components/ProgressBar.vue +18 -18
- package/src/components/ProtocolStepEditor.vue +57 -57
- package/src/components/RackEditor.vue +28 -28
- package/src/components/ReagentEditor.vue +61 -61
- package/src/components/ReagentList.vue +49 -49
- package/src/components/ResourceCard.vue +28 -28
- package/src/components/SampleHierarchyTree.vue +13 -13
- package/src/components/SampleLegend.vue +12 -12
- package/src/components/SampleSelector.vue +104 -104
- package/src/components/ScheduleCalendar.vue +42 -42
- package/src/components/ScientificNumber.vue +11 -11
- package/src/components/SegmentedControl.vue +12 -12
- package/src/components/SequenceInput.vue +32 -32
- package/src/components/SettingsButton.vue +5 -5
- package/src/components/SettingsModal.vue +17 -17
- package/src/components/StatusIndicator.vue +5 -5
- package/src/components/StepWizard.vue +16 -16
- package/src/components/TagsInput.vue +20 -20
- package/src/components/ThemeToggle.vue +3 -3
- package/src/components/TimePicker.vue +21 -21
- package/src/components/TimeRangeInput.vue +5 -5
- package/src/components/ToastNotification.vue +8 -8
- package/src/components/Tooltip.vue +7 -7
- package/src/components/UnitInput.vue +12 -12
- package/src/components/WellEditPopup.vue +28 -28
- package/src/components/WellPlate.vue +37 -37
- package/src/composables/useAppExperiment.ts +1 -1
- package/src/composables/usePlatformContext.ts +16 -16
- package/src/composables/useProtocolTemplates.ts +1 -1
- package/src/install.ts +3 -3
- package/src/stores/auth.ts +3 -3
- package/src/stores/settings.ts +2 -2
- package/src/styles/components/alert-box.css +30 -30
- package/src/styles/components/app-avatar-menu.css +23 -23
- package/src/styles/components/app-container.css +6 -6
- package/src/styles/components/app-layout.css +15 -15
- package/src/styles/components/app-page-selector.css +26 -26
- package/src/styles/components/app-pill-nav.css +7 -7
- package/src/styles/components/app-plugin-switcher.css +27 -27
- package/src/styles/components/app-sidebar.css +24 -24
- package/src/styles/components/app-top-bar.css +65 -65
- package/src/styles/components/audit-trail.css +29 -29
- package/src/styles/components/auto-group-modal.css +91 -91
- package/src/styles/components/avatar.css +15 -15
- package/src/styles/components/batch-progress-list.css +40 -40
- package/src/styles/components/breadcrumb.css +8 -8
- package/src/styles/components/button.css +31 -31
- package/src/styles/components/calendar.css +27 -27
- package/src/styles/components/chart-container.css +9 -9
- package/src/styles/components/checkbox.css +20 -20
- package/src/styles/components/chemical-formula.css +8 -8
- package/src/styles/components/collapsible-card.css +35 -35
- package/src/styles/components/color-slider.css +8 -8
- package/src/styles/components/concentration-input.css +27 -27
- package/src/styles/components/confirm-dialog.css +32 -32
- package/src/styles/components/dataframe.css +66 -66
- package/src/styles/components/date-picker.css +40 -40
- package/src/styles/components/datetime-picker.css +37 -37
- package/src/styles/components/divider.css +13 -13
- package/src/styles/components/dose-calculator.css +43 -43
- package/src/styles/components/dropdown-button.css +46 -46
- package/src/styles/components/empty-state.css +44 -44
- package/src/styles/components/experiment-code-badge.css +8 -8
- package/src/styles/components/experiment-data-viewer.css +23 -23
- package/src/styles/components/experiment-popover.css +97 -97
- package/src/styles/components/experiment-selector-modal.css +39 -39
- package/src/styles/components/experiment-timeline.css +98 -98
- package/src/styles/components/file-uploader.css +44 -44
- package/src/styles/components/fit-panel.css +12 -12
- package/src/styles/components/form-builder.css +11 -11
- package/src/styles/components/form-field.css +7 -7
- package/src/styles/components/formula-input.css +17 -17
- package/src/styles/components/group-assigner.css +26 -26
- package/src/styles/components/grouping-modal.css +51 -51
- package/src/styles/components/icon-button.css +41 -41
- package/src/styles/components/input.css +13 -13
- package/src/styles/components/loading-spinner.css +12 -12
- package/src/styles/components/modal.css +69 -69
- package/src/styles/components/molecule-input.css +27 -27
- package/src/styles/components/multi-select.css +23 -23
- package/src/styles/components/number-input.css +32 -32
- package/src/styles/components/pill.css +37 -37
- package/src/styles/components/plate-map-editor.css +67 -67
- package/src/styles/components/progress-bar.css +41 -41
- package/src/styles/components/protocol-step-editor.css +63 -63
- package/src/styles/components/rack-editor.css +34 -34
- package/src/styles/components/radio-group.css +41 -41
- package/src/styles/components/reagent-editor.css +70 -70
- package/src/styles/components/reagent-list.css +65 -65
- package/src/styles/components/resource-card.css +52 -52
- package/src/styles/components/sample-hierarchy-tree.css +56 -56
- package/src/styles/components/sample-legend.css +37 -37
- package/src/styles/components/sample-selector.css +121 -121
- package/src/styles/components/schedule-calendar.css +67 -67
- package/src/styles/components/scientific-number.css +11 -11
- package/src/styles/components/segmented-control.css +33 -33
- package/src/styles/components/select.css +11 -11
- package/src/styles/components/sequence-input.css +29 -29
- package/src/styles/components/settings-button.css +16 -16
- package/src/styles/components/settings-modal.css +14 -14
- package/src/styles/components/skeleton.css +2 -2
- package/src/styles/components/slider.css +10 -10
- package/src/styles/components/status-indicator.css +12 -12
- package/src/styles/components/step-wizard.css +32 -32
- package/src/styles/components/tabs.css +16 -16
- package/src/styles/components/tags-input.css +46 -46
- package/src/styles/components/textarea.css +17 -17
- package/src/styles/components/theme-toggle.css +13 -13
- package/src/styles/components/time-picker.css +28 -28
- package/src/styles/components/time-range-input.css +8 -8
- package/src/styles/components/toast.css +18 -18
- package/src/styles/components/toggle.css +27 -27
- package/src/styles/components/tooltip.css +18 -18
- package/src/styles/components/unit-input.css +25 -25
- package/src/styles/components/well-edit-popup.css +32 -32
- package/src/styles/components/well-plate.css +49 -49
- package/src/styles/index.css +1 -1
- package/src/styles/variables.css +3 -3
- package/src/types/platform.ts +6 -6
- package/dist/auth-BYmxZdJl.js.map +0 -1
- package/dist/components-CKf-UpGi.js.map +0 -1
- package/dist/useScheduleDrag-DAJueTbK.js.map +0 -1
|
@@ -21,15 +21,15 @@ describe('DataFrame', () => {
|
|
|
21
21
|
const wrapper = mount(DataFrame, {
|
|
22
22
|
props: { data: mockData, columns: mockColumns },
|
|
23
23
|
})
|
|
24
|
-
expect(wrapper.find('.
|
|
25
|
-
expect(wrapper.find('.
|
|
24
|
+
expect(wrapper.find('.mint-dataframe').exists()).toBe(true)
|
|
25
|
+
expect(wrapper.find('.mint-dataframe__table').exists()).toBe(true)
|
|
26
26
|
})
|
|
27
27
|
|
|
28
28
|
it('should render column headers', () => {
|
|
29
29
|
const wrapper = mount(DataFrame, {
|
|
30
30
|
props: { data: mockData, columns: mockColumns },
|
|
31
31
|
})
|
|
32
|
-
const headers = wrapper.findAll('.
|
|
32
|
+
const headers = wrapper.findAll('.mint-dataframe__th')
|
|
33
33
|
expect(headers).toHaveLength(3)
|
|
34
34
|
expect(headers[0].text()).toBe('Name')
|
|
35
35
|
expect(headers[1].text()).toBe('Age')
|
|
@@ -40,7 +40,7 @@ describe('DataFrame', () => {
|
|
|
40
40
|
const wrapper = mount(DataFrame, {
|
|
41
41
|
props: { data: mockData, columns: mockColumns },
|
|
42
42
|
})
|
|
43
|
-
const rows = wrapper.findAll('.
|
|
43
|
+
const rows = wrapper.findAll('.mint-dataframe__row')
|
|
44
44
|
expect(rows).toHaveLength(3)
|
|
45
45
|
})
|
|
46
46
|
|
|
@@ -48,8 +48,8 @@ describe('DataFrame', () => {
|
|
|
48
48
|
const wrapper = mount(DataFrame, {
|
|
49
49
|
props: { data: mockData, columns: mockColumns },
|
|
50
50
|
})
|
|
51
|
-
const firstRow = wrapper.findAll('.
|
|
52
|
-
const cells = firstRow.findAll('.
|
|
51
|
+
const firstRow = wrapper.findAll('.mint-dataframe__row')[0]
|
|
52
|
+
const cells = firstRow.findAll('.mint-dataframe__td')
|
|
53
53
|
expect(cells[0].text()).toBe('Alice')
|
|
54
54
|
expect(cells[1].text()).toBe('30')
|
|
55
55
|
expect(cells[2].text()).toBe('alice@example.com')
|
|
@@ -59,15 +59,15 @@ describe('DataFrame', () => {
|
|
|
59
59
|
const wrapper = mount(DataFrame, {
|
|
60
60
|
props: { data: mockData, columns: mockColumns },
|
|
61
61
|
})
|
|
62
|
-
expect(wrapper.find('.
|
|
62
|
+
expect(wrapper.find('.mint-dataframe--bordered').exists()).toBe(true)
|
|
63
63
|
})
|
|
64
64
|
|
|
65
65
|
it('should apply striped rows by default', () => {
|
|
66
66
|
const wrapper = mount(DataFrame, {
|
|
67
67
|
props: { data: mockData, columns: mockColumns },
|
|
68
68
|
})
|
|
69
|
-
const rows = wrapper.findAll('.
|
|
70
|
-
expect(rows[1].classes()).toContain('
|
|
69
|
+
const rows = wrapper.findAll('.mint-dataframe__row')
|
|
70
|
+
expect(rows[1].classes()).toContain('mint-dataframe__row--striped')
|
|
71
71
|
})
|
|
72
72
|
})
|
|
73
73
|
|
|
@@ -76,8 +76,8 @@ describe('DataFrame', () => {
|
|
|
76
76
|
const wrapper = mount(DataFrame, {
|
|
77
77
|
props: { data: mockData, columns: mockColumns },
|
|
78
78
|
})
|
|
79
|
-
const ageHeader = wrapper.findAll('.
|
|
80
|
-
expect(ageHeader.classes()).toContain('
|
|
79
|
+
const ageHeader = wrapper.findAll('.mint-dataframe__th')[1]
|
|
80
|
+
expect(ageHeader.classes()).toContain('mint-dataframe__th--align-right')
|
|
81
81
|
})
|
|
82
82
|
|
|
83
83
|
it('should apply column width', () => {
|
|
@@ -87,7 +87,7 @@ describe('DataFrame', () => {
|
|
|
87
87
|
const wrapper = mount(DataFrame, {
|
|
88
88
|
props: { data: mockData, columns },
|
|
89
89
|
})
|
|
90
|
-
const header = wrapper.find('.
|
|
90
|
+
const header = wrapper.find('.mint-dataframe__th')
|
|
91
91
|
expect(header.attributes('style')).toContain('width: 200px')
|
|
92
92
|
})
|
|
93
93
|
|
|
@@ -98,7 +98,7 @@ describe('DataFrame', () => {
|
|
|
98
98
|
const wrapper = mount(DataFrame, {
|
|
99
99
|
props: { data: mockData, columns },
|
|
100
100
|
})
|
|
101
|
-
const header = wrapper.find('.
|
|
101
|
+
const header = wrapper.find('.mint-dataframe__th')
|
|
102
102
|
expect(header.attributes('style')).toContain('width: 20rem')
|
|
103
103
|
})
|
|
104
104
|
|
|
@@ -109,7 +109,7 @@ describe('DataFrame', () => {
|
|
|
109
109
|
const wrapper = mount(DataFrame, {
|
|
110
110
|
props: { data: mockData, columns },
|
|
111
111
|
})
|
|
112
|
-
const header = wrapper.find('.
|
|
112
|
+
const header = wrapper.find('.mint-dataframe__th')
|
|
113
113
|
expect(header.attributes('style')).toContain('min-width: 150px')
|
|
114
114
|
})
|
|
115
115
|
|
|
@@ -120,8 +120,8 @@ describe('DataFrame', () => {
|
|
|
120
120
|
const wrapper = mount(DataFrame, {
|
|
121
121
|
props: { data: mockData, columns },
|
|
122
122
|
})
|
|
123
|
-
const cell = wrapper.find('.
|
|
124
|
-
expect(cell.classes()).toContain('
|
|
123
|
+
const cell = wrapper.find('.mint-dataframe__td')
|
|
124
|
+
expect(cell.classes()).toContain('mint-dataframe__td--ellipsis')
|
|
125
125
|
})
|
|
126
126
|
|
|
127
127
|
it('should use custom formatter', () => {
|
|
@@ -135,7 +135,7 @@ describe('DataFrame', () => {
|
|
|
135
135
|
const wrapper = mount(DataFrame, {
|
|
136
136
|
props: { data: mockData, columns },
|
|
137
137
|
})
|
|
138
|
-
const ageCell = wrapper.findAll('.
|
|
138
|
+
const ageCell = wrapper.findAll('.mint-dataframe__row')[0].findAll('.mint-dataframe__td')[0]
|
|
139
139
|
expect(ageCell.text()).toBe('30 years old')
|
|
140
140
|
})
|
|
141
141
|
})
|
|
@@ -150,7 +150,7 @@ describe('DataFrame', () => {
|
|
|
150
150
|
const wrapper = mount(DataFrame, {
|
|
151
151
|
props: { data: mockData, columns: sortableColumns },
|
|
152
152
|
})
|
|
153
|
-
const sortIcons = wrapper.findAll('.
|
|
153
|
+
const sortIcons = wrapper.findAll('.mint-dataframe__sort-icon')
|
|
154
154
|
expect(sortIcons).toHaveLength(2)
|
|
155
155
|
})
|
|
156
156
|
|
|
@@ -158,15 +158,15 @@ describe('DataFrame', () => {
|
|
|
158
158
|
const wrapper = mount(DataFrame, {
|
|
159
159
|
props: { data: mockData, columns: sortableColumns },
|
|
160
160
|
})
|
|
161
|
-
const headers = wrapper.findAll('.
|
|
162
|
-
expect(headers[0].classes()).toContain('
|
|
161
|
+
const headers = wrapper.findAll('.mint-dataframe__th')
|
|
162
|
+
expect(headers[0].classes()).toContain('mint-dataframe__th--sortable')
|
|
163
163
|
})
|
|
164
164
|
|
|
165
165
|
it('should sort ascending on first click', async () => {
|
|
166
166
|
const wrapper = mount(DataFrame, {
|
|
167
167
|
props: { data: mockData, columns: sortableColumns },
|
|
168
168
|
})
|
|
169
|
-
const nameHeader = wrapper.findAll('.
|
|
169
|
+
const nameHeader = wrapper.findAll('.mint-dataframe__th')[0]
|
|
170
170
|
await nameHeader.trigger('click')
|
|
171
171
|
|
|
172
172
|
expect(wrapper.emitted('update:sort')).toHaveLength(1)
|
|
@@ -183,7 +183,7 @@ describe('DataFrame', () => {
|
|
|
183
183
|
sort: { key: 'name', direction: 'asc' },
|
|
184
184
|
},
|
|
185
185
|
})
|
|
186
|
-
const nameHeader = wrapper.findAll('.
|
|
186
|
+
const nameHeader = wrapper.findAll('.mint-dataframe__th')[0]
|
|
187
187
|
await nameHeader.trigger('click')
|
|
188
188
|
|
|
189
189
|
const sortState = wrapper.emitted('update:sort')?.[0]?.[0] as SortState
|
|
@@ -198,7 +198,7 @@ describe('DataFrame', () => {
|
|
|
198
198
|
sort: { key: 'name', direction: 'desc' },
|
|
199
199
|
},
|
|
200
200
|
})
|
|
201
|
-
const nameHeader = wrapper.findAll('.
|
|
201
|
+
const nameHeader = wrapper.findAll('.mint-dataframe__th')[0]
|
|
202
202
|
await nameHeader.trigger('click')
|
|
203
203
|
|
|
204
204
|
const sortState = wrapper.emitted('update:sort')?.[0]?.[0]
|
|
@@ -209,12 +209,12 @@ describe('DataFrame', () => {
|
|
|
209
209
|
const wrapper = mount(DataFrame, {
|
|
210
210
|
props: { data: mockData, columns: sortableColumns },
|
|
211
211
|
})
|
|
212
|
-
const nameHeader = wrapper.findAll('.
|
|
212
|
+
const nameHeader = wrapper.findAll('.mint-dataframe__th')[0]
|
|
213
213
|
await nameHeader.trigger('click')
|
|
214
214
|
|
|
215
215
|
// After sorting, first row should have name starting with 'A'
|
|
216
|
-
const firstRow = wrapper.findAll('.
|
|
217
|
-
const cells = firstRow.findAll('.
|
|
216
|
+
const firstRow = wrapper.findAll('.mint-dataframe__row')[0]
|
|
217
|
+
const cells = firstRow.findAll('.mint-dataframe__td')
|
|
218
218
|
expect(cells[0].text()).toBe('Alice')
|
|
219
219
|
})
|
|
220
220
|
|
|
@@ -222,12 +222,12 @@ describe('DataFrame', () => {
|
|
|
222
222
|
const wrapper = mount(DataFrame, {
|
|
223
223
|
props: { data: mockData, columns: sortableColumns },
|
|
224
224
|
})
|
|
225
|
-
const ageHeader = wrapper.findAll('.
|
|
225
|
+
const ageHeader = wrapper.findAll('.mint-dataframe__th')[1]
|
|
226
226
|
await ageHeader.trigger('click')
|
|
227
227
|
|
|
228
228
|
// After sorting ascending, first row should have age 25
|
|
229
|
-
const firstRow = wrapper.findAll('.
|
|
230
|
-
const cells = firstRow.findAll('.
|
|
229
|
+
const firstRow = wrapper.findAll('.mint-dataframe__row')[0]
|
|
230
|
+
const cells = firstRow.findAll('.mint-dataframe__td')
|
|
231
231
|
expect(cells[1].text()).toBe('25')
|
|
232
232
|
})
|
|
233
233
|
|
|
@@ -239,8 +239,8 @@ describe('DataFrame', () => {
|
|
|
239
239
|
sort: { key: 'name', direction: 'asc' },
|
|
240
240
|
},
|
|
241
241
|
})
|
|
242
|
-
const nameHeader = wrapper.findAll('.
|
|
243
|
-
expect(nameHeader.classes()).toContain('
|
|
242
|
+
const nameHeader = wrapper.findAll('.mint-dataframe__th')[0]
|
|
243
|
+
expect(nameHeader.classes()).toContain('mint-dataframe__th--sorted')
|
|
244
244
|
})
|
|
245
245
|
|
|
246
246
|
it('should enable sorting globally with sortable prop', () => {
|
|
@@ -251,7 +251,7 @@ describe('DataFrame', () => {
|
|
|
251
251
|
const wrapper = mount(DataFrame, {
|
|
252
252
|
props: { data: mockData, columns, sortable: true },
|
|
253
253
|
})
|
|
254
|
-
const sortableHeaders = wrapper.findAll('.
|
|
254
|
+
const sortableHeaders = wrapper.findAll('.mint-dataframe__th--sortable')
|
|
255
255
|
expect(sortableHeaders).toHaveLength(2)
|
|
256
256
|
})
|
|
257
257
|
})
|
|
@@ -261,17 +261,17 @@ describe('DataFrame', () => {
|
|
|
261
261
|
const wrapper = mount(DataFrame, {
|
|
262
262
|
props: { data: mockData, columns: mockColumns, searchable: true },
|
|
263
263
|
})
|
|
264
|
-
expect(wrapper.find('.
|
|
264
|
+
expect(wrapper.find('.mint-dataframe__search').exists()).toBe(true)
|
|
265
265
|
})
|
|
266
266
|
|
|
267
267
|
it('should filter data based on search query', async () => {
|
|
268
268
|
const wrapper = mount(DataFrame, {
|
|
269
269
|
props: { data: mockData, columns: mockColumns, searchable: true },
|
|
270
270
|
})
|
|
271
|
-
const searchInput = wrapper.find('.
|
|
271
|
+
const searchInput = wrapper.find('.mint-dataframe__search')
|
|
272
272
|
await searchInput.setValue('Alice')
|
|
273
273
|
|
|
274
|
-
const rows = wrapper.findAll('.
|
|
274
|
+
const rows = wrapper.findAll('.mint-dataframe__row')
|
|
275
275
|
expect(rows).toHaveLength(1)
|
|
276
276
|
expect(rows[0].text()).toContain('Alice')
|
|
277
277
|
})
|
|
@@ -280,10 +280,10 @@ describe('DataFrame', () => {
|
|
|
280
280
|
const wrapper = mount(DataFrame, {
|
|
281
281
|
props: { data: mockData, columns: mockColumns, searchable: true },
|
|
282
282
|
})
|
|
283
|
-
const searchInput = wrapper.find('.
|
|
283
|
+
const searchInput = wrapper.find('.mint-dataframe__search')
|
|
284
284
|
await searchInput.setValue('bob@example.com')
|
|
285
285
|
|
|
286
|
-
const rows = wrapper.findAll('.
|
|
286
|
+
const rows = wrapper.findAll('.mint-dataframe__row')
|
|
287
287
|
expect(rows).toHaveLength(1)
|
|
288
288
|
expect(rows[0].text()).toContain('Bob')
|
|
289
289
|
})
|
|
@@ -297,11 +297,11 @@ describe('DataFrame', () => {
|
|
|
297
297
|
searchKeys: ['name'],
|
|
298
298
|
},
|
|
299
299
|
})
|
|
300
|
-
const searchInput = wrapper.find('.
|
|
300
|
+
const searchInput = wrapper.find('.mint-dataframe__search')
|
|
301
301
|
await searchInput.setValue('bob@example.com')
|
|
302
302
|
|
|
303
303
|
// Should not find Bob by email since we're only searching name
|
|
304
|
-
const rows = wrapper.findAll('.
|
|
304
|
+
const rows = wrapper.findAll('.mint-dataframe__row')
|
|
305
305
|
expect(rows).toHaveLength(0)
|
|
306
306
|
})
|
|
307
307
|
|
|
@@ -309,10 +309,10 @@ describe('DataFrame', () => {
|
|
|
309
309
|
const wrapper = mount(DataFrame, {
|
|
310
310
|
props: { data: mockData, columns: mockColumns, searchable: true },
|
|
311
311
|
})
|
|
312
|
-
const searchInput = wrapper.find('.
|
|
312
|
+
const searchInput = wrapper.find('.mint-dataframe__search')
|
|
313
313
|
await searchInput.setValue('ALICE')
|
|
314
314
|
|
|
315
|
-
const rows = wrapper.findAll('.
|
|
315
|
+
const rows = wrapper.findAll('.mint-dataframe__row')
|
|
316
316
|
expect(rows).toHaveLength(1)
|
|
317
317
|
})
|
|
318
318
|
|
|
@@ -325,7 +325,7 @@ describe('DataFrame', () => {
|
|
|
325
325
|
searchPlaceholder: 'Type to search...',
|
|
326
326
|
},
|
|
327
327
|
})
|
|
328
|
-
const searchInput = wrapper.find('.
|
|
328
|
+
const searchInput = wrapper.find('.mint-dataframe__search')
|
|
329
329
|
expect(searchInput.attributes('placeholder')).toBe('Type to search...')
|
|
330
330
|
})
|
|
331
331
|
})
|
|
@@ -341,15 +341,15 @@ describe('DataFrame', () => {
|
|
|
341
341
|
const wrapper = mount(DataFrame, {
|
|
342
342
|
props: { data: mockData, columns: mockColumns, pagination: paginationState },
|
|
343
343
|
})
|
|
344
|
-
expect(wrapper.find('.
|
|
345
|
-
expect(wrapper.find('.
|
|
344
|
+
expect(wrapper.find('.mint-dataframe__footer').exists()).toBe(true)
|
|
345
|
+
expect(wrapper.find('.mint-dataframe__page-controls').exists()).toBe(true)
|
|
346
346
|
})
|
|
347
347
|
|
|
348
348
|
it('should display page info', () => {
|
|
349
349
|
const wrapper = mount(DataFrame, {
|
|
350
350
|
props: { data: mockData, columns: mockColumns, pagination: paginationState },
|
|
351
351
|
})
|
|
352
|
-
const pageInfo = wrapper.find('.
|
|
352
|
+
const pageInfo = wrapper.find('.mint-dataframe__page-info')
|
|
353
353
|
expect(pageInfo.text()).toContain('1')
|
|
354
354
|
expect(pageInfo.text()).toContain('3')
|
|
355
355
|
})
|
|
@@ -358,7 +358,7 @@ describe('DataFrame', () => {
|
|
|
358
358
|
const wrapper = mount(DataFrame, {
|
|
359
359
|
props: { data: mockData, columns: mockColumns, pagination: paginationState },
|
|
360
360
|
})
|
|
361
|
-
const rows = wrapper.findAll('.
|
|
361
|
+
const rows = wrapper.findAll('.mint-dataframe__row')
|
|
362
362
|
expect(rows).toHaveLength(2) // pageSize is 2
|
|
363
363
|
})
|
|
364
364
|
|
|
@@ -366,7 +366,7 @@ describe('DataFrame', () => {
|
|
|
366
366
|
const wrapper = mount(DataFrame, {
|
|
367
367
|
props: { data: mockData, columns: mockColumns, pagination: paginationState },
|
|
368
368
|
})
|
|
369
|
-
const nextButton = wrapper.findAll('.
|
|
369
|
+
const nextButton = wrapper.findAll('.mint-dataframe__page-btn')[1]
|
|
370
370
|
await nextButton.trigger('click')
|
|
371
371
|
|
|
372
372
|
expect(wrapper.emitted('update:pagination')).toHaveLength(1)
|
|
@@ -378,7 +378,7 @@ describe('DataFrame', () => {
|
|
|
378
378
|
const wrapper = mount(DataFrame, {
|
|
379
379
|
props: { data: mockData, columns: mockColumns, pagination: paginationState },
|
|
380
380
|
})
|
|
381
|
-
const prevButton = wrapper.findAll('.
|
|
381
|
+
const prevButton = wrapper.findAll('.mint-dataframe__page-btn')[0]
|
|
382
382
|
expect(prevButton.attributes('disabled')).toBeDefined()
|
|
383
383
|
})
|
|
384
384
|
|
|
@@ -387,7 +387,7 @@ describe('DataFrame', () => {
|
|
|
387
387
|
const wrapper = mount(DataFrame, {
|
|
388
388
|
props: { data: mockData, columns: mockColumns, pagination: lastPageState },
|
|
389
389
|
})
|
|
390
|
-
const nextButton = wrapper.findAll('.
|
|
390
|
+
const nextButton = wrapper.findAll('.mint-dataframe__page-btn')[1]
|
|
391
391
|
expect(nextButton.attributes('disabled')).toBeDefined()
|
|
392
392
|
})
|
|
393
393
|
|
|
@@ -395,7 +395,7 @@ describe('DataFrame', () => {
|
|
|
395
395
|
const wrapper = mount(DataFrame, {
|
|
396
396
|
props: { data: mockData, columns: mockColumns, pagination: false },
|
|
397
397
|
})
|
|
398
|
-
expect(wrapper.find('.
|
|
398
|
+
expect(wrapper.find('.mint-dataframe__footer').exists()).toBe(false)
|
|
399
399
|
})
|
|
400
400
|
})
|
|
401
401
|
|
|
@@ -404,14 +404,14 @@ describe('DataFrame', () => {
|
|
|
404
404
|
const wrapper = mount(DataFrame, {
|
|
405
405
|
props: { data: mockData, columns: mockColumns, selectable: true },
|
|
406
406
|
})
|
|
407
|
-
expect(wrapper.find('.
|
|
407
|
+
expect(wrapper.find('.mint-dataframe__th--checkbox').exists()).toBe(true)
|
|
408
408
|
})
|
|
409
409
|
|
|
410
410
|
it('should show checkboxes for each row', () => {
|
|
411
411
|
const wrapper = mount(DataFrame, {
|
|
412
412
|
props: { data: mockData, columns: mockColumns, selectable: true },
|
|
413
413
|
})
|
|
414
|
-
const checkboxes = wrapper.findAll('.
|
|
414
|
+
const checkboxes = wrapper.findAll('.mint-dataframe__checkbox')
|
|
415
415
|
// One for header + one for each row
|
|
416
416
|
expect(checkboxes.length).toBeGreaterThan(mockData.length)
|
|
417
417
|
})
|
|
@@ -420,7 +420,7 @@ describe('DataFrame', () => {
|
|
|
420
420
|
const wrapper = mount(DataFrame, {
|
|
421
421
|
props: { data: mockData, columns: mockColumns, selectable: true, rowKey: 'id' },
|
|
422
422
|
})
|
|
423
|
-
const rowCheckboxes = wrapper.findAll('.
|
|
423
|
+
const rowCheckboxes = wrapper.findAll('.mint-dataframe__td--checkbox .mint-dataframe__checkbox')
|
|
424
424
|
await rowCheckboxes[0].trigger('change')
|
|
425
425
|
|
|
426
426
|
expect(wrapper.emitted('update:selectedKeys')).toHaveLength(1)
|
|
@@ -438,7 +438,7 @@ describe('DataFrame', () => {
|
|
|
438
438
|
selectedKeys: [1],
|
|
439
439
|
},
|
|
440
440
|
})
|
|
441
|
-
const rowCheckboxes = wrapper.findAll('.
|
|
441
|
+
const rowCheckboxes = wrapper.findAll('.mint-dataframe__td--checkbox .mint-dataframe__checkbox')
|
|
442
442
|
await rowCheckboxes[0].trigger('change')
|
|
443
443
|
|
|
444
444
|
const keys = wrapper.emitted('update:selectedKeys')?.[0]?.[0] as number[]
|
|
@@ -449,7 +449,7 @@ describe('DataFrame', () => {
|
|
|
449
449
|
const wrapper = mount(DataFrame, {
|
|
450
450
|
props: { data: mockData, columns: mockColumns, selectable: true, rowKey: 'id' },
|
|
451
451
|
})
|
|
452
|
-
const headerCheckbox = wrapper.find('.
|
|
452
|
+
const headerCheckbox = wrapper.find('.mint-dataframe__th--checkbox .mint-dataframe__checkbox')
|
|
453
453
|
await headerCheckbox.trigger('change')
|
|
454
454
|
|
|
455
455
|
const keys = wrapper.emitted('update:selectedKeys')?.[0]?.[0] as number[]
|
|
@@ -466,7 +466,7 @@ describe('DataFrame', () => {
|
|
|
466
466
|
selectedKeys: [1],
|
|
467
467
|
},
|
|
468
468
|
})
|
|
469
|
-
const selectedRow = wrapper.find('.
|
|
469
|
+
const selectedRow = wrapper.find('.mint-dataframe__row--selected')
|
|
470
470
|
expect(selectedRow.exists()).toBe(true)
|
|
471
471
|
})
|
|
472
472
|
})
|
|
@@ -476,7 +476,7 @@ describe('DataFrame', () => {
|
|
|
476
476
|
const wrapper = mount(DataFrame, {
|
|
477
477
|
props: { data: mockData, columns: mockColumns },
|
|
478
478
|
})
|
|
479
|
-
const firstRow = wrapper.findAll('.
|
|
479
|
+
const firstRow = wrapper.findAll('.mint-dataframe__row')[0]
|
|
480
480
|
await firstRow.trigger('click')
|
|
481
481
|
|
|
482
482
|
expect(wrapper.emitted('row-click')).toHaveLength(1)
|
|
@@ -489,7 +489,7 @@ describe('DataFrame', () => {
|
|
|
489
489
|
const wrapper = mount(DataFrame, {
|
|
490
490
|
props: { data: mockData, columns: mockColumns },
|
|
491
491
|
})
|
|
492
|
-
const firstCell = wrapper.find('.
|
|
492
|
+
const firstCell = wrapper.find('.mint-dataframe__td')
|
|
493
493
|
await firstCell.trigger('click')
|
|
494
494
|
|
|
495
495
|
expect(wrapper.emitted('cell-click')).toHaveLength(1)
|
|
@@ -505,28 +505,28 @@ describe('DataFrame', () => {
|
|
|
505
505
|
const wrapper = mount(DataFrame, {
|
|
506
506
|
props: { data: [], columns: mockColumns },
|
|
507
507
|
})
|
|
508
|
-
expect(wrapper.find('.
|
|
508
|
+
expect(wrapper.find('.mint-dataframe__empty').exists()).toBe(true)
|
|
509
509
|
})
|
|
510
510
|
|
|
511
511
|
it('should display empty text', () => {
|
|
512
512
|
const wrapper = mount(DataFrame, {
|
|
513
513
|
props: { data: [], columns: mockColumns },
|
|
514
514
|
})
|
|
515
|
-
expect(wrapper.find('.
|
|
515
|
+
expect(wrapper.find('.mint-dataframe__empty-text').text()).toBe('No data')
|
|
516
516
|
})
|
|
517
517
|
|
|
518
518
|
it('should use custom empty text', () => {
|
|
519
519
|
const wrapper = mount(DataFrame, {
|
|
520
520
|
props: { data: [], columns: mockColumns, emptyText: 'No records found' },
|
|
521
521
|
})
|
|
522
|
-
expect(wrapper.find('.
|
|
522
|
+
expect(wrapper.find('.mint-dataframe__empty-text').text()).toBe('No records found')
|
|
523
523
|
})
|
|
524
524
|
|
|
525
525
|
it('should not show empty state when loading', () => {
|
|
526
526
|
const wrapper = mount(DataFrame, {
|
|
527
527
|
props: { data: [], columns: mockColumns, loading: true },
|
|
528
528
|
})
|
|
529
|
-
expect(wrapper.find('.
|
|
529
|
+
expect(wrapper.find('.mint-dataframe__empty').exists()).toBe(false)
|
|
530
530
|
})
|
|
531
531
|
})
|
|
532
532
|
|
|
@@ -535,14 +535,14 @@ describe('DataFrame', () => {
|
|
|
535
535
|
const wrapper = mount(DataFrame, {
|
|
536
536
|
props: { data: mockData, columns: mockColumns, loading: true },
|
|
537
537
|
})
|
|
538
|
-
expect(wrapper.find('.
|
|
538
|
+
expect(wrapper.find('.mint-dataframe__loading').exists()).toBe(true)
|
|
539
539
|
})
|
|
540
540
|
|
|
541
541
|
it('should show loading spinner', () => {
|
|
542
542
|
const wrapper = mount(DataFrame, {
|
|
543
543
|
props: { data: mockData, columns: mockColumns, loading: true },
|
|
544
544
|
})
|
|
545
|
-
expect(wrapper.find('.
|
|
545
|
+
expect(wrapper.find('.mint-dataframe__loading-spinner').exists()).toBe(true)
|
|
546
546
|
})
|
|
547
547
|
})
|
|
548
548
|
|
|
@@ -551,36 +551,36 @@ describe('DataFrame', () => {
|
|
|
551
551
|
const wrapper = mount(DataFrame, {
|
|
552
552
|
props: { data: mockData, columns: mockColumns, striped: false },
|
|
553
553
|
})
|
|
554
|
-
expect(wrapper.find('.
|
|
554
|
+
expect(wrapper.find('.mint-dataframe__row--striped').exists()).toBe(false)
|
|
555
555
|
})
|
|
556
556
|
|
|
557
557
|
it('should not apply bordered when bordered is false', () => {
|
|
558
558
|
const wrapper = mount(DataFrame, {
|
|
559
559
|
props: { data: mockData, columns: mockColumns, bordered: false },
|
|
560
560
|
})
|
|
561
|
-
expect(wrapper.find('.
|
|
561
|
+
expect(wrapper.find('.mint-dataframe--bordered').exists()).toBe(false)
|
|
562
562
|
})
|
|
563
563
|
|
|
564
564
|
it('should apply size class to cells', () => {
|
|
565
565
|
const wrapper = mount(DataFrame, {
|
|
566
566
|
props: { data: mockData, columns: mockColumns, size: 'sm' },
|
|
567
567
|
})
|
|
568
|
-
const cell = wrapper.find('.
|
|
569
|
-
expect(cell.classes()).toContain('
|
|
568
|
+
const cell = wrapper.find('.mint-dataframe__td')
|
|
569
|
+
expect(cell.classes()).toContain('mint-dataframe__td--sm')
|
|
570
570
|
})
|
|
571
571
|
|
|
572
572
|
it('should apply sticky header class', () => {
|
|
573
573
|
const wrapper = mount(DataFrame, {
|
|
574
574
|
props: { data: mockData, columns: mockColumns, stickyHeader: true },
|
|
575
575
|
})
|
|
576
|
-
expect(wrapper.find('.
|
|
576
|
+
expect(wrapper.find('.mint-dataframe__thead--sticky').exists()).toBe(true)
|
|
577
577
|
})
|
|
578
578
|
|
|
579
579
|
it('should apply maxHeight style', () => {
|
|
580
580
|
const wrapper = mount(DataFrame, {
|
|
581
581
|
props: { data: mockData, columns: mockColumns, maxHeight: 400 },
|
|
582
582
|
})
|
|
583
|
-
const tableWrapper = wrapper.find('.
|
|
583
|
+
const tableWrapper = wrapper.find('.mint-dataframe__table-wrapper')
|
|
584
584
|
expect(tableWrapper.attributes('style')).toContain('max-height: 400px')
|
|
585
585
|
})
|
|
586
586
|
|
|
@@ -588,7 +588,7 @@ describe('DataFrame', () => {
|
|
|
588
588
|
const wrapper = mount(DataFrame, {
|
|
589
589
|
props: { data: mockData, columns: mockColumns, maxHeight: '50vh' },
|
|
590
590
|
})
|
|
591
|
-
const tableWrapper = wrapper.find('.
|
|
591
|
+
const tableWrapper = wrapper.find('.mint-dataframe__table-wrapper')
|
|
592
592
|
expect(tableWrapper.attributes('style')).toContain('max-height: 50vh')
|
|
593
593
|
})
|
|
594
594
|
})
|
|
@@ -605,7 +605,7 @@ describe('DataFrame', () => {
|
|
|
605
605
|
const wrapper = mount(DataFrame, {
|
|
606
606
|
props: { data: nestedData, columns: nestedColumns },
|
|
607
607
|
})
|
|
608
|
-
const cells = wrapper.findAll('.
|
|
608
|
+
const cells = wrapper.findAll('.mint-dataframe__td')
|
|
609
609
|
expect(cells[0].text()).toBe('Alice')
|
|
610
610
|
expect(cells[1].text()).toBe('alice@example.com')
|
|
611
611
|
})
|
|
@@ -621,7 +621,7 @@ describe('DataFrame', () => {
|
|
|
621
621
|
rowKey: 'id',
|
|
622
622
|
},
|
|
623
623
|
})
|
|
624
|
-
expect(wrapper.find('.
|
|
624
|
+
expect(wrapper.find('.mint-dataframe').exists()).toBe(true)
|
|
625
625
|
})
|
|
626
626
|
|
|
627
627
|
it('should use function rowKey', () => {
|
|
@@ -633,7 +633,7 @@ describe('DataFrame', () => {
|
|
|
633
633
|
rowKey: (row) => `row-${row.id}`,
|
|
634
634
|
},
|
|
635
635
|
})
|
|
636
|
-
expect(wrapper.find('.
|
|
636
|
+
expect(wrapper.find('.mint-dataframe').exists()).toBe(true)
|
|
637
637
|
})
|
|
638
638
|
})
|
|
639
639
|
|
|
@@ -703,7 +703,7 @@ describe('DataFrame', () => {
|
|
|
703
703
|
const wrapper = mount(DataFrame, {
|
|
704
704
|
props: { data: dataWithNulls, columns: mockColumns },
|
|
705
705
|
})
|
|
706
|
-
const cells = wrapper.findAll('.
|
|
706
|
+
const cells = wrapper.findAll('.mint-dataframe__td')
|
|
707
707
|
expect(cells[0].text()).toBe('')
|
|
708
708
|
expect(cells[1].text()).toBe('')
|
|
709
709
|
})
|
|
@@ -712,7 +712,7 @@ describe('DataFrame', () => {
|
|
|
712
712
|
const wrapper = mount(DataFrame, {
|
|
713
713
|
props: { data: mockData, columns: [] },
|
|
714
714
|
})
|
|
715
|
-
expect(wrapper.find('.
|
|
715
|
+
expect(wrapper.find('.mint-dataframe__table').exists()).toBe(true)
|
|
716
716
|
})
|
|
717
717
|
|
|
718
718
|
it('should handle large datasets efficiently', () => {
|
|
@@ -728,7 +728,7 @@ describe('DataFrame', () => {
|
|
|
728
728
|
pagination: { page: 1, pageSize: 10, total: 1000 },
|
|
729
729
|
},
|
|
730
730
|
})
|
|
731
|
-
const rows = wrapper.findAll('.
|
|
731
|
+
const rows = wrapper.findAll('.mint-dataframe__row')
|
|
732
732
|
expect(rows).toHaveLength(10)
|
|
733
733
|
})
|
|
734
734
|
|
|
@@ -741,10 +741,10 @@ describe('DataFrame', () => {
|
|
|
741
741
|
pagination: { page: 1, pageSize: 2, total: 3 },
|
|
742
742
|
},
|
|
743
743
|
})
|
|
744
|
-
const searchInput = wrapper.find('.
|
|
744
|
+
const searchInput = wrapper.find('.mint-dataframe__search')
|
|
745
745
|
await searchInput.setValue('Alice')
|
|
746
746
|
|
|
747
|
-
const rows = wrapper.findAll('.
|
|
747
|
+
const rows = wrapper.findAll('.mint-dataframe__row')
|
|
748
748
|
expect(rows).toHaveLength(1)
|
|
749
749
|
})
|
|
750
750
|
|
|
@@ -757,7 +757,7 @@ describe('DataFrame', () => {
|
|
|
757
757
|
rowKey: 'id',
|
|
758
758
|
},
|
|
759
759
|
})
|
|
760
|
-
const checkbox = wrapper.find('.
|
|
760
|
+
const checkbox = wrapper.find('.mint-dataframe__td--checkbox .mint-dataframe__checkbox')
|
|
761
761
|
await checkbox.trigger('click')
|
|
762
762
|
|
|
763
763
|
// Row click should not be emitted
|