@fkui/vue 6.3.1 → 6.4.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.
@@ -1972,17 +1972,17 @@ const _export_sfc = (sfc, props) => {
1972
1972
  return target;
1973
1973
  };
1974
1974
  const _hoisted_1$X = ["aria-hidden"];
1975
- const _hoisted_2$G = ["xlink:href"];
1976
- function _sfc_render$R(_ctx, _cache, $props, $setup, $data, $options) {
1975
+ const _hoisted_2$G = ["href"];
1976
+ function _sfc_render$Q(_ctx, _cache, $props, $setup, $data, $options) {
1977
1977
  return vue.openBlock(), vue.createElementBlock("svg", vue.mergeProps(_ctx.$attrs, {
1978
1978
  focusable: "false",
1979
1979
  class: ["icon", [_ctx.spriteKey, ..._ctx.modifiers]],
1980
1980
  "aria-hidden": _ctx.ariaHidden
1981
1981
  }), [vue.renderSlot(_ctx.$slots, "default"), _cache[0] || (_cache[0] = vue.createTextVNode()), vue.createElementVNode("use", {
1982
- "xlink:href": _ctx.spriteId
1982
+ href: _ctx.spriteId
1983
1983
  }, null, 8, _hoisted_2$G)], 16, _hoisted_1$X);
1984
1984
  }
1985
- const FIcon = /* @__PURE__ */ _export_sfc(_sfc_main$1d, [["render", _sfc_render$R]]);
1985
+ const FIcon = /* @__PURE__ */ _export_sfc(_sfc_main$1d, [["render", _sfc_render$Q]]);
1986
1986
  const DATA_TEST_ATTRIBUTE_NAME = "data-test";
1987
1987
  function throwErrorIfEmpty(value) {
1988
1988
  if (!value) {
@@ -4604,7 +4604,7 @@ const _hoisted_1$W = ["id"];
4604
4604
  const _hoisted_2$F = {
4605
4605
  class: "modal__backdrop"
4606
4606
  };
4607
- const _hoisted_3$w = {
4607
+ const _hoisted_3$x = {
4608
4608
  class: "modal__inner-container"
4609
4609
  };
4610
4610
  const _hoisted_4$q = {
@@ -4634,7 +4634,7 @@ const _hoisted_10$3 = {
4634
4634
  class: "modal__shelf"
4635
4635
  };
4636
4636
  const _hoisted_11$3 = ["aria-label"];
4637
- function _sfc_render$Q(_ctx, _cache, $props, $setup, $data, $options) {
4637
+ function _sfc_render$P(_ctx, _cache, $props, $setup, $data, $options) {
4638
4638
  const _component_f_icon = vue.resolveComponent("f-icon");
4639
4639
  return _ctx.isOpen ? (vue.openBlock(), vue.createElementBlock("div", {
4640
4640
  key: 0,
@@ -4646,7 +4646,7 @@ function _sfc_render$Q(_ctx, _cache, $props, $setup, $data, $options) {
4646
4646
  role: "dialog",
4647
4647
  "aria-modal": "true",
4648
4648
  onKeyup: _cache[3] || (_cache[3] = vue.withKeys((...args) => _ctx.onClose && _ctx.onClose(...args), ["esc"]))
4649
- }, [vue.createElementVNode("div", _hoisted_3$w, [vue.createElementVNode("div", {
4649
+ }, [vue.createElementVNode("div", _hoisted_3$x, [vue.createElementVNode("div", {
4650
4650
  ref: "modalDialogContainer",
4651
4651
  class: vue.normalizeClass(["modal__dialog-container", _ctx.containerClasses])
4652
4652
  }, [vue.createElementVNode("div", _hoisted_4$q, [vue.createElementVNode("div", _hoisted_5$l, [vue.createElementVNode("div", _hoisted_6$g, [vue.createElementVNode("div", {
@@ -4664,7 +4664,7 @@ function _sfc_render$Q(_ctx, _cache, $props, $setup, $data, $options) {
4664
4664
  onFocus: _cache[2] || (_cache[2] = (...args) => _ctx.onFocusLast && _ctx.onFocusLast(...args))
4665
4665
  }, null, 32)])])], 2)])], 32)])], 10, _hoisted_1$W)) : vue.createCommentVNode("", true);
4666
4666
  }
4667
- const FModal = /* @__PURE__ */ _export_sfc(_sfc_main$1c, [["render", _sfc_render$Q]]);
4667
+ const FModal = /* @__PURE__ */ _export_sfc(_sfc_main$1c, [["render", _sfc_render$P]]);
4668
4668
  function prepareButtonList(src, buttonOrder = config.buttonOrder) {
4669
4669
  const list = src.map((it) => {
4670
4670
  var _it$event, _ref, _it$reason, _it$type;
@@ -4801,11 +4801,11 @@ const _hoisted_1$V = {
4801
4801
  class: "button-group"
4802
4802
  };
4803
4803
  const _hoisted_2$E = ["onClick"];
4804
- const _hoisted_3$v = {
4804
+ const _hoisted_3$w = {
4805
4805
  key: 0,
4806
4806
  class: "sr-only"
4807
4807
  };
4808
- function _sfc_render$P(_ctx, _cache, $props, $setup, $data, $options) {
4808
+ function _sfc_render$O(_ctx, _cache, $props, $setup, $data, $options) {
4809
4809
  const _component_f_modal = vue.resolveComponent("f-modal");
4810
4810
  return vue.openBlock(), vue.createBlock(_component_f_modal, {
4811
4811
  fullscreen: _ctx.fullscreen,
@@ -4824,12 +4824,12 @@ function _sfc_render$P(_ctx, _cache, $props, $setup, $data, $options) {
4824
4824
  type: "button",
4825
4825
  class: vue.normalizeClass([button.classlist, "button-group__item"]),
4826
4826
  onClick: ($event) => _ctx.onClick(button)
4827
- }, [vue.createElementVNode("span", null, vue.toDisplayString(button.label), 1), _cache[0] || (_cache[0] = vue.createTextVNode()), button.screenreader ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$v, " " + vue.toDisplayString(button.screenreader), 1)) : vue.createCommentVNode("", true)], 10, _hoisted_2$E);
4827
+ }, [vue.createElementVNode("span", null, vue.toDisplayString(button.label), 1), _cache[0] || (_cache[0] = vue.createTextVNode()), button.screenreader ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$w, " " + vue.toDisplayString(button.screenreader), 1)) : vue.createCommentVNode("", true)], 10, _hoisted_2$E);
4828
4828
  }), 128))])]),
4829
4829
  _: 3
4830
4830
  }, 8, ["fullscreen", "is-open", "aria-close-text", "size", "focus", "onClose"]);
4831
4831
  }
4832
- const FConfirmModal = /* @__PURE__ */ _export_sfc(_sfc_main$1b, [["render", _sfc_render$P]]);
4832
+ const FConfirmModal = /* @__PURE__ */ _export_sfc(_sfc_main$1b, [["render", _sfc_render$O]]);
4833
4833
  const GAP = ["1x", "2x", "3x", "4x", "5x", "6x", "7x", "8x"];
4834
4834
  const ALIGNMENT = ["top", "center", "bottom"];
4835
4835
  const FLOAT = ["left", "center", "right"];
@@ -4908,12 +4908,12 @@ const _sfc_main$1a = vue.defineComponent({
4908
4908
  }
4909
4909
  }
4910
4910
  });
