@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.
@@ -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;
@@ -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-DjfatNJv.js";
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 _hoisted_10$30 = {
833
+ var _hoisted_11$28 = {
833
834
  key: 0,
834
835
  class: "mint-dataframe__td mint-dataframe__td--checkbox"
835
836
  };
836
- var _hoisted_11$28 = ["checked", "onChange"];
837
- var _hoisted_12$25 = ["onClick"];
838
- var _hoisted_13$24 = {
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 _hoisted_14$21 = { class: "mint-dataframe__empty-text" };
843
- var _hoisted_15$20 = {
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 _hoisted_16$18 = {
853
+ var _hoisted_18$16 = {
848
854
  key: 1,
849
855
  class: "mint-dataframe__footer"
850
856
  };
851
- var _hoisted_17$18 = { class: "mint-dataframe__page-info" };
852
- var _hoisted_18$16 = { class: "mint-dataframe__page-controls" };
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[4] || (_cache[4] = createElementVNode("svg", {
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, [__props.selectable ? (openBlock(), createElementBlock("th", _hoisted_5$47, [createElementVNode("input", {
1064
- type: "checkbox",
1065
- checked: allSelected.value,
1066
- indeterminate: selectIndeterminate.value,
1067
- class: "mint-dataframe__checkbox",
1068
- onChange: toggleSelectAll
1069
- }, null, 40, _hoisted_6$45)])) : createCommentVNode("", true), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (col) => {
1070
- return openBlock(), createElementBlock("th", {
1071
- key: col.key,
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
- `mint-dataframe__th--align-${col.align ?? "left"}`,
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
- style: normalizeStyle({
1082
- width: col.width ? typeof col.width === "number" ? `${col.width}px` : col.width : void 0,
1083
- minWidth: col.minWidth ? typeof col.minWidth === "number" ? `${col.minWidth}px` : col.minWidth : void 0
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
- }, [__props.selectable ? (openBlock(), createElementBlock("td", _hoisted_10$30, [createElementVNode("input", {
1117
- type: "checkbox",
1118
- checked: unref(rowSelection).isSelected(getRowKey(row, rowIndex)),
1119
- class: "mint-dataframe__checkbox",
1120
- onClick: _cache[1] || (_cache[1] = withModifiers(() => {}, ["stop"])),
1121
- onChange: ($event) => toggleRowSelect(getRowKey(row, rowIndex))
1122
- }, null, 40, _hoisted_11$28)])) : createCommentVNode("", true), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (col) => {
1123
- return openBlock(), createElementBlock("td", {
1124
- key: col.key,
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
- `mint-dataframe__td--align-${col.align ?? "left"}`,
1129
- { "mint-dataframe__td--ellipsis": col.ellipsis }
1130
- ]),
1131
- onClick: withModifiers(($event) => handleCellClick(row, col, rowIndex), ["stop"])
1132
- }, [renderSlot(_ctx.$slots, `cell-${col.key}`, {
1133
- value: getCellValue(row, col.key),
1134
- row,
1135
- column: col,
1136
- index: rowIndex
1137
- }, () => [createTextVNode(toDisplayString(formatCell(col, row, rowIndex)), 1)])], 10, _hoisted_12$25);
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", _hoisted_13$24, [renderSlot(_ctx.$slots, "empty", {}, () => [_cache[6] || (_cache[6] = createElementVNode("svg", {
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", _hoisted_14$21, toDisplayString(__props.emptyText), 1)])])) : createCommentVNode("", true),
1149
- __props.loading ? (openBlock(), createElementBlock("div", _hoisted_15$20, [renderSlot(_ctx.$slots, "loading", {}, () => [_cache[7] || (_cache[7] = createElementVNode("svg", {
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", _hoisted_16$18, [renderSlot(_ctx.$slots, "footer", {}, () => [createElementVNode("span", _hoisted_17$18, 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_18$16, [
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[2] || (_cache[2] = ($event) => handlePageChange(__props.pagination.page - 1))
1174
- }, [..._cache[8] || (_cache[8] = [createElementVNode("svg", {
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, _hoisted_19$15),
1182
- createElementVNode("span", _hoisted_20$14, toDisplayString(__props.pagination.page) + " / " + toDisplayString(totalPages.value), 1),
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[3] || (_cache[3] = ($event) => handlePageChange(__props.pagination.page + 1))
1188
- }, [..._cache[9] || (_cache[9] = [createElementVNode("svg", {
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, _hoisted_21$12)
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-DjfatNJv.js.map
16896
+ //# sourceMappingURL=components-C7UFkNIp.js.map