@apia/components 4.0.47 → 4.0.58

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/LICENSE.md ADDED
@@ -0,0 +1,6 @@
1
+ All Rights Reserved.
2
+
3
+ Copyright (c) 2026 Statum
4
+
5
+ This software and associated documentation files are proprietary and confidential.
6
+ Unauthorized copying, distribution, modification, or use is strictly prohibited.
package/dist/index.d.ts CHANGED
@@ -333,6 +333,7 @@ declare class TabsController<TabType extends TTab = TTab> {
333
333
  */
334
334
  append(tab: TabType, behavior?: TAppendBehavior): void;
335
335
  closeAll(closeFixedTabsAsWell?: boolean, force?: boolean): Promise<void>;
336
+ openAll(): Promise<void>;
336
337
  closeOpenTab(force?: boolean): void;
337
338
  closeToRight(targetId: string, force?: boolean): Promise<void>;
338
339
  closeToLeft(targetId: string, force?: boolean): Promise<void>;
@@ -980,6 +981,7 @@ type TIconButton = Omit<IconButtonProps, 'sx'> & React$1.AriaAttributes & {
980
981
  size?: TIconSize;
981
982
  title?: string;
982
983
  variant?: string;
984
+ 'data-test-id'?: string;
983
985
  };
984
986
  /**
985
987
  * Renderiza un botón con un ícono adentro.
@@ -1066,8 +1068,9 @@ type TDateProps = {
1066
1068
  onError?: (error: string) => unknown;
1067
1069
  value?: string;
1068
1070
  inputRef?: MutableRefObject<any>;
1071
+ props?: React.HTMLAttributes<HTMLInputElement>;
1069
1072
  };
1070
- declare const DateInput: (({ className, disabled, id: outerId, inputRef, onBlur, onChange, onError, readonly, value: outerValue, }: TDateProps) => React$1.JSX.Element) & {
1073
+ declare const DateInput: (({ className, disabled, id: outerId, inputRef, onBlur, onChange, onError, readonly, value: outerValue, props, }: TDateProps) => React$1.JSX.Element) & {
1071
1074
  displayName: string;
1072
1075
  };
1073
1076
 
@@ -1123,15 +1126,17 @@ declare function parseNumberInputValueToNumber(value: string): number;
1123
1126
  declare function parseNumberValueToNumberInput(value: string | number): string;
1124
1127
  declare const NumberInput: React__default.ForwardRefExoticComponent<Omit<TNumberInput, "ref"> & React__default.RefAttributes<HTMLInputElement>>;
1125
1128
 
1126
- interface IRequiredMark {
1129
+ interface IRequiredMark extends Partial<BoxProps> {
1127
1130
  isFormReadonly?: boolean;
1128
1131
  isRequired?: boolean;
1129
1132
  isReadonly?: boolean;
1133
+ sx?: ThemeUICSSObject;
1134
+ style?: Record<string, any>;
1130
1135
  }
1131
1136
  /**
1132
1137
  * Muestra el * en los campos de requerido.
1133
1138
  */
1134
- declare const RequiredMark: ({ isFormReadonly, isRequired, isReadonly, }: IRequiredMark) => React$1.JSX.Element | null;
1139
+ declare const RequiredMark: ({ isFormReadonly, isRequired, isReadonly, sx, style, ...rest }: IRequiredMark) => React$1.JSX.Element | null;
1135
1140
 
1136
1141
  declare const getFieldErrorStyles: (isValid: boolean) => ThemeUICSSObject;
1137
1142
  declare const getFieldTouchedStyles: (isTouched: boolean) => ThemeUICSSObject;
@@ -1901,15 +1906,20 @@ declare const FileCard: React$1.ForwardRefExoticComponent<{
1901
1906
  onDoubleClick?: () => void;
1902
1907
  onClick?: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;
1903
1908
  onDropFiles?: (files: File[]) => void;
1909
+ previewProps?: {
1910
+ hasPreview?: boolean;
1911
+ previewUrl?: string;
1912
+ };
1904
1913
  } & React$1.RefAttributes<unknown>>;
1905
1914
 
1906
- declare const Dropzone: ({ sx, className, messageError, progress, defaultLabel, draggingLabel, onClick, onChange, handleInfoButton, }: {
1915
+ declare const Dropzone: ({ sx, className, messageError, progress, defaultLabel, draggingLabel, onClick, onChange, handleInfoButton, infoButtonProps, }: {
1907
1916
  sx?: ThemeUIStyleObject;
1908
1917
  className?: string;
1909
1918
  messageError?: string;
1910
1919
  progress?: number;
1911
1920
  defaultLabel?: string;
1912
1921
  draggingLabel?: string;
1922
+ infoButtonProps?: any;
1913
1923
  onClick?: (e: MouseEvent$1) => void;
1914
1924
  onChange?: (e: File[]) => any;
1915
1925
  handleInfoButton?: (e: MouseEvent$1) => void;
package/dist/index.js CHANGED
@@ -1594,9 +1594,15 @@ class ApiaUtilNotifications {
1594
1594
  });
1595
1595
  __publicField$m(this, "notify", (notification) => {
1596
1596
  if (notification.type === "modal") {
1597
- this.util.dialogs.alert({
1597
+ this.util.modals.open({
1598
+ size: "flex",
1598
1599
  children: notification.message,
1599
- title: notification.title || ""
1600
+ title: notification.title || "",
1601
+ onConfirm: () => {
1602
+ },
1603
+ confirmProps: {
1604
+ hideCancelButton: true
1605
+ }
1600
1606
  });
1601
1607
  } else {
1602
1608
  defaultNotifier.notify({
@@ -1867,9 +1873,9 @@ const Confirm = ({
1867
1873
  children,
1868
1874
  additionalButtons,
1869
1875
  additionalButtonsOnRight,
1870
- cancelButtonText: cancelText = getLabel("btnCan").text,
1876
+ cancelButtonText: cancelText,
1871
1877
  className,
1872
- confirmButtonText: confirmText = getLabel("btnCon").text,
1878
+ confirmButtonText: confirmText,
1873
1879
  confirmButtonVariant = "primary",
1874
1880
  contentRef,
1875
1881
  disabled,
@@ -1881,6 +1887,14 @@ const Confirm = ({
1881
1887
  variant
1882
1888
  }) => {
1883
1889
  const { descriptionId } = useModalContext();
1890
+ const showsCancelButton = onCancel && !hideCancelButton;
1891
+ const showsConfirmButton = !hideConfirmButton;
1892
+ if (!showsCancelButton && showsConfirmButton) {
1893
+ confirmText = confirmText || getLabel("btnClose").text;
1894
+ } else if (showsConfirmButton) {
1895
+ confirmText = confirmText || getLabel("btnCon").text;
1896
+ cancelText = cancelText || getLabel("btnCan").text;
1897
+ }
1884
1898
  return /* @__PURE__ */ jsxs(
1885
1899
  Box,
1886
1900
  {
@@ -1918,12 +1932,12 @@ const Confirm = ({
1918
1932
  children: additionalButtonsOnRight
1919
1933
  }
1920
1934
  ),
1921
- !hideConfirmButton && /* @__PURE__ */ jsx(
1935
+ showsConfirmButton && /* @__PURE__ */ jsx(
1922
1936
  SimpleButton,
1923
1937
  {
1924
1938
  onClick: onConfirm,
1925
1939
  title: confirmText,
1926
- variant: confirmButtonVariant,
1940
+ variant: !showsCancelButton && showsConfirmButton ? "outline" : confirmButtonVariant,
1927
1941
  disabled: isLoading ?? disabled,
1928
1942
  isLoading,
1929
1943
  className: "confirm__confirmButton",
@@ -1932,7 +1946,7 @@ const Confirm = ({
1932
1946
  children: confirmText
1933
1947
  }
1934
1948
  ),
1935
- onCancel && !hideCancelButton && /* @__PURE__ */ jsx(
1949
+ showsCancelButton && /* @__PURE__ */ jsx(
1936
1950
  SimpleButton,
1937
1951
  {
1938
1952
  onClick: onCancel,
@@ -4120,7 +4134,7 @@ const getMaskForDateFormat = () => {
4120
4134
  return "99/99/9999";
4121
4135
  };
4122
4136
  class DateInputController {
4123
- constructor(actualId) {
4137
+ constructor() {
4124
4138
  __publicField$c(this, "props", {});
4125
4139
  __publicField$c(this, "state", {});
4126
4140
  __publicField$c(this, "_ref", null);
@@ -4128,22 +4142,26 @@ class DateInputController {
4128
4142
  __publicField$c(this, "inputValue", "");
4129
4143
  __publicField$c(this, "value", null);
4130
4144
  __publicField$c(this, "previousValue", "");
4131
- this.props.id = uniqueId$4(actualId ?? "date-input");
4145
+ this.props.id = uniqueId$4("date-input");
4132
4146
  makeAutoObservable(this);
4133
4147
  }
4134
4148
  clear() {
4135
- this.setValueFromString("");
4136
- this.focus();
4149
+ if (!this.state.disabled) {
4150
+ this.setValueFromString("");
4151
+ this.focus();
4152
+ }
4137
4153
  }
4138
4154
  focus() {
4139
- const input = this._ref?.querySelector("input");
4140
- if (input) {
4141
- input.focus();
4142
- setTimeout(() => {
4143
- window.requestAnimationFrame(() => {
4144
- input.setSelectionRange(0, input.value.length);
4145
- });
4146
- }, 0);
4155
+ if (!this.state.disabled) {
4156
+ const input = this._ref?.querySelector("input");
4157
+ if (input) {
4158
+ input.focus();
4159
+ setTimeout(() => {
4160
+ window.requestAnimationFrame(() => {
4161
+ input.setSelectionRange(0, input.value.length);
4162
+ });
4163
+ }, 0);
4164
+ }
4147
4165
  }
4148
4166
  }
4149
4167
  ref(el) {
@@ -4158,13 +4176,15 @@ class DateInputController {
4158
4176
  );
4159
4177
  }
4160
4178
  onBlur(ev) {
4161
- if (!this.isInsidePicker(ev.relatedTarget)) {
4162
- if (this.error) {
4163
- this.inputValue = "";
4164
- this.value = null;
4165
- this.error = false;
4179
+ if (!this.state.disabled) {
4180
+ if (!this.isInsidePicker(ev.relatedTarget)) {
4181
+ if (this.error) {
4182
+ this.inputValue = "";
4183
+ this.value = null;
4184
+ this.error = false;
4185
+ }
4186
+ this.props.onBlur?.(this.inputValue, ev);
4166
4187
  }
4167
- this.props.onBlur?.(this.inputValue, ev);
4168
4188
  }
4169
4189
  }
4170
4190
  onInputChange(ev) {
@@ -4174,76 +4194,82 @@ class DateInputController {
4174
4194
  this.setValue(value);
4175
4195
  }
4176
4196
  openCalendar(ev) {
4177
- const tooltip = ApiaUtil.instance.tooltips.open({
4178
- attachToElement() {
4179
- return ev.target.closest("button");
4180
- },
4181
- attachToElementAnchorPoint: "center",
4182
- closeOnClick: false,
4183
- closeOnClickOut: true,
4184
- closeOnEscape: true,
4185
- closeOnMouseLeaveTooltip: false,
4186
- closeOnMouseLeaveAttachedElement: false,
4187
- closeOnScrollOut: true,
4188
- children: /* @__PURE__ */ jsx("div", { id: this.calendarElementId, children: /* @__PURE__ */ jsx(
4189
- CalModal,
4190
- {
4191
- calValue: this.value || /* @__PURE__ */ new Date(),
4192
- locale: DEFAULT_LOCALE,
4193
- handleClickDay: (date) => {
4194
- tooltip.close();
4195
- this.onCalendarSelect(date);
4196
- this.focus();
4197
+ if (!this.state.disabled) {
4198
+ const tooltip = ApiaUtil.instance.tooltips.open({
4199
+ attachToElement() {
4200
+ return ev.target.closest("button");
4201
+ },
4202
+ attachToElementAnchorPoint: "center",
4203
+ closeOnClick: false,
4204
+ closeOnClickOut: true,
4205
+ closeOnEscape: true,
4206
+ closeOnMouseLeaveTooltip: false,
4207
+ closeOnMouseLeaveAttachedElement: false,
4208
+ closeOnScrollOut: true,
4209
+ children: /* @__PURE__ */ jsx("div", { id: this.calendarElementId, children: /* @__PURE__ */ jsx(
4210
+ CalModal,
4211
+ {
4212
+ calValue: this.value || /* @__PURE__ */ new Date(),
4213
+ locale: DEFAULT_LOCALE,
4214
+ handleClickDay: (date) => {
4215
+ tooltip.close();
4216
+ this.onCalendarSelect(date);
4217
+ this.focus();
4218
+ }
4197
4219
  }
4220
+ ) }),
4221
+ initialFocusGetter(el) {
4222
+ return el.querySelector(`.react-calendar__tile--active`);
4223
+ },
4224
+ minSize: { width: 350, height: 310 },
4225
+ onClose: () => {
4226
+ window.requestAnimationFrame(() => {
4227
+ if (!this.isInsidePicker(document.activeElement)) {
4228
+ this.props.onBlur?.(this.inputValue);
4229
+ }
4230
+ });
4198
4231
  }
4199
- ) }),
4200
- initialFocusGetter(el) {
4201
- return el.querySelector(`.react-calendar__tile--active`);
4202
- },
4203
- minSize: { width: 350, height: 310 },
4204
- onClose: () => {
4205
- window.requestAnimationFrame(() => {
4206
- if (!this.isInsidePicker(document.activeElement)) {
4207
- this.props.onBlur?.(this.inputValue);
4208
- }
4209
- });
4210
- }
4211
- });
4232
+ });
4233
+ }
4212
4234
  }
4213
4235
  setValueFromString(str, fire = true) {
4214
- if (str === "" || str.replaceAll("_", "9") === getMaskForDateFormat()) {
4215
- this.inputValue = "";
4216
- this.setValue(null, fire);
4217
- } else if (str !== this.inputValue) {
4218
- const hasPlaceHolder = str.match(/_/);
4219
- if (!hasPlaceHolder) {
4220
- const value = dayjs(str, dateFormat);
4221
- const formattedDate = value.format(dateFormat);
4222
- if (value.isValid() && formattedDate === str) {
4223
- this.setValue(value.toDate(), fire);
4236
+ if (!this.state.disabled) {
4237
+ if (str === "" || str.replaceAll("_", "9") === getMaskForDateFormat()) {
4238
+ this.inputValue = "";
4239
+ this.setValue(null, fire);
4240
+ } else if (str !== this.inputValue) {
4241
+ const hasPlaceHolder = str.match(/_/);
4242
+ if (!hasPlaceHolder) {
4243
+ const value = dayjs(str, dateFormat);
4244
+ const formattedDate = value.format(dateFormat);
4245
+ if (value.isValid() && formattedDate === str) {
4246
+ this.setValue(value.toDate(), fire);
4247
+ } else {
4248
+ this.inputValue = str;
4249
+ this.props.onError?.(getLabel("msgInvalidDate").text);
4250
+ this.error = true;
4251
+ }
4224
4252
  } else {
4225
4253
  this.inputValue = str;
4226
- this.props.onError?.(getLabel("msgInvalidDate").text);
4227
- this.error = true;
4228
4254
  }
4229
- } else {
4230
- this.inputValue = str;
4231
4255
  }
4232
4256
  }
4233
4257
  }
4234
4258
  async setValue(date, fire = true) {
4235
- this.error = false;
4236
- if (date !== this.value) {
4237
- const dateValue = dayjs(date);
4238
- const newValue = dateValue.isValid() ? dateValue.format(dateFormat) : "";
4239
- const res = fire ? await this.props.onChange?.(newValue) : null;
4240
- this.inputValue = newValue || "";
4241
- if (typeof res !== "string") {
4242
- this.value = date;
4243
- } else {
4244
- this.error = true;
4245
- this.value = null;
4246
- this.props.onError?.(res);
4259
+ if (!this.state.disabled) {
4260
+ this.error = false;
4261
+ if (date !== this.value) {
4262
+ const dateValue = dayjs(date);
4263
+ const newValue = dateValue.isValid() ? dateValue.format(dateFormat) : "";
4264
+ const res = fire ? await this.props.onChange?.(newValue) : null;
4265
+ this.inputValue = newValue || "";
4266
+ if (typeof res !== "string") {
4267
+ this.value = date;
4268
+ } else {
4269
+ this.error = true;
4270
+ this.value = null;
4271
+ this.props.onError?.(res);
4272
+ }
4247
4273
  }
4248
4274
  }
4249
4275
  }
@@ -4273,12 +4299,10 @@ const DateInput = observer(
4273
4299
  onChange,
4274
4300
  onError,
4275
4301
  readonly,
4276
- value: outerValue
4302
+ value: outerValue,
4303
+ props
4277
4304
  }) => {
4278
- const controller = useMemo(
4279
- () => new DateInputController(outerId),
4280
- [outerId]
4281
- );
4305
+ const controller = useMemo(() => new DateInputController(), []);
4282
4306
  controller.render({
4283
4307
  className,
4284
4308
  disabled,
@@ -4288,7 +4312,8 @@ const DateInput = observer(
4288
4312
  onChange,
4289
4313
  onError,
4290
4314
  readonly,
4291
- value: outerValue
4315
+ value: outerValue,
4316
+ props
4292
4317
  });
4293
4318
  return /* @__PURE__ */ jsx(
4294
4319
  Box,
@@ -4301,7 +4326,7 @@ const DateInput = observer(
4301
4326
  children: /* @__PURE__ */ jsx(
4302
4327
  IconInput,
4303
4328
  {
4304
- additionalButtons: controller.inputValue && getMaskForDateFormat().replaceAll("9", DEFAULT_MASK_PLACEHOLDER) !== controller.inputValue ? /* @__PURE__ */ jsx(
4329
+ additionalButtons: controller.inputValue && getMaskForDateFormat().replaceAll("9", DEFAULT_MASK_PLACEHOLDER) !== controller.inputValue && !disabled ? /* @__PURE__ */ jsx(
4305
4330
  Close,
4306
4331
  {
4307
4332
  as: "button",
@@ -4319,8 +4344,7 @@ const DateInput = observer(
4319
4344
  disabled,
4320
4345
  onChange: controller.onInputChange.bind(controller),
4321
4346
  value: controller.inputValue,
4322
- id: outerId,
4323
- name: outerId
4347
+ ...props
4324
4348
  },
4325
4349
  mask: getMaskForDateFormat(),
4326
4350
  maskPlaceholder: DEFAULT_MASK_PLACEHOLDER,
@@ -4507,9 +4531,29 @@ const NumberInput = React__default.forwardRef(
4507
4531
  const RequiredMark = ({
4508
4532
  isFormReadonly = false,
4509
4533
  isRequired = false,
4510
- isReadonly = false
4534
+ isReadonly = false,
4535
+ sx,
4536
+ style,
4537
+ ...rest
4511
4538
  }) => {
4512
- return isRequired && !isReadonly && !isFormReadonly ? /* @__PURE__ */ jsx("span", { className: "requiredMark", title: getLabel("msgReqField").text, children: "*" }) : null;
4539
+ const mergedSx = {
4540
+ color: "palette.error.main",
4541
+ fontWeight: "bold",
4542
+ ...sx ?? style ?? {}
4543
+ };
4544
+ if (!isRequired || isReadonly || isFormReadonly)
4545
+ return null;
4546
+ return /* @__PURE__ */ jsx(
4547
+ Box,
4548
+ {
4549
+ as: "span",
4550
+ sx: mergedSx,
4551
+ className: "requiredMark",
4552
+ title: getLabel("msgReqField").text,
4553
+ ...rest,
4554
+ children: "*"
4555
+ }
4556
+ );
4513
4557
  };
4514
4558
 
4515
4559
  const getFieldErrorStyles = (isValid) => {
@@ -7528,7 +7572,8 @@ const FileCard = forwardRef(
7528
7572
  handleClose,
7529
7573
  onDoubleClick,
7530
7574
  onClick,
7531
- onDropFiles
7575
+ onDropFiles,
7576
+ previewProps
7532
7577
  }, ref) => {
7533
7578
  const [isDragOver, setIsDragOver] = useState(false);
7534
7579
  return /* @__PURE__ */ createElement(
@@ -7570,32 +7615,35 @@ const FileCard = forwardRef(
7570
7615
  }
7571
7616
  }
7572
7617
  },
7573
- /* @__PURE__ */ jsxs(Box, { className: "fileCard__content", children: [
7574
- /* @__PURE__ */ jsx(FileIcon, { docName: name, iconSize: iconsSize }),
7575
- /* @__PURE__ */ jsx(Box, { as: "span", className: "fileCard__name", children: name })
7576
- ] }),
7577
- /* @__PURE__ */ jsx(Box, { className: "fileCard__additionalButtons", children: additionalButtons?.map((c) => {
7578
- return /* @__PURE__ */ jsx(
7579
- IconButton,
7618
+ /* @__PURE__ */ jsxs(Box, { className: "fileCard__container", children: [
7619
+ /* @__PURE__ */ jsxs(Box, { className: "fileCard__content", children: [
7620
+ /* @__PURE__ */ jsx(FileIcon, { docName: name, iconSize: iconsSize }),
7621
+ /* @__PURE__ */ jsx(Box, { as: "span", className: "fileCard__name", children: name })
7622
+ ] }),
7623
+ /* @__PURE__ */ jsx(Box, { className: "fileCard__additionalButtons", children: additionalButtons?.map((c) => {
7624
+ return /* @__PURE__ */ jsx(
7625
+ IconButton,
7626
+ {
7627
+ iconSize: "Md",
7628
+ ...c,
7629
+ className: `fileCard__additionalButton ${c.className ?? ""}`
7630
+ }
7631
+ );
7632
+ }) }),
7633
+ handleClose && /* @__PURE__ */ jsx(
7634
+ Close,
7580
7635
  {
7581
- iconSize: "Md",
7582
- ...c,
7583
- className: `fileCard__additionalButton ${c.className ?? ""}`
7584
- }
7585
- );
7586
- }) }),
7587
- handleClose && /* @__PURE__ */ jsx(
7588
- Close,
7589
- {
7590
- type: "button",
7591
- className: "fileCard__delete",
7592
- onClick: (e) => {
7593
- e.stopPropagation();
7594
- e.preventDefault();
7595
- handleClose(name);
7636
+ type: "button",
7637
+ className: "fileCard__delete",
7638
+ onClick: (e) => {
7639
+ e.stopPropagation();
7640
+ e.preventDefault();
7641
+ handleClose(name);
7642
+ }
7596
7643
  }
7597
- }
7598
- )
7644
+ )
7645
+ ] }),
7646
+ previewProps?.hasPreview && previewProps?.previewUrl && /* @__PURE__ */ jsx(Box, { className: "fileCard__preview", children: /* @__PURE__ */ jsx("img", { src: previewProps.previewUrl, alt: name }) })
7599
7647
  );
7600
7648
  }
7601
7649
  );
@@ -7609,7 +7657,8 @@ const Dropzone = ({
7609
7657
  draggingLabel = getLabel("lblDroping").text,
7610
7658
  onClick,
7611
7659
  onChange,
7612
- handleInfoButton
7660
+ handleInfoButton,
7661
+ infoButtonProps
7613
7662
  }) => {
7614
7663
  const innerSx = messageError ? { borderLeft: "2px solid", borderColor: "danger" } : {};
7615
7664
  const fileInputRef = useRef(null);
@@ -7683,6 +7732,7 @@ const Dropzone = ({
7683
7732
  handleInfoButton && /* @__PURE__ */ jsx(
7684
7733
  IconButton,
7685
7734
  {
7735
+ ...infoButtonProps,
7686
7736
  className: "info",
7687
7737
  iconSize: "Sm",
7688
7738
  icon: "Info",
@@ -8036,7 +8086,7 @@ const NoMemoPagination = ({
8036
8086
  {
8037
8087
  disabled: isPerforming,
8038
8088
  className: "pagination__deleteFiltersButton",
8039
- "data-id": "delete-filters",
8089
+ "data-test-id": "btn-clear-filters",
8040
8090
  onClick: onDeleteFilters,
8041
8091
  children: [
8042
8092
  breakPoint > 3 && /* @__PURE__ */ jsx(Box, { as: "span", className: "pagination__deleteLabels", children: definedLabels.deleteFilters }),
@@ -8062,7 +8112,8 @@ const NoMemoPagination = ({
8062
8112
  disabled: disabled || isLoading,
8063
8113
  variant: "icon-primary",
8064
8114
  isLoading: isPerforming,
8065
- className: "pagiantion__refreshIcon"
8115
+ className: "pagiantion__refreshIcon",
8116
+ "data-test-id": "btn-refresh"
8066
8117
  }
8067
8118
  )
8068
8119
  ] }) })
@@ -8306,7 +8357,8 @@ const TagReplacers = {
8306
8357
  label: Label$1,
8307
8358
  input: Input,
8308
8359
  p: Paragraph,
8309
- select: Select
8360
+ select: Select,
8361
+ table: (props) => /* @__PURE__ */ jsx(Box, { as: "table", ...props })
8310
8362
  };
8311
8363
 
8312
8364
  const contextMethods = {};
@@ -9104,10 +9156,15 @@ const DefaultTabsLabelRenderer = observer(
9104
9156
  );
9105
9157
  const handleMouseDown = React__default.useCallback(
9106
9158
  (ev) => {
9159
+ if (ev.shiftKey && ev.button === 0) {
9160
+ tab.controller.openAll();
9161
+ return;
9162
+ }
9107
9163
  if (ev.button === 1) {
9108
9164
  tab.close();
9109
- } else if (ev.button === 0)
9165
+ } else if (ev.button === 0) {
9110
9166
  tab.open();
9167
+ }
9111
9168
  },
9112
9169
  [tab]
9113
9170
  );
@@ -9467,6 +9524,13 @@ class TabsController {
9467
9524
  }
9468
9525
  }
9469
9526
  }
9527
+ async openAll() {
9528
+ for (const tab of this.tabsList) {
9529
+ if (!tab.state.isFixed) {
9530
+ tab.open(false);
9531
+ }
9532
+ }
9533
+ }
9470
9534
  closeOpenTab(force) {
9471
9535
  const openTab = this.activeTab;
9472
9536
  openTab?.close(force);
@@ -10278,7 +10342,7 @@ class Parameter {
10278
10342
  this.state.values = this.getValues().filter((x) => !!x && x !== value);
10279
10343
  }
10280
10344
  asPayloadElement() {
10281
- return this.state.type === "label" ? null : toJS(this.state.values);
10345
+ return this.state.type === "label" ? null : toJS(this.state.values.filter((x) => !!x));
10282
10346
  }
10283
10347
  includes(value) {
10284
10348
  return this.state.values.includes(value);
@@ -10328,7 +10392,8 @@ const ParameterRender = observer(
10328
10392
  onChange: (ev) => {
10329
10393
  parameter.setValue(ev.target.value, index);
10330
10394
  },
10331
- value: parameter.state.values[index] ?? ""
10395
+ value: parameter.state.values[index] ?? "",
10396
+ className: parameter.state.validationError ? "requiredFilter__Border" : ""
10332
10397
  }
10333
10398
  ),
10334
10399
  error
@@ -10364,7 +10429,8 @@ const ParameterRender = observer(
10364
10429
  index
10365
10430
  );
10366
10431
  },
10367
- value: parameter.state.values.join("")
10432
+ value: parameter.state.values.join(""),
10433
+ className: parameter.state.validationError ? "requiredFilter__Border" : ""
10368
10434
  }
10369
10435
  ),
10370
10436
  error
@@ -10387,7 +10453,8 @@ const ParameterRender = observer(
10387
10453
  onChange: (ev) => {
10388
10454
  parameter.setValue(String(ev.target.checked), index);
10389
10455
  },
10390
- checked: parameter.state.values[index] === "true"
10456
+ checked: parameter.state.values[index] === "true",
10457
+ className: parameter.state.validationError ? "requiredFilter__Border" : ""
10391
10458
  }
10392
10459
  ),
10393
10460
  error
@@ -10411,6 +10478,7 @@ const ParameterRender = observer(
10411
10478
  parameter.setValue(ev.target.value, index);
10412
10479
  },
10413
10480
  value: parameter.state.values[index],
10481
+ className: parameter.state.validationError ? "requiredFilter__Border" : "",
10414
10482
  children: arrayOrArray(parameter.state.possibleValues).map((c) => /* @__PURE__ */ jsx("option", { value: c.value, children: c.text }))
10415
10483
  }
10416
10484
  ),