4911
- function _sfc_render$O(_ctx, _cache, $props, $setup, $data, $options) {
4911
+ function _sfc_render$N(_ctx, _cache, $props, $setup, $data, $options) {
4912
4912
  return vue.openBlock(), vue.createElementBlock("div", {
4913
4913
  class: vue.normalizeClass(["iflex", _ctx.classList])
4914
4914
  }, [vue.renderSlot(_ctx.$slots, "default")], 2);
4915
4915
  }
4916
- const IFlex = /* @__PURE__ */ _export_sfc(_sfc_main$1a, [["render", _sfc_render$O]]);
4916
+ const IFlex = /* @__PURE__ */ _export_sfc(_sfc_main$1a, [["render", _sfc_render$N]]);
4917
4917
  const _sfc_main$19 = vue.defineComponent({
4918
4918
  name: "IFlexItem",
4919
4919
  inheritAttrs: true,
@@ -4961,12 +4961,12 @@ const _sfc_main$19 = vue.defineComponent({
4961
4961
  }
4962
4962
  }
4963
4963
  });
4964
- function _sfc_render$N(_ctx, _cache, $props, $setup, $data, $options) {
4964
+ function _sfc_render$M(_ctx, _cache, $props, $setup, $data, $options) {
4965
4965
  return vue.openBlock(), vue.createElementBlock("div", {
4966
4966
  class: vue.normalizeClass(["iflex__item", _ctx.classList])
4967
4967
  }, [vue.renderSlot(_ctx.$slots, "default")], 2);
4968
4968
  }
4969
- const IFlexItem = /* @__PURE__ */ _export_sfc(_sfc_main$19, [["render", _sfc_render$N]]);
4969
+ const IFlexItem = /* @__PURE__ */ _export_sfc(_sfc_main$19, [["render", _sfc_render$M]]);
4970
4970
  function focusError(item) {
4971
4971
  const element = document.querySelector(`#${item.id}`);
4972
4972
  if (!element) {
@@ -5038,14 +5038,14 @@ const _hoisted_1$U = {
5038
5038
  const _hoisted_2$D = {
5039
5039
  key: 0
5040
5040
  };
5041
- const _hoisted_3$u = {
5041
+ const _hoisted_3$v = {
5042
5042
  class: "error-list__list error-list--list-style-none"
5043
5043
  };
5044
5044
  const _hoisted_4$p = ["onClick"];
5045
5045
  const _hoisted_5$k = {
5046
5046
  class: "error-list__link"
5047
5047
  };
5048
- function _sfc_render$M(_ctx, _cache, $props, $setup, $data, $options) {
5048
+ function _sfc_render$L(_ctx, _cache, $props, $setup, $data, $options) {
5049
5049
  const _component_f_icon = vue.resolveComponent("f-icon");
5050
5050
  const _component_i_flex_item = vue.resolveComponent("i-flex-item");
5051
5051
  const _component_i_flex = vue.resolveComponent("i-flex");
@@ -5068,7 +5068,7 @@ function _sfc_render$M(_ctx, _cache, $props, $setup, $data, $options) {
5068
5068
  })) : vue.createCommentVNode("", true), _cache[7] || (_cache[7] = vue.createTextVNode()), vue.createVNode(_component_i_flex_item, {
5069
5069
  grow: ""
5070
5070
  }, {
5071
- default: vue.withCtx(() => [_ctx.hasTitleSlot ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$D, [vue.renderSlot(_ctx.$slots, "title")])) : vue.createCommentVNode("", true), _cache[5] || (_cache[5] = vue.createTextVNode()), vue.createElementVNode("ul", _hoisted_3$u, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.items, (item) => {
5071
+ default: vue.withCtx(() => [_ctx.hasTitleSlot ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$D, [vue.renderSlot(_ctx.$slots, "title")])) : vue.createCommentVNode("", true), _cache[5] || (_cache[5] = vue.createTextVNode()), vue.createElementVNode("ul", _hoisted_3$v, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.items, (item) => {
5072
5072
  return vue.openBlock(), vue.createElementBlock("li", {
5073
5073
  key: item.id,
5074
5074
  class: vue.normalizeClass(_ctx.liClasses(item))
@@ -5099,7 +5099,7 @@ function _sfc_render$M(_ctx, _cache, $props, $setup, $data, $options) {
5099
5099
  _: 3
5100
5100
  })]);
5101
5101
  }
5102
- const FErrorList = /* @__PURE__ */ _export_sfc(_sfc_main$18, [["render", _sfc_render$M]]);
5102
+ const FErrorList = /* @__PURE__ */ _export_sfc(_sfc_main$18, [["render", _sfc_render$L]]);
5103
5103
  var es_iterator_every = {};
5104
5104
  var hasRequiredEs_iterator_every;
5105
5105
  function requireEs_iterator_every() {
@@ -5257,13 +5257,13 @@ const _sfc_main$17 = vue.defineComponent({
5257
5257
  }
5258
5258
  }
5259
5259
  });
5260
- function _sfc_render$L(_ctx, _cache, $props, $setup, $data, $options) {
5260
+ function _sfc_render$K(_ctx, _cache, $props, $setup, $data, $options) {
5261
5261
  return vue.openBlock(), vue.createElementBlock("div", {
5262
5262
  onComponentValidity: _cache[0] || (_cache[0] = (...args) => _ctx.onComponentValidity && _ctx.onComponentValidity(...args)),
5263
5263
  onComponentUnmount: _cache[1] || (_cache[1] = (...args) => _ctx.onComponentUnmount && _ctx.onComponentUnmount(...args))
5264
5264
  }, [vue.renderSlot(_ctx.$slots, "default")], 32);
5265
5265
  }
5266
- const FValidationGroup = /* @__PURE__ */ _export_sfc(_sfc_main$17, [["render", _sfc_render$L]]);
5266
+ const FValidationGroup = /* @__PURE__ */ _export_sfc(_sfc_main$17, [["render", _sfc_render$K]]);
5267
5267
  var FValidationFormAction = /* @__PURE__ */ ((FValidationFormAction2) => {
5268
5268
  FValidationFormAction2[FValidationFormAction2["CONTINUE"] = 0] = "CONTINUE";
5269
5269
  FValidationFormAction2[FValidationFormAction2["CANCEL"] = 1] = "CANCEL";
@@ -5415,7 +5415,7 @@ const _hoisted_2$C = {
5415
5415
  tabindex: "-1",
5416
5416
  role: "group"
5417
5417
  };
5418
- function _sfc_render$K(_ctx, _cache, $props, $setup, $data, $options) {
5418
+ function _sfc_render$J(_ctx, _cache, $props, $setup, $data, $options) {
5419
5419
  const _component_f_error_list = vue.resolveComponent("f-error-list");
5420
5420
  const _component_f_validation_group = vue.resolveComponent("f-validation-group");
5421
5421
  return vue.openBlock(), vue.createBlock(_component_f_validation_group, {
@@ -5441,7 +5441,7 @@ function _sfc_render$K(_ctx, _cache, $props, $setup, $data, $options) {
5441
5441
  _: 3
5442
5442
  }, 8, ["modelValue"]);
5443
5443
  }
5444
- const FValidationForm = /* @__PURE__ */ _export_sfc(_sfc_main$16, [["render", _sfc_render$K]]);
5444
+ const FValidationForm = /* @__PURE__ */ _export_sfc(_sfc_main$16, [["render", _sfc_render$J]]);
5445
5445
  const _sfc_main$15 = vue.defineComponent({
5446
5446
  name: "FFormModal",
5447
5447
  components: {
@@ -5540,6 +5540,14 @@ const _sfc_main$15 = vue.defineComponent({
5540
5540
  default() {
5541
5541
  }
5542
5542
  },
5543
+ /**
5544
+ * List of buttons to display in the modal.
5545
+ * Each button is defined as an FModalButtonDescriptor with the following properties:
5546
+ * - `label` (String): The text displayed on the button.
5547
+ * - `event` (String): The event emitted when the button is clicked.
5548
+ * - `type` (String): The button type. Valid values are: "primary" or "secondary".
5549
+ * - `submitButton` (Boolean): Whether the button is a submit button.
5550
+ */
5543
5551
  buttons: {
5544
5552
  type: Array,
5545
5553
  required: false,
@@ -5595,11 +5603,11 @@ const _hoisted_1$S = {
5595
5603
  class: "button-group"
5596
5604
  };
5597
5605
  const _hoisted_2$B = ["type", "form", "onClick"];
5598
- const _hoisted_3$t = {
5606
+ const _hoisted_3$u = {
5599
5607
  key: 0,
5600
5608
  class: "sr-only"
5601
5609
  };
5602
- function _sfc_render$J(_ctx, _cache, $props, $setup, $data, $options) {
5610
+ function _sfc_render$I(_ctx, _cache, $props, $setup, $data, $options) {
5603
5611
  const _component_f_validation_form = vue.resolveComponent("f-validation-form");
5604
5612
  const _component_f_modal = vue.resolveComponent("f-modal");
5605
5613
  return vue.openBlock(), vue.createBlock(_component_f_modal, {
@@ -5630,12 +5638,12 @@ function _sfc_render$J(_ctx, _cache, $props, $setup, $data, $options) {
5630
5638
  class: vue.normalizeClass([button.classlist, "button-group__item"]),
5631
5639
  form: button.buttonType === "submit" ? _ctx.formId : void 0,
5632
5640
  onClick: ($event) => button.buttonType === "button" ? _ctx.onCancel() : false
5633
- }, [vue.createElementVNode("span", null, vue.toDisplayString(button.label), 1), _cache[2] || (_cache[2] = vue.createTextVNode()), button.screenreader ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$t, " " + vue.toDisplayString(button.screenreader), 1)) : vue.createCommentVNode("", true)], 10, _hoisted_2$B);
5641
+ }, [vue.createElementVNode("span", null, vue.toDisplayString(button.label), 1), _cache[2] || (_cache[2] = vue.createTextVNode()), button.screenreader ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$u, " " + vue.toDisplayString(button.screenreader), 1)) : vue.createCommentVNode("", true)], 10, _hoisted_2$B);
5634
5642
  }), 128))])]),
5635
5643
  _: 3
5636
5644
  }, 8, ["data-test", "fullscreen", "is-open", "size", "aria-close-text", "onClose"]);
5637
5645
  }
5638
- const FFormModal = /* @__PURE__ */ _export_sfc(_sfc_main$15, [["render", _sfc_render$J]]);
5646
+ const FFormModal = /* @__PURE__ */ _export_sfc(_sfc_main$15, [["render", _sfc_render$I]]);
5639
5647
  async function confirmModal(callingInstance, texts) {
5640
5648
  const buttons = [{
5641
5649
  label: texts.confirm,
@@ -5952,6 +5960,9 @@ const ValidationPrefixDirective = {
5952
5960
  };
5953
5961
  const ValidationPlugin = {
5954
5962
  install(app) {
5963
+ for (const validator of logic.availableValidators) {
5964
+ logic.ValidationService.registerValidator(validator);
5965
+ }
5955
5966
  app.directive("validation", ValidationDirective);
5956
5967
  app.directive("validationPrefix", ValidationPrefixDirective);
5957
5968
  }
@@ -6008,12 +6019,12 @@ const _sfc_main$14 = vue.defineComponent({
6008
6019
  const _hoisted_1$R = {
6009
6020
  "data-test": "f-error-page"
6010
6021
  };
6011
- function _sfc_render$I(_ctx, _cache, $props, $setup, $data, $options) {
6022
+ function _sfc_render$H(_ctx, _cache, $props, $setup, $data, $options) {
6012
6023
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$R, _cache[0] || (_cache[0] = [vue.createElementVNode("h1", null, "Fel", -1), vue.createTextVNode(), vue.createElementVNode("p", null, "Ett fel har uppstått.", -1), vue.createTextVNode(), vue.createElementVNode("a", {
6013
6024
  href: "/"
6014
6025
  }, "Gå till startsidan", -1)]));
6015
6026
  }
6016
- const FErrorPage = /* @__PURE__ */ _export_sfc(_sfc_main$14, [["render", _sfc_render$I]]);
6027
+ const FErrorPage = /* @__PURE__ */ _export_sfc(_sfc_main$14, [["render", _sfc_render$H]]);
6017
6028
  const _sfc_main$13 = vue.defineComponent({
6018
6029
  name: "FErrorHandlingApp",
6019
6030
  props: {
@@ -6043,7 +6054,7 @@ const _sfc_main$13 = vue.defineComponent({
6043
6054
  });
6044
6055
  }
6045
6056
  });
6046
- function _sfc_render$H(_ctx, _cache, $props, $setup, $data, $options) {
6057
+ function _sfc_render$G(_ctx, _cache, $props, $setup, $data, $options) {
6047
6058
  return vue.openBlock(), vue.createElementBlock("div", null, [_ctx.hasError ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.errorComponent), {
6048
6059
  key: 0,
6049
6060
  payload: _ctx.payload
@@ -6053,7 +6064,7 @@ function _sfc_render$H(_ctx, _cache, $props, $setup, $data, $options) {
6053
6064
  key: 2
6054
6065
  })]);
6055
6066
  }
6056
- const FErrorHandlingApp = /* @__PURE__ */ _export_sfc(_sfc_main$13, [["render", _sfc_render$H]]);
6067
+ const FErrorHandlingApp = /* @__PURE__ */ _export_sfc(_sfc_main$13, [["render", _sfc_render$G]]);
6057
6068
  function isMonthBefore(date2, minDate) {
6058
6069
  return Boolean(minDate && date2.isBefore(minDate.startOfMonth()));
6059
6070
  }
@@ -6214,7 +6225,7 @@ const _hoisted_2$A = {
6214
6225
  class: "calendar-navbar__month",
6215
6226
  tabindex: "-1"
6216
6227
  };
6217
- const _hoisted_3$s = ["aria-disabled", "aria-live"];
6228
+ const _hoisted_3$t = ["aria-disabled", "aria-live"];
6218
6229
  const _hoisted_4$o = {
6219
6230
  class: "sr-only"
6220
6231
  };
@@ -6222,7 +6233,7 @@ const _hoisted_5$j = ["aria-disabled", "aria-live"];
6222
6233
  const _hoisted_6$f = {
6223
6234
  class: "sr-only"
6224
6235
  };
6225
- function _sfc_render$G(_ctx, _cache, $props, $setup, $data, $options) {
6236
+ function _sfc_render$F(_ctx, _cache, $props, $setup, $data, $options) {
6226
6237
  const _component_f_icon = vue.resolveComponent("f-icon");
6227
6238
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$Q, [vue.createElementVNode("div", _hoisted_2$A, vue.toDisplayString(_ctx.currentText), 1), _cache[4] || (_cache[4] = vue.createTextVNode()), vue.createElementVNode("button", {
6228
6239
  ref: "previousButton",
@@ -6234,7 +6245,7 @@ function _sfc_render$G(_ctx, _cache, $props, $setup, $data, $options) {
6234
6245
  }, [vue.createElementVNode("span", _hoisted_4$o, vue.toDisplayString(_ctx.previousSrText), 1), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createVNode(_component_f_icon, {
6235
6246
  class: vue.normalizeClass(_ctx.previousIconClasses),
6236
6247
  name: "arrow-right"
6237
- }, null, 8, ["class"])], 8, _hoisted_3$s), _cache[5] || (_cache[5] = vue.createTextVNode()), vue.createElementVNode("button", {
6248
+ }, null, 8, ["class"])], 8, _hoisted_3$t), _cache[5] || (_cache[5] = vue.createTextVNode()), vue.createElementVNode("button", {
6238
6249
  ref: "nextButton",
6239
6250
  class: "calendar-navbar__arrow calendar-navbar__arrow--next",
6240
6251
  type: "button",
@@ -6246,7 +6257,7 @@ function _sfc_render$G(_ctx, _cache, $props, $setup, $data, $options) {
6246
6257
  name: "arrow-right"
6247
6258
  }, null, 8, ["class"])], 8, _hoisted_5$j)]);
6248
6259
  }
6249
- const ICalendarNavbar = /* @__PURE__ */ _export_sfc(_sfc_main$12, [["render", _sfc_render$G]]);
6260
+ const ICalendarNavbar = /* @__PURE__ */ _export_sfc(_sfc_main$12, [["render", _sfc_render$F]]);
6250
6261
  function getDayStartOffset(days) {
6251
6262
  return days[0].weekDay - 1;
6252
6263
  }
@@ -6332,7 +6343,7 @@ const _hoisted_2$z = {
6332
6343
  key: 0,
6333
6344
  class: "calendar-month__col--week"
6334
6345
  };
6335
- const _hoisted_3$r = {
6346
+ const _hoisted_3$s = {
6336
6347
  key: 0,
6337
6348
  scope: "col",
6338
6349
  "aria-hidden": "true",
@@ -6359,7 +6370,7 @@ const _hoisted_11$2 = {
6359
6370
  "aria-hidden": "true"
6360
6371
  };
6361
6372
  const _hoisted_12$2 = ["colspan"];
6362
- function _sfc_render$F(_ctx, _cache, $props, $setup, $data, $options) {
6373
+ function _sfc_render$E(_ctx, _cache, $props, $setup, $data, $options) {
6363
6374
  return vue.openBlock(), vue.createElementBlock("table", {
6364
6375
  class: "calendar-month__table",
6365
6376
  role: "grid",
@@ -6380,7 +6391,7 @@ function _sfc_render$F(_ctx, _cache, $props, $setup, $data, $options) {
6380
6391
  class: "calendar-month__col--day"
6381
6392
  }, null, -1)), _cache[14] || (_cache[14] = vue.createTextVNode()), _cache[15] || (_cache[15] = vue.createElementVNode("col", {
6382
6393
  class: "calendar-month__col--day"
6383
- }, null, -1))]), _cache[22] || (_cache[22] = vue.createTextVNode()), vue.createElementVNode("thead", null, [vue.createElementVNode("tr", null, [!_ctx.internalHideWeekNumbers ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_3$r)) : vue.createCommentVNode("", true), _cache[16] || (_cache[16] = vue.createTextVNode()), (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.weekdays, (weekday) => {
6394
+ }, null, -1))]), _cache[22] || (_cache[22] = vue.createTextVNode()), vue.createElementVNode("thead", null, [vue.createElementVNode("tr", null, [!_ctx.internalHideWeekNumbers ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_3$s)) : vue.createCommentVNode("", true), _cache[16] || (_cache[16] = vue.createTextVNode()), (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.weekdays, (weekday) => {
6384
6395
  return vue.openBlock(), vue.createElementBlock("th", {
6385
6396
  key: weekday.name,
6386
6397
  scope: "col",
@@ -6422,7 +6433,7 @@ function _sfc_render$F(_ctx, _cache, $props, $setup, $data, $options) {
6422
6433
  "aria-hidden": "true"
6423
6434
  }, null, 8, _hoisted_12$2)])) : vue.createCommentVNode("", true)])], 40, _hoisted_1$P);
6424
6435
  }
6425
- const ICalendarMonthGrid = /* @__PURE__ */ _export_sfc(_sfc_main$11, [["render", _sfc_render$F]]);
6436
+ const ICalendarMonthGrid = /* @__PURE__ */ _export_sfc(_sfc_main$11, [["render", _sfc_render$E]]);
6426
6437
  const DayStep = {
6427
6438
  ArrowRight: 1,
6428
6439
  ArrowLeft: -1,
@@ -6537,7 +6548,7 @@ const _sfc_main$10 = vue.defineComponent({
6537
6548
  }
6538
6549
  });
6539
6550
  const _hoisted_1$O = ["data-date", "tabindex", "onClick", "onKeydown"];
6540
- function _sfc_render$E(_ctx, _cache, $props, $setup, $data, $options) {
6551
+ function _sfc_render$D(_ctx, _cache, $props, $setup, $data, $options) {
6541
6552
  const _component_i_calendar_month_grid = vue.resolveComponent("i-calendar-month-grid");
6542
6553
  return vue.openBlock(), vue.createBlock(_component_i_calendar_month_grid, {
6543
6554
  value: _ctx.modelValue
@@ -6560,7 +6571,7 @@ function _sfc_render$E(_ctx, _cache, $props, $setup, $data, $options) {
6560
6571
  _: 3
6561
6572
  }, 8, ["value"]);
6562
6573
  }
6563
- const ICalendarMonth = /* @__PURE__ */ _export_sfc(_sfc_main$10, [["render", _sfc_render$E]]);
6574
+ const ICalendarMonth = /* @__PURE__ */ _export_sfc(_sfc_main$10, [["render", _sfc_render$D]]);
6564
6575
  const _sfc_main$$ = vue.defineComponent({
6565
6576
  name: "FCalendar",
6566
6577
  components: {
@@ -6615,7 +6626,7 @@ const _sfc_main$$ = vue.defineComponent({
6615
6626
  const _hoisted_1$N = {
6616
6627
  class: "calendar__wrapper"
6617
6628
  };
6618
- function _sfc_render$D(_ctx, _cache, $props, $setup, $data, $options) {
6629
+ function _sfc_render$C(_ctx, _cache, $props, $setup, $data, $options) {
6619
6630
  const _component_i_calendar_navbar = vue.resolveComponent("i-calendar-navbar");
6620
6631
  const _component_i_calendar_month = vue.resolveComponent("i-calendar-month");
6621
6632
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$N, [vue.createVNode(_component_i_calendar_navbar, {
@@ -6641,7 +6652,7 @@ function _sfc_render$D(_ctx, _cache, $props, $setup, $data, $options) {
6641
6652
  _: 3
6642
6653
  }, 8, ["model-value", "min-date", "max-date", "tab-date", "onClick", "onUpdate:modelValue"])]);
6643
6654
  }
6644
- const FCalendar = /* @__PURE__ */ _export_sfc(_sfc_main$$, [["render", _sfc_render$D]]);
6655
+ const FCalendar = /* @__PURE__ */ _export_sfc(_sfc_main$$, [["render", _sfc_render$C]]);
6645
6656
  function getCalendarDaySrText(day, enabled, selected, t) {
6646
6657
  const parts = [];
6647
6658
  if (!enabled) {
@@ -6731,12 +6742,12 @@ const _hoisted_1$M = {
6731
6742
  const _hoisted_2$y = {
6732
6743
  class: "sr-only"
6733
6744
  };
6734
- function _sfc_render$C(_ctx, _cache, $props, $setup, $data, $options) {
6745
+ function _sfc_render$B(_ctx, _cache, $props, $setup, $data, $options) {
6735
6746
  return vue.openBlock(), vue.createElementBlock("span", {
6736
6747
  class: vue.normalizeClass(_ctx.dayClasses)
6737
6748
  }, [vue.createElementVNode("span", _hoisted_1$M, vue.toDisplayString(_ctx.day.day), 1), _cache[0] || (_cache[0] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_2$y, vue.toDisplayString(_ctx.srText), 1)], 2);
6738
6749
  }
6739
- const FCalendarDay = /* @__PURE__ */ _export_sfc(_sfc_main$_, [["render", _sfc_render$C]]);
6750
+ const FCalendarDay = /* @__PURE__ */ _export_sfc(_sfc_main$_, [["render", _sfc_render$B]]);
6740
6751
  function useEventListener$1(target, event, callback) {
6741
6752
  vue.onMounted(() => {
6742
6753
  var _a;
@@ -6762,7 +6773,7 @@ const _hoisted_2$x = {
6762
6773
  key: 0,
6763
6774
  class: "card__header"
6764
6775
  };
6765
- const _hoisted_3$q = {
6776
+ const _hoisted_3$r = {
6766
6777
  class: "card__content"
6767
6778
  };
6768
6779
  const _hoisted_4$m = {
@@ -6807,6 +6818,9 @@ const _sfc_main$Z = /* @__PURE__ */ vue.defineComponent({
6807
6818
  if (!isMounted.value) {
6808
6819
  return;
6809
6820
  }
6821
+ if (detail.elementId !== props.id) {
6822
+ return;
6823
+ }
6810
6824
  if (!props.focusRef) {
6811
6825
  throw new Error("Element to focus on when card is invalid (`focusRef`) is required when using card validation.");
6812
6826
  }
@@ -6852,7 +6866,7 @@ const _sfc_main$Z = /* @__PURE__ */ vue.defineComponent({
6852
6866
  _: 1
6853
6867
  })]),
6854
6868
  _: 1
6855
- })) : vue.createCommentVNode("", true)]), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createElementVNode("div", _hoisted_3$q, [vue.renderSlot(_ctx.$slots, "default")]), _cache[3] || (_cache[3] = vue.createTextVNode()), hasFooterSlot.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$m, [vue.renderSlot(_ctx.$slots, "footer", vue.normalizeProps(vue.guardReactiveProps({
6869
+ })) : vue.createCommentVNode("", true)]), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createElementVNode("div", _hoisted_3$r, [vue.renderSlot(_ctx.$slots, "default")]), _cache[3] || (_cache[3] = vue.createTextVNode()), hasFooterSlot.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$m, [vue.renderSlot(_ctx.$slots, "footer", vue.normalizeProps(vue.guardReactiveProps({
6856
6870
  hasError: hasError.value,
6857
6871
  validationMessage: validationMessage.value
6858
6872
  })))])) : vue.createCommentVNode("", true)], 42, _hoisted_1$L);
@@ -6913,7 +6927,7 @@ const _sfc_main$Y = vue.defineComponent({
6913
6927
  }
6914
6928
  }
6915
6929
  });
6916
- function _sfc_render$B(_ctx, _cache, $props, $setup, $data, $options) {
6930
+ function _sfc_render$A(_ctx, _cache, $props, $setup, $data, $options) {
6917
6931
  return vue.openBlock(), vue.createBlock(vue.Transition, {
6918
6932
  onEnter: _ctx.enter,
6919
6933
  onAfterEnter: _ctx.afterEnter,
@@ -6925,7 +6939,7 @@ function _sfc_render$B(_ctx, _cache, $props, $setup, $data, $options) {
6925
6939
  _: 3
6926
6940
  }, 8, ["onEnter", "onAfterEnter", "onLeave"]);
6927
6941
  }
6928
- const FExpand = /* @__PURE__ */ _export_sfc(_sfc_main$Y, [["render", _sfc_render$B]]);
6942
+ const FExpand = /* @__PURE__ */ _export_sfc(_sfc_main$Y, [["render", _sfc_render$A]]);
6929
6943
  function offset(page, el) {
6930
6944
  const rect = el.getBoundingClientRect();
6931
6945
  return {
@@ -7491,7 +7505,7 @@ const _sfc_main$X = vue.defineComponent({
7491
7505
  }
7492
7506
  }
7493
7507
  });
7494
- function _sfc_render$A(_ctx, _cache, $props, $setup, $data, $options) {
7508
+ function _sfc_render$z(_ctx, _cache, $props, $setup, $data, $options) {
7495
7509
  return _ctx.isOpen ? (vue.openBlock(), vue.createBlock(vue.Teleport, {
7496
7510
  key: 0,
7497
7511
  to: _ctx.teleportTarget,
@@ -7512,7 +7526,7 @@ function _sfc_render$A(_ctx, _cache, $props, $setup, $data, $options) {
7512
7526
  placement: _ctx.placement
7513
7527
  })))], 544)], 16)], 8, ["to", "disabled"])) : vue.createCommentVNode("", true);
7514
7528
  }
7515
- const IPopup = /* @__PURE__ */ _export_sfc(_sfc_main$X, [["render", _sfc_render$A]]);
7529
+ const IPopup = /* @__PURE__ */ _export_sfc(_sfc_main$X, [["render", _sfc_render$z]]);
7516
7530
  function computeArrowOffset(placement, inputIconRect, wrapperRect) {
7517
7531
  switch (placement) {
7518
7532
  case Placement.A: {
@@ -7718,7 +7732,7 @@ const _hoisted_1$K = {
7718
7732
  ref: "wrapper",
7719
7733
  class: "popup-error__wrapper"
7720
7734
  };
7721
- function _sfc_render$z(_ctx, _cache, $props, $setup, $data, $options) {
7735
+ function _sfc_render$y(_ctx, _cache, $props, $setup, $data, $options) {
7722
7736
  const _component_f_icon = vue.resolveComponent("f-icon");
7723
7737
  return _ctx.isOpen ? (vue.openBlock(), vue.createBlock(vue.Teleport, {
7724
7738
  key: 0,
@@ -7742,7 +7756,7 @@ function _sfc_render$z(_ctx, _cache, $props, $setup, $data, $options) {
7742
7756
  class: "button__icon"
7743
7757
  })])], 6)], 512)], 2)], 8, ["to", "disabled"])) : vue.createCommentVNode("", true);
7744
7758
  }
7745
- const IPopupError = /* @__PURE__ */ _export_sfc(_sfc_main$W, [["render", _sfc_render$z]]);
7759
+ const IPopupError = /* @__PURE__ */ _export_sfc(_sfc_main$W, [["render", _sfc_render$y]]);
7746
7760
  function numItems(itemHeight, availableHeight, verticalSpacing) {
7747
7761
  const itemsFit = Math.floor((availableHeight - verticalSpacing) / itemHeight);
7748
7762
  return Math.min(itemsFit, 7);
@@ -8272,13 +8286,13 @@ const _hoisted_2$v = {
8272
8286
  role: "menu",
8273
8287
  class: "ipopupmenu__list"
8274
8288
  };
8275
- const _hoisted_3$p = ["onClick"];
8289
+ const _hoisted_3$q = ["onClick"];
8276
8290
  const _hoisted_4$l = ["data-ref-index", "href", "target"];
8277
8291
  const _hoisted_5$h = {
8278
8292
  key: 0,
8279
8293
  class: "sr-only"
8280
8294
  };
8281
- function _sfc_render$y(_ctx, _cache, $props, $setup, $data, $options) {
8295
+ function _sfc_render$x(_ctx, _cache, $props, $setup, $data, $options) {
8282
8296
  const _component_i_popup = vue.resolveComponent("i-popup");
8283
8297
  return vue.openBlock(), vue.createBlock(_component_i_popup, {
8284
8298
  class: "ipopupmenu",
@@ -8309,12 +8323,12 @@ function _sfc_render$y(_ctx, _cache, $props, $setup, $data, $options) {
8309
8323
  role: "menuitem",
8310
8324
  target: item.target,
8311
8325
  tabindex: "0"
8312
- }, [_ctx.isSelected(index) ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_5$h, [vue.createElementVNode("span", null, vue.toDisplayString(_ctx.selectedMenuItemScreenReaderText) + " ", 1)])) : vue.createCommentVNode("", true), vue.createTextVNode(" " + vue.toDisplayString(item.label), 1)], 8, _hoisted_4$l)], 10, _hoisted_3$p);
8326
+ }, [_ctx.isSelected(index) ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_5$h, [vue.createElementVNode("span", null, vue.toDisplayString(_ctx.selectedMenuItemScreenReaderText) + " ", 1)])) : vue.createCommentVNode("", true), vue.createTextVNode(" " + vue.toDisplayString(item.label), 1)], 8, _hoisted_4$l)], 10, _hoisted_3$q);
8313
8327
  }), 128))])], 8, _hoisted_1$I)]),
