@strands.gg/accui 2.10.8 → 2.11.0

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/index.es.js CHANGED
@@ -92,7 +92,7 @@ const _hoisted_4$G = {
92
92
  viewBox: "0 0 20 20",
93
93
  "aria-hidden": "true"
94
94
  };
95
- const _hoisted_5$B = ["d"];
95
+ const _hoisted_5$A = ["d"];
96
96
  const _hoisted_6$v = { class: "alert-text-container" };
97
97
  const _hoisted_7$s = {
98
98
  key: 0,
@@ -146,7 +146,7 @@ const _sfc_main$$ = /* @__PURE__ */ defineComponent({
146
146
  "fill-rule": "evenodd",
147
147
  d: iconPath.value,
148
148
  "clip-rule": "evenodd"
149
- }, null, 8, _hoisted_5$B)
149
+ }, null, 8, _hoisted_5$A)
150
150
  ]))
151
151
  ]),
152
152
  createElementVNode("div", _hoisted_6$v, [
@@ -197,7 +197,7 @@ const _hoisted_1$S = {
197
197
  const _hoisted_2$K = ["width", "height"];
198
198
  const _hoisted_3$H = ["d"];
199
199
  const _hoisted_4$F = ["stroke-width"];
200
- const _hoisted_5$A = ["stroke-width"];
200
+ const _hoisted_5$z = ["stroke-width"];
201
201
  const _hoisted_6$u = ["width", "height"];
202
202
  const _hoisted_7$r = {
203
203
  key: 3,
@@ -266,7 +266,7 @@ const _sfc_main$_ = /* @__PURE__ */ defineComponent({
266
266
  "stroke-linecap": "round",
267
267
  "stroke-linejoin": "round",
268
268
  class: "loader-animated-path"
269
- }, null, 8, _hoisted_5$A)
269
+ }, null, 8, _hoisted_5$z)
270
270
  ], 8, _hoisted_2$K))
271
271
  ])) : _ctx.variant === "circle" ? (openBlock(), createElementBlock("div", {
272
272
  key: 1,
@@ -807,7 +807,7 @@ const _hoisted_4$D = {
807
807
  key: 0,
808
808
  class: "ui-card-subtitle"
809
809
  };
810
- const _hoisted_5$z = { class: "ui-card-content" };
810
+ const _hoisted_5$y = { class: "ui-card-content" };
811
811
  const _hoisted_6$t = {
812
812
  key: 1,
813
813
  class: "ui-card-footer"
@@ -852,7 +852,7 @@ const _sfc_main$U = /* @__PURE__ */ defineComponent({
852
852
  renderSlot(_ctx.$slots, "actions", {}, void 0, true)
853
853
  ], true)
854
854
  ])) : createCommentVNode("", true),
855
- createElementVNode("div", _hoisted_5$z, [
855
+ createElementVNode("div", _hoisted_5$y, [
856
856
  renderSlot(_ctx.$slots, "default", {}, void 0, true)
857
857
  ]),
858
858
  _ctx.$slots["footer"] ? (openBlock(), createElementBlock("div", _hoisted_6$t, [
@@ -1429,7 +1429,7 @@ const _hoisted_4$C = {
1429
1429
  key: 2,
1430
1430
  class: "input-trailing-icon"
1431
1431
  };
1432
- const _hoisted_5$y = {
1432
+ const _hoisted_5$x = {
1433
1433
  key: 3,
1434
1434
  class: "input-trailing-icon"
1435
1435
  };
@@ -1437,18 +1437,21 @@ const _sfc_main$T = /* @__PURE__ */ defineComponent({
1437
1437
  __name: "UiInput.Text",
1438
1438
  props: {
1439
1439
  type: { default: "text" },
1440
- modelValue: {},
1441
- placeholder: {},
1442
- disabled: { type: Boolean, default: false },
1443
- readonly: { type: Boolean, default: false },
1444
- required: { type: Boolean, default: false },
1445
1440
  min: {},
1446
1441
  max: {},
1447
1442
  step: {},
1448
1443
  autocomplete: {},
1449
1444
  spellcheck: { type: Boolean, default: true },
1445
+ label: {},
1446
+ helpText: {},
1447
+ modelValue: {},
1448
+ placeholder: {},
1449
+ disabled: { type: Boolean, default: false },
1450
+ readonly: { type: Boolean, default: false },
1451
+ required: { type: Boolean, default: false },
1452
+ fullWidth: { type: Boolean },
1450
1453
  inputId: {},
1451
- error: { type: Boolean, default: false },
1454
+ error: { type: [Boolean, String, Error], default: false },
1452
1455
  size: { default: "md" }
1453
1456
  },
1454
1457
  emits: ["update:modelValue", "blur", "focus", "keydown"],
@@ -1567,14 +1570,14 @@ const _sfc_main$T = /* @__PURE__ */ defineComponent({
1567
1570
  ]),
1568
1571
  _: 1
1569
1572
  })
1570
- ])) : hasTrailingIcon.value ? (openBlock(), createElementBlock("div", _hoisted_5$y, [
1573
+ ])) : hasTrailingIcon.value ? (openBlock(), createElementBlock("div", _hoisted_5$x, [
1571
1574
  renderSlot(_ctx.$slots, "trailing-icon", {}, void 0, true)
1572
1575
  ])) : createCommentVNode("", true)
1573
1576
  ], 2);
1574
1577
  };
1575
1578
  }
1576
1579
  });
