@morscherlab/mint-sdk 1.0.45 → 1.0.47
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/dist/components/DataFrame.vue.d.ts +15 -0
- package/dist/components/index.js +1 -1
- package/dist/{components-DjfatNJv.js → components-C7UFkNIp.js} +187 -86
- package/dist/components-C7UFkNIp.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/install.js +1 -1
- package/dist/styles.css +140 -0
- package/package.json +1 -1
- package/src/__tests__/components/DataFrame.test.ts +100 -0
- package/src/components/DataFrame.vue +97 -5
- package/src/styles/components/dataframe.css +79 -0
- package/dist/components-DjfatNJv.js.map +0 -1
|
@@ -55,6 +55,14 @@ interface Props {
|
|
|
55
55
|
selectedKeys?: (string | number)[];
|
|
56
56
|
/** Make each body row act as a click/keyboard target. */
|
|
57
57
|
clickableRows?: boolean;
|
|
58
|
+
/** Show a trailing action column with a per-row delete button. */
|
|
59
|
+
deletable?: boolean;
|
|
60
|
+
/** Tooltip / aria-label for the row delete button. */
|
|
61
|
+
deleteLabel?: string;
|
|
62
|
+
/** Allow dragging a column's right edge to resize it. */
|
|
63
|
+
resizable?: boolean;
|
|
64
|
+
/** Controlled column widths in px, keyed by column key (omit for uncontrolled). */
|
|
65
|
+
columnWidths?: Record<string, number>;
|
|
58
66
|
}
|
|
59
67
|
declare function __VLS_template(): {
|
|
60
68
|
attrs: Partial<{}>;
|
|
@@ -78,14 +86,18 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {},
|
|
|
78
86
|
"update:sort": (sort: SortState | null) => any;
|
|
79
87
|
"update:pagination": (pagination: PaginationState) => any;
|
|
80
88
|
"update:selectedKeys": (keys: (string | number)[]) => any;
|
|
89
|
+
"update:columnWidths": (widths: Record<string, number>) => any;
|
|
81
90
|
"row-click": (row: Record<string, unknown>, index: number) => any;
|
|
82
91
|
"cell-click": (value: unknown, column: DataFrameColumn<Record<string, unknown>>, row: Record<string, unknown>) => any;
|
|
92
|
+
"delete-row": (row: Record<string, unknown>, index: number) => any;
|
|
83
93
|
}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
|
|
84
94
|
"onUpdate:sort"?: ((sort: SortState | null) => any) | undefined;
|
|
85
95
|
"onUpdate:pagination"?: ((pagination: PaginationState) => any) | undefined;
|
|
86
96
|
"onUpdate:selectedKeys"?: ((keys: (string | number)[]) => any) | undefined;
|
|
97
|
+
"onUpdate:columnWidths"?: ((widths: Record<string, number>) => any) | undefined;
|
|
87
98
|
"onRow-click"?: ((row: Record<string, unknown>, index: number) => any) | undefined;
|
|
88
99
|
"onCell-click"?: ((value: unknown, column: DataFrameColumn<Record<string, unknown>>, row: Record<string, unknown>) => any) | undefined;
|
|
100
|
+
"onDelete-row"?: ((row: Record<string, unknown>, index: number) => any) | undefined;
|
|
89
101
|
}>, {
|
|
90
102
|
size: "sm" | "md" | "lg";
|
|
91
103
|
loading: boolean;
|
|
@@ -100,6 +112,9 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {},
|
|
|
100
112
|
selectable: boolean;
|
|
101
113
|
selectedKeys: (string | number)[];
|
|
102
114
|
clickableRows: boolean;
|
|
115
|
+
deletable: boolean;
|
|
116
|
+
deleteLabel: string;
|
|
117
|
+
resizable: boolean;
|
|
103
118
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
104
119
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
105
120
|
export default _default;
|
package/dist/components/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as LoadingSpinner_default, A as ReagentEditor_default, B as Avatar_default, Ct as Calendar_default, D as ScientificNumber_default, Dt as ColorSlider_default, E as ChemicalFormula_default, Et as BaseTabs_default, F as BioTemplatePackWorkspaceView_default, G as DoseDesignWorkspaceView_default, H as StatusIndicator_default, I as BioTemplateExperimentWorkspaceView_default, J as ScheduleCalendar_default, K as ControlWorkspaceView_default, L as BioTemplateRenderer_default, M as GroupAssigner_default, N as RackEditor_default, O as ProtocolStepEditor_default, P as BioTemplatePresetWorkspaceView_default, Q as SmartGroupFieldRecipe_default, R as ChartContainer_default, St as DataFrame_default, Tt as SegmentedControl_default, U as Divider_default, V as ProgressBar_default, W as AppContainer_default, X as AutoGroupModal_default, Y as SampleSelector_default, Z as SmartGroupManual_default, _ as InstrumentStateBadge_default, _t as CollapsibleCard_default, a as ExperimentDataViewer_default, at as DoseCalculator_default, bt as AppToastContainer_default, c as LcmsSequenceTable_default, ct as AppLayout_default, dt as FormActions_default, et as ReagentList_default, ft as StepWizard_default, g as InstrumentStatusCard_default, gt as PluginIcon_default, ht as AppAvatarMenu_default, i as TimeRangeInput_default, it as ExperimentTimeline_default, j as SmartGroupModal_default, k as SampleHierarchyTree_default, lt as AppSidebar_default, mt as AppPluginSwitcher_default, n as FitPanel_default, nt as SampleLegend_default, o as BatchProgressList_default, ot as PluginWorkspaceView_default, pt as AppTopBar_default, q as ComponentBindingRenderer_default, r as ResourceCard_default, rt as WellPlate_default, s as AuditTrail_default, st as MobileSupportGate_default, tt as PlateMapEditor_default, ut as FormBuilder_default, v as InstrumentAlertLog_default, vt as ThemeToggle_default, wt as DropdownButton_default, xt as AlertBox_default, y as SequenceProgressBar_default, yt as IconButton_default, z as Breadcrumb_default } from "../components-
|
|
1
|
+
import { $ as LoadingSpinner_default, A as ReagentEditor_default, B as Avatar_default, Ct as Calendar_default, D as ScientificNumber_default, Dt as ColorSlider_default, E as ChemicalFormula_default, Et as BaseTabs_default, F as BioTemplatePackWorkspaceView_default, G as DoseDesignWorkspaceView_default, H as StatusIndicator_default, I as BioTemplateExperimentWorkspaceView_default, J as ScheduleCalendar_default, K as ControlWorkspaceView_default, L as BioTemplateRenderer_default, M as GroupAssigner_default, N as RackEditor_default, O as ProtocolStepEditor_default, P as BioTemplatePresetWorkspaceView_default, Q as SmartGroupFieldRecipe_default, R as ChartContainer_default, St as DataFrame_default, Tt as SegmentedControl_default, U as Divider_default, V as ProgressBar_default, W as AppContainer_default, X as AutoGroupModal_default, Y as SampleSelector_default, Z as SmartGroupManual_default, _ as InstrumentStateBadge_default, _t as CollapsibleCard_default, a as ExperimentDataViewer_default, at as DoseCalculator_default, bt as AppToastContainer_default, c as LcmsSequenceTable_default, ct as AppLayout_default, dt as FormActions_default, et as ReagentList_default, ft as StepWizard_default, g as InstrumentStatusCard_default, gt as PluginIcon_default, ht as AppAvatarMenu_default, i as TimeRangeInput_default, it as ExperimentTimeline_default, j as SmartGroupModal_default, k as SampleHierarchyTree_default, lt as AppSidebar_default, mt as AppPluginSwitcher_default, n as FitPanel_default, nt as SampleLegend_default, o as BatchProgressList_default, ot as PluginWorkspaceView_default, pt as AppTopBar_default, q as ComponentBindingRenderer_default, r as ResourceCard_default, rt as WellPlate_default, s as AuditTrail_default, st as MobileSupportGate_default, tt as PlateMapEditor_default, ut as FormBuilder_default, v as InstrumentAlertLog_default, vt as ThemeToggle_default, wt as DropdownButton_default, xt as AlertBox_default, y as SequenceProgressBar_default, yt as IconButton_default, z as Breadcrumb_default } from "../components-C7UFkNIp.js";
|
|
2
2
|
import { t as BaseButton_default } from "../BaseButton-Dgqrze41.js";
|
|
3
3
|
import { r as BaseInput_default, t as BaseSelect_default } from "../BaseSelect-ekgr9fDo.js";
|
|
4
4
|
import { B as TagsInput_default, L as DateTimePicker_default, M as SequenceInput_default, O as ConcentrationInput_default, P as FormulaInput_default, R as FileUploader_default, V as TimePicker_default, at as MultiSelect_default, ct as BaseSlider_default, dt as BaseCheckbox_default, ft as Tooltip_default, it as DatePicker_default, j as MoleculeInput_default, k as UnitInput_default, lt as BaseRadioGroup_default, pt as BaseTextarea_default, ut as BaseToggle_default, z as NumberInput_default } from "../useControlSchema-BZNdalmL.js";
|
|
@@ -11,7 +11,7 @@ import { i as usePlatformContext, t as useFormBuilder } from "./useFormBuilder-D
|
|
|
11
11
|
import { i as useApi } from "./useExperimentSelector-DdCy5VNv.js";
|
|
12
12
|
import { n as ConfirmDialog_default, t as ExperimentPopover_default } from "./ExperimentPopover-BbPkIFsI.js";
|
|
13
13
|
import { B as toBioTemplateComponentProps, F as getBioTemplateComponentProps, H as toBioTemplateComponentPropsById, L as toBioTemplateComponentBindings, R as toBioTemplateComponentBindingsById, V as toBioTemplateComponentPropsByComponent, dn as extractTemplateCollection } from "./templates-CNbPQNID.js";
|
|
14
|
-
import { Fragment, Teleport, Transition, TransitionGroup, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createStaticVNode, createTextVNode, createVNode, defineAsyncComponent, defineComponent, effectScope, guardReactiveProps, h, inject, mergeModels, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onMounted, onScopeDispose, onUnmounted, openBlock, reactive, ref, renderList, renderSlot, resolveComponent, resolveDynamicComponent, shallowRef, toDisplayString, toRaw, unref, useModel, useSlots, vModelCheckbox, vModelSelect, vModelText, vShow, watch, withCtx, withDirectives, withKeys, withModifiers } from "vue";
|
|
14
|
+
import { Fragment, Teleport, Transition, TransitionGroup, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createStaticVNode, createTextVNode, createVNode, defineAsyncComponent, defineComponent, effectScope, guardReactiveProps, h, inject, mergeModels, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onBeforeUnmount, onMounted, onScopeDispose, onUnmounted, openBlock, reactive, ref, renderList, renderSlot, resolveComponent, resolveDynamicComponent, shallowRef, toDisplayString, toRaw, unref, useModel, useSlots, vModelCheckbox, vModelSelect, vModelText, vShow, watch, withCtx, withDirectives, withKeys, withModifiers } from "vue";
|
|
15
15
|
//#region \0rolldown/runtime.js
|
|
16
16
|
var __defProp = Object.defineProperty;
|
|
17
17
|
var __exportAll = (all, no_symbols) => {
|
|
@@ -823,36 +823,43 @@ var _hoisted_5$47 = {
|
|
|
823
823
|
var _hoisted_6$45 = ["checked", "indeterminate"];
|
|
824
824
|
var _hoisted_7$41 = ["onClick"];
|
|
825
825
|
var _hoisted_8$37 = { class: "mint-dataframe__th-content" };
|
|
826
|
-
var _hoisted_9$34 = [
|
|
826
|
+
var _hoisted_9$34 = ["onMousedown"];
|
|
827
|
+
var _hoisted_10$30 = [
|
|
827
828
|
"tabindex",
|
|
828
829
|
"role",
|
|
829
830
|
"onClick",
|
|
830
831
|
"onKeydown"
|
|
831
832
|
];
|
|
832
|
-
var
|
|
833
|
+
var _hoisted_11$28 = {
|
|
833
834
|
key: 0,
|
|
834
835
|
class: "mint-dataframe__td mint-dataframe__td--checkbox"
|
|
835
836
|
};
|
|
836
|
-
var
|
|
837
|
-
var
|
|
838
|
-
var
|
|
837
|
+
var _hoisted_12$25 = ["checked", "onChange"];
|
|
838
|
+
var _hoisted_13$24 = ["onClick"];
|
|
839
|
+
var _hoisted_14$21 = [
|
|
840
|
+
"aria-label",
|
|
841
|
+
"title",
|
|
842
|
+
"onClick"
|
|
843
|
+
];
|
|
844
|
+
var _hoisted_15$20 = {
|
|
839
845
|
key: 0,
|
|
840
846
|
class: "mint-dataframe__empty"
|
|
841
847
|
};
|
|
842
|
-
var
|
|
843
|
-
var
|
|
848
|
+
var _hoisted_16$18 = { class: "mint-dataframe__empty-text" };
|
|
849
|
+
var _hoisted_17$18 = {
|
|
844
850
|
key: 1,
|
|
845
851
|
class: "mint-dataframe__loading"
|
|
846
852
|
};
|
|
847
|
-
var
|
|
853
|
+
var _hoisted_18$16 = {
|
|
848
854
|
key: 1,
|
|
849
855
|
class: "mint-dataframe__footer"
|
|
850
856
|
};
|
|
851
|
-
var
|
|
852
|
-
var
|
|
853
|
-
var _hoisted_19$15 = ["disabled"];
|
|
854
|
-
var _hoisted_20$14 = { class: "mint-dataframe__page-number" };
|
|
857
|
+
var _hoisted_19$15 = { class: "mint-dataframe__page-info" };
|
|
858
|
+
var _hoisted_20$14 = { class: "mint-dataframe__page-controls" };
|
|
855
859
|
var _hoisted_21$12 = ["disabled"];
|
|
860
|
+
var _hoisted_22$10 = { class: "mint-dataframe__page-number" };
|
|
861
|
+
var _hoisted_23$9 = ["disabled"];
|
|
862
|
+
var MIN_COL_WIDTH = 48;
|
|
856
863
|
//#endregion
|
|
857
864
|
//#region src/components/DataFrame.vue
|
|
858
865
|
var DataFrame_default = /* @__PURE__ */ defineComponent({
|
|
@@ -903,14 +910,26 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
|
|
|
903
910
|
clickableRows: {
|
|
904
911
|
type: Boolean,
|
|
905
912
|
default: false
|
|
906
|
-
}
|
|
913
|
+
},
|
|
914
|
+
deletable: {
|
|
915
|
+
type: Boolean,
|
|
916
|
+
default: false
|
|
917
|
+
},
|
|
918
|
+
deleteLabel: { default: "Delete row" },
|
|
919
|
+
resizable: {
|
|
920
|
+
type: Boolean,
|
|
921
|
+
default: false
|
|
922
|
+
},
|
|
923
|
+
columnWidths: {}
|
|
907
924
|
},
|
|
908
925
|
emits: [
|
|
909
926
|
"update:sort",
|
|
910
927
|
"update:pagination",
|
|
911
928
|
"update:selectedKeys",
|
|
929
|
+
"update:columnWidths",
|
|
912
930
|
"row-click",
|
|
913
|
-
"cell-click"
|
|
931
|
+
"cell-click",
|
|
932
|
+
"delete-row"
|
|
914
933
|
],
|
|
915
934
|
setup(__props, { emit: __emit }) {
|
|
916
935
|
/** Data table with sortable columns, search, pagination, and optional row selection. */
|
|
@@ -1029,6 +1048,53 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
|
|
|
1029
1048
|
function toggleRowSelect(key) {
|
|
1030
1049
|
emit("update:selectedKeys", rowSelection.toggleValue(key));
|
|
1031
1050
|
}
|
|
1051
|
+
const internalWidths = ref({});
|
|
1052
|
+
const activeWidths = computed(() => props.columnWidths ?? internalWidths.value);
|
|
1053
|
+
function toCssSize(value) {
|
|
1054
|
+
if (value === void 0) return void 0;
|
|
1055
|
+
return typeof value === "number" ? `${value}px` : value;
|
|
1056
|
+
}
|
|
1057
|
+
function columnStyle(col) {
|
|
1058
|
+
return {
|
|
1059
|
+
width: toCssSize(activeWidths.value[col.key] ?? col.width),
|
|
1060
|
+
minWidth: toCssSize(col.minWidth)
|
|
1061
|
+
};
|
|
1062
|
+
}
|
|
1063
|
+
let resizeState = null;
|
|
1064
|
+
function startResize(col, event) {
|
|
1065
|
+
event.preventDefault();
|
|
1066
|
+
event.stopPropagation();
|
|
1067
|
+
const th = event.target.closest("th");
|
|
1068
|
+
const startWidth = th instanceof HTMLElement ? th.offsetWidth : typeof col.width === "number" ? col.width : MIN_COL_WIDTH;
|
|
1069
|
+
const min = Math.max(MIN_COL_WIDTH, typeof col.minWidth === "number" ? col.minWidth : 0);
|
|
1070
|
+
resizeState = {
|
|
1071
|
+
key: col.key,
|
|
1072
|
+
startX: event.clientX,
|
|
1073
|
+
startWidth,
|
|
1074
|
+
min
|
|
1075
|
+
};
|
|
1076
|
+
window.addEventListener("mousemove", onResizeMove);
|
|
1077
|
+
window.addEventListener("mouseup", stopResize);
|
|
1078
|
+
}
|
|
1079
|
+
function onResizeMove(event) {
|
|
1080
|
+
if (!resizeState) return;
|
|
1081
|
+
const next = Math.max(resizeState.min, resizeState.startWidth + (event.clientX - resizeState.startX));
|
|
1082
|
+
const widths = {
|
|
1083
|
+
...activeWidths.value,
|
|
1084
|
+
[resizeState.key]: next
|
|
1085
|
+
};
|
|
1086
|
+
if (props.columnWidths === void 0) internalWidths.value = widths;
|
|
1087
|
+
emit("update:columnWidths", widths);
|
|
1088
|
+
}
|
|
1089
|
+
function stopResize() {
|
|
1090
|
+
resizeState = null;
|
|
1091
|
+
window.removeEventListener("mousemove", onResizeMove);
|
|
1092
|
+
window.removeEventListener("mouseup", stopResize);
|
|
1093
|
+
}
|
|
1094
|
+
onBeforeUnmount(stopResize);
|
|
1095
|
+
function handleDeleteRow(row, index) {
|
|
1096
|
+
emit("delete-row", row, index);
|
|
1097
|
+
}
|
|
1032
1098
|
const wrapperStyle = computed(() => {
|
|
1033
1099
|
if (!props.maxHeight) return void 0;
|
|
1034
1100
|
return {
|
|
@@ -1038,7 +1104,7 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
|
|
|
1038
1104
|
});
|
|
1039
1105
|
return (_ctx, _cache) => {
|
|
1040
1106
|
return openBlock(), createElementBlock("div", { class: normalizeClass(["mint-dataframe", { "mint-dataframe--bordered": __props.bordered }]) }, [
|
|
1041
|
-
__props.searchable ? (openBlock(), createElementBlock("div", _hoisted_1$64, [createElementVNode("div", _hoisted_2$56, [_cache[
|
|
1107
|
+
__props.searchable ? (openBlock(), createElementBlock("div", _hoisted_1$64, [createElementVNode("div", _hoisted_2$56, [_cache[5] || (_cache[5] = createElementVNode("svg", {
|
|
1042
1108
|
class: "mint-dataframe__search-icon",
|
|
1043
1109
|
viewBox: "0 0 24 24",
|
|
1044
1110
|
fill: "none",
|
|
@@ -1060,48 +1126,66 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
|
|
|
1060
1126
|
class: "mint-dataframe__table-wrapper",
|
|
1061
1127
|
style: normalizeStyle(wrapperStyle.value)
|
|
1062
1128
|
}, [
|
|
1063
|
-
createElementVNode("table", _hoisted_4$49, [createElementVNode("thead", { class: normalizeClass(["mint-dataframe__thead", { "mint-dataframe__thead--sticky": __props.stickyHeader }]) }, [createElementVNode("tr", null, [
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1129
|
+
createElementVNode("table", _hoisted_4$49, [createElementVNode("thead", { class: normalizeClass(["mint-dataframe__thead", { "mint-dataframe__thead--sticky": __props.stickyHeader }]) }, [createElementVNode("tr", null, [
|
|
1130
|
+
__props.selectable ? (openBlock(), createElementBlock("th", _hoisted_5$47, [createElementVNode("input", {
|
|
1131
|
+
type: "checkbox",
|
|
1132
|
+
checked: allSelected.value,
|
|
1133
|
+
indeterminate: selectIndeterminate.value,
|
|
1134
|
+
class: "mint-dataframe__checkbox",
|
|
1135
|
+
onChange: toggleSelectAll
|
|
1136
|
+
}, null, 40, _hoisted_6$45)])) : createCommentVNode("", true),
|
|
1137
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (col) => {
|
|
1138
|
+
return openBlock(), createElementBlock("th", {
|
|
1139
|
+
key: col.key,
|
|
1140
|
+
class: normalizeClass([
|
|
1141
|
+
"mint-dataframe__th",
|
|
1142
|
+
`mint-dataframe__th--${__props.size}`,
|
|
1143
|
+
`mint-dataframe__th--align-${col.align ?? "left"}`,
|
|
1144
|
+
{
|
|
1145
|
+
"mint-dataframe__th--sortable": isColumnSortable(col),
|
|
1146
|
+
"mint-dataframe__th--sorted": activeSort.value?.key === col.key && activeSort.value?.direction,
|
|
1147
|
+
"mint-dataframe__th--resizable": __props.resizable
|
|
1148
|
+
}
|
|
1149
|
+
]),
|
|
1150
|
+
style: normalizeStyle(columnStyle(col)),
|
|
1151
|
+
onClick: ($event) => isColumnSortable(col) ? handleSort(col) : void 0
|
|
1152
|
+
}, [renderSlot(_ctx.$slots, `header-${col.key}`, { column: col }, () => [createElementVNode("div", _hoisted_8$37, [createElementVNode("span", null, toDisplayString(col.label), 1), isColumnSortable(col) ? (openBlock(), createElementBlock("svg", {
|
|
1153
|
+
key: 0,
|
|
1154
|
+
class: normalizeClass(["mint-dataframe__sort-icon", {
|
|
1155
|
+
"mint-dataframe__sort-icon--asc": activeSort.value?.key === col.key && activeSort.value?.direction === "asc",
|
|
1156
|
+
"mint-dataframe__sort-icon--desc": activeSort.value?.key === col.key && activeSort.value?.direction === "desc"
|
|
1157
|
+
}]),
|
|
1158
|
+
viewBox: "0 0 24 24",
|
|
1159
|
+
fill: "none",
|
|
1160
|
+
stroke: "currentColor",
|
|
1161
|
+
"stroke-width": "2",
|
|
1162
|
+
"stroke-linecap": "round",
|
|
1163
|
+
"stroke-linejoin": "round"
|
|
1164
|
+
}, [..._cache[6] || (_cache[6] = [
|
|
1165
|
+
createElementVNode("path", { d: "m21 16-4 4-4-4" }, null, -1),
|
|
1166
|
+
createElementVNode("path", { d: "M17 20V4" }, null, -1),
|
|
1167
|
+
createElementVNode("path", { d: "m3 8 4-4 4 4" }, null, -1),
|
|
1168
|
+
createElementVNode("path", { d: "M7 4v16" }, null, -1)
|
|
1169
|
+
])], 2)) : createCommentVNode("", true)])]), __props.resizable ? (openBlock(), createElementBlock("span", {
|
|
1170
|
+
key: 0,
|
|
1171
|
+
class: "mint-dataframe__resize-handle",
|
|
1172
|
+
role: "separator",
|
|
1173
|
+
"aria-orientation": "vertical",
|
|
1174
|
+
"aria-label": "Resize column",
|
|
1175
|
+
onMousedown: ($event) => startResize(col, $event),
|
|
1176
|
+
onClick: _cache[1] || (_cache[1] = withModifiers(() => {}, ["stop"]))
|
|
1177
|
+
}, null, 40, _hoisted_9$34)) : createCommentVNode("", true)], 14, _hoisted_7$41);
|
|
1178
|
+
}), 128)),
|
|
1179
|
+
__props.deletable ? (openBlock(), createElementBlock("th", {
|
|
1180
|
+
key: 1,
|
|
1072
1181
|
class: normalizeClass([
|
|
1073
1182
|
"mint-dataframe__th",
|
|
1074
1183
|
`mint-dataframe__th--${__props.size}`,
|
|
1075
|
-
|
|
1076
|
-
{
|
|
1077
|
-
"mint-dataframe__th--sortable": isColumnSortable(col),
|
|
1078
|
-
"mint-dataframe__th--sorted": activeSort.value?.key === col.key && activeSort.value?.direction
|
|
1079
|
-
}
|
|
1184
|
+
"mint-dataframe__th--actions"
|
|
1080
1185
|
]),
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
}),
|
|
1085
|
-
onClick: ($event) => isColumnSortable(col) ? handleSort(col) : void 0
|
|
1086
|
-
}, [renderSlot(_ctx.$slots, `header-${col.key}`, { column: col }, () => [createElementVNode("div", _hoisted_8$37, [createElementVNode("span", null, toDisplayString(col.label), 1), isColumnSortable(col) ? (openBlock(), createElementBlock("svg", {
|
|
1087
|
-
key: 0,
|
|
1088
|
-
class: normalizeClass(["mint-dataframe__sort-icon", {
|
|
1089
|
-
"mint-dataframe__sort-icon--asc": activeSort.value?.key === col.key && activeSort.value?.direction === "asc",
|
|
1090
|
-
"mint-dataframe__sort-icon--desc": activeSort.value?.key === col.key && activeSort.value?.direction === "desc"
|
|
1091
|
-
}]),
|
|
1092
|
-
viewBox: "0 0 24 24",
|
|
1093
|
-
fill: "none",
|
|
1094
|
-
stroke: "currentColor",
|
|
1095
|
-
"stroke-width": "2",
|
|
1096
|
-
"stroke-linecap": "round",
|
|
1097
|
-
"stroke-linejoin": "round"
|
|
1098
|
-
}, [..._cache[5] || (_cache[5] = [
|
|
1099
|
-
createElementVNode("path", { d: "m21 16-4 4-4-4" }, null, -1),
|
|
1100
|
-
createElementVNode("path", { d: "M17 20V4" }, null, -1),
|
|
1101
|
-
createElementVNode("path", { d: "m3 8 4-4 4 4" }, null, -1),
|
|
1102
|
-
createElementVNode("path", { d: "M7 4v16" }, null, -1)
|
|
1103
|
-
])], 2)) : createCommentVNode("", true)])])], 14, _hoisted_7$41);
|
|
1104
|
-
}), 128))])], 2), createElementVNode("tbody", null, [(openBlock(true), createElementBlock(Fragment, null, renderList(paginatedData.value, (row, rowIndex) => {
|
|
1186
|
+
"aria-label": "Actions"
|
|
1187
|
+
}, null, 2)) : createCommentVNode("", true)
|
|
1188
|
+
])], 2), createElementVNode("tbody", null, [(openBlock(true), createElementBlock(Fragment, null, renderList(paginatedData.value, (row, rowIndex) => {
|
|
1105
1189
|
return openBlock(), createElementBlock("tr", {
|
|
1106
1190
|
key: getRowKey(row, rowIndex),
|
|
1107
1191
|
class: normalizeClass(["mint-dataframe__row", {
|
|
@@ -1113,31 +1197,48 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
|
|
|
1113
1197
|
role: __props.clickableRows ? "button" : void 0,
|
|
1114
1198
|
onClick: ($event) => handleRowClick(row, rowIndex),
|
|
1115
1199
|
onKeydown: ($event) => handleRowKeydown($event, row, rowIndex)
|
|
1116
|
-
}, [
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1200
|
+
}, [
|
|
1201
|
+
__props.selectable ? (openBlock(), createElementBlock("td", _hoisted_11$28, [createElementVNode("input", {
|
|
1202
|
+
type: "checkbox",
|
|
1203
|
+
checked: unref(rowSelection).isSelected(getRowKey(row, rowIndex)),
|
|
1204
|
+
class: "mint-dataframe__checkbox",
|
|
1205
|
+
onClick: _cache[2] || (_cache[2] = withModifiers(() => {}, ["stop"])),
|
|
1206
|
+
onChange: ($event) => toggleRowSelect(getRowKey(row, rowIndex))
|
|
1207
|
+
}, null, 40, _hoisted_12$25)])) : createCommentVNode("", true),
|
|
1208
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (col) => {
|
|
1209
|
+
return openBlock(), createElementBlock("td", {
|
|
1210
|
+
key: col.key,
|
|
1211
|
+
class: normalizeClass([
|
|
1212
|
+
"mint-dataframe__td",
|
|
1213
|
+
`mint-dataframe__td--${__props.size}`,
|
|
1214
|
+
`mint-dataframe__td--align-${col.align ?? "left"}`,
|
|
1215
|
+
{ "mint-dataframe__td--ellipsis": col.ellipsis }
|
|
1216
|
+
]),
|
|
1217
|
+
onClick: withModifiers(($event) => handleCellClick(row, col, rowIndex), ["stop"])
|
|
1218
|
+
}, [renderSlot(_ctx.$slots, `cell-${col.key}`, {
|
|
1219
|
+
value: getCellValue(row, col.key),
|
|
1220
|
+
row,
|
|
1221
|
+
column: col,
|
|
1222
|
+
index: rowIndex
|
|
1223
|
+
}, () => [createTextVNode(toDisplayString(formatCell(col, row, rowIndex)), 1)])], 10, _hoisted_13$24);
|
|
1224
|
+
}), 128)),
|
|
1225
|
+
__props.deletable ? (openBlock(), createElementBlock("td", {
|
|
1226
|
+
key: 1,
|
|
1125
1227
|
class: normalizeClass([
|
|
1126
1228
|
"mint-dataframe__td",
|
|
1127
1229
|
`mint-dataframe__td--${__props.size}`,
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
}), 128))], 42, _hoisted_9$34);
|
|
1230
|
+
"mint-dataframe__td--actions"
|
|
1231
|
+
])
|
|
1232
|
+
}, [createElementVNode("button", {
|
|
1233
|
+
type: "button",
|
|
1234
|
+
class: "mint-dataframe__delete-btn",
|
|
1235
|
+
"aria-label": __props.deleteLabel,
|
|
1236
|
+
title: __props.deleteLabel,
|
|
1237
|
+
onClick: withModifiers(($event) => handleDeleteRow(row, rowIndex), ["stop"])
|
|
1238
|
+
}, [..._cache[7] || (_cache[7] = [createStaticVNode("<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 6h18\"></path><path d=\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"></path><path d=\"M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6\"></path><path d=\"M10 11v6\"></path><path d=\"M14 11v6\"></path></svg>", 1)])], 8, _hoisted_14$21)], 2)) : createCommentVNode("", true)
|
|
1239
|
+
], 42, _hoisted_10$30);
|
|
1139
1240
|
}), 128))])]),
|
|
1140
|
-
paginatedData.value.length === 0 && !__props.loading ? (openBlock(), createElementBlock("div",
|
|
1241
|
+
paginatedData.value.length === 0 && !__props.loading ? (openBlock(), createElementBlock("div", _hoisted_15$20, [renderSlot(_ctx.$slots, "empty", {}, () => [_cache[8] || (_cache[8] = createElementVNode("svg", {
|
|
1141
1242
|
class: "mint-dataframe__empty-icon",
|
|
1142
1243
|
viewBox: "0 0 24 24",
|
|
1143
1244
|
fill: "none",
|
|
@@ -1145,8 +1246,8 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
|
|
|
1145
1246
|
"stroke-width": "2",
|
|
1146
1247
|
"stroke-linecap": "round",
|
|
1147
1248
|
"stroke-linejoin": "round"
|
|
1148
|
-
}, [createElementVNode("polyline", { points: "22 12 16 12 14 15 10 15 8 12 2 12" }), createElementVNode("path", { d: "M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z" })], -1)), createElementVNode("p",
|
|
1149
|
-
__props.loading ? (openBlock(), createElementBlock("div",
|
|
1249
|
+
}, [createElementVNode("polyline", { points: "22 12 16 12 14 15 10 15 8 12 2 12" }), createElementVNode("path", { d: "M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z" })], -1)), createElementVNode("p", _hoisted_16$18, toDisplayString(__props.emptyText), 1)])])) : createCommentVNode("", true),
|
|
1250
|
+
__props.loading ? (openBlock(), createElementBlock("div", _hoisted_17$18, [renderSlot(_ctx.$slots, "loading", {}, () => [_cache[9] || (_cache[9] = createElementVNode("svg", {
|
|
1150
1251
|
class: "mint-dataframe__loading-spinner",
|
|
1151
1252
|
viewBox: "0 0 24 24",
|
|
1152
1253
|
fill: "none",
|
|
@@ -1165,34 +1266,34 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
|
|
|
1165
1266
|
"stroke-linecap": "round"
|
|
1166
1267
|
})], -1))])])) : createCommentVNode("", true)
|
|
1167
1268
|
], 4),
|
|
1168
|
-
__props.pagination ? (openBlock(), createElementBlock("div",
|
|
1269
|
+
__props.pagination ? (openBlock(), createElementBlock("div", _hoisted_18$16, [renderSlot(_ctx.$slots, "footer", {}, () => [createElementVNode("span", _hoisted_19$15, toDisplayString((__props.pagination.page - 1) * __props.pagination.pageSize + 1) + "–" + toDisplayString(Math.min(__props.pagination.page * __props.pagination.pageSize, unref(sortedData).length)) + " of " + toDisplayString(unref(sortedData).length), 1), createElementVNode("div", _hoisted_20$14, [
|
|
1169
1270
|
createElementVNode("button", {
|
|
1170
1271
|
type: "button",
|
|
1171
1272
|
class: "mint-dataframe__page-btn",
|
|
1172
1273
|
disabled: __props.pagination.page <= 1,
|
|
1173
|
-
onClick: _cache[
|
|
1174
|
-
}, [..._cache[
|
|
1274
|
+
onClick: _cache[3] || (_cache[3] = ($event) => handlePageChange(__props.pagination.page - 1))
|
|
1275
|
+
}, [..._cache[10] || (_cache[10] = [createElementVNode("svg", {
|
|
1175
1276
|
viewBox: "0 0 24 24",
|
|
1176
1277
|
fill: "none",
|
|
1177
1278
|
stroke: "currentColor",
|
|
1178
1279
|
"stroke-width": "2",
|
|
1179
1280
|
"stroke-linecap": "round",
|
|
1180
1281
|
"stroke-linejoin": "round"
|
|
1181
|
-
}, [createElementVNode("path", { d: "m15 18-6-6 6-6" })], -1)])], 8,
|
|
1182
|
-
createElementVNode("span",
|
|
1282
|
+
}, [createElementVNode("path", { d: "m15 18-6-6 6-6" })], -1)])], 8, _hoisted_21$12),
|
|
1283
|
+
createElementVNode("span", _hoisted_22$10, toDisplayString(__props.pagination.page) + " / " + toDisplayString(totalPages.value), 1),
|
|
1183
1284
|
createElementVNode("button", {
|
|
1184
1285
|
type: "button",
|
|
1185
1286
|
class: "mint-dataframe__page-btn",
|
|
1186
1287
|
disabled: __props.pagination.page >= totalPages.value,
|
|
1187
|
-
onClick: _cache[
|
|
1188
|
-
}, [..._cache[
|
|
1288
|
+
onClick: _cache[4] || (_cache[4] = ($event) => handlePageChange(__props.pagination.page + 1))
|
|
1289
|
+
}, [..._cache[11] || (_cache[11] = [createElementVNode("svg", {
|
|
1189
1290
|
viewBox: "0 0 24 24",
|
|
1190
1291
|
fill: "none",
|
|
1191
1292
|
stroke: "currentColor",
|
|
1192
1293
|
"stroke-width": "2",
|
|
1193
1294
|
"stroke-linecap": "round",
|
|
1194
1295
|
"stroke-linejoin": "round"
|
|
1195
|
-
}, [createElementVNode("path", { d: "m9 18 6-6-6-6" })], -1)])], 8,
|
|
1296
|
+
}, [createElementVNode("path", { d: "m9 18 6-6-6-6" })], -1)])], 8, _hoisted_23$9)
|
|
1196
1297
|
])])])) : createCommentVNode("", true)
|
|
1197
1298
|
], 2);
|
|
1198
1299
|
};
|
|
@@ -16792,4 +16893,4 @@ var components_exports = /* @__PURE__ */ __exportAll({
|
|
|
16792
16893
|
//#endregion
|
|
16793
16894
|
export { LoadingSpinner_default as $, ReagentEditor_default as A, Avatar_default as B, formatSequenceRemaining as C, Calendar_default as Ct, ScientificNumber_default as D, ColorSlider_default as Dt, ChemicalFormula_default as E, BaseTabs_default as Et, BioTemplatePackWorkspaceView_default as F, DoseDesignWorkspaceView_default as G, StatusIndicator_default as H, BioTemplateExperimentWorkspaceView_default as I, ScheduleCalendar_default as J, ControlWorkspaceView_default as K, BioTemplateRenderer_default as L, GroupAssigner_default as M, RackEditor_default as N, ProtocolStepEditor_default as O, BioTemplatePresetWorkspaceView_default as P, SmartGroupFieldRecipe_default as Q, ChartContainer_default as R, formatSequenceEta as S, DataFrame_default as St, sequenceSamplesRemaining as T, SegmentedControl_default as Tt, Divider_default as U, ProgressBar_default as V, AppContainer_default as W, AutoGroupModal_default as X, SampleSelector_default as Y, SmartGroupManual_default as Z, InstrumentStateBadge_default as _, CollapsibleCard_default as _t, ExperimentDataViewer_default as a, DoseCalculator_default as at, estimateSequenceFinishDate as b, AppToastContainer_default as bt, LcmsSequenceTable_default as c, AppLayout_default as ct, extractLcmsCommonPrefix as d, FormActions_default as dt, ReagentList_default as et, extractLcmsSampleName as f, StepWizard_default as ft, InstrumentStatusCard_default as g, PluginIcon_default as gt, reconstructLcmsPlateCellsFromSequenceItems as h, AppAvatarMenu_default as ht, TimeRangeInput_default as i, ExperimentTimeline_default as it, SmartGroupModal_default as j, SampleHierarchyTree_default as k, DEFAULT_LCMS_SEQUENCE_COLUMNS as l, AppSidebar_default as lt, lcmsWellIdFromPosition as m, AppPluginSwitcher_default as mt, FitPanel_default as n, SampleLegend_default as nt, BatchProgressList_default as o, PluginWorkspaceView_default as ot, inferLcmsPlateTypeFromWellIds as p, AppTopBar_default as pt, ComponentBindingRenderer_default as q, ResourceCard_default as r, WellPlate_default as rt, AuditTrail_default as s, MobileSupportGate_default as st, components_exports as t, PlateMapEditor_default as tt, basenameFromWindowsPath as u, FormBuilder_default as ut, InstrumentAlertLog_default as v, ThemeToggle_default as vt, sequenceProgressPercent as w, DropdownButton_default as wt, estimateSequenceRemainingSeconds as x, AlertBox_default as xt, SequenceProgressBar_default as y, IconButton_default as yt, Breadcrumb_default as z };
|
|
16794
16895
|
|
|
16795
|
-
//# sourceMappingURL=components-
|
|
16896
|
+
//# sourceMappingURL=components-C7UFkNIp.js.map
|