8314
8328
  _: 1
8315
8329
  }, 8, ["is-open", "anchor", "focus-element", "onKeyup", "onKeydown"]);
8316
8330
  }
8317
- const IPopupMenu = /* @__PURE__ */ _export_sfc(_sfc_main$U, [["render", _sfc_render$y]]);
8331
+ const IPopupMenu = /* @__PURE__ */ _export_sfc(_sfc_main$U, [["render", _sfc_render$x]]);
8318
8332
  const ANIMATION_DURATION = 500;
8319
8333
  const NO_CSS_CLASSES = "";
8320
8334
  const CLOSED_CSS_CLASS_OPACITY = "animate-expand animate-expand--opacity";
@@ -8517,13 +8531,13 @@ const _hoisted_1$H = {
8517
8531
  ref: "content",
8518
8532
  "data-test": "animation-content"
8519
8533
  };
8520
- function _sfc_render$x(_ctx, _cache, $props, $setup, $data, $options) {
8534
+ function _sfc_render$w(_ctx, _cache, $props, $setup, $data, $options) {
8521
8535
  return vue.openBlock(), vue.createElementBlock("div", {
8522
8536
  class: vue.normalizeClass(_ctx.animationClasses),
8523
8537
  style: vue.normalizeStyle(_ctx.heightStyle)
8524
8538
  }, [_ctx.shouldVIf ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", _hoisted_1$H, [vue.renderSlot(_ctx.$slots, "default")], 512)), [[vue.vShow, _ctx.shouldVShow]]) : vue.createCommentVNode("", true)], 6);
8525
8539
  }
8526
- const IAnimateExpand = /* @__PURE__ */ _export_sfc(_sfc_main$T, [["render", _sfc_render$x]]);
8540
+ const IAnimateExpand = /* @__PURE__ */ _export_sfc(_sfc_main$T, [["render", _sfc_render$w]]);
8527
8541
  const _sfc_main$S = vue.defineComponent({
8528
8542
  name: "ISkipLink",
8529
8543
  mixins: [TranslationMixin],
@@ -8539,13 +8553,13 @@ const _sfc_main$S = vue.defineComponent({
8539
8553
  }
8540
8554
  });
8541
8555
  const _hoisted_1$G = ["href"];
8542
- function _sfc_render$w(_ctx, _cache, $props, $setup, $data, $options) {
8556
+ function _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) {
8543
8557
  return vue.openBlock(), vue.createElementBlock("a", {
8544
8558
  class: "iskiplink",
8545
8559
  href: _ctx.href
8546
8560
  }, [vue.renderSlot(_ctx.$slots, "default", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.skip-link.text", "Gå direkt till innehåll")), 1)])], 8, _hoisted_1$G);
8547
8561
  }
8548
- const ISkipLink = /* @__PURE__ */ _export_sfc(_sfc_main$S, [["render", _sfc_render$w]]);
8562
+ const ISkipLink = /* @__PURE__ */ _export_sfc(_sfc_main$S, [["render", _sfc_render$v]]);
8549
8563
  function filterOptions(options, filter2, selectMode) {
8550
8564
  if (logic.isEmpty(filter2) || selectMode) {
8551
8565
  return options;
@@ -8795,7 +8809,7 @@ const _hoisted_1$F = {
8795
8809
  class: "combobox"
8796
8810
  };
8797
8811
  const _hoisted_2$u = ["id"];
8798
- const _hoisted_3$o = ["id", "aria-selected", "onClick"];
8812
+ const _hoisted_3$p = ["id", "aria-selected", "onClick"];
8799
8813
  const _sfc_main$R = /* @__PURE__ */ vue.defineComponent({
8800
8814
  __name: "IComboboxDropdown",
8801
8815
  props: {
@@ -8857,7 +8871,7 @@ const _sfc_main$R = /* @__PURE__ */ vue.defineComponent({
8857
8871
  "combobox__listbox__option--highlight": isOptionActive(item)
8858
8872
  }]),
8859
8873
  onClick: vue.withModifiers(($event) => onOptionClick(item), ["stop", "prevent"])
8860
- }, vue.toDisplayString(item), 11, _hoisted_3$o);
8874
+ }, vue.toDisplayString(item), 11, _hoisted_3$p);
8861
8875
  }), 128))], 8, _hoisted_2$u)]),
8862
8876
  _: 1
8863
8877
  }, 8, ["is-open", "anchor", "num-of-items", "active-element"])]);
@@ -9149,7 +9163,7 @@ const _hoisted_1$D = ["aria-expanded"];
9149
9163
  const _hoisted_2$t = {
9150
9164
  class: "icon-stack icon-stack--tooltip"
9151
9165
  };
9152
- const _hoisted_3$n = {
9166
+ const _hoisted_3$o = {
9153
9167
  class: "sr-only"
9154
9168
  };
9155
9169
  const _hoisted_4$k = {
@@ -9163,7 +9177,7 @@ const _hoisted_5$g = {
9163
9177
  const _hoisted_6$d = {
9164
9178
  class: "tooltip__footer"
9165
9179
  };
9166
- function _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) {
9180
+ function _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) {
9167
9181
  const _component_f_icon = vue.resolveComponent("f-icon");
9168
9182
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [(vue.openBlock(), vue.createBlock(vue.Teleport, {
9169
9183
  disabled: _ctx.iconTarget === null,
@@ -9178,7 +9192,7 @@ function _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) {
9178
9192
  name: "circle"
9179
9193
  }), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createVNode(_component_f_icon, {
9180
9194
  name: "i"
9181
- }), _cache[3] || (_cache[3] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_3$n, vue.toDisplayString(_ctx.screenReaderText), 1)])], 8, _hoisted_1$D)], 8, ["disabled", "to"])), _cache[7] || (_cache[7] = vue.createTextVNode()), vue.createElementVNode("div", vue.mergeProps({
9195
+ }), _cache[3] || (_cache[3] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_3$o, vue.toDisplayString(_ctx.screenReaderText), 1)])], 8, _hoisted_1$D)], 8, ["disabled", "to"])), _cache[7] || (_cache[7] = vue.createTextVNode()), vue.createElementVNode("div", vue.mergeProps({
9182
9196
  ref: "wrapper",
9183
9197
  class: "tooltip"
9184
9198
  }, _ctx.$attrs), [_ctx.ready ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$k, [_ctx.hasHeader ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.headerTag), {
@@ -9196,7 +9210,7 @@ function _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) {
9196
9210
  name: "close"
9197
9211
  })])])])) : vue.createCommentVNode("", true)], 16)], 64);
9198
9212
  }
