@economic/taco 2.68.0 → 2.69.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/taco.cjs +53 -46
- package/dist/taco.cjs.map +1 -1
- package/dist/taco.d.ts +3 -1
- package/dist/taco.js +53 -46
- package/dist/taco.js.map +1 -1
- package/package.json +2 -2
package/dist/taco.cjs
CHANGED
@@ -11409,22 +11409,22 @@ const getButtonClasses$1 = () => {
|
|
11409
11409
|
const getAppearanceClasses = (value, icon = false) => {
|
11410
11410
|
switch (value) {
|
11411
11411
|
case "primary":
|
11412
|
-
return `wcag-blue-500 visited:wcag-blue-500 hover:wcag-blue-700 hover:active:wcag-blue-500 aria-disabled:bg-blue-500/50 aria-disabled:active:bg-blue-500/50`;
|
11412
|
+
return `wcag-blue-500 visited:wcag-blue-500 hover:wcag-blue-700 hover:active:wcag-blue-500 focus-visible:wcag-blue-500 aria-disabled:bg-blue-500/50 aria-disabled:active:bg-blue-500/50`;
|
11413
11413
|
case "danger":
|
11414
|
-
return `wcag-red-500 visited:wcag-red-500 hover:wcag-red-700 hover:active:wcag-red-500 aria-disabled:bg-red-500/50 aria-disabled:active:bg-red-500/50`;
|
11414
|
+
return `wcag-red-500 visited:wcag-red-500 hover:wcag-red-700 hover:active:wcag-red-500 focus-visible:wcag-red-500 aria-disabled:bg-red-500/50 aria-disabled:active:bg-red-500/50`;
|
11415
11415
|
case "ghost":
|
11416
|
-
return `bg-white border border-blue-500 text-blue-500 visited:text-blue-500 hover:bg-blue-100 hover:text-blue-700 aria-disabled:border-blue-500/50 aria-disabled:text-blue-500/50 aria-disabled:bg-white`;
|
11416
|
+
return `bg-white border border-blue-500 text-blue-500 visited:text-blue-500 hover:bg-blue-100 hover:text-blue-700 focus-visible:text-blue-700 aria-disabled:border-blue-500/50 aria-disabled:text-blue-500/50 aria-disabled:bg-white`;
|
11417
11417
|
case "discrete": {
|
11418
11418
|
if (icon) {
|
11419
|
-
return `bg-transparent text-black visited:text-black hover:bg-[#000]/[0.08] aria-disabled:text-black/30`;
|
11419
|
+
return `bg-transparent text-black visited:text-black hover:bg-[#000]/[0.08] focus-visible:bg-[#000]/[0.08] aria-disabled:text-black/30`;
|
11420
11420
|
}
|
11421
|
-
return `bg-transparent text-blue-500 visited:text-blue-500 hover:text-blue-700 aria-disabled:text-blue-500/50`;
|
11421
|
+
return `bg-transparent text-blue-500 visited:text-blue-500 hover:text-blue-700 focus-visible:text-blue-700 aria-disabled:text-blue-500/50`;
|
11422
11422
|
}
|
11423
11423
|
case "transparent": {
|
11424
|
-
return `bg-transparent text-black visited:text-black hover:text-black hover:bg-[#000]/[0.08] aria-disabled:text-black/30 aria-disabled:bg-transparent`;
|
11424
|
+
return `bg-transparent text-black visited:text-black hover:text-black focus-visible:text-black hover:bg-[#000]/[0.08] aria-disabled:text-black/30 aria-disabled:bg-transparent`;
|
11425
11425
|
}
|
11426
11426
|
default:
|
11427
|
-
return `wcag-grey-200 visited:wcag-grey-200 hover:wcag-grey-300 aria-disabled:bg-grey-200/50 aria-disabled:text-black/30`;
|
11427
|
+
return `wcag-grey-200 visited:wcag-grey-200 hover:wcag-grey-300 focus-visible:wcag-grey-300 aria-disabled:bg-grey-200/50 aria-disabled:text-black/30`;
|
11428
11428
|
}
|
11429
11429
|
};
|
11430
11430
|
const createButtonWithTooltip = (props, className, ref) => {
|
@@ -18262,7 +18262,7 @@ const ScrollableList = React__namespace.forwardRef(function ScrollableList2(prop
|
|
18262
18262
|
role: options.length <= 0 || loading ? "presentation" : "listbox",
|
18263
18263
|
tabIndex: otherProps.tabIndex || 0
|
18264
18264
|
};
|
18265
|
-
return /* @__PURE__ */ React__namespace.createElement("ul", { ...list, "data-taco": "scrollable-list" }, loading ? /* @__PURE__ */ React__namespace.createElement("li", { className: "yt-list__empty" }, /* @__PURE__ */ React__namespace.createElement("span", null, /* @__PURE__ */ React__namespace.createElement(Spinner, { delay: 0 })), /* @__PURE__ */ React__namespace.createElement("span", null, texts.listbox.loading)) : options.length ? options.map(({ children, icon, ...optionProps }) => /* @__PURE__ */ React__namespace.createElement("li", { ...optionProps }, icon, /* @__PURE__ */ React__namespace.createElement("span", { className: "flex-grow truncate text-left" }, children), multiselect && /* @__PURE__ */ React__namespace.createElement(
|
18265
|
+
return /* @__PURE__ */ React__namespace.createElement("ul", { ...list, "data-taco": "scrollable-list" }, loading ? /* @__PURE__ */ React__namespace.createElement("li", { className: "yt-list__empty" }, /* @__PURE__ */ React__namespace.createElement("span", null, /* @__PURE__ */ React__namespace.createElement(Spinner, { delay: 0 })), /* @__PURE__ */ React__namespace.createElement("span", null, texts.listbox.loading)) : options.length ? options.map(({ children, icon, ...optionProps }) => /* @__PURE__ */ React__namespace.createElement("li", { ...optionProps }, icon, /* @__PURE__ */ React__namespace.createElement("span", { "data-taco": "list-option", className: "flex-grow truncate text-left" }, children), multiselect && /* @__PURE__ */ React__namespace.createElement(
|
18266
18266
|
Checkbox$2,
|
18267
18267
|
{
|
18268
18268
|
"aria-hidden": true,
|
@@ -38499,7 +38499,16 @@ const useResizeObserver$1 = (ref, enabled = true) => {
|
|
38499
38499
|
const DisplayRow = React.memo(
|
38500
38500
|
React.forwardRef(function DisplayRow2(props, externalRef) {
|
38501
38501
|
var _a, _b, _c;
|
38502
|
-
const {
|
38502
|
+
const {
|
38503
|
+
children,
|
38504
|
+
cellRenderer: CellRenderer,
|
38505
|
+
index: index2,
|
38506
|
+
measureRow,
|
38507
|
+
row,
|
38508
|
+
table,
|
38509
|
+
remeasureDependencies = [],
|
38510
|
+
...otherAttributes
|
38511
|
+
} = props;
|
38503
38512
|
const tableMeta = table.options.meta;
|
38504
38513
|
const attributes = {
|
38505
38514
|
...otherAttributes,
|
@@ -38595,7 +38604,7 @@ const DisplayRow = React.memo(
|
|
38595
38604
|
const rowHeight = ((_a2 = ref.current) == null ? void 0 : _a2.getBoundingClientRect().height) ?? 0;
|
38596
38605
|
const expansionHeight = ((_b2 = expansionRef.current) == null ? void 0 : _b2.getBoundingClientRect().height) ?? 0;
|
38597
38606
|
measureRow(rowHeight + expansionHeight);
|
38598
|
-
}, [expansionRef.current, expandedRowSize == null ? void 0 : expandedRowSize.height]);
|
38607
|
+
}, [expansionRef.current, expandedRowSize == null ? void 0 : expandedRowSize.height, ...remeasureDependencies]);
|
38599
38608
|
const className = clsx("group/row", otherAttributes.className, {
|
38600
38609
|
"hover:cursor-grab": tableMeta.rowDrag.isEnabled && typeof attributes.onClick !== "function",
|
38601
38610
|
"hover:cursor-pointer": typeof attributes.onClick === "function"
|
@@ -44241,7 +44250,7 @@ const Option = React.forwardRef(function Select2Option(props, ref) {
|
|
44241
44250
|
value: props.value
|
44242
44251
|
}
|
44243
44252
|
) : void 0;
|
44244
|
-
return /* @__PURE__ */ React.createElement(Option$1, { ...otherProps, className, onClick: handleClick, onKeyDown: handleKeyDown, ref }, hasValue2 ? /* @__PURE__ */ React.createElement(Icon$1, { name: "tick", className: "pointer-events-none invisible -mx-0.5 !h-4 !w-4 group-aria-selected:visible" }) : null, typeof children === "string" ? isTag ? /* @__PURE__ */ React.createElement(Tag, { className: "pointer-events-none my-1", color: color2, icon: prefix2 }, children) : /* @__PURE__ */ React.createElement(React.Fragment, null, prefix2 ? typeof prefix2 === "string" ? /* @__PURE__ */ React.createElement(Icon$1, { name: prefix2, className: "!h-5 !w-5" }) : prefix2 : null, /* @__PURE__ */ React.createElement("span", { className: "flex w-full justify-between" }, /* @__PURE__ */ React.createElement("span", { className: "flex flex-col" }, /* @__PURE__ */ React.createElement("span", null, children), description ? /* @__PURE__ */ React.createElement("span", { className: "text-grey-700 -mt-1.5 mb-1.5 text-xs", "data-taco": "description" }, description) : null), /* @__PURE__ */ React.createElement("span", { className: "flex flex-col self-center" }, postfix ? typeof postfix === "string" ? /* @__PURE__ */ React.createElement(Icon$1, { name: postfix, className: "!h-5 !w-5" }) : postfix : null))) : /* @__PURE__ */ React.createElement("span",
|
44253
|
+
return /* @__PURE__ */ React.createElement(Option$1, { ...otherProps, className, onClick: handleClick, onKeyDown: handleKeyDown, ref }, hasValue2 ? /* @__PURE__ */ React.createElement(Icon$1, { name: "tick", className: "pointer-events-none invisible -mx-0.5 !h-4 !w-4 group-aria-selected:visible" }) : null, typeof children === "string" ? isTag ? /* @__PURE__ */ React.createElement(Tag, { className: "pointer-events-none my-1", color: color2, icon: prefix2 }, children) : /* @__PURE__ */ React.createElement(React.Fragment, null, prefix2 ? typeof prefix2 === "string" ? /* @__PURE__ */ React.createElement(Icon$1, { name: prefix2, className: "!h-5 !w-5" }) : prefix2 : null, /* @__PURE__ */ React.createElement("span", { className: "flex w-full justify-between" }, /* @__PURE__ */ React.createElement("span", { className: "flex flex-col" }, /* @__PURE__ */ React.createElement("span", null, children), description ? /* @__PURE__ */ React.createElement("span", { className: "text-grey-700 -mt-1.5 mb-1.5 text-xs", "data-taco": "description" }, description) : null), /* @__PURE__ */ React.createElement("span", { className: "flex flex-col self-center" }, postfix ? typeof postfix === "string" ? /* @__PURE__ */ React.createElement(Icon$1, { name: postfix, className: "!h-5 !w-5" }) : postfix : null))) : /* @__PURE__ */ React.createElement("span", { className: "w-full" }, children), popover ? /* @__PURE__ */ React.createElement(
|
44245
44254
|
IconButton,
|
44246
44255
|
{
|
44247
44256
|
icon: "ellipsis-vertical",
|
@@ -45249,11 +45258,11 @@ function guessComparatorsBasedOnControl(column) {
|
|
45249
45258
|
}
|
45250
45259
|
const FilterContext = React.createContext([]);
|
45251
45260
|
const FilterColumn = React.forwardRef((props, ref) => {
|
45252
|
-
const {
|
45261
|
+
const { allColumns, onChange: handleChange, value = null, ...attributes } = props;
|
45253
45262
|
const { texts } = useLocalization();
|
45254
45263
|
const filters = React.useContext(FilterContext);
|
45255
|
-
const selectedColumn =
|
45256
|
-
const warning2 = selectedColumn && !selectedColumn.
|
45264
|
+
const selectedColumn = allColumns.find((column) => column.id === value);
|
45265
|
+
const warning2 = selectedColumn && !selectedColumn.getIsVisible();
|
45257
45266
|
return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React.createElement(
|
45258
45267
|
Field,
|
45259
45268
|
{
|
@@ -45271,23 +45280,22 @@ const FilterColumn = React.forwardRef((props, ref) => {
|
|
45271
45280
|
onChange: handleChange,
|
45272
45281
|
value
|
45273
45282
|
},
|
45274
|
-
|
45283
|
+
allColumns.map((column) => {
|
45275
45284
|
var _a, _b;
|
45276
45285
|
return /* @__PURE__ */ React.createElement(
|
45277
45286
|
Select22.Option,
|
45278
45287
|
{
|
45279
|
-
key:
|
45280
|
-
value:
|
45281
|
-
|
45282
|
-
Tooltip$3,
|
45283
|
-
{
|
45284
|
-
title: header.column.getIsGrouped() ? texts.table.filters.hiddenGroupedColumn : texts.table.filters.hiddenColumn
|
45285
|
-
},
|
45286
|
-
/* @__PURE__ */ React.createElement(Icon$1, { name: "eye-off", className: "text-grey-500 !h-5 !w-5" })
|
45287
|
-
) : void 0,
|
45288
|
-
disabled: header.column.id !== value && (!header.column.getCanFilter() || !!filters.some((f2) => f2.id === header.column.id))
|
45288
|
+
key: column.id,
|
45289
|
+
value: column.id,
|
45290
|
+
disabled: column.id !== value && (!column.getCanFilter() || !!filters.some((f2) => f2.id === column.id))
|
45289
45291
|
},
|
45290
|
-
/* @__PURE__ */ React.createElement(React.
|
45292
|
+
/* @__PURE__ */ React.createElement("span", { className: "flex w-full justify-between" }, /* @__PURE__ */ React.createElement("span", { className: "flex flex-col" }, flexRender(column.columnDef.header, { column }), column.parent ? flexRender((_b = (_a = column.parent) == null ? void 0 : _a.columnDef.meta) == null ? void 0 : _b.header, { column }) : ""), /* @__PURE__ */ React.createElement("span", { className: "flex flex-col self-center" }, !column.getIsVisible() || column.getIsGrouped() ? /* @__PURE__ */ React.createElement(
|
45293
|
+
Tooltip$3,
|
45294
|
+
{
|
45295
|
+
title: column.getIsGrouped() ? texts.table.filters.hiddenGroupedColumn : texts.table.filters.hiddenColumn
|
45296
|
+
},
|
45297
|
+
/* @__PURE__ */ React.createElement(Icon$1, { name: "eye-off", className: "text-grey-500 !h-5 !w-5" })
|
45298
|
+
) : void 0))
|
45291
45299
|
);
|
45292
45300
|
})
|
45293
45301
|
)
|
@@ -45458,9 +45466,9 @@ function Control(props) {
|
|
45458
45466
|
);
|
45459
45467
|
}
|
45460
45468
|
function Filter(props) {
|
45461
|
-
const {
|
45469
|
+
const { allColumns, filter: filter2, onChange: handleChange, onRemove, position } = props;
|
45462
45470
|
const { texts } = useLocalization();
|
45463
|
-
const column =
|
45471
|
+
const column = allColumns.find((column2) => column2.id === filter2.id);
|
45464
45472
|
const ref = React.useRef(null);
|
45465
45473
|
const {
|
45466
45474
|
id: id2,
|
@@ -45468,13 +45476,13 @@ function Filter(props) {
|
|
45468
45476
|
} = filter2;
|
45469
45477
|
const handleChangeColumn = (columnId) => {
|
45470
45478
|
var _a, _b, _c;
|
45471
|
-
const previousColumn =
|
45472
|
-
const nextColumn =
|
45473
|
-
if (((_a = previousColumn == null ? void 0 : previousColumn.
|
45479
|
+
const previousColumn = allColumns.find((column2) => column2.id === id2);
|
45480
|
+
const nextColumn = allColumns.find((column2) => column2.id === columnId);
|
45481
|
+
if (((_a = previousColumn == null ? void 0 : previousColumn.columnDef.meta) == null ? void 0 : _a.dataType) && ((_b = previousColumn == null ? void 0 : previousColumn.columnDef.meta) == null ? void 0 : _b.dataType) === ((_c = nextColumn == null ? void 0 : nextColumn.columnDef.meta) == null ? void 0 : _c.dataType)) {
|
45474
45482
|
handleChange(position, { id: columnId, value: filter2.value });
|
45475
45483
|
return;
|
45476
45484
|
}
|
45477
|
-
const validComparators = guessComparatorsBasedOnControl(nextColumn
|
45485
|
+
const validComparators = guessComparatorsBasedOnControl(nextColumn);
|
45478
45486
|
const value2 = {
|
45479
45487
|
comparator: validComparators[0],
|
45480
45488
|
value: void 0
|
@@ -45497,13 +45505,13 @@ function Filter(props) {
|
|
45497
45505
|
ref.current.focus();
|
45498
45506
|
}
|
45499
45507
|
}, [id2]);
|
45500
|
-
return /* @__PURE__ */ React.createElement("div", { className: "flex items-start gap-2", "data-taco": "filter-row" }, /* @__PURE__ */ React.createElement("div", { className: "flex min-h-[theme(spacing.8)] w-14 flex-shrink-0 items-center justify-end pr-2 text-right" }, position > 0 ? texts.table.filters.conditions.and : texts.table.filters.conditions.where), /* @__PURE__ */ React.createElement(FilterColumn, {
|
45508
|
+
return /* @__PURE__ */ React.createElement("div", { className: "flex items-start gap-2", "data-taco": "filter-row" }, /* @__PURE__ */ React.createElement("div", { className: "flex min-h-[theme(spacing.8)] w-14 flex-shrink-0 items-center justify-end pr-2 text-right" }, position > 0 ? texts.table.filters.conditions.and : texts.table.filters.conditions.where), /* @__PURE__ */ React.createElement(FilterColumn, { allColumns, onChange: handleChangeColumn, value: id2, ref }), /* @__PURE__ */ React.createElement(FilterComparator, { column, onChange: handleChangeComparator, value: comparator }), /* @__PURE__ */ React.createElement(FilterValue, { column, comparator, onChange: handleChangeValue, value }), onRemove ? /* @__PURE__ */ React.createElement(IconButton, { appearance: "discrete", className: "ml-auto", icon: "close", onClick: handleRemove }) : null);
|
45501
45509
|
}
|
45502
45510
|
const placeholderFilter = { id: "", value: { comparator: TableFilterComparator.Contains, value: void 0 } };
|
45503
45511
|
function ManageFiltersPopover(props) {
|
45504
45512
|
const { length, table, ...popoverProps } = props;
|
45505
45513
|
const { locale: locale2, texts } = useLocalization();
|
45506
|
-
const
|
45514
|
+
const allColumns = table.getAllLeafColumns().filter((column) => !isInternalColumn(column.id)).sort(sortByHeader);
|
45507
45515
|
const columnFilters = table.getState().columnFilters;
|
45508
45516
|
const tableMeta = table.options.meta;
|
45509
45517
|
const [filters, setFilters] = React.useState(columnFilters.length ? columnFilters : [placeholderFilter]);
|
@@ -45542,7 +45550,7 @@ function ManageFiltersPopover(props) {
|
|
45542
45550
|
if (f2.id === null || f2.id === "") {
|
45543
45551
|
return false;
|
45544
45552
|
}
|
45545
|
-
const controlRenderer = (_b = (_a =
|
45553
|
+
const controlRenderer = (_b = (_a = allColumns.find((column) => column.id === f2.id)) == null ? void 0 : _a.columnDef.meta) == null ? void 0 : _b.control;
|
45546
45554
|
if (f2.value.comparator === TableFilterComparator.IsEmpty || f2.value.comparator === TableFilterComparator.IsNotEmpty || controlRenderer === "switch") {
|
45547
45555
|
return true;
|
45548
45556
|
}
|
@@ -45572,7 +45580,7 @@ function ManageFiltersPopover(props) {
|
|
45572
45580
|
Filter,
|
45573
45581
|
{
|
45574
45582
|
key: `filter_${index2}`,
|
45575
|
-
|
45583
|
+
allColumns,
|
45576
45584
|
filter: filter2,
|
45577
45585
|
position: index2,
|
45578
45586
|
onChange: handleChangeFilter,
|
@@ -55653,6 +55661,7 @@ function useTableEditing(isEnabled = false, defaultToggleEditing = false, handle
|
|
55653
55661
|
pendingChangesFns.saveChanges(table);
|
55654
55662
|
}
|
55655
55663
|
async function createRow2(table, row) {
|
55664
|
+
var _a, _b;
|
55656
55665
|
if (!handleCreate) {
|
55657
55666
|
return;
|
55658
55667
|
}
|
@@ -55663,7 +55672,10 @@ function useTableEditing(isEnabled = false, defaultToggleEditing = false, handle
|
|
55663
55672
|
return;
|
55664
55673
|
}
|
55665
55674
|
}
|
55666
|
-
const
|
55675
|
+
const currentRow = ((_a = table.options.meta) == null ? void 0 : _a.rowActive.rowActiveIndex) !== void 0 ? table.getRowModel().flatRows[(_b = table.options.meta) == null ? void 0 : _b.rowActive.rowActiveIndex] : void 0;
|
55676
|
+
const changeset = row ?? await handleCreate({
|
55677
|
+
activeRow: currentRow ? { ...currentRow.original, ...tableMeta.editing.getRowValue(currentRow.id) } : void 0
|
55678
|
+
});
|
55667
55679
|
try {
|
55668
55680
|
if (changeset) {
|
55669
55681
|
const temporaryRows = tableMeta.editing.temporaryRows;
|
@@ -55672,10 +55684,10 @@ function useTableEditing(isEnabled = false, defaultToggleEditing = false, handle
|
|
55672
55684
|
requestAnimationFrame(() => {
|
55673
55685
|
const newRowId = pendingChangesFns.insertTemporaryRow(changeset, nextRowIndex);
|
55674
55686
|
table.setRowPinning((currentState) => {
|
55675
|
-
var
|
55687
|
+
var _a2;
|
55676
55688
|
return {
|
55677
55689
|
...currentState,
|
55678
|
-
bottom: (
|
55690
|
+
bottom: (_a2 = currentState.bottom ?? []) == null ? void 0 : _a2.concat(newRowId)
|
55679
55691
|
};
|
55680
55692
|
});
|
55681
55693
|
toggleDetailedMode(false);
|
@@ -56223,16 +56235,11 @@ function DiscardChangesConfirmationDialog(props) {
|
|
56223
56235
|
));
|
56224
56236
|
}
|
56225
56237
|
function Row(props) {
|
56226
|
-
const { row, index: index2, table
|
56238
|
+
const { row, index: index2, table } = props;
|
56227
56239
|
const focusManager = useAugmentedFocusManager();
|
56228
56240
|
const tableMeta = table.options.meta;
|
56229
56241
|
const isActiveRow = tableMeta.rowActive.rowActiveIndex === index2;
|
56230
|
-
const rowRef = React.useRef(null);
|
56231
56242
|
const hasErrors = tableMeta.editing.hasRowErrors(row.id);
|
56232
|
-
React.useLayoutEffect(() => {
|
56233
|
-
if (!measureRow || !rowRef.current) return;
|
56234
|
-
measureRow(rowRef.current.getBoundingClientRect().height);
|
56235
|
-
}, [hasErrors, measureRow, row.id]);
|
56236
56243
|
React.useEffect(() => {
|
56237
56244
|
if (tableMeta.editing.isEditing && isActiveRow && tableMeta.editing.lastFocusedCellIndex === void 0) {
|
56238
56245
|
const element = focusManager.focusFirst();
|
@@ -56289,7 +56296,7 @@ function Row(props) {
|
|
56289
56296
|
onFocus: handleFocus,
|
56290
56297
|
onKeyDown: handleKeyDown
|
56291
56298
|
};
|
56292
|
-
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(DisplayRow, { ...props, ...attributes,
|
56299
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(DisplayRow, { ...props, ...attributes, remeasureDependencies: [hasErrors] }, rowStatus === "saving" || rowStatus === "saved" ? /* @__PURE__ */ React.createElement(SaveStatus, { rowId: row.id, table }) : null), /* @__PURE__ */ React.createElement(
|
56293
56300
|
DiscardChangesConfirmationDialog,
|
56294
56301
|
{
|
56295
56302
|
open: showDiscardDialog,
|