1577
- const UiInputText = /* @__PURE__ */ _export_sfc(_sfc_main$T, [["__scopeId", "data-v-9bb4478d"]]);
1580
+ const UiInputText = /* @__PURE__ */ _export_sfc(_sfc_main$T, [["__scopeId", "data-v-94fe77ac"]]);
1578
1581
  const _hoisted_1$M = {
1579
1582
  key: 0,
1580
1583
  class: "input-leading-icon"
@@ -1587,19 +1590,22 @@ const _hoisted_3$D = {
1587
1590
  const _sfc_main$S = /* @__PURE__ */ defineComponent({
1588
1591
  __name: "UiInput.Textarea",
1589
1592
  props: {
1590
- modelValue: {},
1591
- placeholder: {},
1592
- disabled: { type: Boolean, default: false },
1593
- readonly: { type: Boolean, default: false },
1594
- required: { type: Boolean, default: false },
1595
1593
  rows: { default: 3 },
1596
1594
  cols: {},
1597
1595
  maxlength: {},
1598
1596
  autocomplete: {},
1599
1597
  spellcheck: { type: Boolean, default: true },
1600
1598
  resizable: { type: Boolean, default: true },
1599
+ label: {},
1600
+ helpText: {},
1601
+ modelValue: {},
1602
+ placeholder: {},
1603
+ disabled: { type: Boolean, default: false },
1604
+ readonly: { type: Boolean, default: false },
1605
+ required: { type: Boolean, default: false },
1606
+ fullWidth: { type: Boolean },
1601
1607
  inputId: {},
1602
- error: { type: Boolean, default: false },
1608
+ error: { type: [Boolean, String, Error], default: false },
1603
1609
  size: { default: "md" }
1604
1610
  },
1605
1611
  emits: ["update:modelValue", "blur", "focus", "keydown"],
@@ -1681,7 +1687,7 @@ const _sfc_main$S = /* @__PURE__ */ defineComponent({
1681
1687
  };
1682
1688
  }
1683
1689
  });
1684
- const UiInputTextarea = /* @__PURE__ */ _export_sfc(_sfc_main$S, [["__scopeId", "data-v-acf98514"]]);
1690
+ const UiInputTextarea = /* @__PURE__ */ _export_sfc(_sfc_main$S, [["__scopeId", "data-v-2f7d46c6"]]);
1685
1691
  function useFloatingPosition(options) {
1686
1692
  const {
1687
1693
  trigger,
@@ -1894,7 +1900,7 @@ const _hoisted_4$B = {
1894
1900
  key: 0,
1895
1901
  class: "input-select-text"
1896
1902
  };
1897
- const _hoisted_5$x = {
1903
+ const _hoisted_5$w = {
1898
1904
  key: 1,
1899
1905
  class: "input-select-placeholder"
1900
1906
  };
@@ -1925,18 +1931,23 @@ const _hoisted_14$l = {
1925
1931
  const _sfc_main$R = /* @__PURE__ */ defineComponent({
1926
1932
  __name: "UiInput.Select",
1927
1933
  props: {
1928
- modelValue: {},
1929
1934
  options: { default: () => [] },
1930
- placeholder: {},
1931
- disabled: { type: Boolean, default: false },
1932
1935
  multiple: { type: Boolean, default: false },
1933
1936
  searchable: { type: Boolean, default: false },
1934
1937
  allowInsert: { type: Boolean, default: false },
1935
1938
  maxDropdownHeight: { default: 400 },
1936
1939
  noOptionsText: { default: "No options available" },
1937
1940
  searchPlaceholder: { default: "" },
1941
+ label: {},
1942
+ helpText: {},
1943
+ modelValue: {},
1944
+ placeholder: {},
1945
+ disabled: { type: Boolean, default: false },
1946
+ readonly: { type: Boolean },
1947
+ required: { type: Boolean },
1948
+ fullWidth: { type: Boolean },
1938
1949
  inputId: {},
1939
- error: { type: Boolean, default: false },
1950
+ error: { type: [Boolean, String, Error], default: false },
1940
1951
  size: { default: "md" }
1941
1952
  },
1942
1953
  emits: ["update:modelValue", "blur", "focus"],
@@ -2088,7 +2099,7 @@ const _sfc_main$R = /* @__PURE__ */ defineComponent({
2088
2099
  }
2089
2100
  };
2090
2101
  const isOptionSelected = (option) => {
2091
- if (option.value.startsWith("__insert__")) {
2102
+ if (option.value && typeof option.value === "string" && option.value.startsWith("__insert__")) {
2092
2103
  return false;
2093
2104
  }
2094
2105
  return selectedValues.value.includes(option.value);
@@ -2097,7 +2108,7 @@ const _sfc_main$R = /* @__PURE__ */ defineComponent({
2097
2108
  if (option.disabled) return;
2098
2109
  if (props.multiple) {
2099
2110
  const newValue = [...selectedValues.value];
2100
- if (option.value.startsWith("__insert__")) {
2111
+ if (option.value && typeof option.value === "string" && option.value.startsWith("__insert__")) {
2101
2112
  const newItemValue = option.value.replace("__insert__", "");
2102
2113
  if (!newValue.includes(newItemValue)) {
2103
2114
  newValue.push(newItemValue);
@@ -2243,7 +2254,7 @@ const _sfc_main$R = /* @__PURE__ */ defineComponent({
2243
2254
  "aria-controls": dropdownId.value
2244
2255
  }, [
2245
2256
  createElementVNode("div", _hoisted_3$C, [
2246
- displayValue.value ? (openBlock(), createElementBlock("span", _hoisted_4$B, toDisplayString(displayValue.value), 1)) : (openBlock(), createElementBlock("span", _hoisted_5$x, toDisplayString(_ctx.placeholder || "Select an option..."), 1))
2257
+ displayValue.value ? (openBlock(), createElementBlock("span", _hoisted_4$B, toDisplayString(displayValue.value), 1)) : (openBlock(), createElementBlock("span", _hoisted_5$w, toDisplayString(_ctx.placeholder || "Select an option..."), 1))
2247
2258
  ]),
2248
2259
  createElementVNode("div", {
2249
2260
  class: normalizeClass(["input-select-arrow", { "input-select-arrow-open": dropdownState.value.isOpen }])
@@ -2289,7 +2300,11 @@ const _sfc_main$R = /* @__PURE__ */ defineComponent({
2289
2300
  class: "input-dropdown-options",
2290
2301
  style: normalizeStyle({ maxHeight: `${_ctx.maxDropdownHeight}px` })
2291
2302
  }, [
2292
- filteredOptions.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_9$n, toDisplayString(_ctx.noOptionsText), 1)) : createCommentVNode("", true),
2303
+ filteredOptions.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_9$n, [
2304
+ renderSlot(_ctx.$slots, "zero-state", {}, () => [
2305
+ createTextVNode(toDisplayString(_ctx.noOptionsText), 1)
2306
+ ], true)
2307
+ ])) : createCommentVNode("", true),
2293
2308
  (openBlock(true), createElementBlock(Fragment$1, null, renderList(filteredOptions.value, (option, index) => {
2294
2309
  return openBlock(), createElementBlock("div", {
2295
2310
  key: option.value,
@@ -2297,7 +2312,7 @@ const _sfc_main$R = /* @__PURE__ */ defineComponent({
2297
2312
  "input-dropdown-option--selected": isOptionSelected(option),
2298
2313
  "input-dropdown-option--highlighted": index === dropdownState.value.highlightedIndex,
2299
2314
  "input-dropdown-option--disabled": option.disabled,
2300
- "input-dropdown-option--insert": option.value.startsWith("__insert__")
2315
+ "input-dropdown-option--insert": option.value && typeof option.value === "string" && option.value.startsWith("__insert__")
2301
2316
  }]),
2302
2317
  onClick: ($event) => selectOption(option),
2303
2318
  onMouseenter: ($event) => dropdownState.value.highlightedIndex = index,
@@ -2320,12 +2335,12 @@ const _sfc_main$R = /* @__PURE__ */ defineComponent({
2320
2335
  };
2321
2336
  }
2322
2337
  });
2323
- const UiInputSelect = /* @__PURE__ */ _export_sfc(_sfc_main$R, [["__scopeId", "data-v-8591f0ad"]]);
2338
+ const UiInputSelect = /* @__PURE__ */ _export_sfc(_sfc_main$R, [["__scopeId", "data-v-830c63a5"]]);
2324
2339
  const _hoisted_1$K = { class: "input-leading-icon" };
2325
2340
  const _hoisted_2$E = ["src"];
2326
2341
  const _hoisted_3$B = ["id", "accept", "multiple", "disabled", "required"];
2327
2342
  const _hoisted_4$A = { class: "input-file-content" };
2328
- const _hoisted_5$w = {
2343
+ const _hoisted_5$v = {
2329
2344
  key: 0,
2330
2345
  class: "input-file-prompt"
2331
2346
  };
@@ -2353,16 +2368,21 @@ const _hoisted_14$k = {
2353
2368
  const _sfc_main$Q = /* @__PURE__ */ defineComponent({
2354
2369
  __name: "UiInput.File",
2355
2370
  props: {
2356
- modelValue: {},
2357
2371
  accept: {},
2358
2372
  multiple: { type: Boolean, default: false },
2359
2373
  maxFileSize: { default: 10 * 1024 * 1024 },
2360
2374
  dragDropText: {},
2361
2375
  selectedText: {},
2376
+ label: {},
2377
+ helpText: {},
2378
+ modelValue: {},
2379
+ placeholder: {},
2362
2380
  disabled: { type: Boolean, default: false },
2381
+ readonly: { type: Boolean },
2363
2382
  required: { type: Boolean, default: false },
2383
+ fullWidth: { type: Boolean },
2364
2384
  inputId: {},
2365
- error: { type: Boolean, default: false },
2385
+ error: { type: [Boolean, String, Error], default: false },
2366
2386
  size: { default: "md" }
2367
2387
  },
2368
2388
  emits: ["update:modelValue", "file-error", "blur", "focus"],
@@ -2561,7 +2581,7 @@ const _sfc_main$Q = /* @__PURE__ */ defineComponent({
2561
2581
  onFocus: handleFocus
2562
2582
  }, null, 40, _hoisted_3$B),
2563
2583
  createElementVNode("div", _hoisted_4$A, [
2564
- selectedFiles.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_5$w, [
2584
+ selectedFiles.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_5$v, [
2565
2585
  createElementVNode("div", _hoisted_6$r, toDisplayString(_ctx.dragDropText || "Click to select or drag and drop"), 1),
2566
2586
  _ctx.accept ? (openBlock(), createElementBlock("div", _hoisted_7$p, toDisplayString(_ctx.accept), 1)) : createCommentVNode("", true)
2567
2587
  ])) : (openBlock(), createElementBlock("div", _hoisted_8$n, [
@@ -2596,7 +2616,7 @@ const _sfc_main$Q = /* @__PURE__ */ defineComponent({
2596
2616
  };
2597
2617
  }
2598
2618
  });
2599
- const UiInputFile = /* @__PURE__ */ _export_sfc(_sfc_main$Q, [["__scopeId", "data-v-1328dc4f"]]);
2619
+ const UiInputFile = /* @__PURE__ */ _export_sfc(_sfc_main$Q, [["__scopeId", "data-v-249075fe"]]);
2600
2620
  const _hoisted_1$J = { class: "tabs-wrapper" };
2601
2621
  const _hoisted_2$D = {
2602
2622
  key: 0,
@@ -2607,7 +2627,7 @@ const _hoisted_4$z = {
2607
2627
  key: 1,
2608
2628
  class: "tabs-after"
2609
2629
  };
2610
- const _hoisted_5$v = ["aria-labelledby"];
2630
+ const _hoisted_5$u = ["aria-labelledby"];
2611
2631
  const _sfc_main$P = /* @__PURE__ */ defineComponent({
2612
2632
  __name: "UiTabs",
2613
2633
  props: {
@@ -2992,7 +3012,7 @@ const _sfc_main$P = /* @__PURE__ */ defineComponent({
2992
3012
  id: "tabpanel"
2993
3013
  }, [
2994
3014
  renderSlot(_ctx.$slots, "content", { activeTab: activeTab.value }, void 0, true)
2995
- ], 10, _hoisted_5$v)) : createCommentVNode("", true)
3015
+ ], 10, _hoisted_5$u)) : createCommentVNode("", true)
2996
3016
  ], 2);
2997
3017
  };
2998
3018
  }
@@ -3073,7 +3093,7 @@ const _hoisted_4$y = {
3073
3093
  key: 0,
3074
3094
  class: "datetime-picker-value"
3075
3095
  };
3076
- const _hoisted_5$u = {
3096
+ const _hoisted_5$t = {
3077
3097
  key: 1,
3078
3098
  class: "datetime-picker-placeholder"
3079
3099
  };
@@ -3452,26 +3472,14 @@ const _sfc_main$N = /* @__PURE__ */ defineComponent({
3452
3472
  _ctx.type === "date" ? (openBlock(), createBlock(unref(Calendar), { key: 0 })) : _ctx.type === "time" ? (openBlock(), createBlock(unref(Clock), { key: 1 })) : (openBlock(), createBlock(unref(CalendarClock), { key: 2 }))
3453
3473
  ]),
3454
3474
  createElementVNode("div", _hoisted_3$z, [
3455
- displayValue.value ? (openBlock(), createElementBlock("span", _hoisted_4$y, toDisplayString(displayValue.value), 1)) : (openBlock(), createElementBlock("span", _hoisted_5$u, toDisplayString(_ctx.placeholder || getDefaultPlaceholder()), 1))
3475
+ displayValue.value ? (openBlock(), createElementBlock("span", _hoisted_4$y, toDisplayString(displayValue.value), 1)) : (openBlock(), createElementBlock("span", _hoisted_5$t, toDisplayString(_ctx.placeholder || getDefaultPlaceholder()), 1))
3456
3476
  ]),
3457
3477
  _ctx.modelValue && !_ctx.disabled && !_ctx.readonly ? (openBlock(), createElementBlock("div", {
3458
3478
  key: 0,
3459
3479
  class: "datetime-picker-trailing-icon",
3460
3480
  onClick: withModifiers(clearValue, ["stop"])
3461
3481
  }, [
3462
- createVNode(StrandsUiButton, {
3463
- color: "danger",
3464
- variant: "ghost",
3465
- size: "sm",
3466
- icon: "",
3467
- squircle: "",
3468
- "aria-label": "Clear value"
3469
- }, {
3470
- icon: withCtx(() => [
3471
- createVNode(unref(X))
3472
- ]),
3473
- _: 1
3474
- })
3482
+ createVNode(unref(X))
3475
3483
  ])) : (openBlock(), createElementBlock("div", _hoisted_6$q, [
3476
3484
  createVNode(unref(ChevronDown))
3477
3485
  ]))
@@ -3707,21 +3715,24 @@ const _sfc_main$N = /* @__PURE__ */ defineComponent({
3707
3715
  };
3708
3716
  }
3709
3717
  });
3710
- const UiDateTimePicker = /* @__PURE__ */ _export_sfc(_sfc_main$N, [["__scopeId", "data-v-10c66504"]]);
3718
+ const UiDateTimePicker = /* @__PURE__ */ _export_sfc(_sfc_main$N, [["__scopeId", "data-v-f688c330"]]);
3711
3719
  const _sfc_main$M = /* @__PURE__ */ defineComponent({
3712
3720
  __name: "UiInput.Date",
3713
3721
  props: {
3722
+ min: {},
3723
+ max: {},
3724
+ format: { default: "iso" },
3725
+ label: {},
3726
+ helpText: {},
3714
3727
  modelValue: {},
3715
3728
  placeholder: {},
3716
3729
  disabled: { type: Boolean, default: false },
3717
3730
  readonly: { type: Boolean, default: false },
3718
3731
  required: { type: Boolean, default: false },
3719
- min: {},
3720
- max: {},
3732
+ fullWidth: { type: Boolean },
3721
3733
  inputId: {},
3722
- error: { type: Boolean, default: false },
3723
- size: { default: "md" },
3724
- format: { default: "iso" }
3734
+ error: { type: [Boolean, String, Error], default: false },
3735
+ size: { default: "md" }
3725
3736
  },
3726
3737
  emits: ["update:modelValue", "change", "blur", "focus", "keydown"],
3727
3738
  setup(__props, { emit: __emit }) {
@@ -3742,7 +3753,7 @@ const _sfc_main$M = /* @__PURE__ */ defineComponent({
3742
3753
  required: _ctx.required,
3743
3754
  min: _ctx.min,
3744
3755
  max: _ctx.max,
3745
- error: _ctx.error,
3756
+ error: Boolean(_ctx.error),
3746
3757
  size: _ctx.size,
3747
3758
  format: _ctx.format,
3748
3759
  "onUpdate:modelValue": handleUpdate,
@@ -3754,16 +3765,19 @@ const _sfc_main$M = /* @__PURE__ */ defineComponent({
3754
3765
  const _sfc_main$L = /* @__PURE__ */ defineComponent({
3755
3766
  __name: "UiInput.Time",
3756
3767
  props: {
3768
+ is24Hour: { type: Boolean, default: true },
3769
+ minuteStep: { default: 1 },
3770
+ label: {},
3771
+ helpText: {},
3757
3772
  modelValue: {},
3758
3773
  placeholder: {},
3759
3774
  disabled: { type: Boolean, default: false },
3760
3775
  readonly: { type: Boolean, default: false },
3761
3776
  required: { type: Boolean, default: false },
3777
+ fullWidth: { type: Boolean },
3762
3778
  inputId: {},
3763
- error: { type: Boolean, default: false },
3764
- size: { default: "md" },
3765
- is24Hour: { type: Boolean, default: true },
3766
- minuteStep: { default: 1 }
3779
+ error: { type: [Boolean, String, Error], default: false },
3780
+ size: { default: "md" }
3767
3781
  },
3768
3782
  emits: ["update:modelValue", "change", "blur", "focus", "keydown"],
3769
3783
  setup(__props, { emit: __emit }) {
@@ -3782,7 +3796,7 @@ const _sfc_main$L = /* @__PURE__ */ defineComponent({
3782
3796
  disabled: _ctx.disabled,
3783
3797
  readonly: _ctx.readonly,
3784
3798
  required: _ctx.required,
3785
- error: _ctx.error,
3799
+ error: Boolean(_ctx.error),
3786
3800
  size: _ctx.size,
3787
3801
  is24Hour: _ctx.is24Hour,
3788
3802
  minuteStep: _ctx.minuteStep,
@@ -3795,19 +3809,22 @@ const _sfc_main$L = /* @__PURE__ */ defineComponent({
3795
3809
  const _sfc_main$K = /* @__PURE__ */ defineComponent({
3796
3810
  __name: "UiInput.DateTime",
3797
3811
  props: {
3812
+ min: {},
3813
+ max: {},
3814
+ format: { default: "iso" },
3815
+ is24Hour: { type: Boolean, default: true },
3816
+ minuteStep: { default: 1 },
3817
+ label: {},
3818
+ helpText: {},
3798
3819
  modelValue: {},
3799
3820
  placeholder: {},
3800
3821
  disabled: { type: Boolean, default: false },
3801
3822
  readonly: { type: Boolean, default: false },
3802
3823
  required: { type: Boolean, default: false },
3803
- min: {},
3804
- max: {},
3824
+ fullWidth: { type: Boolean },
3805
3825
  inputId: {},
3806
- error: { type: Boolean, default: false },
3807
- size: { default: "md" },
3808
- format: { default: "iso" },
3809
- is24Hour: { type: Boolean, default: true },
3810
- minuteStep: { default: 1 }
3826
+ error: { type: [Boolean, String, Error], default: false },
3827
+ size: { default: "md" }
3811
3828
  },
3812
3829
  emits: ["update:modelValue", "change", "blur", "focus", "keydown"],
3813
3830
  setup(__props, { emit: __emit }) {
@@ -3828,7 +3845,7 @@ const _sfc_main$K = /* @__PURE__ */ defineComponent({
3828
3845
  required: _ctx.required,
3829
3846
  min: _ctx.min,
3830
3847
  max: _ctx.max,
3831
- error: _ctx.error,
3848
+ error: Boolean(_ctx.error),
3832
3849
  size: _ctx.size,
3833
3850
  format: _ctx.format,
3834
3851
  is24Hour: _ctx.is24Hour,
@@ -24795,26 +24812,31 @@ const _hoisted_1$G = { class: "input-richtext-toolbar" };
24795
24812
  const _hoisted_2$B = { class: "input-richtext-group" };
24796
24813
  const _hoisted_3$y = { class: "input-richtext-group" };
24797
24814
  const _hoisted_4$x = { class: "input-richtext-group" };
24798
- const _hoisted_5$t = { class: "input-richtext-group" };
24815
+ const _hoisted_5$s = { class: "input-richtext-group" };
24799
24816
  const _hoisted_6$p = { class: "input-richtext-group" };
24800
24817
  const _hoisted_7$n = { class: "input-richtext-editor-wrapper" };
24801
24818
  const _sfc_main$J = /* @__PURE__ */ defineComponent({
24802
24819
  __name: "UiInput.RichText",
24803
24820
  props: {
24821
+ minHeight: { default: "200px" },
24822
+ maxHeight: { default: "400px" },
24823
+ label: {},
24824
+ helpText: {},
24804
24825
  modelValue: {},
24805
24826
  placeholder: { default: "Start typing..." },
24806
24827
  disabled: { type: Boolean, default: false },
24807
24828
  readonly: { type: Boolean, default: false },
24829
+ required: { type: Boolean },
24830
+ fullWidth: { type: Boolean },
24808
24831
  inputId: {},
24809
- error: { type: Boolean, default: false },
24810
- minHeight: { default: "200px" },
24811
- maxHeight: { default: "400px" }
24832
+ error: { type: [Boolean, String, Error], default: false },
24833
+ size: {}
24812
24834
  },
24813
24835
  emits: ["update:modelValue", "blur", "focus"],
24814
24836
  setup(__props, { emit: __emit }) {
24815
24837
  useCssVars((_ctx) => ({
24816
- "bbccab12": _ctx.minHeight,
24817
- "740e9409": _ctx.maxHeight
24838
+ "653355e8": _ctx.minHeight,
24839
+ "c14982c4": _ctx.maxHeight
24818
24840
  }));
24819
24841
  const props = __props;
24820
24842
  const emit = __emit;
@@ -25040,7 +25062,7 @@ const _sfc_main$J = /* @__PURE__ */ defineComponent({
25040
25062
  spacing: "28px",
25041
25063
  margin: "4px"
25042
25064
  }),
25043
- createElementVNode("div", _hoisted_5$t, [
25065
+ createElementVNode("div", _hoisted_5$s, [
25044
25066
  createVNode(StrandsUiButton, {
25045
25067
  color: unref(editor)?.isActive("bulletList") ? "primary" : "secondary",
25046
25068
  size: "sm",
@@ -25159,7 +25181,7 @@ const _sfc_main$J = /* @__PURE__ */ defineComponent({
25159
25181
  };
25160
25182
  }
25161
25183
  });
25162
- const UiInputRichText = /* @__PURE__ */ _export_sfc(_sfc_main$J, [["__scopeId", "data-v-1031412d"]]);
25184
+ const UiInputRichText = /* @__PURE__ */ _export_sfc(_sfc_main$J, [["__scopeId", "data-v-18a35d5d"]]);
25163
25185
  const _hoisted_1$F = { class: "pincode-inputs" };
25164
25186
  const _hoisted_2$A = {
25165
25187
  key: 0,
@@ -25170,22 +25192,27 @@ const _hoisted_4$w = {
25170
25192
  key: 1,
25171
25193
  class: "pincode-divider"
25172
25194
  };
25173
- const _hoisted_5$s = {
25195
+ const _hoisted_5$r = {
25174
25196
  key: 1,
25175
25197
  class: "pincode-icon pincode-icon-trailing"
25176
25198
  };
25177
25199
  const _sfc_main$I = /* @__PURE__ */ defineComponent({
25178
25200
  __name: "UiInput.Pincode",
25179
25201
  props: {
25180
- modelValue: {},
25181
25202
  maxLength: { default: 6 },
25182
25203
  variant: { default: "numeric" },
25183
25204
  divider: {},
25205
+ label: {},
25206
+ helpText: {},
25207
+ modelValue: {},
25208
+ placeholder: {},
25184
25209
  disabled: { type: Boolean },
25185
25210
  readonly: { type: Boolean },
25186
- error: { type: [Boolean, String] },
25187
- size: { default: "md" },
25188
- inputId: {}
25211
+ required: { type: Boolean },
25212
+ fullWidth: { type: Boolean },
25213
+ inputId: {},
25214
+ error: { type: [Boolean, String, Error] },
25215
+ size: { default: "md" }
25189
25216
  },
25190
25217
  emits: ["update:modelValue", "blur", "focus", "complete"],
25191
25218
  setup(__props, { emit: __emit }) {
@@ -25385,7 +25412,7 @@ const _sfc_main$I = /* @__PURE__ */ defineComponent({
25385
25412
  }, dividerProps.value, { class: "pincode-custom-divider" }), null, 16)) : shouldShowDivider(index) ? (openBlock(), createElementBlock("span", _hoisted_4$w, toDisplayString(dividerCharacter.value), 1)) : createCommentVNode("", true)
25386
25413
  ], 64);
25387
25414
  }), 128)),
25388
- _ctx.$slots["trailing-icon"] ? (openBlock(), createElementBlock("div", _hoisted_5$s, [
25415
+ _ctx.$slots["trailing-icon"] ? (openBlock(), createElementBlock("div", _hoisted_5$r, [
25389
25416
  renderSlot(_ctx.$slots, "trailing-icon", {}, void 0, true)
25390
25417
  ])) : createCommentVNode("", true)
25391
25418
  ])
@@ -25393,18 +25420,17 @@ const _sfc_main$I = /* @__PURE__ */ defineComponent({
25393
25420
  };
25394
25421
  }
25395
25422
  });
25396
- const UiInputPincode = /* @__PURE__ */ _export_sfc(_sfc_main$I, [["__scopeId", "data-v-25372cfe"]]);
25397
- const _hoisted_1$E = { class: "input-container" };
25398
- const _hoisted_2$z = ["for"];
25399
- const _hoisted_3$w = {
25423
+ const UiInputPincode = /* @__PURE__ */ _export_sfc(_sfc_main$I, [["__scopeId", "data-v-481de9a3"]]);
25424
+ const _hoisted_1$E = ["for"];
25425
+ const _hoisted_2$z = {
25400
25426
  key: 0,
25401
25427
  class: "input-required"
25402
25428
  };
25403
- const _hoisted_4$v = {
25429
+ const _hoisted_3$w = {
25404
25430
  key: 10,
25405
25431
  class: "input-error-text"
25406
25432
  };
25407
- const _hoisted_5$r = {
25433
+ const _hoisted_4$v = {
25408
25434
  key: 11,
25409
25435
  class: "input-help-text"
25410
25436
  };
@@ -25412,16 +25438,19 @@ const _sfc_main$H = /* @__PURE__ */ defineComponent({
25412
25438
  __name: "UiInput",
25413
25439
  props: {
25414
25440
  type: {},
25415
- modelValue: {},
25416
- placeholder: {},
25417
- disabled: { type: Boolean },
25418
- readonly: { type: Boolean },
25419
- required: { type: Boolean },
25420
25441
  min: {},
25421
25442
  max: {},
25422
25443
  step: {},
25423
25444
  autocomplete: {},
25424
25445
  spellcheck: { type: Boolean },
25446
+ label: {},
25447
+ helpText: {},
25448
+ modelValue: {},
25449
+ placeholder: {},
25450
+ disabled: { type: Boolean },
25451
+ readonly: { type: Boolean },
25452
+ required: { type: Boolean },
25453
+ fullWidth: { type: Boolean },
25425
25454
  inputId: {},
25426
25455
  error: { type: [Boolean, String, Error] },
25427
25456
  size: {},
@@ -25447,9 +25476,7 @@ const _sfc_main$H = /* @__PURE__ */ defineComponent({
25447
25476
  maxHeight: {},
25448
25477
  maxLength: {},
25449
25478
  variant: {},
25450
- divider: {},
25451
- label: {},
25452
- helpText: {}
25479
+ divider: {}
25453
25480
  },
25454
25481
  emits: ["update:modelValue", "blur", "focus", "keydown", "file-error", "complete"],
25455
25482
  setup(__props, { emit: __emit }) {
@@ -25480,19 +25507,24 @@ const _sfc_main$H = /* @__PURE__ */ defineComponent({
25480
25507
  emit("complete", value);
25481
25508
  };
25482
25509
  return (_ctx, _cache) => {
25483
- return openBlock(), createElementBlock("div", _hoisted_1$E, [
25510
+ return openBlock(), createElementBlock("div", {
25511
+ class: normalizeClass(["input-container", {
25512
+ "input-container--full-width": props.fullWidth,
25513
+ [`input-container--${props.size || "md"}`]: true
25514
+ }])
25515
+ }, [
25484
25516
  props.label ? (openBlock(), createElementBlock("label", {
25485
25517
  key: 0,
25486
25518
  for: inputId.value,
25487
25519
  class: "input-label"
25488
25520
  }, [
25489
25521
  createTextVNode(toDisplayString(props.label) + " ", 1),
25490
- props.required ? (openBlock(), createElementBlock("span", _hoisted_3$w, "*")) : createCommentVNode("", true)
25491
- ], 8, _hoisted_2$z)) : createCommentVNode("", true),
25522
+ props.required ? (openBlock(), createElementBlock("span", _hoisted_2$z, "*")) : createCommentVNode("", true)
25523
+ ], 8, _hoisted_1$E)) : createCommentVNode("", true),
25492
25524
  isTextInput.value ? (openBlock(), createBlock(UiInputText, {
25493
25525
  key: 1,
25494
25526
  "model-value": _ctx.modelValue,
25495
- type: _ctx.type || "text",
25527
+ type: _ctx.type,
25496
25528
  placeholder: _ctx.placeholder,
25497
25529
  disabled: _ctx.disabled,
25498
25530
  readonly: _ctx.readonly,
@@ -25711,12 +25743,12 @@ const _sfc_main$H = /* @__PURE__ */ defineComponent({
25711
25743
  key: "1"
25712
25744
  } : void 0
25713
25745
  ]), 1032, ["model-value", "max-length", "variant", "divider", "disabled", "readonly", "input-id", "error", "size"])) : createCommentVNode("", true),
25714
- props.error && props.error !== true ? (openBlock(), createElementBlock("p", _hoisted_4$v, toDisplayString(typeof props.error === "string" ? props.error : props.error?.message || String(props.error)), 1)) : props.helpText ? (openBlock(), createElementBlock("p", _hoisted_5$r, toDisplayString(props.helpText), 1)) : createCommentVNode("", true)
25715
- ]);
25746
+ props.error && props.error !== true ? (openBlock(), createElementBlock("p", _hoisted_3$w, toDisplayString(typeof props.error === "string" ? props.error : props.error?.message || String(props.error)), 1)) : props.helpText ? (openBlock(), createElementBlock("p", _hoisted_4$v, toDisplayString(props.helpText), 1)) : createCommentVNode("", true)
25747
+ ], 2);
25716
25748
  };
25717
25749
  }
25718
25750
  });
25719
- const StrandsUiInput = /* @__PURE__ */ _export_sfc(_sfc_main$H, [["__scopeId", "data-v-83ae8958"]]);
25751
+ const StrandsUiInput = /* @__PURE__ */ _export_sfc(_sfc_main$H, [["__scopeId", "data-v-7c0f388a"]]);
25720
25752
  const _hoisted_1$D = ["disabled", "aria-disabled"];
25721
25753
  const _hoisted_2$y = ["href", "target", "rel", "aria-disabled"];
25722
25754
  const _sfc_main$G = /* @__PURE__ */ defineComponent({
@@ -28059,12 +28091,12 @@ const _hoisted_20$9 = {
28059
28091
  };
28060
28092
  const _hoisted_21$9 = ["cx", "fill"];
28061
28093
  const _hoisted_22$7 = { class: "ui-color-picker-inputs" };
28062
- const _hoisted_23$6 = {
28094
+ const _hoisted_23$5 = {
28063
28095
  key: 0,
28064
28096
  class: "ui-color-picker-input-row"
28065
28097
  };
28066
- const _hoisted_24$6 = { class: "ui-color-picker-input-group" };
28067
- const _hoisted_25$6 = { class: "ui-color-picker-button-wrapper" };
28098
+ const _hoisted_24$5 = { class: "ui-color-picker-input-group" };
28099
+ const _hoisted_25$5 = { class: "ui-color-picker-button-wrapper" };
28068
28100
  const _hoisted_26$5 = {
28069
28101
  key: 1,
28070
28102
  class: "ui-color-picker-input-row"
@@ -29918,8 +29950,8 @@ const _sfc_main$B = /* @__PURE__ */ defineComponent({
29918
29950
  }, null, 4)
29919
29951
  ], 544)) : createCommentVNode("", true),
29920
29952
  createElementVNode("div", _hoisted_22$7, [
29921
- currentColorFormat.value === "hex" ? (openBlock(), createElementBlock("div", _hoisted_23$6, [
29922
- createElementVNode("div", _hoisted_24$6, [
29953
+ currentColorFormat.value === "hex" ? (openBlock(), createElementBlock("div", _hoisted_23$5, [
29954
+ createElementVNode("div", _hoisted_24$5, [
29923
29955
  _cache[24] || (_cache[24] = createElementVNode("label", { class: "ui-color-picker-label" }, "Hex", -1)),
29924
29956
  withDirectives(createElementVNode("input", {
29925
29957
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => hexInput.value = $event),
@@ -29933,7 +29965,7 @@ const _sfc_main$B = /* @__PURE__ */ defineComponent({
29933
29965
  [vModelText, hexInput.value]
29934
29966
  ])
29935
29967
  ]),
29936
- createElementVNode("div", _hoisted_25$6, [
29968
+ createElementVNode("div", _hoisted_25$5, [
29937
29969
  createVNode(unref(CompoundUiButton), {
29938
29970
  color: "secondary",
29939
29971
  size: "xs",
@@ -30646,23 +30678,20 @@ const _hoisted_11$h = {
30646
30678
  key: 0,
30647
30679
  class: "ui-table-filter-input"
30648
30680
  };
30649
- const _hoisted_12$h = ["onUpdate:modelValue", "placeholder"];
30650
- const _hoisted_13$g = ["onUpdate:modelValue"];
30651
- const _hoisted_14$g = { value: "" };
30652
- const _hoisted_15$d = ["value"];
30653
- const _hoisted_16$d = { class: "ui-table-body" };
30654
- const _hoisted_17$c = { class: "ui-table-group-content" };
30655
- const _hoisted_18$b = { class: "ui-table-group-name" };
30656
- const _hoisted_19$a = { class: "ui-table-group-count" };
30657
- const _hoisted_20$8 = ["onClick"];
30658
- const _hoisted_21$8 = ["onClick"];
30659
- const _hoisted_22$6 = { class: "ui-table-subrow-content" };
30660
- const _hoisted_23$5 = { class: "ui-table-subrow-default" };
30661
- const _hoisted_24$5 = {
30681
+ const _hoisted_12$h = { class: "ui-table-body" };
30682
+ const _hoisted_13$g = { class: "ui-table-group-content" };
30683
+ const _hoisted_14$g = { class: "ui-table-group-name" };
30684
+ const _hoisted_15$d = { class: "ui-table-group-count" };
30685
+ const _hoisted_16$d = ["onClick"];
30686
+ const _hoisted_17$c = ["onClick"];
30687
+ const _hoisted_18$b = { key: 1 };
30688
+ const _hoisted_19$a = { class: "ui-table-subrow-content" };
30689
+ const _hoisted_20$8 = { class: "ui-table-subrow-default" };
30690
+ const _hoisted_21$8 = {
30662
30691
  key: 0,
30663
30692
  class: "ui-table-empty"
30664
30693
  };
30665
- const _hoisted_25$5 = {
30694
+ const _hoisted_22$6 = {
30666
30695
  key: 1,
30667
30696
  class: "ui-table-footer"
30668
30697
  };
@@ -30686,12 +30715,28 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
30686
30715
  stickyHeader: { type: Boolean, default: false },
30687
30716
  stickyColumns: { default: () => [] }
30688
30717
  },
30689
- emits: ["rowClick", "rowSelect", "sort", "columnReorder"],
30690
- setup(__props, { emit: __emit }) {
30718
+ emits: ["rowClick", "rowSelect", "sort", "columnReorder", "cellUpdate"],
30719
+ setup(__props, { expose: __expose, emit: __emit }) {
30691
30720
  const props = __props;
30692
30721
  const emit = __emit;
30693
30722
  const slots = useSlots();
30694
30723
  const tableRef = ref(null);
30724
+ const internalData = ref([...props.data]);
30725
+ const internalColumns = ref([...props.columns]);
30726
+ watch(() => props.data, (newData) => {
30727
+ internalData.value = [...newData];
30728
+ }, { deep: true });
30729
+ watch(() => props.columns, (newColumns) => {
30730
+ internalColumns.value = [...newColumns];
30731
+ }, { deep: true });
30732
+ const restoreData = () => {
30733
+ internalData.value = [...props.data];
30734
+ modifiedCells.value.clear();
30735
+ cellValues.value.clear();
30736
+ };
30737
+ const restoreColumns = () => {
30738
+ internalColumns.value = [...props.columns];
30739
+ };
30695
30740
  const sortKey = ref("");
30696
30741
  const sortOrder = ref("asc");
30697
30742
  const filters = ref({});
@@ -30699,6 +30744,8 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
30699
30744
  const groupBy = ref("");
30700
30745
  const expandedRows = ref(/* @__PURE__ */ new Set());
30701
30746
  const selectedRows = ref(/* @__PURE__ */ new Set());
30747
+ const modifiedCells = ref(/* @__PURE__ */ new Set());
30748
+ const cellValues = ref(/* @__PURE__ */ new Map());
30702
30749
  const draggedColumnIndex = ref(null);
30703
30750
  const dragOverColumnIndex = ref(null);
30704
30751
  const isDragging = ref(false);
@@ -30748,12 +30795,12 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
30748
30795
  };
30749
30796
  };
30750
30797
  const processedRows = computed(() => {
30751
- let rows = [...props.data];
30798
+ let rows = [...internalData.value];
30752
30799
  if (props.filterable && Object.keys(filters.value).length > 0) {
30753
30800
  rows = rows.filter((row) => {
30754
30801
  return Object.entries(filters.value).every(([key, filterValue]) => {
30755
30802
  if (!filterValue || filterValue === "") return true;
30756
- const column = props.columns.find((col) => col.key === key);
30803
+ const column = internalColumns.value.find((col) => col.key === key);
30757
30804
  const cellValue = getCellValue(row, key, column);
30758
30805
  const cellStr = String(cellValue || "").toLowerCase();
30759
30806
  if (Array.isArray(filterValue)) {
@@ -30763,8 +30810,8 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
30763
30810
  });
30764
30811
  });
30765
30812
  }
30766
- if (sortKey.value && (props.sortable || props.columns.find((col) => col.key === sortKey.value)?.sortable)) {
30767
- const sortColumn = props.columns.find((col) => col.key === sortKey.value);
30813
+ if (sortKey.value && (props.sortable || internalColumns.value.find((col) => col.key === sortKey.value)?.sortable)) {
30814
+ const sortColumn = internalColumns.value.find((col) => col.key === sortKey.value);
30768
30815
  rows.sort((a, b) => {
30769
30816
  const aVal = getCellValue(a, sortKey.value, sortColumn);
30770
30817
  const bVal = getCellValue(b, sortKey.value, sortColumn);
@@ -30828,13 +30875,18 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
30828
30875
  return column.key === "actions" && hasSlot;
30829
30876
  };
30830
30877
  const getFilterOptions = (column) => {
30831
- if (column.filterOptions) return column.filterOptions;
30878
+ if (column.filterOptions) {
30879
+ if (Array.isArray(column.filterOptions) && column.filterOptions.length > 0 && typeof column.filterOptions[0] === "object" && column.filterOptions[0] !== null && "label" in column.filterOptions[0]) {
30880
+ return column.filterOptions;
30881
+ }
30882
+ return column.filterOptions.map((value) => ({ label: String(value), value: String(value) }));
30883
+ }
30832
30884
  const uniqueValues = /* @__PURE__ */ new Set();
30833
- props.data.forEach((row) => {
30885
+ internalData.value.forEach((row) => {
30834
30886
  const value = getCellValue(row, column.key, column);
30835
30887
  if (value != null) uniqueValues.add(String(value));
30836
30888
  });
30837
- return Array.from(uniqueValues).sort();
30889
+ return Array.from(uniqueValues).sort().map((value) => ({ label: value, value }));
30838
30890
  };
30839
30891
  const toggleFilter = (columnKey) => {
30840
30892
  showFilters.value[columnKey] = !showFilters.value[columnKey];
@@ -30861,6 +30913,28 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
30861
30913
  }
30862
30914
  emit("rowClick", row, index);
30863
30915
  };
30916
+ const handleCellUpdate = (row, columnKey, newValue, rowIndex) => {
30917
+ const actualIndex = internalData.value.findIndex((r) => r === row);
30918
+ if (actualIndex === -1) return;
30919
+ const cellKey = `${actualIndex}-${columnKey}`;
30920
+ if (!cellValues.value.has(cellKey)) {
30921
+ const originalValue2 = getCellValue(row, columnKey);
30922
+ cellValues.value.set(cellKey, originalValue2);
30923
+ }
30924
+ const keys2 = columnKey.split(".");
30925
+ let target = internalData.value[actualIndex];
30926
+ for (let i = 0; i < keys2.length - 1; i++) {
30927
+ target = target[keys2[i]];
30928
+ }
30929
+ target[keys2[keys2.length - 1]] = newValue;
30930
+ const originalValue = cellValues.value.get(cellKey);
30931
+ if (newValue !== originalValue) {
30932
+ modifiedCells.value.add(cellKey);
30933
+ } else {
30934
+ modifiedCells.value.delete(cellKey);
30935
+ }
30936
+ emit("cellUpdate", row, columnKey, newValue, actualIndex);
30937
+ };
30864
30938
  const handleDragStart = (event, columnIndex) => {
30865
30939
  if (!props.reorderable) return;
30866
30940
  draggedColumnIndex.value = columnIndex;
@@ -30904,9 +30978,10 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
30904
30978
  if (!props.reorderable || draggedColumnIndex.value === null) return;
30905
30979
  const fromIndex = draggedColumnIndex.value;
30906
30980
  if (fromIndex !== targetIndex) {
30907
- const newColumns = [...props.columns];
30981
+ const newColumns = [...internalColumns.value];
30908
30982
  const draggedColumn = newColumns.splice(fromIndex, 1)[0];
30909
30983
  newColumns.splice(targetIndex, 0, draggedColumn);
30984
+ internalColumns.value = newColumns;
30910
30985
  emit("columnReorder", fromIndex, targetIndex, newColumns);
30911
30986
  }
30912
30987
  cleanupDragState();
@@ -30923,6 +30998,14 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
30923
30998
  dragStartX.value = 0;
30924
30999
  currentDragX.value = 0;
30925
31000
  };
31001
+ __expose({
31002
+ internalData,
31003
+ internalColumns,
31004
+ restoreData,
31005
+ restoreColumns,
31006
+ modifiedCells,
31007
+ cellValues
31008
+ });
30926
31009
  const getGroupIndex = (rowIndex) => {
30927
31010
  let groupCount = 0;
30928
31011
  for (let i = 0; i <= rowIndex; i++) {
@@ -30949,8 +31032,8 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
30949
31032
  ]),
30950
31033
  style: normalizeStyle(tableStyle.value)
30951
31034
  }, [
30952
- _ctx.columns.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_2$r, [
30953
- (openBlock(true), createElementBlock(Fragment$1, null, renderList(_ctx.columns, (column, index) => {
31035
+ internalColumns.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_2$r, [
31036
+ (openBlock(true), createElementBlock(Fragment$1, null, renderList(internalColumns.value, (column, index) => {
30954
31037
  return openBlock(), createElementBlock("div", {
30955
31038
  key: `header-${index}`,
30956
31039
  class: normalizeClass([
@@ -30966,10 +31049,10 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
30966
31049
  "ui-table-cell--drag-target": isDragging.value && draggedColumnIndex.value !== index
30967
31050
  }
30968
31051
  ]),
30969
- onDragover: _cache[2] || (_cache[2] = withModifiers(() => {
31052
+ onDragover: _cache[1] || (_cache[1] = withModifiers(() => {
30970
31053
  }, ["prevent"])),
30971
31054
  onDragenter: ($event) => handleDragEnter(index),
30972
- onDragleave: _cache[3] || (_cache[3] = ($event) => handleDragLeave()),
31055
+ onDragleave: _cache[2] || (_cache[2] = ($event) => handleDragLeave()),
30973
31056
  onDrop: ($event) => handleDrop($event, index),
30974
31057
  style: normalizeStyle(getHeaderColumnTransform(index))
30975
31058
  }, [
@@ -31019,37 +31102,20 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
31019
31102
  ])
31020
31103
  ]),
31021
31104
  showFilters.value[column.key] ? (openBlock(), createElementBlock("div", _hoisted_11$h, [
31022
- (column.filterType || "text") === "text" ? withDirectives((openBlock(), createElementBlock("input", {
31023
- key: 0,
31105
+ createVNode(StrandsUiInput, {
31106
+ modelValue: filters.value[column.key],
31024
31107
  "onUpdate:modelValue": ($event) => filters.value[column.key] = $event,
31108
+ type: column.filterType,
31109
+ options: column.filterType === "select" ? getFilterOptions(column) : void 0,
31025
31110
  placeholder: `Filter ${column.label}...`,
31026
- class: "ui-table-filter-field",
31027
31111
  onClick: _cache[0] || (_cache[0] = withModifiers(() => {
31028
31112
  }, ["stop"]))
31029
- }, null, 8, _hoisted_12$h)), [
31030
- [vModelText, filters.value[column.key]]
31031
- ]) : column.filterType === "select" ? withDirectives((openBlock(), createElementBlock("select", {
31032
- key: 1,
31033
- "onUpdate:modelValue": ($event) => filters.value[column.key] = $event,
31034
- class: "ui-table-filter-field",
31035
- onClick: _cache[1] || (_cache[1] = withModifiers(() => {
31036
- }, ["stop"]))
31037
- }, [
31038
- createElementVNode("option", _hoisted_14$g, "All " + toDisplayString(column.label), 1),
31039
- (openBlock(true), createElementBlock(Fragment$1, null, renderList(getFilterOptions(column), (option) => {
31040
- return openBlock(), createElementBlock("option", {
31041
- key: option,
31042
- value: option
31043
- }, toDisplayString(option), 9, _hoisted_15$d);
31044
- }), 128))
31045
- ], 8, _hoisted_13$g)), [
31046
- [vModelSelect, filters.value[column.key]]
31047
- ]) : createCommentVNode("", true)
31113
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "type", "options", "placeholder"])
31048
31114
  ])) : createCommentVNode("", true)
31049
31115
  ], 46, _hoisted_3$q);
31050
31116
  }), 128))
31051
31117
  ])) : createCommentVNode("", true),
31052
- createElementVNode("div", _hoisted_16$d, [
31118
+ createElementVNode("div", _hoisted_12$h, [
31053
31119
  (openBlock(true), createElementBlock(Fragment$1, null, renderList(processedRows.value, (row, rowIndex) => {
31054
31120
  return openBlock(), createElementBlock(Fragment$1, {
31055
31121
  key: `row-${rowIndex}`
@@ -31059,10 +31125,10 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
31059
31125
  class: "ui-table-group-header",
31060
31126
  style: normalizeStyle({ "--group-index": getGroupIndex(rowIndex) })
31061
31127
  }, [
31062
- createElementVNode("div", _hoisted_17$c, [
31128
+ createElementVNode("div", _hoisted_13$g, [
31063
31129
  createVNode(unref(Users), { size: 16 }),
31064
- createElementVNode("span", _hoisted_18$b, toDisplayString(row._groupName), 1),
31065
- createElementVNode("span", _hoisted_19$a, "(" + toDisplayString(row._groupCount) + " items)", 1)
31130
+ createElementVNode("span", _hoisted_14$g, toDisplayString(row._groupName), 1),
31131
+ createElementVNode("span", _hoisted_15$d, "(" + toDisplayString(row._groupCount) + " items)", 1)
31066
31132
  ])
31067
31133
  ], 4)) : (openBlock(), createElementBlock("div", {
31068
31134
  key: 1,
@@ -31075,7 +31141,7 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
31075
31141
  ]),
31076
31142
  onClick: ($event) => handleRowClick(row, rowIndex)
31077
31143
  }, [
31078
- (openBlock(true), createElementBlock(Fragment$1, null, renderList(_ctx.columns, (column, colIndex) => {
31144
+ (openBlock(true), createElementBlock(Fragment$1, null, renderList(internalColumns.value, (column, colIndex) => {
31079
31145
  return openBlock(), createElementBlock("div", {
31080
31146
  key: `cell-${rowIndex}-${colIndex}`,
31081
31147
  class: normalizeClass([
@@ -31083,6 +31149,8 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
31083
31149
  "ui-table-body-cell",
31084
31150
  {
31085
31151
  [`ui-table-cell--align-${column.align || "left"}`]: column.align,
31152
+ "ui-table-cell--editable": column.editable,
31153
+ "ui-table-cell--modified": modifiedCells.value.has(`${internalData.value.findIndex((r) => r === row)}-${column.key}`),
31086
31154
  "ui-table-cell--sticky": column.sticky || stickyColumns.value.includes(column.key) || isActionsColumn(column),
31087
31155
  "ui-table-cell--actions": isActionsColumn(column),
31088
31156
  "ui-table-cell--dragging": draggedColumnIndex.value === colIndex,
@@ -31106,22 +31174,59 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
31106
31174
  rowIndex,
31107
31175
  colIndex
31108
31176
  }, () => [
31109
- createTextVNode(toDisplayString(getCellValue(row, column.key, column)), 1)
31177
+ column.editable ? (openBlock(), createBlock(StrandsUiInput, {
31178
+ key: 0,
31179
+ modelValue: getCellValue(row, column.key, column),
31180
+ type: column.filterType || "text",
31181
+ size: "sm",
31182
+ options: column.filterType === "select" ? getFilterOptions(column) : void 0,
31183
+ "full-width": "",
31184
+ "onUpdate:modelValue": (newValue) => handleCellUpdate(row, column.key, newValue),
31185
+ onClick: _cache[3] || (_cache[3] = withModifiers(() => {
31186
+ }, ["stop"])),
31187
+ onMousedown: _cache[4] || (_cache[4] = withModifiers(() => {
31188
+ }, ["stop"]))
31189
+ }, createSlots({ _: 2 }, [
31190
+ _ctx.$slots["input-leading-icon"] ? {
31191
+ name: "leading-icon",
31192
+ fn: withCtx(() => [
31193
+ renderSlot(_ctx.$slots, "input-leading-icon", {
31194
+ row,
31195
+ column,
31196
+ rowIndex,
31197
+ colIndex
31198
+ }, void 0, true)
31199
+ ]),
31200
+ key: "0"
31201
+ } : void 0,
31202
+ _ctx.$slots["input-trailing-icon"] ? {
31203
+ name: "trailing-icon",
31204
+ fn: withCtx(() => [
31205
+ renderSlot(_ctx.$slots, "input-trailing-icon", {
31206
+ row,
31207
+ column,
31208
+ rowIndex,
31209
+ colIndex
31210
+ }, void 0, true)
31211
+ ]),
31212
+ key: "1"
31213
+ } : void 0
31214
+ ]), 1032, ["modelValue", "type", "options", "onUpdate:modelValue"])) : (openBlock(), createElementBlock("span", _hoisted_18$b, toDisplayString(getCellValue(row, column.key, column)), 1))
31110
31215
  ], true)
31111
- ], 14, _hoisted_21$8);
31216
+ ], 14, _hoisted_17$c);
31112
31217
  }), 128))
31113
- ], 10, _hoisted_20$8)),
31218
+ ], 10, _hoisted_16$d)),
31114
31219
  expandedRows.value.has(rowIndex) ? (openBlock(), createElementBlock("div", {
31115
31220
  key: 2,
31116
31221
  class: "ui-table-subrow",
31117
31222
  style: normalizeStyle(subrowStyle.value)
31118
31223
  }, [
31119
- createElementVNode("div", _hoisted_22$6, [
31224
+ createElementVNode("div", _hoisted_19$a, [
31120
31225
  renderSlot(_ctx.$slots, "expanded-row", {
31121
31226
  row,
31122
31227
  rowIndex
31123
31228
  }, () => [
31124
- createElementVNode("div", _hoisted_23$5, [
31229
+ createElementVNode("div", _hoisted_20$8, [
31125
31230
  createElementVNode("pre", null, toDisplayString(JSON.stringify(row, null, 2)), 1)
31126
31231
  ])
31127
31232
  ], true)
@@ -31129,16 +31234,16 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
31129
31234
  ], 4)) : createCommentVNode("", true)
31130
31235
  ], 64);
31131
31236
  }), 128)),
31132
- processedRows.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_24$5, [
31237
+ processedRows.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_21$8, [
31133
31238
  renderSlot(_ctx.$slots, "empty", {}, () => [
31134
- _cache[4] || (_cache[4] = createElementVNode("div", { class: "ui-table-empty-content" }, [
31239
+ _cache[5] || (_cache[5] = createElementVNode("div", { class: "ui-table-empty-content" }, [
31135
31240
  createElementVNode("span", null, "No data available")
31136
31241
  ], -1))
31137
31242
  ], true)
31138
31243
  ])) : createCommentVNode("", true)
31139
31244
  ]),
31140
- hasFooterSlots.value ? (openBlock(), createElementBlock("div", _hoisted_25$5, [
31141
- (openBlock(true), createElementBlock(Fragment$1, null, renderList(_ctx.columns, (column, index) => {
31245
+ hasFooterSlots.value ? (openBlock(), createElementBlock("div", _hoisted_22$6, [
31246
+ (openBlock(true), createElementBlock(Fragment$1, null, renderList(internalColumns.value, (column, index) => {
31142
31247
  return openBlock(), createElementBlock("div", {
31143
31248
  key: `footer-${index}`,
31144
31249
  class: normalizeClass([
@@ -31164,7 +31269,7 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
31164
31269
  };
31165
31270
  }
31166
31271
  });
31167
- const UiTable = /* @__PURE__ */ _export_sfc(_sfc_main$x, [["__scopeId", "data-v-7910ac1d"]]);
31272
+ const UiTable = /* @__PURE__ */ _export_sfc(_sfc_main$x, [["__scopeId", "data-v-f4818507"]]);
31168
31273
  const _hoisted_1$u = { class: "ui-hero-content" };
31169
31274
  const _hoisted_2$q = {
31170
31275
  key: 0,