9199
- const FTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$P, [["render", _sfc_render$v]]);
9213
+ const FTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$P, [["render", _sfc_render$u]]);
9200
9214
  function* labelClasses(options) {
9201
9215
  const {
9202
9216
  labelClass
@@ -9470,7 +9484,7 @@ const _hoisted_2$s = {
9470
9484
  key: 0,
9471
9485
  class: "sr-only"
9472
9486
  };
9473
- const _hoisted_3$m = {
9487
+ const _hoisted_3$n = {
9474
9488
  key: 0,
9475
9489
  class: "label__message label__message--error"
9476
9490
  };
@@ -9497,7 +9511,7 @@ const _hoisted_9$4 = {
9497
9511
  key: 0,
9498
9512
  class: "label__message label__message--error"
9499
9513
  };
9500
- function _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) {
9514
+ function _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) {
9501
9515
  const _component_f_icon = vue.resolveComponent("f-icon");
9502
9516
  return vue.openBlock(), vue.createElementBlock("fieldset", {
9503
9517
  id: _ctx.id,
@@ -9512,7 +9526,7 @@ function _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) {
9512
9526
  }), _cache[3] || (_cache[3] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "error-message", vue.normalizeProps(vue.guardReactiveProps({
9513
9527
  hasError: _ctx.hasError,
9514
9528
  validationMessage: _ctx.validity.validationMessage
9515
- })), () => [_ctx.hasError ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$m, [vue.createVNode(_component_f_icon, {
9529
+ })), () => [_ctx.hasError ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$n, [vue.createVNode(_component_f_icon, {
9516
9530
  class: "label__icon--left",
9517
9531
  name: "error"
9518
9532
  }), vue.createTextVNode(" " + vue.toDisplayString(_ctx.validity.validationMessage), 1)])) : vue.createCommentVNode("", true)])], 2)), _cache[7] || (_cache[7] = vue.createTextVNode()), _ctx.hasCheckbox ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$j, [_ctx.children.length === 1 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_5$f, vue.toDisplayString(_ctx.checkboxCheckedScreenReaderText), 1)) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_6$c, vue.toDisplayString(_ctx.numberOfCheckedCheckboxesScreenText), 1))])) : vue.createCommentVNode("", true), _cache[8] || (_cache[8] = vue.createTextVNode()), _ctx.hasTooltipSlot ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, {
@@ -9534,7 +9548,7 @@ function _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) {
9534
9548
  class: vue.normalizeClass(_ctx.groupContentClass)
9535
9549
  }, [vue.renderSlot(_ctx.$slots, "default")], 2)], 42, _hoisted_1$C);
9536
9550
  }
9537
- const FFieldset = /* @__PURE__ */ _export_sfc(_sfc_main$O, [["render", _sfc_render$u]]);
9551
+ const FFieldset = /* @__PURE__ */ _export_sfc(_sfc_main$O, [["render", _sfc_render$t]]);
9538
9552
  const anyType$1 = [String, Object, Array, Number, Date, Boolean];
9539
9553
  const _sfc_main$N = vue.defineComponent({
9540
9554
  name: "FCheckboxField",
@@ -9724,7 +9738,7 @@ const _sfc_main$N = vue.defineComponent({
9724
9738
  });
9725
9739
  const _hoisted_1$B = ["id", "disabled"];
9726
9740
  const _hoisted_2$r = ["for"];
9727
- const _hoisted_3$l = {
9741
+ const _hoisted_3$m = {
9728
9742
  key: 0,
9729
9743
  class: "checkbox__details"
9730
9744
  };
@@ -9732,7 +9746,7 @@ const _hoisted_4$i = {
9732
9746
  key: 0,
9733
9747
  class: "checkbox__details"
9734
9748
  };
9735
- function _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) {
9749
+ function _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) {
9736
9750
  return vue.openBlock(), vue.createElementBlock("div", {
9737
9751
  class: vue.normalizeClass(["checkbox", _ctx.disabledClass]),
9738
9752
  onValidity: _cache[2] || (_cache[2] = (...args) => _ctx.onValidity && _ctx.onValidity(...args))
@@ -9750,7 +9764,7 @@ function _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) {
9750
9764
  for: _ctx.id
9751
9765
  }, [vue.renderSlot(_ctx.$slots, "default"), _cache[8] || (_cache[8] = vue.createTextVNode()), _ctx.$slots.details ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, {
9752
9766
  key: 0
9753
- }, [_ctx.showDetails === "always" ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$l, [_cache[3] || (_cache[3] = vue.createElementVNode("br", null, null, -1)), _cache[4] || (_cache[4] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "details")])) : vue.createCommentVNode("", true), _cache[7] || (_cache[7] = vue.createTextVNode()), _ctx.showDetails === "when-selected" ? (vue.openBlock(), vue.createBlock(vue.Transition, {
9767
+ }, [_ctx.showDetails === "always" ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$m, [_cache[3] || (_cache[3] = vue.createElementVNode("br", null, null, -1)), _cache[4] || (_cache[4] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "details")])) : vue.createCommentVNode("", true), _cache[7] || (_cache[7] = vue.createTextVNode()), _ctx.showDetails === "when-selected" ? (vue.openBlock(), vue.createBlock(vue.Transition, {
9754
9768
  key: 1,
9755
9769
  onEnter: _ctx.enter,
9756
9770
  onAfterEnter: _ctx.afterEnter,
@@ -9762,7 +9776,7 @@ function _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) {
9762
9776
  _: 3
9763
9777
  }, 8, ["onEnter", "onAfterEnter", "onLeave"])) : vue.createCommentVNode("", true)], 64)) : vue.createCommentVNode("", true)], 10, _hoisted_2$r)], 34);
9764
9778
  }
9765
- const FCheckboxField = /* @__PURE__ */ _export_sfc(_sfc_main$N, [["render", _sfc_render$t]]);
9779
+ const FCheckboxField = /* @__PURE__ */ _export_sfc(_sfc_main$N, [["render", _sfc_render$s]]);
9766
9780
  var es_iterator_some = {};
9767
9781
  var hasRequiredEs_iterator_some;
9768
9782
  function requireEs_iterator_some() {
@@ -10012,13 +10026,13 @@ const _hoisted_2$q = {
10012
10026
  tabindex: "-1",
10013
10027
  class: "contextmenu__list"
10014
10028
  };
10015
- const _hoisted_3$k = ["onClick"];
10029
+ const _hoisted_3$l = ["onClick"];
10016
10030
  const _hoisted_4$h = ["tabindex"];
10017
10031
  const _hoisted_5$e = {
10018
10032
  key: 0,
10019
10033
  class: "contextmenu__separator"
10020
10034
  };
10021
- function _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) {
10035
+ function _sfc_render$r(_ctx, _cache, $props, $setup, $data, $options) {
10022
10036
  const _component_f_icon = vue.resolveComponent("f-icon");
10023
10037
  const _component_i_popup = vue.resolveComponent("i-popup");
10024
10038
  return vue.openBlock(), vue.createBlock(_component_i_popup, {
@@ -10053,12 +10067,12 @@ function _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) {
10053
10067
  }, null, 8, ["name", "library"])) : vue.createCommentVNode("", true), _cache[3] || (_cache[3] = vue.createTextVNode()), vue.createElementVNode("a", {
10054
10068
  ref_for: true,
10055
10069
  ref: "anchors"
10056
- }, vue.toDisplayString(item.label), 513)], 8, _hoisted_4$h), _cache[4] || (_cache[4] = vue.createTextVNode()), _ctx.hasSeparatorAfterItemAt(index) ? (vue.openBlock(), vue.createElementBlock("hr", _hoisted_5$e)) : vue.createCommentVNode("", true)], 8, _hoisted_3$k);
10070
+ }, vue.toDisplayString(item.label), 513)], 8, _hoisted_4$h), _cache[4] || (_cache[4] = vue.createTextVNode()), _ctx.hasSeparatorAfterItemAt(index) ? (vue.openBlock(), vue.createElementBlock("hr", _hoisted_5$e)) : vue.createCommentVNode("", true)], 8, _hoisted_3$l);
10057
10071
  }), 128))], 512)], 40, _hoisted_1$A)]),
10058
10072
  _: 1
10059
10073
  }, 8, ["is-open", "anchor", "focus-element"]);
10060
10074
  }
10061
- const FContextMenu = /* @__PURE__ */ _export_sfc(_sfc_main$M, [["render", _sfc_render$s]]);
10075
+ const FContextMenu = /* @__PURE__ */ _export_sfc(_sfc_main$M, [["render", _sfc_render$r]]);
10062
10076
  var Operation = /* @__PURE__ */ ((Operation2) => {
10063
10077
  Operation2[Operation2["ADD"] = 0] = "ADD";
10064
10078
  Operation2[Operation2["DELETE"] = 1] = "DELETE";
@@ -10302,7 +10316,7 @@ const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({
10302
10316
  isFormModalOpen.value = true;
10303
10317
  }
10304
10318
  return (_ctx, _cache) => {
10305
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$z, [vue.renderSlot(_ctx.$slots, "default"), _cache[5] || (_cache[5] = vue.createTextVNode()), hasAddSlot.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$p, [vue.createElementVNode("button", {
10319
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$z, [vue.renderSlot(_ctx.$slots, "default"), _cache[6] || (_cache[6] = vue.createTextVNode()), hasAddSlot.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$p, [vue.createElementVNode("button", {
10306
10320
  "data-test": "f-crud-dataset-add-button",
10307
10321
  type: "button",
10308
10322
  class: "button button--tertiary crud-dataset__add-button",
@@ -10310,7 +10324,9 @@ const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({
10310
10324
  }, [vue.createVNode(vue.unref(FIcon), {
10311
10325
  class: "button__icon",
10312
10326
  name: "plus"
10313
- }), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "add-button", {}, () => [vue.createTextVNode(vue.toDisplayString(vue.unref($t2)("fkui.crud-dataset.button.add", "Lägg till ny")), 1)])])])) : vue.createCommentVNode("", true), _cache[6] || (_cache[6] = vue.createTextVNode()), vue.createVNode(vue.unref(FFormModal), {
10327
+ }), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "add-button", {}, () => [vue.createTextVNode(vue.toDisplayString(vue.unref($t2)("fkui.crud-dataset.button.add", "Lägg till ny")), 1)])]), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "buttons", vue.normalizeProps(vue.guardReactiveProps({
10328
+ buttonClasses: ["button", "button--tertiary", "crud-dataset__add-button"]
10329
+ })))])) : vue.createCommentVNode("", true), _cache[7] || (_cache[7] = vue.createTextVNode()), vue.createVNode(vue.unref(FFormModal), {
10314
10330
  "is-open": isFormModalOpen.value,
10315
10331
  "aria-close-text": vue.unref($t2)("fkui.crud-dataset.modal.close", "Stäng"),
10316
10332
  buttons: formModalButtons.value,
@@ -10327,13 +10343,13 @@ const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({
10327
10343
  key: 0
10328
10344
  }, {
10329
10345
  item: item.value
10330
- }))) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), operation.value === vue.unref(Operation).MODIFY ? vue.renderSlot(_ctx.$slots, "modify", vue.normalizeProps(vue.mergeProps({
10346
+ }))) : vue.createCommentVNode("", true), _cache[3] || (_cache[3] = vue.createTextVNode()), operation.value === vue.unref(Operation).MODIFY ? vue.renderSlot(_ctx.$slots, "modify", vue.normalizeProps(vue.mergeProps({
10331
10347
  key: 1
10332
10348
  }, {
10333
10349
  item: item.value
10334
10350
  }))) : vue.createCommentVNode("", true)]),
10335
10351
  _: 3
10336
- }, 8, ["is-open", "aria-close-text", "buttons", "before-submit", "before-validation", "on-cancel", "onCancel"]), _cache[7] || (_cache[7] = vue.createTextVNode()), vue.createVNode(vue.unref(FConfirmModal), {
10352
+ }, 8, ["is-open", "aria-close-text", "buttons", "before-submit", "before-validation", "on-cancel", "onCancel"]), _cache[8] || (_cache[8] = vue.createTextVNode()), vue.createVNode(vue.unref(FConfirmModal), {
10337
10353
  "is-open": isConfirmModalOpen.value,
10338
10354
  buttons: confirmDeleteButtons.value,
10339
10355
  onConfirm: onDeleteConfirm,
@@ -10361,6 +10377,10 @@ const _sfc_main$K = vue.defineComponent({
10361
10377
  },
10362
10378
  mixins: [TranslationMixin],
10363
10379
  props: {
10380
+ /**
10381
+ * The action to be performed by the button.
10382
+ * Must be one of the following values: "delete" or "modify".
10383
+ */
10364
10384
  action: {
10365
10385
  type: String,
10366
10386
  required: true,
@@ -10368,14 +10388,24 @@ const _sfc_main$K = vue.defineComponent({
10368
10388
  return ["delete", "modify"].includes(value);
10369
10389
  }
10370
10390
  },
10391
+ /**
10392
+ * Determines if an icon should be displayed on the button.
10393
+ */
10371
10394
  icon: {
10372
10395
  type: Boolean,
10373
10396
  default: false
10374
10397
  },
10398
+ /**
10399
+ * The item that the action will be performed on.
10400
+ */
10375
10401
  item: {
10376
10402
  type: Object,
10377
10403
  required: true
10378
10404
  },
10405
+ /**
10406
+ * Determines if the button should display a label.
10407
+ * If false, the button will use a visually hidden text for accessibility.
10408
+ */
10379
10409
  label: {
10380
10410
  type: Boolean,
10381
10411
  default: false
@@ -10414,7 +10444,7 @@ const _hoisted_1$y = {
10414
10444
  key: 1,
10415
10445
  class: "sr-only"
10416
10446
  };
10417
- function _sfc_render$r(_ctx, _cache, $props, $setup, $data, $options) {
10447
+ function _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {
10418
10448
  const _component_f_icon = vue.resolveComponent("f-icon");
10419
10449
  return vue.openBlock(), vue.createElementBlock("button", {
10420
10450
  type: "button",
@@ -10428,7 +10458,7 @@ function _sfc_render$r(_ctx, _cache, $props, $setup, $data, $options) {
10428
10458
  key: 2
10429
10459
  }, () => [vue.createTextVNode(vue.toDisplayString(_ctx.buttonText), 1)]) : vue.createCommentVNode("", true)]);
10430
10460
  }
10431
- const FCrudButton = /* @__PURE__ */ _export_sfc(_sfc_main$K, [["render", _sfc_render$r]]);
10461
+ const FCrudButton = /* @__PURE__ */ _export_sfc(_sfc_main$K, [["render", _sfc_render$q]]);
10432
10462
  function ActivateItemInjected() {
10433
10463
  return {
10434
10464
  registerCallbackAfterItemAdd: vue.inject("registerCallbackAfterItemAdd", () => void 0),
@@ -11077,9 +11107,11 @@ function FTableInjected() {
11077
11107
  renderColumns: vue.inject("renderColumns", false)
11078
11108
  };
11079
11109
  }
11080
- const _sfc_main$J = vue.defineComponent({
11081
- name: "FTableColumn",
11082
- inheritAttrs: false,
11110
+ const _sfc_main$J = /* @__PURE__ */ vue.defineComponent({
11111
+ ...{
11112
+ inheritAttrs: false
11113
+ },
11114
+ __name: "FTableColumn",
11083
11115
  props: {
11084
11116
  /**
11085
11117
  * Unique (per-table) identifier.
@@ -11166,71 +11198,58 @@ const _sfc_main$J = vue.defineComponent({
11166
11198
  }
11167
11199
  }
11168
11200
  },
11169
- setup() {
11201
+ setup(__props) {
11170
11202
  const {
11171
11203
  renderColumns,
11172
11204
  setVisibilityColumn: setVisibilityColumn2,
11173
11205
  addColumn: addColumn2
11174
11206
  } = FTableInjected();
11175
- return {
11176
- renderColumns,
11177
- setVisibilityColumn: setVisibilityColumn2,
11178
- addColumn: addColumn2
11179
- };
11180
- },
11181
- computed: {
11182
- classes() {
11183
- return ["table__column", `table__column--${this.type}`];
11184
- },
11185
- scope() {
11186
- return this.rowHeader ? "row" : null;
11187
- },
11188
- tagName() {
11189
- if (this.rowHeader) {
11207
+ const props = __props;
11208
+ const classes = vue.computed(() => {
11209
+ return ["table__column", `table__column--${props.type}`];
11210
+ });
11211
+ const scope = vue.computed(() => {
11212
+ return props.rowHeader ? "row" : null;
11213
+ });
11214
+ const tagName2 = vue.computed(() => {
11215
+ if (props.rowHeader) {
11190
11216
  return "th";
11191
11217
  } else {
11192
11218
  return "td";
11193
11219
  }
11194
- }
11195
- },
11196
- watch: {
11197
- visible: {
11198
- handler: function() {
11199
- this.setVisibilityColumn(this.name, this.visible);
11200
- }
11201
- }
11202
- },
11203
- created() {
11204
- if (this.shrink && this.expand) {
11205
- throw new Error("Table cannot have both shrink and expand enabled at the same time");
11206
- }
11207
- const size = this.shrink ? FTableColumnSize.SHRINK : FTableColumnSize.EXPAND;
11208
- this.addColumn({
11209
- name: this.name,
11210
- title: this.title,
11211
- description: this.description || void 0,
11212
- id: logic.ElementIdService.generateElementId("column"),
11213
- size,
11214
- type: this.type,
11215
- visible: this.visible,
11216
- sortable: false,
11217
- sort: FTableColumnSort.UNSORTED
11218
11220
  });
11221
+ vue.watch(() => props.visible, () => setVisibilityColumn2(props.name, props.visible));
11222
+ vue.onMounted(() => {
11223
+ if (props.shrink && props.expand) {
11224
+ throw new Error("Table cannot have both shrink and expand enabled at the same time");
11225
+ }
11226
+ const size = props.shrink ? FTableColumnSize.SHRINK : FTableColumnSize.EXPAND;
11227
+ addColumn2({
11228
+ name: props.name,
11229
+ title: props.title,
11230
+ description: props.description || void 0,
11231
+ id: logic.ElementIdService.generateElementId("column"),
11232
+ size,
11233
+ type: props.type,
11234
+ visible: props.visible,
11235
+ sortable: false,
11236
+ sort: FTableColumnSort.UNSORTED
11237
+ });
11238
+ });
11239
+ return (_ctx, _cache) => {
11240
+ return vue.unref(renderColumns) && __props.visible ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(tagName2.value), vue.mergeProps({
11241
+ key: 0,
11242
+ class: classes.value,
11243
+ scope: scope.value
11244
+ }, _ctx.$attrs), {
11245
+ default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "default"), _cache[0] || (_cache[0] = vue.createTextVNode()), _cache[1] || (_cache[1] = vue.createElementVNode("span", {
11246
+ class: "sr-only"
11247
+ }, " ", -1))]),
11248
+ _: 3
11249
+ }, 16, ["class", "scope"])) : vue.createCommentVNode("", true);
11250
+ };
11219
11251
  }
11220
11252
  });
11221
- function _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {
11222
- return _ctx.renderColumns && _ctx.visible ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.tagName), vue.mergeProps({
11223
- key: 0,
11224
- class: _ctx.classes,
11225
- scope: _ctx.scope
11226
- }, _ctx.$attrs), {
11227
- default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "default"), _cache[0] || (_cache[0] = vue.createTextVNode()), _cache[1] || (_cache[1] = vue.createElementVNode("span", {
11228
- class: "sr-only"
11229
- }, " ", -1))]),
11230
- _: 3
11231
- }, 16, ["class", "scope"])) : vue.createCommentVNode("", true);
11232
- }
11233
- const FTableColumn = /* @__PURE__ */ _export_sfc(_sfc_main$J, [["render", _sfc_render$q]]);
11234
11253
  function FSortFilterDatasetInjected() {
11235
11254
  return {
11236
11255
  sort: vue.inject("sort", () => void 0),
@@ -11284,7 +11303,7 @@ const _hoisted_2$o = {
11284
11303
  key: 0,
11285
11304
  ref: "tooltipAttachTo"
11286
11305
  };
11287
- const _hoisted_3$j = ["for"];
11306
+ const _hoisted_3$k = ["for"];
11288
11307
  const _hoisted_4$g = ["for"];
11289
11308
  const _hoisted_5$d = {
11290
11309
  key: 0,
@@ -11300,7 +11319,7 @@ function _sfc_render$p(_ctx, _cache, $props, $setup, $data, $options) {
11300
11319
  return _ctx.$slots.tooltip ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$x, [_ctx.hasDefaultSlot ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$o, [vue.createElementVNode("label", {
11301
11320
  class: "label",
11302
11321
  for: _ctx.forProperty
11303
- }, [vue.renderSlot(_ctx.$slots, "default")], 8, _hoisted_3$j)], 512)) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "tooltip"), _cache[3] || (_cache[3] = vue.createTextVNode()), _ctx.hasDescriptionSlot || _ctx.hasErrorMessageSlot ? (vue.openBlock(), vue.createElementBlock("label", {
11322
+ }, [vue.renderSlot(_ctx.$slots, "default")], 8, _hoisted_3$k)], 512)) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "tooltip"), _cache[3] || (_cache[3] = vue.createTextVNode()), _ctx.hasDescriptionSlot || _ctx.hasErrorMessageSlot ? (vue.openBlock(), vue.createElementBlock("label", {
11304
11323
  key: 1,
11305
11324
  class: "label sr-separator",
11306
11325
  for: _ctx.forProperty
@@ -11895,7 +11914,7 @@ const _hoisted_2$n = {
11895
11914
  key: 0,
11896
11915
  class: "sr-only"
11897
11916
  };
11898
- const _hoisted_3$i = {
11917
+ const _hoisted_3$j = {
11899
11918
  key: 0,
11900
11919
  class: "sr-only"
11901
11920
  };
@@ -11938,7 +11957,7 @@ function _sfc_render$n(_ctx, _cache, $props, $setup, $data, $options) {
11938
11957
  }, [_ctx.descriptionScreenReaderText ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$n, vue.toDisplayString(_ctx.descriptionScreenReaderText), 1)) : vue.createCommentVNode("", true), _cache[7] || (_cache[7] = vue.createTextVNode()), vue.createElementVNode("span", null, vue.toDisplayString(_ctx.descriptionText), 1)], 2)) : vue.createCommentVNode("", true), _cache[9] || (_cache[9] = vue.createTextVNode()), _ctx.discreteDescriptionText ? (vue.openBlock(), vue.createElementBlock("span", {
11939
11958
  key: 1,
11940
11959
  class: vue.normalizeClass(formatDescriptionClass)
11941
- }, [_ctx.discreteDescriptionScreenReaderText ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$i, vue.toDisplayString(_ctx.discreteDescriptionScreenReaderText), 1)) : vue.createCommentVNode("", true), _cache[8] || (_cache[8] = vue.createTextVNode()), vue.createElementVNode("span", null, vue.toDisplayString(_ctx.discreteDescriptionText), 1)], 2)) : vue.createCommentVNode("", true)])]),
11960
+ }, [_ctx.discreteDescriptionScreenReaderText ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$j, vue.toDisplayString(_ctx.discreteDescriptionScreenReaderText), 1)) : vue.createCommentVNode("", true), _cache[8] || (_cache[8] = vue.createTextVNode()), vue.createElementVNode("span", null, vue.toDisplayString(_ctx.discreteDescriptionText), 1)], 2)) : vue.createCommentVNode("", true)])]),
11942
11961
  "error-message": vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "error-message", vue.normalizeProps(vue.guardReactiveProps({
11943
11962
  hasError: _ctx.hasError,
11944
11963
  validationMessage: _ctx.validationMessage
@@ -12825,7 +12844,7 @@ const _hoisted_1$s = {
12825
12844
  const _hoisted_2$m = {
12826
12845
  class: "sort-filter-dataset__search"
12827
12846
  };
12828
- const _hoisted_3$h = {
12847
+ const _hoisted_3$i = {
12829
12848
  class: "sr-only"
12830
12849
  };
12831
12850
  const _hoisted_4$e = ["title"];
@@ -13062,7 +13081,7 @@ const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
13062
13081
  maxlength: "64",
13063
13082
  onInput: onSearchInput
13064
13083
  }, {
13065
- default: vue.withCtx(() => [vue.createElementVNode("span", _hoisted_3$h, vue.toDisplayString(__props.placeholderFilter), 1)]),
13084
+ default: vue.withCtx(() => [vue.createElementVNode("span", _hoisted_3$i, vue.toDisplayString(__props.placeholderFilter), 1)]),
13066
13085
  _: 1
13067
13086
  }, 8, ["modelValue", "placeholder"]), _cache[4] || (_cache[4] = vue.createTextVNode()), showClearButton.value ? (vue.openBlock(), vue.createElementBlock("button", {
13068
13087
  key: 0,
@@ -13112,7 +13131,7 @@ const _hoisted_1$r = ["tabindex"];
13112
13131
  const _hoisted_2$l = {
13113
13132
  key: 0
13114
13133
  };
13115
- const _hoisted_3$g = {
13134
+ const _hoisted_3$h = {
13116
13135
  class: "table__row"
13117
13136
  };
13118
13137
  const _hoisted_4$d = ["innerHTML"];
@@ -13285,7 +13304,7 @@ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
13285
13304
  key: column.id,
13286
13305
  class: vue.normalizeClass(column.size)
13287
13306
  }, null, 2);
13288
- }), 128))]), _cache[5] || (_cache[5] = vue.createTextVNode()), vue.createElementVNode("thead", null, [vue.createElementVNode("tr", _hoisted_3$g, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(visibleColumns.value, (column) => {
13307
+ }), 128))]), _cache[5] || (_cache[5] = vue.createTextVNode()), vue.createElementVNode("thead", null, [vue.createElementVNode("tr", _hoisted_3$h, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(visibleColumns.value, (column) => {
13289
13308
  return vue.openBlock(), vue.createElementBlock("th", vue.mergeProps({
13290
13309
  key: column.id,
13291
13310
  scope: "col",
@@ -13655,7 +13674,7 @@ const _hoisted_1$q = {
13655
13674
  class: "datepicker-field"
13656
13675
  };
13657
13676
  const _hoisted_2$k = ["disabled", "aria-expanded"];
13658
- const _hoisted_3$f = {
13677
+ const _hoisted_3$g = {
13659
13678
  class: "sr-only"
13660
13679
  };
13661
13680
  const _hoisted_4$c = {
@@ -13706,7 +13725,7 @@ function _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) {
13706
13725
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.onClickCalendarButton())
13707
13726
  }, [vue.createVNode(_component_f_icon, {
13708
13727
  name: "calendar"
13709
- }), _cache[6] || (_cache[6] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_3$f, vue.toDisplayString(_ctx.calendarButtonText), 1)], 8, _hoisted_2$k)]),
13728
+ }), _cache[6] || (_cache[6] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_3$g, vue.toDisplayString(_ctx.calendarButtonText), 1)], 8, _hoisted_2$k)]),
13710
13729
  default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "default", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.datepicker-field.label", "Datum")), 1)]), _cache[7] || (_cache[7] = vue.createTextVNode()), _cache[8] || (_cache[8] = vue.createTextVNode()), _cache[9] || (_cache[9] = vue.createTextVNode()), _cache[10] || (_cache[10] = vue.createTextVNode())]),
13711
13730
  _: 2
13712
13731
  }, [_ctx.$slots.tooltip ? {
@@ -13846,7 +13865,7 @@ const _hoisted_2$j = {
13846
13865
  key: 0,
13847
13866
  class: "dialogue-tree__list"
13848
13867
  };
13849
- const _hoisted_3$e = ["onClick"];
13868
+ const _hoisted_3$f = ["onClick"];
13850
13869
  function _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {
13851
13870
  const _component_f_icon = vue.resolveComponent("f-icon");
13852
13871
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [_ctx.options.length > 0 ? (vue.openBlock(), vue.createElementBlock("ul", _hoisted_2$j, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.options, (option, index) => {
@@ -13860,7 +13879,7 @@ function _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {
13860
13879
  onClick: ($event) => _ctx.onClickedOption(option, index)
13861
13880
  }, [vue.createElementVNode("span", null, vue.toDisplayString(option.label), 1), _cache[0] || (_cache[0] = vue.createTextVNode()), vue.createVNode(_component_f_icon, {
13862
13881
  name: "arrow-right"
13863
- })], 8, _hoisted_3$e)]);
13882
+ })], 8, _hoisted_3$f)]);
13864
13883
  }), 128))])) : vue.renderSlot(_ctx.$slots, "default", vue.normalizeProps(vue.mergeProps({
13865
13884
  key: 1
13866
13885
  }, {
@@ -13915,6 +13934,10 @@ const _sfc_main$o = vue.defineComponent({
13915
13934
  required: false,
13916
13935
  default: 0
13917
13936
  },
13937
+ /**
13938
+ * Text template for the screen reader notification text.
13939
+ * Use `%VALUE%` as a placeholder for the number of notifications.
13940
+ */
13918
13941
  screenReaderNotificationTemplate: {
13919
13942
  type: String,
13920
13943
  required: false,
@@ -13946,7 +13969,7 @@ const _hoisted_1$o = ["aria-expanded", "aria-controls"];
13946
13969
  const _hoisted_2$i = {
13947
13970
  class: "expandable-panel__icon"
13948
13971
  };
13949
- const _hoisted_3$d = {
13972
+ const _hoisted_3$e = {
13950
13973
  class: "icon-stack"
13951
13974
  };
13952
13975
  const _hoisted_4$b = ["title"];
@@ -13975,7 +13998,7 @@ function _sfc_render$h(_ctx, _cache, $props, $setup, $data, $options) {
13975
13998
  "aria-controls": _ctx.id
13976
13999
  }, _ctx.$attrs, {
13977
14000
  onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClickHeadingButton && _ctx.onClickHeadingButton(...args))
13978
- }), [vue.createElementVNode("span", _hoisted_2$i, [vue.createElementVNode("span", _hoisted_3$d, [vue.createVNode(_component_f_icon, {
14001
+ }), [vue.createElementVNode("span", _hoisted_2$i, [vue.createElementVNode("span", _hoisted_3$e, [vue.createVNode(_component_f_icon, {
13979
14002
  name: "dash"
13980
14003
  }), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.createVNode(_component_f_icon, {
13981
14004
  name: "dash"
@@ -14085,7 +14108,7 @@ const _hoisted_1$n = ["aria-expanded", "aria-controls"];
14085
14108
  const _hoisted_2$h = {
14086
14109
  class: "expandable-paragraph__icon"
14087
14110
  };
14088
- const _hoisted_3$c = {
14111
+ const _hoisted_3$d = {
14089
14112
  class: "icon-stack"
14090
14113
  };
14091
14114
  const _hoisted_4$a = {
@@ -14117,7 +14140,7 @@ function _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) {
14117
14140
  "aria-controls": _ctx.id
14118
14141
  }, _ctx.$attrs, {
14119
14142
  onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClickMinimize && _ctx.onClickMinimize(...args))
14120
- }), [vue.createElementVNode("span", _hoisted_2$h, [vue.createElementVNode("span", _hoisted_3$c, [vue.createVNode(_component_f_icon, {
14143
+ }), [vue.createElementVNode("span", _hoisted_2$h, [vue.createElementVNode("span", _hoisted_3$d, [vue.createVNode(_component_f_icon, {
14121
14144
  name: "dash"
14122
14145
  }), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.createVNode(_component_f_icon, {
14123
14146
  name: "dash"
@@ -14225,7 +14248,7 @@ const _hoisted_1$m = {
14225
14248
  const _hoisted_2$g = {
14226
14249
  class: "file-item__row"
14227
14250
  };
14228
- const _hoisted_3$b = ["id"];
14251
+ const _hoisted_3$c = ["id"];
14229
14252
  const _hoisted_4$9 = {
14230
14253
  class: "icon-stack button__icon icon-stack--new-window"
14231
14254
  };
@@ -14248,7 +14271,7 @@ function _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) {
14248
14271
  name: "new-window"
14249
14272
  }), _cache[0] || (_cache[0] = vue.createTextVNode()), vue.createVNode(_component_f_icon, {
14250
14273
  name: _ctx.iconName
14251
- }, null, 8, ["name"])]), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_5$7, vue.toDisplayString(_ctx.fileName), 1), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_6$5, " " + vue.toDisplayString(_ctx.$t("fkui.file-item.file-open", "öppnas i nytt fönster")), 1)], 16, _hoisted_3$b), _cache[3] || (_cache[3] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "row")]), _cache[4] || (_cache[4] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "default"), _cache[5] || (_cache[5] = vue.createTextVNode()), _ctx.isMimeTypeChanged ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$4, vue.toDisplayString(_ctx.mimeTypeChangedText), 1)) : vue.createCommentVNode("", true), _cache[6] || (_cache[6] = vue.createTextVNode()), _cache[7] || (_cache[7] = vue.createElementVNode("hr", {
14274
+ }, null, 8, ["name"])]), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_5$7, vue.toDisplayString(_ctx.fileName), 1), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_6$5, " " + vue.toDisplayString(_ctx.$t("fkui.file-item.file-open", "öppnas i nytt fönster")), 1)], 16, _hoisted_3$c), _cache[3] || (_cache[3] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "row")]), _cache[4] || (_cache[4] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "default"), _cache[5] || (_cache[5] = vue.createTextVNode()), _ctx.isMimeTypeChanged ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$4, vue.toDisplayString(_ctx.mimeTypeChangedText), 1)) : vue.createCommentVNode("", true), _cache[6] || (_cache[6] = vue.createTextVNode()), _cache[7] || (_cache[7] = vue.createElementVNode("hr", {
14252
14275
  class: "file-item__separator"
14253
14276
  }, null, -1))]);
14254
14277
  }
@@ -14274,6 +14297,9 @@ const _sfc_main$l = vue.defineComponent({
14274
14297
  required: false,
14275
14298
  default: () => logic.ElementIdService.generateElementId()
14276
14299
  },
14300
+ /**
14301
+ * Disables the file selector.
14302
+ */
14277
14303
  disabled: {
14278
14304
  type: Boolean,
14279
14305
  required: false,
@@ -14318,7 +14344,7 @@ const _hoisted_1$l = {
14318
14344
  class: "file-selector"
14319
14345
  };
14320
14346
  const _hoisted_2$f = ["id", "aria-labelledby", "aria-disabled"];
14321
- const _hoisted_3$a = ["id", "for"];
14347
+ const _hoisted_3$b = ["id", "for"];
14322
14348
  function _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {
14323
14349
  const _component_f_icon = vue.resolveComponent("f-icon");
14324
14350
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$l, [vue.createElementVNode("input", vue.mergeProps({
@@ -14338,7 +14364,7 @@ function _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {
14338
14364
  }, [vue.createVNode(_component_f_icon, {
14339
14365
  class: "button__icon",
14340
14366
  name: "paper-clip"
14341
- }), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "default")], 10, _hoisted_3$a)]);
14367
+ }), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "default")], 10, _hoisted_3$b)]);
14342
14368
  }
14343
14369
  const FFileSelector = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["render", _sfc_render$e]]);
14344
14370
  const keybindings = {
@@ -14456,7 +14482,7 @@ const _hoisted_1$k = ["role"];
14456
14482
  const _hoisted_2$e = {
14457
14483
  key: 0
14458
14484
  };
14459
- const _hoisted_3$9 = {
14485
+ const _hoisted_3$a = {
14460
14486
  key: 0,
14461
14487
  class: "table__column--shrink"
14462
14488
  };
@@ -14915,7 +14941,7 @@ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
14915
14941
  }, [vue.createCommentVNode("", true), _cache[18] || (_cache[18] = vue.createTextVNode()), vue.createElementVNode("table", vue.mergeProps({
14916
14942
  class: ["table", tableClasses.value],
14917
14943
  role: tableRole.value
14918
- }, _ctx.$attrs), [hasCaption.value ? (vue.openBlock(), vue.createElementBlock("caption", _hoisted_2$e, [vue.renderSlot(_ctx.$slots, "caption")])) : vue.createCommentVNode("", true), _cache[15] || (_cache[15] = vue.createTextVNode()), vue.createElementVNode("colgroup", null, [vue.unref(isExpandableTable) ? (vue.openBlock(), vue.createElementBlock("col", _hoisted_3$9)) : vue.createCommentVNode("", true), _cache[0] || (_cache[0] = vue.createTextVNode()), __props.selectable ? (vue.openBlock(), vue.createElementBlock("col", _hoisted_4$8)) : vue.createCommentVNode("", true), _cache[1] || (_cache[1] = vue.createTextVNode()), (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(columns.value, (column) => {
14944
+ }, _ctx.$attrs), [hasCaption.value ? (vue.openBlock(), vue.createElementBlock("caption", _hoisted_2$e, [vue.renderSlot(_ctx.$slots, "caption")])) : vue.createCommentVNode("", true), _cache[15] || (_cache[15] = vue.createTextVNode()), vue.createElementVNode("colgroup", null, [vue.unref(isExpandableTable) ? (vue.openBlock(), vue.createElementBlock("col", _hoisted_3$a)) : vue.createCommentVNode("", true), _cache[0] || (_cache[0] = vue.createTextVNode()), __props.selectable ? (vue.openBlock(), vue.createElementBlock("col", _hoisted_4$8)) : vue.createCommentVNode("", true), _cache[1] || (_cache[1] = vue.createTextVNode()), (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(columns.value, (column) => {
14919
14945
  return vue.openBlock(), vue.createElementBlock("col", {
14920
14946
  key: column.id,
14921
14947
  class: vue.normalizeClass(column.size)
@@ -15037,7 +15063,7 @@ const _hoisted_2$d = {
15037
15063
  ref: "header",
15038
15064
  class: "layout-application-template__header"
15039
15065
  };
15040
- const _hoisted_3$8 = {
15066
+ const _hoisted_3$9 = {
15041
15067
  key: 1
15042
15068
  };
15043
15069
  const _hoisted_4$7 = {
@@ -15051,7 +15077,7 @@ const _hoisted_5$5 = {
15051
15077
  function _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {
15052
15078
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$j, [_ctx.showHeader || _ctx.showTopNavigation ? (vue.openBlock(), vue.createElementBlock("header", _hoisted_2$d, [_ctx.showHeader ? vue.renderSlot(_ctx.$slots, "header", {
15053
15079
  key: 0
15054
- }) : vue.createCommentVNode("", true), _cache[0] || (_cache[0] = vue.createTextVNode()), _ctx.showTopNavigation ? (vue.openBlock(), vue.createElementBlock("nav", _hoisted_3$8, [vue.renderSlot(_ctx.$slots, "top-navigation")])) : vue.createCommentVNode("", true)], 512)) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createElementVNode("main", _hoisted_4$7, [vue.renderSlot(_ctx.$slots, "default"), _cache[1] || (_cache[1] = vue.createTextVNode()), _ctx.showFooter ? (vue.openBlock(), vue.createElementBlock("footer", _hoisted_5$5, [vue.renderSlot(_ctx.$slots, "footer")])) : vue.createCommentVNode("", true)], 512)]);
15080
+ }) : vue.createCommentVNode("", true), _cache[0] || (_cache[0] = vue.createTextVNode()), _ctx.showTopNavigation ? (vue.openBlock(), vue.createElementBlock("nav", _hoisted_3$9, [vue.renderSlot(_ctx.$slots, "top-navigation")])) : vue.createCommentVNode("", true)], 512)) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createElementVNode("main", _hoisted_4$7, [vue.renderSlot(_ctx.$slots, "default"), _cache[1] || (_cache[1] = vue.createTextVNode()), _ctx.showFooter ? (vue.openBlock(), vue.createElementBlock("footer", _hoisted_5$5, [vue.renderSlot(_ctx.$slots, "footer")])) : vue.createCommentVNode("", true)], 512)]);
15055
15081
  }
15056
15082
  const FLayoutApplicationTemplate = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["render", _sfc_render$d]]);
15057
15083
  function getGridClasses(target) {
@@ -15243,7 +15269,7 @@ const _hoisted_1$i = {
15243
15269
  class: "layout-navigation"
15244
15270
  };
15245
15271
  const _hoisted_2$c = ["aria-expanded"];
15246
- const _hoisted_3$7 = {
15272
+ const _hoisted_3$8 = {
15247
15273
  class: "layout-navigation__navigation__inner"
15248
15274
  };
15249
15275
  const _hoisted_4$6 = {
@@ -15257,7 +15283,7 @@ function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {
15257
15283
  class: "layout-navigation__navigation",
15258
15284
  style: vue.normalizeStyle(_ctx.navigationStyle),
15259
15285
  "aria-expanded": _ctx.isOpen
15260
- }, [vue.createElementVNode("div", _hoisted_3$7, [_ctx.isOpen ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, {
15286
+ }, [vue.createElementVNode("div", _hoisted_3$8, [_ctx.isOpen ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, {
15261
15287
  key: 0
15262
15288
  }, [vue.createElementVNode("div", {
15263
15289
  class: "layout-navigation__navigation__inner__title",
@@ -15502,7 +15528,7 @@ const _hoisted_2$a = {
15502
15528
  key: 0,
15503
15529
  class: "list__item"
15504
15530
  };
15505
- const _hoisted_3$6 = {
15531
+ const _hoisted_3$7 = {
15506
15532
  class: "list__item__itempane"
15507
15533
  };
15508
15534
  const _hoisted_4$5 = ["id", "aria-labelledby", "tabindex", "onKeydown"];
@@ -15762,7 +15788,7 @@ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
15762
15788
  }, {
15763
15789
  item
15764
15790
  }))], 512)]);
15765
- }), 128)), _cache[0] || (_cache[0] = vue.createTextVNode()), isEmpty.value ? (vue.openBlock(), vue.createElementBlock("li", _hoisted_2$a, [vue.createElementVNode("div", _hoisted_3$6, [vue.renderSlot(_ctx.$slots, "empty", {}, () => [vue.createElementVNode("em", null, vue.toDisplayString(vue.unref($t2)("fkui.list.empty", "Listan är tom")), 1)])])])) : vue.createCommentVNode("", true)])) : (vue.openBlock(), vue.createElementBlock("ul", {
15791
+ }), 128)), _cache[0] || (_cache[0] = vue.createTextVNode()), isEmpty.value ? (vue.openBlock(), vue.createElementBlock("li", _hoisted_2$a, [vue.createElementVNode("div", _hoisted_3$7, [vue.renderSlot(_ctx.$slots, "empty", {}, () => [vue.createElementVNode("em", null, vue.toDisplayString(vue.unref($t2)("fkui.list.empty", "Listan är tom")), 1)])])])) : vue.createCommentVNode("", true)])) : (vue.openBlock(), vue.createElementBlock("ul", {
15766
15792
  key: 1,
15767
15793
  ref_key: "ulElement",
15768
15794
  ref: ulElement,
@@ -16561,7 +16587,7 @@ const _sfc_main$c = vue.defineComponent({
16561
16587
  });
16562
16588
  const _hoisted_1$c = ["aria-label"];
16563
16589
  const _hoisted_2$8 = ["data-ref-index", "onClick"];
16564
- const _hoisted_3$5 = {
16590
+ const _hoisted_3$6 = {
16565
16591
  class: "imenu__list__anchor-container"
16566
16592
  };
16567
16593
  const _hoisted_4$4 = ["data-ref-index", "href", "target"];
@@ -16602,7 +16628,7 @@ function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
16602
16628
  class: vue.normalizeClass(_ctx.itemClasses(item, index)),
16603
16629
  role: "none",
16604
16630
  onClick: (event) => _ctx.onClickItem(event, item)
16605
- }, [vue.createElementVNode("div", _hoisted_3$5, [vue.createElementVNode("a", {
16631
+ }, [vue.createElementVNode("div", _hoisted_3$6, [vue.createElementVNode("a", {
16606
16632
  ref_for: true,
16607
16633
  ref: "anchors",
16608
16634
  "data-ref-index": index,
@@ -16697,7 +16723,7 @@ const _hoisted_2$7 = {
16697
16723
  key: 0,
16698
16724
  class: "offline"
16699
16725
  };
16700
- const _hoisted_3$4 = {
16726
+ const _hoisted_3$5 = {
16701
16727
  class: "icon-stack icon-stack--error"
16702
16728
  };
16703
16729
  const _hoisted_4$3 = {
@@ -16720,7 +16746,7 @@ function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
16720
16746
  shrink: "",
16721
16747
  align: "center"
16722
16748
  }, {
16723
- default: vue.withCtx(() => [vue.createElementVNode("span", _hoisted_3$4, [vue.createVNode(_component_f_icon, {
16749
+ default: vue.withCtx(() => [vue.createElementVNode("span", _hoisted_3$5, [vue.createVNode(_component_f_icon, {
16724
16750
  name: "triangle"
16725
16751
  }), _cache[0] || (_cache[0] = vue.createTextVNode()), vue.createVNode(_component_f_icon, {
16726
16752
  name: "alert"
@@ -16849,7 +16875,7 @@ const _hoisted_1$9 = {
16849
16875
  const _hoisted_2$5 = {
16850
16876
  key: 0
16851
16877
  };
16852
- const _hoisted_3$3 = {
16878
+ const _hoisted_3$4 = {
16853
16879
  ref: "header",
16854
16880
  class: "page-header"
16855
16881
  };
@@ -16870,7 +16896,7 @@ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
16870
16896
  }, {
16871
16897
  default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "skip-link-text")]),
16872
16898
  _: 3
16873
- }, 8, ["href"])])) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createElementVNode("div", _hoisted_3$3, [_ctx.hasLogo ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$2, [vue.renderSlot(_ctx.$slots, "logo")])) : vue.createCommentVNode("", true), _cache[0] || (_cache[0] = vue.createTextVNode()), (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.headerTag), {
16899
+ }, 8, ["href"])])) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createElementVNode("div", _hoisted_3$4, [_ctx.hasLogo ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$2, [vue.renderSlot(_ctx.$slots, "logo")])) : vue.createCommentVNode("", true), _cache[0] || (_cache[0] = vue.createTextVNode()), (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.headerTag), {
16874
16900
  class: "page-header__app-name"
16875
16901
  }, {
16876
16902
  default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "default")]),
@@ -17015,7 +17041,7 @@ registerLayout({
17015
17041
  }
17016
17042
  }
17017
17043
  });
17018
- const styleContent = ':host {\n display: block;\n}\n\n.page-layout {\n display: grid;\n height: 100cqh;\n width: min(100%, 100cqw);\n\n &[part~="simple"] {\n grid-template:\n "header" min-content\n "content" 1fr\n "footer" min-content\n / 1fr;\n\n [part="area header"],\n [part="area footer"] {\n background: var(--f-background-pageheader-primary);\n color: var(--fkds-color-text-inverted);\n }\n\n [part="area content"] {\n background: var(--fkds-color-background-primary);\n color: var(--fkds-color-text-primary);\n }\n }\n\n &[part~="left-panel"] {\n grid-template:\n "header header" min-content\n "left content" 1fr\n "footer footer" min-content\n / min-content 1fr;\n\n [part="area header"],\n [part="area footer"] {\n background: var(--f-background-pageheader-primary);\n color: var(--fkds-color-text-inverted);\n }\n\n [part="area left"] {\n background: var(--fkds-color-background-secondary);\n }\n\n [part="area content"] {\n background: var(--fkds-color-background-primary);\n color: var(--fkds-color-text-primary);\n }\n }\n\n &[part~="right-panel"] {\n grid-template:\n "header header" min-content\n "content right" 1fr\n "footer footer" min-content\n / 1fr min-content;\n\n [part="area header"],\n [part="area footer"] {\n background: var(--f-background-pageheader-primary);\n color: var(--fkds-color-text-inverted);\n }\n\n [part="area right"] {\n background: var(--fkds-color-background-secondary);\n color: var(--fkds-color-text-primary);\n }\n\n [part="area content"] {\n background: var(--fkds-color-background-primary);\n color: var(--fkds-color-text-primary);\n }\n }\n\n &[part~="three-column"] {\n grid-template:\n "header header header" min-content\n "left content right" 1fr\n "footer footer footer" min-content\n / min-content 1fr min-content;\n\n [part="area header"],\n [part="area footer"] {\n background: var(--f-background-pageheader-primary);\n color: var(--fkds-color-text-inverted);\n }\n\n [part="area left"],\n [part="area right"] {\n background: var(--fkds-color-background-secondary);\n color: var(--fkds-color-text-primary);\n }\n\n [part="area content"] {\n background: var(--fkds-color-background-primary);\n color: var(--fkds-color-text-primary);\n }\n }\n}\n\n.page-layout__area {\n display: flex;\n position: relative;\n\n &[data-direction="column"] {\n flex-direction: column;\n }\n\n &[data-direction="row"] {\n flex-direction: row;\n }\n\n &[data-scroll] {\n overflow-y: auto;\n }\n\n &:empty {\n display: none;\n }\n}\n\n:host ::slotted(*) {\n display: contents;\n}\n';
17044
+ const styleContent = ':host {\n display: block;\n}\n\n.page-layout {\n display: grid;\n height: 100cqh;\n width: min(100%, 100cqw);\n\n &[part~="simple"] {\n grid-template:\n "header" min-content\n "content" 1fr\n "footer" min-content\n / 1fr;\n\n [part="area header"],\n [part="area footer"] {\n --f-page-layout-background: var(--f-background-pageheader-primary);\n --f-page-layout-color: var(--fkds-color-text-inverted);\n }\n\n [part="area content"] {\n --f-page-layout-background: var(--fkds-color-background-primary);\n --f-page-layout-color: var(--fkds-color-text-primary);\n }\n }\n\n &[part~="left-panel"] {\n grid-template:\n "header header" min-content\n "left content" 1fr\n "footer footer" min-content\n / min-content 1fr;\n\n [part="area header"],\n [part="area footer"] {\n --f-page-layout-background: var(--f-background-pageheader-primary);\n --f-page-layout-color: var(--fkds-color-text-inverted);\n }\n\n [part="area left"] {\n --f-page-layout-background: var(--fkds-color-background-secondary);\n }\n\n [part="area content"] {\n --f-page-layout-background: var(--fkds-color-background-primary);\n --f-page-layout-color: var(--fkds-color-text-primary);\n }\n }\n\n &[part~="right-panel"] {\n grid-template:\n "header header" min-content\n "content right" 1fr\n "footer footer" min-content\n / 1fr min-content;\n\n [part="area header"],\n [part="area footer"] {\n --f-page-layout-background: var(--f-background-pageheader-primary);\n --f-page-layout-color: var(--fkds-color-text-inverted);\n }\n\n [part="area right"] {\n --f-page-layout-background: var(--fkds-color-background-secondary);\n --f-page-layout-color: var(--fkds-color-text-primary);\n }\n\n [part="area content"] {\n --f-page-layout-background: var(--fkds-color-background-primary);\n --f-page-layout-color: var(--fkds-color-text-primary);\n }\n }\n\n &[part~="three-column"] {\n grid-template:\n "header header header" min-content\n "left content right" 1fr\n "footer footer footer" min-content\n / min-content 1fr min-content;\n\n [part="area header"],\n [part="area footer"] {\n --f-page-layout-background: var(--f-background-pageheader-primary);\n --f-page-layout-color: var(--fkds-color-text-inverted);\n }\n\n [part="area left"],\n [part="area right"] {\n --f-page-layout-background: var(--fkds-color-background-secondary);\n --f-page-layout-color: var(--fkds-color-text-primary);\n }\n\n [part="area content"] {\n --f-page-layout-background: var(--fkds-color-background-primary);\n --f-page-layout-color: var(--fkds-color-text-primary);\n }\n }\n}\n\n.page-layout__area {\n display: flex;\n position: relative;\n background: var(--f-page-layout-background);\n color: var(--f-page-layout-color);\n\n &[data-direction="column"] {\n flex-direction: column;\n }\n\n &[data-direction="row"] {\n flex-direction: row;\n }\n\n &[data-scroll] {\n overflow-y: auto;\n }\n\n &:empty {\n display: none;\n }\n}\n\n:host ::slotted(*) {\n display: contents;\n}\n';
17019
17045
  const stubLayout = defineLayout({
17020
17046
  name: "",
17021
17047
  areas: {}
@@ -17292,7 +17318,7 @@ const _hoisted_1$7 = {
17292
17318
  class: "progress"
17293
17319
  };
17294
17320
  const _hoisted_2$4 = ["aria-label", "aria-valuenow", "aria-valuetext"];
17295
- const _hoisted_3$2 = {
17321
+ const _hoisted_3$3 = {
17296
17322
  class: "sr-only"
17297
17323
  };
17298
17324
  const MIN_VALUE = 0;
@@ -17363,7 +17389,7 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
17363
17389
  "aria-valuenow": progressValueNow.value,
17364
17390
  "aria-valuetext": progressText.value,
17365
17391
  style: vue.normalizeStyle(cssWidth.value)
17366
- }, [vue.createElementVNode("span", _hoisted_3$2, vue.toDisplayString(progressText.value), 1)], 14, _hoisted_2$4)]);
17392
+ }, [vue.createElementVNode("span", _hoisted_3$3, vue.toDisplayString(progressText.value), 1)], 14, _hoisted_2$4)]);
17367
17393
  };
17368
17394
  }
17369
17395
  });
@@ -17526,7 +17552,7 @@ const _sfc_main$6 = vue.defineComponent({
17526
17552
  });
17527
17553
  const _hoisted_1$6 = ["id", "disabled"];
17528
17554
  const _hoisted_2$3 = ["for"];
17529
- const _hoisted_3$1 = {
17555
+ const _hoisted_3$2 = {
17530
17556
  key: 0,
17531
17557
  class: "radio-button__details"
17532
17558
  };
@@ -17548,7 +17574,7 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
17548
17574
  for: _ctx.id
17549
17575
  }, [vue.renderSlot(_ctx.$slots, "default"), _cache[6] || (_cache[6] = vue.createTextVNode()), _ctx.$slots.details ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, {
17550
17576
  key: 0
17551
- }, [_ctx.showDetails === "always" ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$1, [_cache[1] || (_cache[1] = vue.createElementVNode("br", null, null, -1)), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "details")])) : vue.createCommentVNode("", true), _cache[5] || (_cache[5] = vue.createTextVNode()), _ctx.showDetails === "when-selected" ? (vue.openBlock(), vue.createBlock(vue.Transition, {
17577
+ }, [_ctx.showDetails === "always" ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$2, [_cache[1] || (_cache[1] = vue.createElementVNode("br", null, null, -1)), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "details")])) : vue.createCommentVNode("", true), _cache[5] || (_cache[5] = vue.createTextVNode()), _ctx.showDetails === "when-selected" ? (vue.openBlock(), vue.createBlock(vue.Transition, {
17552
17578
  key: 1,
17553
17579
  onEnter: _ctx.enter,
17554
17580
  onAfterEnter: _ctx.afterEnter,
@@ -17679,7 +17705,7 @@ function computeCssValue(raw, total, auto) {
17679
17705
  return percent * total;
17680
17706
  } else if (raw === "0") {
17681
17707
  return 0;
17682
- } else if (raw === "auto") {
17708
+ } else if (raw === "auto" || raw === "") {
17683
17709
  return auto;
17684
17710
  } else {
17685
17711
  throw new Error(`Cant parse size from "${raw}"`);
@@ -17727,10 +17753,17 @@ function useStorage(options) {
17727
17753
  loaded.value = true;
17728
17754
  });
17729
17755
  }
17730
- const _hoisted_1$5 = ["aria-orientation"];
17756
+ const _hoisted_1$5 = {
17757
+ key: 0,
17758
+ class: "resize__offset"
17759
+ };
17731
17760
  const _hoisted_2$2 = ["aria-orientation"];
17761
+ const _hoisted_3$1 = ["aria-orientation"];
17732
17762
  const STEP_SIZE = 10;
17733
17763
  const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
17764
+ ...{
17765
+ inheritAttrs: false
17766
+ },
17734
17767
  __name: "FResizePane.ce",
17735
17768
  props: {
17736
17769
  disabled: {
@@ -17748,10 +17781,22 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
17748
17781
  initial: {
17749
17782
  default: "50%",
17750
17783
  type: String
17784
+ },
17785
+ overlay: {
17786
+ type: Boolean,
17787
+ default: false
17788
+ },
17789
+ offset: {
17790
+ default: 0,
17791
+ type: Number
17751
17792
  }
17752
17793
  },
17753
- setup(__props) {
17794
+ emits: ["resize"],
17795
+ setup(__props, {
17796
+ emit: __emit
17797
+ }) {
17754
17798
  const props = __props;
17799
+ const emit = __emit;
17755
17800
  const root = vue.shallowRef();
17756
17801
  const content = vue.ref();
17757
17802
  const separator = vue.ref();
@@ -17760,11 +17805,11 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
17760
17805
  max: -1,
17761
17806
  current: -1
17762
17807
  });
17763
- const separatorSize = vue.ref(0);
17764
17808
  const layoutSize = vue.ref(0);
17765
17809
  const storageKey = vue.computed(() => area.value ? `layout/${area.value}/size` : null);
17766
17810
  const {
17767
17811
  attachPanel: attachment,
17812
+ direction,
17768
17813
  area
17769
17814
  } = useAreaData(root);
17770
17815
  useKeyboardHandler({
@@ -17797,11 +17842,11 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
17797
17842
  });
17798
17843
  const minSize = vue.computed(() => {
17799
17844
  const total = layoutSize.value;
17800
- return Math.floor(aggregateCssValue(props.min, total, 0, Math.max) + separatorSize.value);
17845
+ return Math.floor(aggregateCssValue(props.min, total, 0, Math.max));
17801
17846
  });
17802
17847
  const maxSize = vue.computed(() => {
17803
17848
  const total = layoutSize.value;
17804
- return Math.floor(aggregateCssValue(props.max, total, total, Math.min) + separatorSize.value);
17849
+ return Math.max(Math.floor(aggregateCssValue(props.max, total, total, Math.min)), minSize.value);
17805
17850
  });
17806
17851
  const initialSize = vue.computed(() => {
17807
17852
  const total = layoutSize.value;
@@ -17814,6 +17859,9 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
17814
17859
  return "vertical";
17815
17860
  }
17816
17861
  });
17862
+ const classes = vue.computed(() => {
17863
+ return [`resize--${attachment.value}`, `resize--${direction.value}`, props.overlay ? "resize--overlay" : void 0, props.disabled ? "resize--disabled" : void 0];
17864
+ });
17817
17865
  const layoutElement = vue.computed(() => {
17818
17866
  var _host$closest;
17819
17867
  if (!root.value) {
@@ -17823,6 +17871,8 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
17823
17871
  const host = shadow.host;
17824
17872
  return (_host$closest = host.closest("ce-page-layout")) !== null && _host$closest !== void 0 ? _host$closest : void 0;
17825
17873
  });
17874
+ vue.watch(() => props.min, onResize);
17875
+ vue.watch(() => props.max, onResize);
17826
17876
  vue.watchEffect(() => {
17827
17877
  const {
17828
17878
  min,
@@ -17830,23 +17880,23 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
17830
17880
  current: value
17831
17881
  } = state.value;
17832
17882
  if (root.value) {
17833
- root.value.style.setProperty("--size", `${String(value)}px`);
17834
- root.value.style.setProperty("--min", `${min}px`);
17835
- root.value.style.setProperty("--max", `${max}px`);
17883
+ const shadowRoot = root.value.getRootNode();
17884
+ const host = shadowRoot.host;
17885
+ host.style.setProperty("--size", `${String(value)}px`);
17886
+ host.style.setProperty("--min", `${min}px`);
17887
+ host.style.setProperty("--max", `${max}px`);
17888
+ host.style.setProperty("--offset", `${props.offset}px`);
17836
17889
  }
17837
17890
  if (separator.value) {
17838
17891
  separator.value.setAttribute("aria-valuemin", String(Math.floor(min)));
17839
17892
  separator.value.setAttribute("aria-valuemax", String(Math.floor(max)));
17840
17893
  separator.value.setAttribute("aria-valuenow", String(Math.floor(value)));
17841
17894
  }
17895
+ if (value >= 0) {
17896
+ emit("resize", value);
17897
+ }
17842
17898
  });
17843
17899
  vue.onMounted(() => {
17844
- if (separator.value) {
17845
- const {
17846
- flexBasis
17847
- } = getComputedStyle(separator.value);
17848
- separatorSize.value = computeCssValue(flexBasis, 0, 0);
17849
- }
17850
17900
  layoutSize.value = getLayoutSize();
17851
17901
  state.value = {
17852
17902
  min: minSize.value,
@@ -17877,11 +17927,11 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
17877
17927
  }
17878
17928
  }
17879
17929
  return (_ctx, _cache) => {
17880
- return vue.openBlock(), vue.createElementBlock("div", {
17930
+ return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [_ctx.overlay && _ctx.offset ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5)) : vue.createCommentVNode("", true), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.createElementVNode("div", vue.mergeProps({
17881
17931
  ref_key: "root",
17882
17932
  ref: root,
17883
- class: vue.normalizeClass(["resize", `resize--${vue.unref(attachment)}`])
17884
- }, [vue.createElementVNode("div", {
17933
+ class: ["resize", classes.value]
17934
+ }, _ctx.$attrs), [vue.createElementVNode("div", {
17885
17935
  ref_key: "content",
17886
17936
  ref: content,
17887
17937
  class: "resize__content"
@@ -17893,17 +17943,36 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
17893
17943
  class: "resize__handle",
17894
17944
  tabindex: "0",
17895
17945
  "aria-orientation": orientation.value
17896
- }, null, 8, _hoisted_1$5)) : (vue.openBlock(), vue.createElementBlock("div", {
17946
+ }, null, 8, _hoisted_2$2)) : (vue.openBlock(), vue.createElementBlock("div", {
17897
17947
  key: 1,
17898
17948
  role: "separator",
17899
17949
  class: "resize__handle disabled",
17900
17950
  "aria-orientation": orientation.value
17901
- }, null, 8, _hoisted_2$2))], 2);
17951
+ }, null, 8, _hoisted_3$1))], 16)], 64);
17902
17952
  };
17903
17953
  }
17904
17954
  });
17905
- const _style_0 = '/* background color */\n/* highlight color */\n/* the width of the visible handle */\n/* how much extra click/hover area the handle has */\n/* how much extra space the handle occupies when hovering (not counting the click area) */\n/* how long before visually indicating the hover state */\n/* how long the animation for the visual indicator is */\n:host {\n display: contents;\n}\n.resize {\n flex-grow: 1;\n display: flex;\n align-items: stretch;\n}\n.resize--left {\n flex-direction: row;\n width: var(--size);\n}\n.resize--right {\n flex-direction: row-reverse;\n width: var(--size);\n}\n.resize--top {\n flex-direction: column;\n height: var(--size);\n}\n.resize--bottom {\n flex-direction: column-reverse;\n height: var(--size);\n}\n.resize__content {\n flex: 1 1 auto;\n overflow: auto;\n box-sizing: border-box;\n display: flex;\n}\n.resize--left .resize__content, .resize--right .resize__content {\n min-width: calc(var(--min) - 2px);\n max-width: calc(var(--max) - 2px);\n}\n.resize--top .resize__content, .resize--bottom .resize__content {\n min-height: calc(var(--min) - 2px);\n max-height: calc(var(--max) - 2px);\n}\n.resize__handle {\n flex: 0 0 2px;\n background: var(--fkds-color-border-primary);\n touch-action: none;\n user-select: none;\n z-index: 1;\n position: relative;\n transition: z-index 0s 200ms;\n /* disable regular focus indicator as this component has its own */\n /* when focus by keyboard we dont want the delay or transition */\n /* as the handle area expand we increase z-index for the handle to make sure it covers other separators */\n}\n@media (forced-colors: active) {\n.resize__handle {\n background: CanvasText;\n}\n}\n.resize__handle[aria-orientation=horizontal] {\n cursor: row-resize;\n height: 2px;\n}\n.resize__handle[aria-orientation=horizontal]::before {\n inset: -2px 0;\n}\n.resize__handle[aria-orientation=horizontal]::after {\n inset: -4px 0;\n}\n.resize__handle[aria-orientation=vertical] {\n cursor: col-resize;\n width: 2px;\n}\n.resize__handle[aria-orientation=vertical]::before {\n inset: 0 -2px;\n}\n.resize__handle[aria-orientation=vertical]::after {\n inset: 0 -4px;\n}\n.resize__handle::before {\n content: "";\n pointer-events: none;\n position: absolute;\n background-color: transparent;\n transition: background-color 200ms ease-in;\n}\n.resize__handle::after {\n content: "";\n position: absolute;\n}\n.resize__handle:focus::before, .resize__handle:hover::before, .resize__handle.drag::before {\n background-color: var(--fkds-color-action-border-primary-hover);\n transition-delay: 200ms;\n}\n@media (forced-colors: active) {\n.resize__handle:focus::before, .resize__handle:hover::before, .resize__handle.drag::before {\n background-color: Highlight;\n}\n}\n.resize__handle:focus {\n outline: none;\n box-shadow: none;\n}\n.resize__handle:focus::before {\n transition: none;\n}\n.resize__handle:hover, .resize__handle:focus, .resize__handle.drag {\n z-index: 2;\n transition: z-index 0s 0s;\n}\n.resize__handle.disabled {\n cursor: auto;\n}\n.resize__handle.disabled::before {\n display: none;\n}\n.resize--left .resize__handle {\n left: 2px;\n}\n.resize--right .resize__handle {\n right: 2px;\n}\n.resize--top .resize__handle {\n top: 2px;\n}\n.resize--bottom .resize__handle {\n bottom: 2px;\n}';
17955
+ const _style_0 = '/* background color */\n/* highlight color */\n/* the width of the visible handle */\n/* how much extra click/hover area the handle has */\n/* how much extra space the handle occupies when hovering (not counting the click area) */\n/* how long before visually indicating the hover state */\n/* how long the animation for the visual indicator is */\n:host {\n display: contents;\n}\n:host([hidden]) {\n display: none;\n}\n:host ::slotted(*) {\n display: contents;\n}\n.resize {\n flex-grow: 1;\n display: flex;\n align-items: stretch;\n}\n.resize--overlay {\n position: absolute;\n z-index: 1;\n background: var(--f-page-layout-background);\n}\n.resize--left {\n flex-direction: row;\n}\n.resize--left:not(.resize--disabled) {\n width: calc(var(--size) + 2px);\n}\n.resize--left .resize__content {\n flex-direction: row;\n}\n.resize--left.resize--overlay {\n left: 0;\n top: 0;\n bottom: 0;\n}\n.resize--right {\n flex-direction: row-reverse;\n}\n.resize--right:not(.resize--disabled) {\n width: calc(var(--size) + 2px);\n}\n.resize--right .resize__content {\n flex-direction: row;\n}\n.resize--right.resize--overlay {\n right: 0;\n top: 0;\n bottom: 0;\n}\n.resize--top {\n flex-direction: column;\n}\n.resize--top:not(.resize--disabled) {\n height: calc(var(--size) + 2px);\n}\n.resize--bottom {\n flex-direction: column-reverse;\n}\n.resize--bottom:not(.resize--disabled) {\n height: calc(var(--size) + 2px);\n}\n.resize__offset {\n width: calc(var(--offset) + 2px);\n}\n.resize__content {\n flex: 1 1 auto;\n overflow: auto;\n box-sizing: border-box;\n display: flex;\n}\n.resize--column .resize__content {\n flex-direction: column;\n}\n.resize--row .resize__content {\n flex-direction: row;\n}\n.resize--left:not(.resize--disabled) .resize__content, .resize--right:not(.resize--disabled) .resize__content {\n min-width: var(--min);\n max-width: var(--max);\n flex-basis: var(--size);\n}\n.resize--top:not(.resize--disabled) .resize__content, .resize--bottom:not(.resize--disabled) .resize__content {\n min-height: var(--min);\n max-height: var(--max);\n flex-basis: var(--size);\n}\n.resize__handle {\n flex: 0 0 2px;\n background: var(--fkds-color-border-primary);\n touch-action: none;\n user-select: none;\n z-index: 1;\n position: relative;\n transition: z-index 0s 200ms;\n /* disable regular focus indicator as this component has its own */\n /* when focus by keyboard we dont want the delay or transition */\n /* as the handle area expand we increase z-index for the handle to make sure it covers other separators */\n}\n@media (forced-colors: active) {\n.resize__handle {\n background: CanvasText;\n}\n}\n.resize__handle[aria-orientation=horizontal] {\n cursor: row-resize;\n height: 2px;\n}\n.resize__handle[aria-orientation=horizontal]::before {\n inset: -2px 0;\n}\n.resize__handle[aria-orientation=horizontal]::after {\n inset: -4px 0;\n}\n.resize__handle[aria-orientation=vertical] {\n cursor: col-resize;\n width: 2px;\n}\n.resize__handle[aria-orientation=vertical]::before {\n inset: 0 -2px;\n}\n.resize__handle[aria-orientation=vertical]::after {\n inset: 0 -4px;\n}\n.resize__handle::before {\n content: "";\n pointer-events: none;\n position: absolute;\n background-color: transparent;\n transition: background-color 200ms ease-in;\n}\n.resize__handle::after {\n content: "";\n position: absolute;\n}\n.resize__handle:focus::before, .resize__handle:hover::before, .resize__handle.drag::before {\n background-color: var(--fkds-color-action-border-primary-hover);\n transition-delay: 200ms;\n}\n@media (forced-colors: active) {\n.resize__handle:focus::before, .resize__handle:hover::before, .resize__handle.drag::before {\n background-color: Highlight;\n}\n}\n.resize__handle:focus {\n outline: none;\n box-shadow: none;\n}\n.resize__handle:focus::before {\n transition: none;\n}\n.resize__handle:hover, .resize__handle:focus, .resize__handle.drag {\n z-index: 2;\n transition: z-index 0s 0s;\n}\n.resize__handle.disabled {\n cursor: auto;\n}\n.resize__handle.disabled::before {\n display: none;\n}';
17906
17956
  const FResizePane = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["styles", [_style_0]]]);
17957
+ const injectionKey = Symbol("FResizePane");
17958
+ function useResize(options = {}) {
17959
+ const api = vue.inject(injectionKey, {
17960
+ register() {
17961
+ return () => void 0;
17962
+ },
17963
+ size: vue.ref(0)
17964
+ });
17965
+ const unregister = api.register({
17966
+ enabled: options.enabled,
17967
+ visible: options.visible,
17968
+ overlay: options.overlay,
17969
+ offset: options.offset
17970
+ });
17971
+ vue.onUnmounted(unregister);
17972
+ return {
17973
+ size: api.size
17974
+ };
17975
+ }
17907
17976
  const _hoisted_1$4 = {
17908
17977
  slot: "content"
17909
17978
  };
@@ -17911,10 +17980,6 @@ const tagName = "ce-resize-pane";
17911
17980
  const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
17912
17981
  __name: "FResizePane",
17913
17982
  props: {
17914
- disabled: {
17915
- type: Boolean,
17916
- default: false
17917
- },
17918
17983
  min: {
17919
17984
  default: "0"
17920
17985
  },
@@ -17929,12 +17994,83 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
17929
17994
  if (!customElements.get(tagName)) {
17930
17995
  customElements.define(tagName, vue.defineCustomElement(FResizePane));
17931
17996
  }
17997
+ const anyEnabled = vue.ref(true);
17998
+ const anyVisible = vue.ref(true);
17999
+ const anyOverlay = vue.ref(false);
18000
+ const size = vue.ref(-1);
18001
+ const offset2 = vue.ref(0);
18002
+ let components = [];
18003
+ let n = 0;
18004
+ function any(src, predicate) {
18005
+ return src.length === 0 || src.some(predicate);
18006
+ }
18007
+ vue.provide(injectionKey, {
18008
+ register(options) {
18009
+ const component = {
18010
+ ...options,
18011
+ id: n++
18012
+ };
18013
+ components.push(component);
18014
+ const scope = vue.effectScope();
18015
+ scope.run(() => {
18016
+ vue.watchEffect(() => {
18017
+ anyEnabled.value = any(components, (it) => {
18018
+ var _a;
18019
+ var _it$enabled$value;
18020
+ return (_it$enabled$value = (_a = it.enabled) == null ? void 0 : _a.value) !== null && _it$enabled$value !== void 0 ? _it$enabled$value : true;
18021
+ });
18022
+ });
18023
+ vue.watchEffect(() => {
18024
+ anyVisible.value = any(components, (it) => {
18025
+ var _a;
18026
+ var _it$visible$value;
18027
+ return (_it$visible$value = (_a = it.visible) == null ? void 0 : _a.value) !== null && _it$visible$value !== void 0 ? _it$visible$value : true;
18028
+ });
18029
+ });
18030
+ vue.watchEffect(() => {
18031
+ anyOverlay.value = any(components, (it) => {
18032
+ var _a;
18033
+ var _it$overlay$value;
18034
+ return (_it$overlay$value = (_a = it.overlay) == null ? void 0 : _a.value) !== null && _it$overlay$value !== void 0 ? _it$overlay$value : false;
18035
+ });
18036
+ });
18037
+ vue.watchEffect(() => {
18038
+ if (components.length === 0) {
18039
+ return 0;
18040
+ }
18041
+ const offsets = components.map((it) => {
18042
+ var _a;
18043
+ return (_a = it.offset) == null ? void 0 : _a.value;
18044
+ }).filter((it) => typeof it === "number");
18045
+ offset2.value = Math.max(0, ...offsets);
18046
+ });
18047
+ });
18048
+ return () => {
18049
+ components = components.filter((it) => it.id !== component.id);
18050
+ scope.stop();
18051
+ };
18052
+ },
18053
+ size
18054
+ });
18055
+ const disabled = vue.computed(() => anyEnabled.value === false);
18056
+ const hidden = vue.computed(() => anyVisible.value === false);
18057
+ const overlay = vue.computed(() => anyOverlay.value === true);
17932
18058
  const props = __props;
18059
+ function onResize(event) {
18060
+ size.value = event.detail[0];
18061
+ }
17933
18062
  return (_ctx, _cache) => {
17934
- return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(tagName), vue.normalizeProps(vue.guardReactiveProps(props)), {
18063
+ return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(tagName), vue.mergeProps({
18064
+ disabled: disabled.value,
18065
+ hidden: hidden.value,
18066
+ overlay: overlay.value,
18067
+ offset: offset2.value
18068
+ }, props, {
18069
+ onResize
18070
+ }), {
17935
18071
  default: vue.withCtx(() => [vue.createElementVNode("div", _hoisted_1$4, [vue.renderSlot(_ctx.$slots, "default")])]),
17936
18072
  _: 3
17937
- }, 16);
18073
+ }, 16, ["disabled", "hidden", "overlay", "offset"]);
17938
18074
  };
17939
18075
  }
17940
18076
  });
@@ -18372,6 +18508,10 @@ const _sfc_main = vue.defineComponent({
18372
18508
  mixins: [TranslationMixin],
18373
18509
  inheritAttrs: true,
18374
18510
  props: {
18511
+ /**
18512
+ * The title of the wizard step.
18513
+ * This will be displayed as the step's header.
18514
+ */
18375
18515
  title: {
18376
18516
  type: String,
18377
18517
  required: true
@@ -18769,7 +18909,7 @@ exports.FSelectField = FSelectField;
18769
18909
  exports.FSortFilterDataset = _sfc_main$s;
18770
18910
  exports.FSortFilterDatasetInjected = FSortFilterDatasetInjected;
18771
18911
  exports.FStaticField = FStaticField;
18772
- exports.FTableColumn = FTableColumn;
18912
+ exports.FTableColumn = _sfc_main$J;
18773
18913
  exports.FTableColumnSize = FTableColumnSize;
18774
18914
  exports.FTableColumnSort = FTableColumnSort;
18775
18915
  exports.FTableColumnType = FTableColumnType;
@@ -18850,6 +18990,7 @@ exports.tooltipAttachTo = tooltipAttachTo;
18850
18990
  exports.useAreaData = useAreaData;
18851
18991
  exports.useCombobox = useCombobox;
18852
18992
  exports.useModal = useModal;
18993
+ exports.useResize = useResize;
18853
18994
  exports.useSlotUtils = useSlotUtils;
18854
18995
  exports.useTextFieldSetup = useTextFieldSetup;
18855
18996
  exports.useTranslate = useTranslate;