@fkui/vue 5.46.1 → 6.0.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.
@@ -4,7 +4,7 @@ const vue = require("vue");
4
4
  const logic = require("@fkui/logic");
5
5
  const date = require("@fkui/date");
6
6
  const statuses = ["default", "warning", "error", "success", "info"];
7
- const _sfc_main$1f = /* @__PURE__ */ vue.defineComponent({
7
+ const _sfc_main$1b = /* @__PURE__ */ vue.defineComponent({
8
8
  __name: "FBadge",
9
9
  props: {
10
10
  /**
@@ -1322,7 +1322,7 @@ function requireEs_array_push() {
1322
1322
  requireEs_array_push();
1323
1323
  const Flip = ["horizontal", "vertical"];
1324
1324
  const Rotate = ["90", "180", "270"];
1325
- const _sfc_main$1e = vue.defineComponent({
1325
+ const _sfc_main$1a = vue.defineComponent({
1326
1326
  name: "FIcon",
1327
1327
  inheritAttrs: false,
1328
1328
  props: {
@@ -1410,18 +1410,18 @@ const _export_sfc = (sfc, props) => {
1410
1410
  }
1411
1411
  return target;
1412
1412
  };
1413
- const _hoisted_1$W = ["aria-hidden"];
1414
- const _hoisted_2$H = ["xlink:href"];
1415
- function _sfc_render$10(_ctx, _cache, $props, $setup, $data, $options) {
1413
+ const _hoisted_1$U = ["aria-hidden"];
1414
+ const _hoisted_2$F = ["xlink:href"];
1415
+ function _sfc_render$W(_ctx, _cache, $props, $setup, $data, $options) {
1416
1416
  return vue.openBlock(), vue.createElementBlock("svg", vue.mergeProps(_ctx.$attrs, {
1417
1417
  focusable: "false",
1418
1418
  class: ["icon", [_ctx.spriteKey, ..._ctx.modifiers]],
1419
1419
  "aria-hidden": _ctx.ariaHidden
1420
1420
  }), [vue.renderSlot(_ctx.$slots, "default"), _cache[0] || (_cache[0] = vue.createTextVNode()), vue.createElementVNode("use", {
1421
1421
  "xlink:href": _ctx.spriteId
1422
- }, null, 8, _hoisted_2$H)], 16, _hoisted_1$W);
1422
+ }, null, 8, _hoisted_2$F)], 16, _hoisted_1$U);
1423
1423
  }
1424
- const FIcon = /* @__PURE__ */ _export_sfc(_sfc_main$1e, [["render", _sfc_render$10]]);
1424
+ const FIcon = /* @__PURE__ */ _export_sfc(_sfc_main$1a, [["render", _sfc_render$W]]);
1425
1425
  const DATA_TEST_ATTRIBUTE_NAME = "data-test";
1426
1426
  function throwErrorIfEmpty(value) {
1427
1427
  if (!value) {
@@ -3350,56 +3350,6 @@ const scrollClasses = {
3350
3350
  function tableScrollClasses(val) {
3351
3351
  return scrollClasses[val];
3352
3352
  }
3353
- const defaultOptions = {
3354
- stripClasses: ["sr-only"]
3355
- };
3356
- function collapseWhitespace(text) {
3357
- return text.replace(/\s+/gm, " ").replace(/(^ | $)/g, "");
3358
- }
3359
- function intersection(a, b) {
3360
- return a.filter((it) => b.includes(it));
3361
- }
3362
- function excludeClass(exclude) {
3363
- return (node) => {
3364
- var _a;
3365
- if (typeof ((_a = node.props) == null ? void 0 : _a.class) !== "string") {
3366
- return true;
3367
- }
3368
- const classes = node.props.class.split(/\s+/);
3369
- const matches = intersection(classes, exclude);
3370
- return matches.length === 0;
3371
- };
3372
- }
3373
- function excludeComment(node) {
3374
- return node.type !== vue.Comment;
3375
- }
3376
- function getTextContent(children, options) {
3377
- return children.filter(vue.isVNode).filter(excludeComment).filter(excludeClass(options.stripClasses)).map((child) => {
3378
- if (Array.isArray(child.children)) {
3379
- return getTextContent(child.children, options);
3380
- }
3381
- if (typeof child.children === "string") {
3382
- return child.children;
3383
- }
3384
- }).join("");
3385
- }
3386
- function renderSlotText(render, props = {}, options) {
3387
- if (!render) {
3388
- return void 0;
3389
- }
3390
- const nodes = render(props);
3391
- if (nodes.length === 0) {
3392
- return void 0;
3393
- }
3394
- return collapseWhitespace(getTextContent(nodes, {
3395
- ...defaultOptions,
3396
- ...options
3397
- }));
3398
- }
3399
- function getTextFromScopedSlot(slot) {
3400
- var _renderSlotText;
3401
- return (_renderSlotText = renderSlotText(slot)) !== null && _renderSlotText !== void 0 ? _renderSlotText : "";
3402
- }
3403
3353
  function dispatchComponentValidityEvent(element, detail) {
3404
3354
  element.dispatchEvent(new CustomEvent("component-validity", {
3405
3355
  detail,
@@ -3508,10 +3458,7 @@ function getHTMLElementFromVueRef(ref) {
3508
3458
  }
3509
3459
  function lazyLoad(fn2) {
3510
3460
  let cache;
3511
- return () => {
3512
- var _cache;
3513
- return (_cache = cache) !== null && _cache !== void 0 ? _cache : cache = fn2();
3514
- };
3461
+ return () => cache !== null && cache !== void 0 ? cache : cache = fn2();
3515
3462
  }
3516
3463
  const eventTarget = lazyLoad(() => new EventTarget());
3517
3464
  const fn = /* @__PURE__ */ new Map();
@@ -3542,10 +3489,8 @@ var FKUIConfigButtonOrder = /* @__PURE__ */ ((FKUIConfigButtonOrder2) => {
3542
3489
  let popupContainer = document.body;
3543
3490
  let production = true;
3544
3491
  const config = {
3545
- buttonOrder: FKUIConfigButtonOrder.LEFT_TO_RIGHT,
3492
+ buttonOrder: FKUIConfigButtonOrder.RIGHT_TO_LEFT,
3546
3493
  teleportTarget: document.body,
3547
- modalTarget: null,
3548
- popupTarget: null,
3549
3494
  get popupContainer() {
3550
3495
  if (typeof popupContainer === "string") {
3551
3496
  const element = document.querySelector(popupContainer);
@@ -3648,7 +3593,6 @@ function unpackPayload(event, src) {
3648
3593
  };
3649
3594
  }
3650
3595
  function openModal(callingInstance, Component, options) {
3651
- var _config$modalTarget;
3652
3596
  if (typeof options === "string") {
3653
3597
  return openModal(callingInstance, Component, {
3654
3598
  props: {
@@ -3657,7 +3601,7 @@ function openModal(callingInstance, Component, options) {
3657
3601
  });
3658
3602
  }
3659
3603
  const defaultOptions2 = {
3660
- attachTo: (_config$modalTarget = config.modalTarget) !== null && _config$modalTarget !== void 0 ? _config$modalTarget : config.teleportTarget,
3604
+ attachTo: config.teleportTarget,
3661
3605
  props: {}
3662
3606
  };
3663
3607
  const {
@@ -3743,7 +3687,7 @@ function elementIsRadioButton(element) {
3743
3687
  function isHTMLInputElement(element) {
3744
3688
  return element instanceof HTMLInputElement;
3745
3689
  }
3746
- const _sfc_main$1d = vue.defineComponent({
3690
+ const _sfc_main$19 = vue.defineComponent({
3747
3691
  name: "FModal",
3748
3692
  components: {
3749
3693
  FIcon
@@ -3923,14 +3867,14 @@ const _sfc_main$1d = vue.defineComponent({
3923
3867
  }
3924
3868
  }
3925
3869
  });
3926
- const _hoisted_1$V = ["id"];
3927
- const _hoisted_2$G = {
3870
+ const _hoisted_1$T = ["id"];
3871
+ const _hoisted_2$E = {
3928
3872
  class: "modal__backdrop"
3929
3873
  };
3930
- const _hoisted_3$x = {
3874
+ const _hoisted_3$w = {
3931
3875
  class: "modal__inner-container"
3932
3876
  };
3933
- const _hoisted_4$r = {
3877
+ const _hoisted_4$q = {
3934
3878
  class: "modal__dialog"
3935
3879
  };
3936
3880
  const _hoisted_5$l = {
@@ -3939,13 +3883,13 @@ const _hoisted_5$l = {
3939
3883
  const _hoisted_6$g = {
3940
3884
  class: "modal__header"
3941
3885
  };
3942
- const _hoisted_7$e = {
3886
+ const _hoisted_7$d = {
3943
3887
  key: 0,
3944
3888
  ref: "modalTitle",
3945
3889
  class: "modal__title",
3946
3890
  tabindex: "-1"
3947
3891
  };
3948
- const _hoisted_8$9 = {
3892
+ const _hoisted_8$8 = {
3949
3893
  ref: "modalContent",
3950
3894
  class: "modal__content",
3951
3895
  tabindex: "-1"
@@ -3957,25 +3901,25 @@ const _hoisted_10$4 = {
3957
3901
  class: "modal__shelf"
3958
3902
  };
3959
3903
  const _hoisted_11$3 = ["aria-label"];
3960
- function _sfc_render$$(_ctx, _cache, $props, $setup, $data, $options) {
3904
+ function _sfc_render$V(_ctx, _cache, $props, $setup, $data, $options) {
3961
3905
  const _component_f_icon = vue.resolveComponent("f-icon");
3962
3906
  return _ctx.isOpen ? (vue.openBlock(), vue.createElementBlock("div", {
3963
3907
  key: 0,
3964
3908
  id: _ctx.id,
3965
3909
  class: vue.normalizeClass(["modal", _ctx.modalClass])
3966
- }, [vue.createElementVNode("div", _hoisted_2$G, [vue.createElementVNode("div", {
3910
+ }, [vue.createElementVNode("div", _hoisted_2$E, [vue.createElementVNode("div", {
3967
3911
  class: "modal__outer-container scroll-target",
3968
3912
  tabindex: "-1",
3969
3913
  role: "dialog",
3970
3914
  "aria-modal": "true",
3971
3915
  onKeyup: _cache[3] || (_cache[3] = vue.withKeys((...args) => _ctx.onClose && _ctx.onClose(...args), ["esc"]))
3972
- }, [vue.createElementVNode("div", _hoisted_3$x, [vue.createElementVNode("div", {
3916
+ }, [vue.createElementVNode("div", _hoisted_3$w, [vue.createElementVNode("div", {
3973
3917
  ref: "modalDialogContainer",
3974
3918
  class: vue.normalizeClass(["modal__dialog-container", _ctx.containerClasses])
3975
- }, [vue.createElementVNode("div", _hoisted_4$r, [vue.createElementVNode("div", _hoisted_5$l, [vue.createElementVNode("div", _hoisted_6$g, [vue.createElementVNode("div", {
3919
+ }, [vue.createElementVNode("div", _hoisted_4$q, [vue.createElementVNode("div", _hoisted_5$l, [vue.createElementVNode("div", _hoisted_6$g, [vue.createElementVNode("div", {
3976
3920
  tabindex: "0",
3977
3921
  onFocus: _cache[0] || (_cache[0] = (...args) => _ctx.onFocusFirst && _ctx.onFocusFirst(...args))
3978
- }, null, 32), _cache[4] || (_cache[4] = vue.createTextVNode()), _ctx.hasHeaderSlot ? (vue.openBlock(), vue.createElementBlock("h1", _hoisted_7$e, [vue.renderSlot(_ctx.$slots, "header")], 512)) : vue.createCommentVNode("", true)]), _cache[5] || (_cache[5] = vue.createTextVNode()), vue.createElementVNode("div", _hoisted_8$9, [vue.renderSlot(_ctx.$slots, "content")], 512), _cache[6] || (_cache[6] = vue.createTextVNode()), vue.createElementVNode("div", _hoisted_9$6, [vue.renderSlot(_ctx.$slots, "footer")])]), _cache[9] || (_cache[9] = vue.createTextVNode()), vue.createElementVNode("div", _hoisted_10$4, [vue.createElementVNode("button", {
3922
+ }, null, 32), _cache[4] || (_cache[4] = vue.createTextVNode()), _ctx.hasHeaderSlot ? (vue.openBlock(), vue.createElementBlock("h1", _hoisted_7$d, [vue.renderSlot(_ctx.$slots, "header")], 512)) : vue.createCommentVNode("", true)]), _cache[5] || (_cache[5] = vue.createTextVNode()), vue.createElementVNode("div", _hoisted_8$8, [vue.renderSlot(_ctx.$slots, "content")], 512), _cache[6] || (_cache[6] = vue.createTextVNode()), vue.createElementVNode("div", _hoisted_9$6, [vue.renderSlot(_ctx.$slots, "footer")])]), _cache[9] || (_cache[9] = vue.createTextVNode()), vue.createElementVNode("div", _hoisted_10$4, [vue.createElementVNode("button", {
3979
3923
  type: "button",
3980
3924
  class: "close-button",
3981
3925
  "aria-label": _ctx.ariaCloseText,
@@ -3985,9 +3929,9 @@ function _sfc_render$$(_ctx, _cache, $props, $setup, $data, $options) {
3985
3929
  })], 8, _hoisted_11$3), _cache[8] || (_cache[8] = vue.createTextVNode()), vue.createElementVNode("div", {
3986
3930
  tabindex: "0",
3987
3931
  onFocus: _cache[2] || (_cache[2] = (...args) => _ctx.onFocusLast && _ctx.onFocusLast(...args))
3988
- }, null, 32)])])], 2)])], 32)])], 10, _hoisted_1$V)) : vue.createCommentVNode("", true);
3932
+ }, null, 32)])])], 2)])], 32)])], 10, _hoisted_1$T)) : vue.createCommentVNode("", true);
3989
3933
  }
3990
- const FModal = /* @__PURE__ */ _export_sfc(_sfc_main$1d, [["render", _sfc_render$$]]);
3934
+ const FModal = /* @__PURE__ */ _export_sfc(_sfc_main$19, [["render", _sfc_render$V]]);
3991
3935
  function prepareButtonList(src, buttonOrder = config.buttonOrder) {
3992
3936
  const list = src.map((it) => {
3993
3937
  var _it$event, _ref, _it$reason, _it$type;
@@ -4016,7 +3960,7 @@ const defaultButtons = [{
4016
3960
  event: "dismiss",
4017
3961
  type: "secondary"
4018
3962
  }];
4019
- const _sfc_main$1c = vue.defineComponent({
3963
+ const _sfc_main$18 = vue.defineComponent({
4020
3964
  name: "FConfirmModal",
4021
3965
  components: {
4022
3966
  FModal
@@ -4120,15 +4064,15 @@ const _sfc_main$1c = vue.defineComponent({
4120
4064
  }
4121
4065
  }
4122
4066
  });
4123
- const _hoisted_1$U = {
4067
+ const _hoisted_1$S = {
4124
4068
  class: "button-group"
4125
4069
  };
4126
- const _hoisted_2$F = ["onClick"];
4127
- const _hoisted_3$w = {
4070
+ const _hoisted_2$D = ["onClick"];
4071
+ const _hoisted_3$v = {
4128
4072
  key: 0,
4129
4073
  class: "sr-only"
4130
4074
  };
4131
- function _sfc_render$_(_ctx, _cache, $props, $setup, $data, $options) {
4075
+ function _sfc_render$U(_ctx, _cache, $props, $setup, $data, $options) {
4132
4076
  const _component_f_modal = vue.resolveComponent("f-modal");
4133
4077
  return vue.openBlock(), vue.createBlock(_component_f_modal, {
4134
4078
  fullscreen: _ctx.fullscreen,
@@ -4141,22 +4085,22 @@ function _sfc_render$_(_ctx, _cache, $props, $setup, $data, $options) {
4141
4085
  }, {
4142
4086
  header: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "heading", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.heading), 1)])]),
4143
4087
  content: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "content", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.content), 1)])]),
4144
- footer: vue.withCtx(() => [vue.createElementVNode("div", _hoisted_1$U, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.preparedButtons, (button) => {
4088
+ footer: vue.withCtx(() => [vue.createElementVNode("div", _hoisted_1$S, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.preparedButtons, (button) => {
4145
4089
  return vue.openBlock(), vue.createElementBlock("button", {
4146
4090
  key: button.label,
4147
4091
  type: "button",
4148
4092
  class: vue.normalizeClass([button.classlist, "button-group__item"]),
4149
4093
  onClick: ($event) => _ctx.onClick(button)
4150
- }, [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$F);
4094
+ }, [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$D);
4151
4095
  }), 128))])]),
4152
4096
  _: 3
4153
4097
  }, 8, ["fullscreen", "is-open", "aria-close-text", "size", "focus", "onClose"]);
4154
4098
  }
4155
- const FConfirmModal = /* @__PURE__ */ _export_sfc(_sfc_main$1c, [["render", _sfc_render$_]]);
4099
+ const FConfirmModal = /* @__PURE__ */ _export_sfc(_sfc_main$18, [["render", _sfc_render$U]]);
4156
4100
  const GAP = ["1x", "2x", "3x", "4x", "5x", "6x", "7x", "8x"];
4157
4101
  const ALIGNMENT = ["top", "center", "bottom"];
4158
4102
  const FLOAT = ["left", "center", "right"];
4159
- const _sfc_main$1b = vue.defineComponent({
4103
+ const _sfc_main$17 = vue.defineComponent({
4160
4104
  name: "IFlex",
4161
4105
  inheritAttrs: true,
4162
4106
  props: {
@@ -4231,13 +4175,13 @@ const _sfc_main$1b = vue.defineComponent({
4231
4175
  }
4232
4176
  }
4233
4177
  });
4234
- function _sfc_render$Z(_ctx, _cache, $props, $setup, $data, $options) {
4178
+ function _sfc_render$T(_ctx, _cache, $props, $setup, $data, $options) {
4235
4179
  return vue.openBlock(), vue.createElementBlock("div", {
4236
4180
  class: vue.normalizeClass(["iflex", _ctx.classList])
4237
4181
  }, [vue.renderSlot(_ctx.$slots, "default")], 2);
4238
4182
  }
4239
- const IFlex = /* @__PURE__ */ _export_sfc(_sfc_main$1b, [["render", _sfc_render$Z]]);
4240
- const _sfc_main$1a = vue.defineComponent({
4183
+ const IFlex = /* @__PURE__ */ _export_sfc(_sfc_main$17, [["render", _sfc_render$T]]);
4184
+ const _sfc_main$16 = vue.defineComponent({
4241
4185
  name: "IFlexItem",
4242
4186
  inheritAttrs: true,
4243
4187
  props: {
@@ -4284,12 +4228,12 @@ const _sfc_main$1a = vue.defineComponent({
4284
4228
  }
4285
4229
  }
4286
4230
  });
4287
- function _sfc_render$Y(_ctx, _cache, $props, $setup, $data, $options) {
4231
+ function _sfc_render$S(_ctx, _cache, $props, $setup, $data, $options) {
4288
4232
  return vue.openBlock(), vue.createElementBlock("div", {
4289
4233
  class: vue.normalizeClass(["iflex__item", _ctx.classList])
4290
4234
  }, [vue.renderSlot(_ctx.$slots, "default")], 2);
4291
4235
  }
4292
- const IFlexItem = /* @__PURE__ */ _export_sfc(_sfc_main$1a, [["render", _sfc_render$Y]]);
4236
+ const IFlexItem = /* @__PURE__ */ _export_sfc(_sfc_main$16, [["render", _sfc_render$S]]);
4293
4237
  function focusError(item) {
4294
4238
  const element = document.querySelector(`#${item.id}`);
4295
4239
  if (!element) {
@@ -4299,7 +4243,7 @@ function focusError(item) {
4299
4243
  logic.scrollTo(element, window.innerHeight * 0.25);
4300
4244
  logic.focus(focusElement2 ? focusElement2 : element);
4301
4245
  }
4302
- const _sfc_main$19 = vue.defineComponent({
4246
+ const _sfc_main$15 = vue.defineComponent({
4303
4247
  name: "FErrorList",
4304
4248
  components: {
4305
4249
  FIcon,
@@ -4355,24 +4299,24 @@ const _sfc_main$19 = vue.defineComponent({
4355
4299
  }
4356
4300
  }
4357
4301
  });
4358
- const _hoisted_1$T = {
4302
+ const _hoisted_1$R = {
4359
4303
  class: "error-list"
4360
4304
  };
4361
- const _hoisted_2$E = {
4305
+ const _hoisted_2$C = {
4362
4306
  key: 0
4363
4307
  };
4364
- const _hoisted_3$v = {
4308
+ const _hoisted_3$u = {
4365
4309
  class: "error-list__list error-list--list-style-none"
4366
4310
  };
4367
- const _hoisted_4$q = ["onClick"];
4311
+ const _hoisted_4$p = ["onClick"];
4368
4312
  const _hoisted_5$k = {
4369
4313
  class: "error-list__link"
4370
4314
  };
4371
- function _sfc_render$X(_ctx, _cache, $props, $setup, $data, $options) {
4315
+ function _sfc_render$R(_ctx, _cache, $props, $setup, $data, $options) {
4372
4316
  const _component_f_icon = vue.resolveComponent("f-icon");
4373
4317
  const _component_i_flex_item = vue.resolveComponent("i-flex-item");
4374
4318
  const _component_i_flex = vue.resolveComponent("i-flex");
4375
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$T, [vue.createVNode(_component_i_flex, null, {
4319
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$R, [vue.createVNode(_component_i_flex, null, {
4376
4320
  default: vue.withCtx(() => [_ctx.hasTitleSlot ? (vue.openBlock(), vue.createBlock(_component_i_flex_item, {
4377
4321
  key: 0,
4378
4322
  shrink: ""
@@ -4391,7 +4335,7 @@ function _sfc_render$X(_ctx, _cache, $props, $setup, $data, $options) {
4391
4335
  })) : vue.createCommentVNode("", true), _cache[7] || (_cache[7] = vue.createTextVNode()), vue.createVNode(_component_i_flex_item, {
4392
4336
  grow: ""
4393
4337
  }, {
4394
- default: vue.withCtx(() => [_ctx.hasTitleSlot ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$E, [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) => {
4338
+ default: vue.withCtx(() => [_ctx.hasTitleSlot ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$C, [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) => {
4395
4339
  return vue.openBlock(), vue.createElementBlock("li", {
4396
4340
  key: item.id,
4397
4341
  class: vue.normalizeClass(_ctx.liClasses(item))
@@ -4406,7 +4350,7 @@ function _sfc_render$X(_ctx, _cache, $props, $setup, $data, $options) {
4406
4350
  "aria-hidden": "true"
4407
4351
  }, null, -1)), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_5$k, vue.toDisplayString(item.title), 1)], 64)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, {
4408
4352
  key: 1
4409
- }, [vue.createTextVNode(vue.toDisplayString(item.title), 1)], 64))], 8, _hoisted_4$q)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, {
4353
+ }, [vue.createTextVNode(vue.toDisplayString(item.title), 1)], 64))], 8, _hoisted_4$p)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, {
4410
4354
  key: 1
4411
4355
  }, [_ctx.bullets ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, {
4412
4356
  key: 0
@@ -4422,7 +4366,7 @@ function _sfc_render$X(_ctx, _cache, $props, $setup, $data, $options) {
4422
4366
  _: 3
4423
4367
  })]);
4424
4368
  }
4425
- const FErrorList = /* @__PURE__ */ _export_sfc(_sfc_main$19, [["render", _sfc_render$X]]);
4369
+ const FErrorList = /* @__PURE__ */ _export_sfc(_sfc_main$15, [["render", _sfc_render$R]]);
4426
4370
  function cleanUpElements(vm) {
4427
4371
  return new Promise((resolve) => {
4428
4372
  window.setTimeout(() => {
@@ -4436,22 +4380,7 @@ function cleanUpElements(vm) {
4436
4380
  }, 0);
4437
4381
  });
4438
4382
  }
4439
- function sortComponentsWithErrorsOnDOMOrder(componentList) {
4440
- const errorList = Object.values(componentList).filter((component) => {
4441
- const validity = component instanceof logic.Reference ? component.ref.isValid : component.validityMode;
4442
- return typeof validity === "boolean" ? validity === false : validity === "ERROR";
4443
- });
4444
- errorList.sort((a, b) => {
4445
- const elementToCompareA = a instanceof logic.Reference ? document.querySelector(`#${a.ref.id}`) : a.target;
4446
- const elementToCompareB = b instanceof logic.Reference ? document.querySelector(`#${b.ref.id}`) : b.target;
4447
- return logic.documentOrderComparator(elementToCompareA, elementToCompareB);
4448
- });
4449
- return errorList;
4450
- }
4451
- function isFormStepReference(reference) {
4452
- return "isOpen" in reference.ref;
4453
- }
4454
- const _sfc_main$18 = vue.defineComponent({
4383
+ const _sfc_main$14 = vue.defineComponent({
4455
4384
  name: "FValidationGroup",
4456
4385
  props: {
4457
4386
  /**
@@ -4521,19 +4450,19 @@ const _sfc_main$18 = vue.defineComponent({
4521
4450
  }
4522
4451
  }
4523
4452
  });
4524
- function _sfc_render$W(_ctx, _cache, $props, $setup, $data, $options) {
4453
+ function _sfc_render$Q(_ctx, _cache, $props, $setup, $data, $options) {
4525
4454
  return vue.openBlock(), vue.createElementBlock("div", {
4526
4455
  onComponentValidity: _cache[0] || (_cache[0] = (...args) => _ctx.onComponentValidity && _ctx.onComponentValidity(...args)),
4527
4456
  onComponentUnmount: _cache[1] || (_cache[1] = (...args) => _ctx.onComponentUnmount && _ctx.onComponentUnmount(...args))
4528
4457
  }, [vue.renderSlot(_ctx.$slots, "default")], 32);
4529
4458
  }
4530
- const FValidationGroup = /* @__PURE__ */ _export_sfc(_sfc_main$18, [["render", _sfc_render$W]]);
4459
+ const FValidationGroup = /* @__PURE__ */ _export_sfc(_sfc_main$14, [["render", _sfc_render$Q]]);
4531
4460
  var FValidationFormAction = /* @__PURE__ */ ((FValidationFormAction2) => {
4532
4461
  FValidationFormAction2[FValidationFormAction2["CONTINUE"] = 0] = "CONTINUE";
4533
4462
  FValidationFormAction2[FValidationFormAction2["CANCEL"] = 1] = "CANCEL";
4534
4463
  return FValidationFormAction2;
4535
4464
  })(FValidationFormAction || {});
4536
- const _sfc_main$17 = vue.defineComponent({
4465
+ const _sfc_main$13 = vue.defineComponent({
4537
4466
  name: "FValidationForm",
4538
4467
  components: {
4539
4468
  FValidationGroup,
@@ -4672,14 +4601,14 @@ const _sfc_main$17 = vue.defineComponent({
4672
4601
  }
4673
4602
  }
4674
4603
  });
4675
- const _hoisted_1$S = ["id"];
4676
- const _hoisted_2$D = {
4604
+ const _hoisted_1$Q = ["id"];
4605
+ const _hoisted_2$B = {
4677
4606
  key: 0,
4678
4607
  ref: "errors",
4679
4608
  tabindex: "-1",
4680
4609
  role: "group"
4681
4610
  };
4682
- function _sfc_render$V(_ctx, _cache, $props, $setup, $data, $options) {
4611
+ function _sfc_render$P(_ctx, _cache, $props, $setup, $data, $options) {
4683
4612
  const _component_f_error_list = vue.resolveComponent("f-error-list");
4684
4613
  const _component_f_validation_group = vue.resolveComponent("f-validation-group");
4685
4614
  return vue.openBlock(), vue.createBlock(_component_f_validation_group, {
@@ -4694,19 +4623,19 @@ function _sfc_render$V(_ctx, _cache, $props, $setup, $data, $options) {
4694
4623
  novalidate: "",
4695
4624
  autocomplete: "off",
4696
4625
  onSubmit: _cache[0] || (_cache[0] = vue.withModifiers((...args) => _ctx.onSubmit && _ctx.onSubmit(...args), ["prevent"]))
4697
- }), [_ctx.displayErrors ? (vue.openBlock(), vue.createElementBlock("nav", _hoisted_2$D, [vue.createVNode(_component_f_error_list, {
4626
+ }), [_ctx.displayErrors ? (vue.openBlock(), vue.createElementBlock("nav", _hoisted_2$B, [vue.createVNode(_component_f_error_list, {
4698
4627
  items: _ctx.errors,
4699
4628
  bullets: _ctx.errorListBullets,
4700
4629
  "before-navigate": _ctx.errorListBeforeNavigate
4701
4630
  }, {
4702
4631
  title: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "error-message")]),
4703
4632
  _: 3
4704
- }, 8, ["items", "bullets", "before-navigate"])], 512)) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "default")], 16, _hoisted_1$S)]),
4633
+ }, 8, ["items", "bullets", "before-navigate"])], 512)) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "default")], 16, _hoisted_1$Q)]),
4705
4634
  _: 3
4706
4635
  }, 8, ["modelValue"]);
4707
4636
  }
4708
- const FValidationForm = /* @__PURE__ */ _export_sfc(_sfc_main$17, [["render", _sfc_render$V]]);
4709
- const _sfc_main$16 = vue.defineComponent({
4637
+ const FValidationForm = /* @__PURE__ */ _export_sfc(_sfc_main$13, [["render", _sfc_render$P]]);
4638
+ const _sfc_main$12 = vue.defineComponent({
4710
4639
  name: "FFormModal",
4711
4640
  components: {
4712
4641
  FModal,
@@ -4825,10 +4754,7 @@ const _sfc_main$16 = vue.defineComponent({
4825
4754
  },
4826
4755
  computed: {
4827
4756
  preparedButtons() {
4828
- return prepareButtonList(this.buttons, FKUIConfigButtonOrder.LEFT_TO_RIGHT);
4829
- },
4830
- hasDeprecatedSlots() {
4831
- return hasSlot(this, "cancel-button-text") || hasSlot(this, "submit-button-text");
4757
+ return prepareButtonList(this.buttons, FKUIConfigButtonOrder.RIGHT_TO_LEFT);
4832
4758
  }
4833
4759
  },
4834
4760
  methods: {
@@ -4858,16 +4784,15 @@ const _sfc_main$16 = vue.defineComponent({
4858
4784
  }
4859
4785
  }
4860
4786
  });
4861
- const _hoisted_1$R = {
4787
+ const _hoisted_1$P = {
4862
4788
  class: "button-group"
4863
4789
  };
4864
- const _hoisted_2$C = ["type", "form", "onClick"];
4865
- const _hoisted_3$u = {
4790
+ const _hoisted_2$A = ["type", "form", "onClick"];
4791
+ const _hoisted_3$t = {
4866
4792
  key: 0,
4867
4793
  class: "sr-only"
4868
4794
  };
4869
- const _hoisted_4$p = ["form"];
4870
- function _sfc_render$U(_ctx, _cache, $props, $setup, $data, $options) {
4795
+ function _sfc_render$O(_ctx, _cache, $props, $setup, $data, $options) {
4871
4796
  const _component_f_validation_form = vue.resolveComponent("f-validation-form");
4872
4797
  const _component_f_modal = vue.resolveComponent("f-modal");
4873
4798
  return vue.openBlock(), vue.createBlock(_component_f_modal, {
@@ -4879,7 +4804,7 @@ function _sfc_render$U(_ctx, _cache, $props, $setup, $data, $options) {
4879
4804
  onClose: _ctx.onClose
4880
4805
  }, {
4881
4806
  header: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "header")]),
4882
- content: vue.withCtx(() => [vue.createElementVNode("div", null, [vue.renderSlot(_ctx.$slots, "default")]), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createVNode(_component_f_validation_form, {
4807
+ content: vue.withCtx(() => [vue.createElementVNode("div", null, [vue.renderSlot(_ctx.$slots, "default")]), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.createVNode(_component_f_validation_form, {
4883
4808
  id: _ctx.formId,
4884
4809
  "before-submit": _ctx.beforeSubmit,
4885
4810
  "before-validation": _ctx.beforeValidation,
@@ -4888,36 +4813,22 @@ function _sfc_render$U(_ctx, _cache, $props, $setup, $data, $options) {
4888
4813
  onCancel: _ctx.onCancel
4889
4814
  }, {
4890
4815
  "error-message": vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "error-message")]),
4891
- default: vue.withCtx(() => [_cache[1] || (_cache[1] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "input-text-fields")]),
4816
+ default: vue.withCtx(() => [_cache[0] || (_cache[0] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "input-text-fields")]),
4892
4817
  _: 3
4893
4818
  }, 8, ["id", "before-submit", "before-validation", "use-error-list", "onSubmit", "onCancel"])]),
4894
- footer: vue.withCtx(() => [vue.createElementVNode("div", _hoisted_1$R, [!_ctx.hasDeprecatedSlots ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, {
4895
- key: 0
4896
- }, vue.renderList(_ctx.preparedButtons, (button) => {
4819
+ footer: vue.withCtx(() => [vue.createElementVNode("div", _hoisted_1$P, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.preparedButtons, (button) => {
4897
4820
  return vue.openBlock(), vue.createElementBlock("button", {
4898
4821
  key: button.label,
4899
4822
  type: button.buttonType,
4900
4823
  class: vue.normalizeClass([button.classlist, "button-group__item"]),
4901
4824
  form: button.buttonType === "submit" ? _ctx.formId : void 0,
4902
4825
  onClick: ($event) => button.buttonType === "button" ? _ctx.onCancel() : false
4903
- }, [vue.createElementVNode("span", null, vue.toDisplayString(button.label), 1), _cache[3] || (_cache[3] = vue.createTextVNode()), button.screenreader ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$u, " " + vue.toDisplayString(button.screenreader), 1)) : vue.createCommentVNode("", true)], 10, _hoisted_2$C);
4904
- }), 128)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, {
4905
- key: 1
4906
- }, [vue.createElementVNode("button", {
4907
- form: _ctx.formId,
4908
- "data-test": "submit-button",
4909
- type: "submit",
4910
- class: "button button--primary button-group__item button--large"
4911
- }, [vue.renderSlot(_ctx.$slots, "submit-button-text", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.form-modal.button.submit.text", "Spara")), 1)])], 8, _hoisted_4$p), _cache[4] || (_cache[4] = vue.createTextVNode()), vue.createElementVNode("button", {
4912
- "data-test": "cancel-button",
4913
- type: "button",
4914
- class: "button button--secondary button-group__item button--large",
4915
- onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onCancel && _ctx.onCancel(...args))
4916
- }, [vue.renderSlot(_ctx.$slots, "cancel-button-text", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.form-modal.button.cancel.text", "Avbryt")), 1)])])], 64))])]),
4826
+ }, [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$A);
4827
+ }), 128))])]),
4917
4828
  _: 3
4918
4829
  }, 8, ["data-test", "fullscreen", "is-open", "size", "aria-close-text", "onClose"]);
4919
4830
  }
4920
- const FFormModal = /* @__PURE__ */ _export_sfc(_sfc_main$16, [["render", _sfc_render$U]]);
4831
+ const FFormModal = /* @__PURE__ */ _export_sfc(_sfc_main$12, [["render", _sfc_render$O]]);
4921
4832
  async function confirmModal(callingInstance, texts) {
4922
4833
  const buttons = [{
4923
4834
  label: texts.confirm,
@@ -4966,6 +4877,52 @@ function getInputElement(vm) {
4966
4877
  }
4967
4878
  return inputElement;
4968
4879
  }
4880
+ const defaultOptions = {
4881
+ stripClasses: ["sr-only"]
4882
+ };
4883
+ function collapseWhitespace(text) {
4884
+ return text.replace(/\s+/gm, " ").replace(/(^ | $)/g, "");
4885
+ }
4886
+ function intersection(a, b) {
4887
+ return a.filter((it) => b.includes(it));
4888
+ }
4889
+ function excludeClass(exclude) {
4890
+ return (node) => {
4891
+ var _a;
4892
+ if (typeof ((_a = node.props) == null ? void 0 : _a.class) !== "string") {
4893
+ return true;
4894
+ }
4895
+ const classes = node.props.class.split(/\s+/);
4896
+ const matches = intersection(classes, exclude);
4897
+ return matches.length === 0;
4898
+ };
4899
+ }
4900
+ function excludeComment(node) {
4901
+ return node.type !== vue.Comment;
4902
+ }
4903
+ function getTextContent(children, options) {
4904
+ return children.filter(vue.isVNode).filter(excludeComment).filter(excludeClass(options.stripClasses)).map((child) => {
4905
+ if (Array.isArray(child.children)) {
4906
+ return getTextContent(child.children, options);
4907
+ }
4908
+ if (typeof child.children === "string") {
4909
+ return child.children;
4910
+ }
4911
+ }).join("");
4912
+ }
4913
+ function renderSlotText(render, props = {}, options) {
4914
+ if (!render) {
4915
+ return void 0;
4916
+ }
4917
+ const nodes = render(props);
4918
+ if (nodes.length === 0) {
4919
+ return void 0;
4920
+ }
4921
+ return collapseWhitespace(getTextContent(nodes, {
4922
+ ...defaultOptions,
4923
+ ...options
4924
+ }));
4925
+ }
4969
4926
  function hasSlot(vm, name, props = {}, options = {}) {
4970
4927
  const slot = vm.$slots[name];
4971
4928
  return Boolean(renderSlotText(slot, props, options));
@@ -5022,7 +4979,7 @@ function toPrimitive(t, r) {
5022
4979
  if ("object" != _typeof(t) || !t) return t;
5023
4980
  var e = t[Symbol.toPrimitive];
5024
4981
  if (void 0 !== e) {
5025
- var i = e.call(t, r || "default");
4982
+ var i = e.call(t, r);
5026
4983
  if ("object" != _typeof(i)) return i;
5027
4984
  throw new TypeError("@@toPrimitive must return a primitive value.");
5028
4985
  }
@@ -5068,18 +5025,6 @@ class FormErrorList {
5068
5025
  Object.assign(this, fields);
5069
5026
  }
5070
5027
  }
5071
- class FormStep {
5072
- constructor(fields) {
5073
- _defineProperty(this, "isOpen", false);
5074
- _defineProperty(this, "isAnyFieldTouched", false);
5075
- _defineProperty(this, "focusElementId", "");
5076
- _defineProperty(this, "id", "");
5077
- _defineProperty(this, "isValid", false);
5078
- _defineProperty(this, "numberOfTimesSubmitted", 0);
5079
- _defineProperty(this, "title", "");
5080
- Object.assign(this, fields);
5081
- }
5082
- }
5083
5028
  var MenuAction = /* @__PURE__ */ ((MenuAction2) => {
5084
5029
  MenuAction2[MenuAction2["MOVE_NEXT"] = 0] = "MOVE_NEXT";
5085
5030
  MenuAction2[MenuAction2["MOVE_PREV"] = 1] = "MOVE_PREV";
@@ -5151,7 +5096,7 @@ function getValidatableElement(element) {
5151
5096
  throw new Error(`Couldn't find any validatable element`);
5152
5097
  }
5153
5098
  }
5154
- function triggerInitialValidationToSupportFFormStepValidation(el) {
5099
+ function triggerInitialValidation(el) {
5155
5100
  const target = getValidatableElement(el);
5156
5101
  logic.ValidationService.validateElement(target);
5157
5102
  }
@@ -5187,7 +5132,7 @@ const ValidationDirective = {
5187
5132
  }
5188
5133
  },
5189
5134
  mounted(el) {
5190
- triggerInitialValidationToSupportFFormStepValidation(el);
5135
+ triggerInitialValidation(el);
5191
5136
  }
5192
5137
  };
5193
5138
  const ValidationPrefixDirective = {
@@ -5243,7 +5188,7 @@ const ErrorPlugin = {
5243
5188
  }
5244
5189
  }
5245
5190
  };
5246
- const _sfc_main$15 = vue.defineComponent({
5191
+ const _sfc_main$11 = vue.defineComponent({
5247
5192
  name: "FErrorPage",
5248
5193
  props: {
5249
5194
  payload: {
@@ -5253,16 +5198,16 @@ const _sfc_main$15 = vue.defineComponent({
5253
5198
  }
5254
5199
  }
5255
5200
  });
5256
- const _hoisted_1$Q = {
5201
+ const _hoisted_1$O = {
5257
5202
  "data-test": "f-error-page"
5258
5203
  };
5259
- function _sfc_render$T(_ctx, _cache, $props, $setup, $data, $options) {
5260
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$Q, _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", {
5204
+ function _sfc_render$N(_ctx, _cache, $props, $setup, $data, $options) {
5205
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$O, _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", {
5261
5206
  href: "/"
5262
5207
  }, "Gå till startsidan", -1)]));
5263
5208
  }
5264
- const FErrorPage = /* @__PURE__ */ _export_sfc(_sfc_main$15, [["render", _sfc_render$T]]);
5265
- const _sfc_main$14 = vue.defineComponent({
5209
+ const FErrorPage = /* @__PURE__ */ _export_sfc(_sfc_main$11, [["render", _sfc_render$N]]);
5210
+ const _sfc_main$10 = vue.defineComponent({
5266
5211
  name: "FErrorHandlingApp",
5267
5212
  props: {
5268
5213
  defaultComponent: {
@@ -5291,7 +5236,7 @@ const _sfc_main$14 = vue.defineComponent({
5291
5236
  });
5292
5237
  }
5293
5238
  });
5294
- function _sfc_render$S(_ctx, _cache, $props, $setup, $data, $options) {
5239
+ function _sfc_render$M(_ctx, _cache, $props, $setup, $data, $options) {
5295
5240
  return vue.openBlock(), vue.createElementBlock("div", null, [_ctx.hasError ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.errorComponent), {
5296
5241
  key: 0,
5297
5242
  payload: _ctx.payload
@@ -5301,7 +5246,7 @@ function _sfc_render$S(_ctx, _cache, $props, $setup, $data, $options) {
5301
5246
  key: 2
5302
5247
  })]);
5303
5248
  }
5304
- const FErrorHandlingApp = /* @__PURE__ */ _export_sfc(_sfc_main$14, [["render", _sfc_render$S]]);
5249
+ const FErrorHandlingApp = /* @__PURE__ */ _export_sfc(_sfc_main$10, [["render", _sfc_render$M]]);
5305
5250
  function isMonthBefore(date2, minDate) {
5306
5251
  return Boolean(minDate && date2.isBefore(minDate.startOfMonth()));
5307
5252
  }
@@ -5342,7 +5287,7 @@ function getMessage($t2, date2, minDate, maxDate) {
5342
5287
  });
5343
5288
  }
5344
5289
  }
5345
- const _sfc_main$13 = vue.defineComponent({
5290
+ const _sfc_main$$ = vue.defineComponent({
5346
5291
  name: "ICalendarNavbar",
5347
5292
  components: {
5348
5293
  FIcon
@@ -5411,7 +5356,6 @@ const _sfc_main$13 = vue.defineComponent({
5411
5356
  onClickPreviousButton() {
5412
5357
  if (!this.previousDisabled) {
5413
5358
  this.$emit("update:modelValue", this.previousValue);
5414
- this.$emit("change", this.previousValue);
5415
5359
  const previousMonth = this.getDateText(this.previousValue);
5416
5360
  const previousMonthText = this.$t("fkui.calendar-navbar.previous-month", "{{ previousMonth }} visas", {
5417
5361
  previousMonth
@@ -5456,14 +5400,14 @@ const _sfc_main$13 = vue.defineComponent({
5456
5400
  }
5457
5401
  }
5458
5402
  });
5459
- const _hoisted_1$P = {
5403
+ const _hoisted_1$N = {
5460
5404
  class: "calendar-navbar"
5461
5405
  };
5462
- const _hoisted_2$B = {
5406
+ const _hoisted_2$z = {
5463
5407
  class: "calendar-navbar__month",
5464
5408
  tabindex: "-1"
5465
5409
  };
5466
- const _hoisted_3$t = ["aria-disabled", "aria-live"];
5410
+ const _hoisted_3$s = ["aria-disabled", "aria-live"];
5467
5411
  const _hoisted_4$o = {
5468
5412
  class: "sr-only"
5469
5413
  };
@@ -5471,9 +5415,9 @@ const _hoisted_5$j = ["aria-disabled", "aria-live"];
5471
5415
  const _hoisted_6$f = {
5472
5416
  class: "sr-only"
5473
5417
  };
5474
- function _sfc_render$R(_ctx, _cache, $props, $setup, $data, $options) {
5418
+ function _sfc_render$L(_ctx, _cache, $props, $setup, $data, $options) {
5475
5419
  const _component_f_icon = vue.resolveComponent("f-icon");
5476
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$P, [vue.createElementVNode("div", _hoisted_2$B, vue.toDisplayString(_ctx.currentText), 1), _cache[4] || (_cache[4] = vue.createTextVNode()), vue.createElementVNode("button", {
5420
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$N, [vue.createElementVNode("div", _hoisted_2$z, vue.toDisplayString(_ctx.currentText), 1), _cache[4] || (_cache[4] = vue.createTextVNode()), vue.createElementVNode("button", {
5477
5421
  ref: "previousButton",
5478
5422
  class: "calendar-navbar__arrow calendar-navbar__arrow--previous",
5479
5423
  type: "button",
@@ -5483,7 +5427,7 @@ function _sfc_render$R(_ctx, _cache, $props, $setup, $data, $options) {
5483
5427
  }, [vue.createElementVNode("span", _hoisted_4$o, vue.toDisplayString(_ctx.previousSrText), 1), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createVNode(_component_f_icon, {
5484
5428
  class: vue.normalizeClass(_ctx.previousIconClasses),
5485
5429
  name: "arrow-right"
5486
- }, null, 8, ["class"])], 8, _hoisted_3$t), _cache[5] || (_cache[5] = vue.createTextVNode()), vue.createElementVNode("button", {
5430
+ }, null, 8, ["class"])], 8, _hoisted_3$s), _cache[5] || (_cache[5] = vue.createTextVNode()), vue.createElementVNode("button", {
5487
5431
  ref: "nextButton",
5488
5432
  class: "calendar-navbar__arrow calendar-navbar__arrow--next",
5489
5433
  type: "button",
@@ -5495,14 +5439,14 @@ function _sfc_render$R(_ctx, _cache, $props, $setup, $data, $options) {
5495
5439
  name: "arrow-right"
5496
5440
  }, null, 8, ["class"])], 8, _hoisted_5$j)]);
5497
5441
  }
5498
- const ICalendarNavbar = /* @__PURE__ */ _export_sfc(_sfc_main$13, [["render", _sfc_render$R]]);
5442
+ const ICalendarNavbar = /* @__PURE__ */ _export_sfc(_sfc_main$$, [["render", _sfc_render$L]]);
5499
5443
  function getDayStartOffset(days) {
5500
5444
  return days[0].weekDay - 1;
5501
5445
  }
5502
5446
  function getDayEndOffset(days) {
5503
5447
  return 7 - days[days.length - 1].weekDay;
5504
5448
  }
5505
- const _sfc_main$12 = vue.defineComponent({
5449
+ const _sfc_main$_ = vue.defineComponent({
5506
5450
  name: "ICalendarMonthGrid",
5507
5451
  props: {
5508
5452
  /**
@@ -5576,12 +5520,12 @@ const _sfc_main$12 = vue.defineComponent({
5576
5520
  }
5577
5521
  }
5578
5522
  });
5579
- const _hoisted_1$O = ["aria-label"];
5580
- const _hoisted_2$A = {
5523
+ const _hoisted_1$M = ["aria-label"];
5524
+ const _hoisted_2$y = {
5581
5525
  key: 0,
5582
5526
  class: "calendar-month__col--week"
5583
5527
  };
5584
- const _hoisted_3$s = {
5528
+ const _hoisted_3$r = {
5585
5529
  key: 0,
5586
5530
  scope: "col",
5587
5531
  "aria-hidden": "true",
@@ -5594,8 +5538,8 @@ const _hoisted_5$i = {
5594
5538
  "aria-hidden": "true"
5595
5539
  };
5596
5540
  const _hoisted_6$e = ["colspan"];
5597
- const _hoisted_7$d = ["colspan"];
5598
- const _hoisted_8$8 = {
5541
+ const _hoisted_7$c = ["colspan"];
5542
+ const _hoisted_8$7 = {
5599
5543
  key: 0,
5600
5544
  "aria-hidden": "true"
5601
5545
  };
@@ -5605,14 +5549,14 @@ const _hoisted_10$3 = {
5605
5549
  "aria-hidden": "true"
5606
5550
  };
5607
5551
  const _hoisted_11$2 = ["colspan"];
5608
- function _sfc_render$Q(_ctx, _cache, $props, $setup, $data, $options) {
5552
+ function _sfc_render$K(_ctx, _cache, $props, $setup, $data, $options) {
5609
5553
  return vue.openBlock(), vue.createElementBlock("table", {
5610
5554
  class: "calendar-month__table",
5611
5555
  role: "grid",
5612
5556
  "aria-label": _ctx.ariaLabel,
5613
5557
  onFocusin: _cache[0] || (_cache[0] = (...args) => _ctx.onFocusin && _ctx.onFocusin(...args)),
5614
5558
  onFocusout: _cache[1] || (_cache[1] = (...args) => _ctx.onFocusout && _ctx.onFocusout(...args))
5615
- }, [vue.createElementVNode("colgroup", null, [!_ctx.internalHideWeekNumbers ? (vue.openBlock(), vue.createElementBlock("col", _hoisted_2$A)) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), _cache[3] || (_cache[3] = vue.createElementVNode("col", {
5559
+ }, [vue.createElementVNode("colgroup", null, [!_ctx.internalHideWeekNumbers ? (vue.openBlock(), vue.createElementBlock("col", _hoisted_2$y)) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), _cache[3] || (_cache[3] = vue.createElementVNode("col", {
5616
5560
  class: "calendar-month__col--day"
5617
5561
  }, null, -1)), _cache[4] || (_cache[4] = vue.createTextVNode()), _cache[5] || (_cache[5] = vue.createElementVNode("col", {
5618
5562
  class: "calendar-month__col--day"
@@ -5626,7 +5570,7 @@ function _sfc_render$Q(_ctx, _cache, $props, $setup, $data, $options) {
5626
5570
  class: "calendar-month__col--day"
5627
5571
  }, null, -1)), _cache[14] || (_cache[14] = vue.createTextVNode()), _cache[15] || (_cache[15] = vue.createElementVNode("col", {
5628
5572
  class: "calendar-month__col--day"
5629
- }, 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) => {
5573
+ }, 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) => {
5630
5574
  return vue.openBlock(), vue.createElementBlock("th", {
5631
5575
  key: weekday.name,
5632
5576
  scope: "col",
@@ -5656,8 +5600,8 @@ function _sfc_render$Q(_ctx, _cache, $props, $setup, $data, $options) {
5656
5600
  class: "calendar-month__cell",
5657
5601
  colspan: _ctx.getDayEndOffset(week.days),
5658
5602
  "aria-hidden": "true"
5659
- }, null, 8, _hoisted_7$d)) : vue.createCommentVNode("", true)]);
5660
- }), 128)), _cache[20] || (_cache[20] = vue.createTextVNode()), _ctx.weeks.length < 5 ? (vue.openBlock(), vue.createElementBlock("tr", _hoisted_8$8, [vue.createElementVNode("td", {
5603
+ }, null, 8, _hoisted_7$c)) : vue.createCommentVNode("", true)]);
5604
+ }), 128)), _cache[20] || (_cache[20] = vue.createTextVNode()), _ctx.weeks.length < 5 ? (vue.openBlock(), vue.createElementBlock("tr", _hoisted_8$7, [vue.createElementVNode("td", {
5661
5605
  class: "calendar-month__cell",
5662
5606
  colspan: _ctx.totalCols,
5663
5607
  "aria-hidden": "true"
@@ -5665,9 +5609,9 @@ function _sfc_render$Q(_ctx, _cache, $props, $setup, $data, $options) {
5665
5609
  class: "calendar-month__cell",
5666
5610
  colspan: _ctx.totalCols,
5667
5611
  "aria-hidden": "true"
5668
- }, null, 8, _hoisted_11$2)])) : vue.createCommentVNode("", true)])], 40, _hoisted_1$O);
5612
+ }, null, 8, _hoisted_11$2)])) : vue.createCommentVNode("", true)])], 40, _hoisted_1$M);
5669
5613
  }
5670
- const ICalendarMonthGrid = /* @__PURE__ */ _export_sfc(_sfc_main$12, [["render", _sfc_render$Q]]);
5614
+ const ICalendarMonthGrid = /* @__PURE__ */ _export_sfc(_sfc_main$_, [["render", _sfc_render$K]]);
5671
5615
  const DayStep = {
5672
5616
  ArrowRight: 1,
5673
5617
  ArrowLeft: -1,
@@ -5691,7 +5635,7 @@ function getDayTabindex(date2, active, entry) {
5691
5635
  return date2.day === 1 ? 0 : -1;
5692
5636
  }
5693
5637
  }
5694
- const _sfc_main$11 = vue.defineComponent({
5638
+ const _sfc_main$Z = vue.defineComponent({
5695
5639
  name: "ICalendarMonth",
5696
5640
  components: {
5697
5641
  ICalendarMonthGrid
@@ -5758,7 +5702,6 @@ const _sfc_main$11 = vue.defineComponent({
5758
5702
  return;
5759
5703
  }
5760
5704
  this.$emit("update:modelValue", navigatedMonth);
5761
- this.$emit("change", navigatedMonth);
5762
5705
  if (navigatedDay.month !== date2.month) {
5763
5706
  await this.$nextTick();
5764
5707
  }
@@ -5782,8 +5725,8 @@ const _sfc_main$11 = vue.defineComponent({
5782
5725
  }
5783
5726
  }
5784
5727
  });
5785
- const _hoisted_1$N = ["data-date", "tabindex", "onClick", "onKeydown"];
5786
- function _sfc_render$P(_ctx, _cache, $props, $setup, $data, $options) {
5728
+ const _hoisted_1$L = ["data-date", "tabindex", "onClick", "onKeydown"];
5729
+ function _sfc_render$J(_ctx, _cache, $props, $setup, $data, $options) {
5787
5730
  const _component_i_calendar_month_grid = vue.resolveComponent("i-calendar-month-grid");
5788
5731
  return vue.openBlock(), vue.createBlock(_component_i_calendar_month_grid, {
5789
5732
  value: _ctx.modelValue
@@ -5802,12 +5745,12 @@ function _sfc_render$P(_ctx, _cache, $props, $setup, $data, $options) {
5802
5745
  }, [vue.renderSlot(_ctx.$slots, "default", {
5803
5746
  date: date2,
5804
5747
  isFocused: _ctx.isDayFocused(date2)
5805
- })], 40, _hoisted_1$N)]),
5748
+ })], 40, _hoisted_1$L)]),
5806
5749
  _: 3
5807
5750
  }, 8, ["value"]);
5808
5751
  }
5809
- const ICalendarMonth = /* @__PURE__ */ _export_sfc(_sfc_main$11, [["render", _sfc_render$P]]);
5810
- const _sfc_main$10 = vue.defineComponent({
5752
+ const ICalendarMonth = /* @__PURE__ */ _export_sfc(_sfc_main$Z, [["render", _sfc_render$J]]);
5753
+ const _sfc_main$Y = vue.defineComponent({
5811
5754
  name: "FCalendar",
5812
5755
  components: {
5813
5756
  ICalendarNavbar,
@@ -5848,24 +5791,23 @@ const _sfc_main$10 = vue.defineComponent({
5848
5791
  required: true
5849
5792
  }
5850
5793
  },
5851
- emits: ["click", "change", "update:modelValue"],
5794
+ emits: ["click", "update:modelValue"],
5852
5795
  methods: {
5853
5796
  onClickDay(date2) {
5854
5797
  this.$emit("click", date2);
5855
5798
  },
5856
5799
  onChangeMonth(date2) {
5857
5800
  this.$emit("update:modelValue", date2);
5858
- this.$emit("change", date2);
5859
5801
  }
5860
5802
  }
5861
5803
  });
5862
- const _hoisted_1$M = {
5804
+ const _hoisted_1$K = {
5863
5805
  class: "calendar__wrapper"
5864
5806
  };
5865
- function _sfc_render$O(_ctx, _cache, $props, $setup, $data, $options) {
5807
+ function _sfc_render$I(_ctx, _cache, $props, $setup, $data, $options) {
5866
5808
  const _component_i_calendar_navbar = vue.resolveComponent("i-calendar-navbar");
5867
5809
  const _component_i_calendar_month = vue.resolveComponent("i-calendar-month");
5868
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$M, [vue.createVNode(_component_i_calendar_navbar, {
5810
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$K, [vue.createVNode(_component_i_calendar_navbar, {
5869
5811
  "model-value": _ctx.modelValue,
5870
5812
  "min-date": _ctx.minDate,
5871
5813
  "max-date": _ctx.maxDate,
@@ -5888,7 +5830,7 @@ function _sfc_render$O(_ctx, _cache, $props, $setup, $data, $options) {
5888
5830
  _: 3
5889
5831
  }, 8, ["model-value", "min-date", "max-date", "tab-date", "onClick", "onUpdate:modelValue"])]);
5890
5832
  }
5891
- const FCalendar = /* @__PURE__ */ _export_sfc(_sfc_main$10, [["render", _sfc_render$O]]);
5833
+ const FCalendar = /* @__PURE__ */ _export_sfc(_sfc_main$Y, [["render", _sfc_render$I]]);
5892
5834
  function getCalendarDaySrText(day, enabled, selected, t) {
5893
5835
  const parts = [];
5894
5836
  if (!enabled) {
@@ -5907,7 +5849,7 @@ function getCalendarDaySrText(day, enabled, selected, t) {
5907
5849
  parts.push(day.toString(date.DateFormat.FULL));
5908
5850
  return parts.join(" ");
5909
5851
  }
5910
- const _sfc_main$$ = vue.defineComponent({
5852
+ const _sfc_main$X = vue.defineComponent({
5911
5853
  name: "FCalendarDay",
5912
5854
  mixins: [TranslationMixin],
5913
5855
  props: {
@@ -5972,18 +5914,18 @@ const _sfc_main$$ = vue.defineComponent({
5972
5914
  }
5973
5915
  }
5974
5916
  });
5975
- const _hoisted_1$L = {
5917
+ const _hoisted_1$J = {
5976
5918
  "aria-hidden": "true"
5977
5919
  };
5978
- const _hoisted_2$z = {
5920
+ const _hoisted_2$x = {
5979
5921
  class: "sr-only"
5980
5922
  };
5981
- function _sfc_render$N(_ctx, _cache, $props, $setup, $data, $options) {
5923
+ function _sfc_render$H(_ctx, _cache, $props, $setup, $data, $options) {
5982
5924
  return vue.openBlock(), vue.createElementBlock("span", {
5983
5925
  class: vue.normalizeClass(_ctx.dayClasses)
5984
- }, [vue.createElementVNode("span", _hoisted_1$L, vue.toDisplayString(_ctx.day.day), 1), _cache[0] || (_cache[0] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_2$z, vue.toDisplayString(_ctx.srText), 1)], 2);
5926
+ }, [vue.createElementVNode("span", _hoisted_1$J, vue.toDisplayString(_ctx.day.day), 1), _cache[0] || (_cache[0] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_2$x, vue.toDisplayString(_ctx.srText), 1)], 2);
5985
5927
  }
5986
- const FCalendarDay = /* @__PURE__ */ _export_sfc(_sfc_main$$, [["render", _sfc_render$N]]);
5928
+ const FCalendarDay = /* @__PURE__ */ _export_sfc(_sfc_main$X, [["render", _sfc_render$H]]);
5987
5929
  function useEventListener(target, event, callback) {
5988
5930
  vue.onMounted(() => {
5989
5931
  var _a;
@@ -6004,19 +5946,19 @@ function useSlotUtils() {
6004
5946
  }
6005
5947
  };
6006
5948
  }
6007
- const _hoisted_1$K = ["id"];
6008
- const _hoisted_2$y = {
5949
+ const _hoisted_1$I = ["id"];
5950
+ const _hoisted_2$w = {
6009
5951
  key: 0,
6010
5952
  class: "card__header"
6011
5953
  };
6012
- const _hoisted_3$r = {
5954
+ const _hoisted_3$q = {
6013
5955
  class: "card__content"
6014
5956
  };
6015
5957
  const _hoisted_4$m = {
6016
5958
  key: 1,
6017
5959
  class: "card__footer"
6018
5960
  };
6019
- const _sfc_main$_ = /* @__PURE__ */ vue.defineComponent({
5961
+ const _sfc_main$W = /* @__PURE__ */ vue.defineComponent({
6020
5962
  __name: "FCard",
6021
5963
  props: {
6022
5964
  /**
@@ -6074,7 +6016,7 @@ const _sfc_main$_ = /* @__PURE__ */ vue.defineComponent({
6074
6016
  id: __props.id,
6075
6017
  class: vue.normalizeClass(cardClass.value),
6076
6018
  onValidity
6077
- }, [hasHeaderSlot.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$y, [vue.renderSlot(_ctx.$slots, "header", vue.normalizeProps(vue.guardReactiveProps({
6019
+ }, [hasHeaderSlot.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$w, [vue.renderSlot(_ctx.$slots, "header", vue.normalizeProps(vue.guardReactiveProps({
6078
6020
  headingSlotClass: "card__header-label"
6079
6021
  })))])) : vue.createCommentVNode("", true), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "error-message", vue.normalizeProps(vue.guardReactiveProps({
6080
6022
  hasError: hasError.value,
@@ -6099,14 +6041,14 @@ const _sfc_main$_ = /* @__PURE__ */ vue.defineComponent({
6099
6041
  _: 1
6100
6042
  })]),
6101
6043
  _: 1
6102
- })) : 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({
6044
+ })) : 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({
6103
6045
  hasError: hasError.value,
6104
6046
  validationMessage: validationMessage.value
6105
- })))])) : vue.createCommentVNode("", true)], 42, _hoisted_1$K);
6047
+ })))])) : vue.createCommentVNode("", true)], 42, _hoisted_1$I);
6106
6048
  };
6107
6049
  }
6108
6050
  });
6109
- const _sfc_main$Z = vue.defineComponent({
6051
+ const _sfc_main$V = vue.defineComponent({
6110
6052
  name: "FExpand",
6111
6053
  data() {
6112
6054
  return {
@@ -6160,7 +6102,7 @@ const _sfc_main$Z = vue.defineComponent({
6160
6102
  }
6161
6103
  }
6162
6104
  });
6163
- function _sfc_render$M(_ctx, _cache, $props, $setup, $data, $options) {
6105
+ function _sfc_render$G(_ctx, _cache, $props, $setup, $data, $options) {
6164
6106
  return vue.openBlock(), vue.createBlock(vue.Transition, {
6165
6107
  onEnter: _ctx.enter,
6166
6108
  onAfterEnter: _ctx.afterEnter,
@@ -6172,7 +6114,7 @@ function _sfc_render$M(_ctx, _cache, $props, $setup, $data, $options) {
6172
6114
  _: 3
6173
6115
  }, 8, ["onEnter", "onAfterEnter", "onLeave"]);
6174
6116
  }
6175
- const FExpand = /* @__PURE__ */ _export_sfc(_sfc_main$Z, [["render", _sfc_render$M]]);
6117
+ const FExpand = /* @__PURE__ */ _export_sfc(_sfc_main$V, [["render", _sfc_render$G]]);
6176
6118
  function offset(page, el) {
6177
6119
  const rect = el.getBoundingClientRect();
6178
6120
  return {
@@ -6457,7 +6399,7 @@ function isTeleportDisabled(options) {
6457
6399
  }
6458
6400
  return disableTeleport;
6459
6401
  }
6460
- const _sfc_main$Y = vue.defineComponent({
6402
+ const _sfc_main$U = vue.defineComponent({
6461
6403
  name: "IPopup",
6462
6404
  inheritAttrs: false,
6463
6405
  props: {
@@ -6490,15 +6432,6 @@ const _sfc_main$Y = vue.defineComponent({
6490
6432
  },
6491
6433
  default: "auto"
6492
6434
  },
6493
- /**
6494
- * Force popup to always display inline.
6495
- * @deprecated Use `inline="always"` instead.
6496
- */
6497
- alwaysInline: {
6498
- type: Boolean,
6499
- required: false,
6500
- default: false
6501
- },
6502
6435
  /**
6503
6436
  * Which element to use as container.
6504
6437
  */
@@ -6576,14 +6509,13 @@ const _sfc_main$Y = vue.defineComponent({
6576
6509
  return isInline;
6577
6510
  },
6578
6511
  forceInline() {
6579
- return this.alwaysInline || this.inline === "always";
6512
+ return this.inline === "always";
6580
6513
  },
6581
6514
  forceOverlay() {
6582
6515
  return this.inline === "never";
6583
6516
  },
6584
6517
  teleportTarget() {
6585
- var _config$popupTarget;
6586
- return (_config$popupTarget = config.popupTarget) !== null && _config$popupTarget !== void 0 ? _config$popupTarget : config.teleportTarget;
6518
+ return config.teleportTarget;
6587
6519
  }
6588
6520
  },
6589
6521
  watch: {
@@ -6748,7 +6680,7 @@ const _sfc_main$Y = vue.defineComponent({
6748
6680
  }
6749
6681
  }
6750
6682
  });
6751
- function _sfc_render$L(_ctx, _cache, $props, $setup, $data, $options) {
6683
+ function _sfc_render$F(_ctx, _cache, $props, $setup, $data, $options) {
6752
6684
  return _ctx.isOpen ? (vue.openBlock(), vue.createBlock(vue.Teleport, {
6753
6685
  key: 0,
6754
6686
  to: _ctx.teleportTarget,
@@ -6769,7 +6701,7 @@ function _sfc_render$L(_ctx, _cache, $props, $setup, $data, $options) {
6769
6701
  placement: _ctx.placement
6770
6702
  })))], 544)], 16)], 8, ["to", "disabled"])) : vue.createCommentVNode("", true);
6771
6703
  }
6772
- const IPopup = /* @__PURE__ */ _export_sfc(_sfc_main$Y, [["render", _sfc_render$L]]);
6704
+ const IPopup = /* @__PURE__ */ _export_sfc(_sfc_main$U, [["render", _sfc_render$F]]);
6773
6705
  function computeArrowOffset(placement, inputIconRect, wrapperRect) {
6774
6706
  switch (placement) {
6775
6707
  case Placement.A: {
@@ -6833,7 +6765,7 @@ function computeArrowOffset(placement, inputIconRect, wrapperRect) {
6833
6765
  }
6834
6766
  }
6835
6767
  const POPUP_SPACING = 10;
6836
- const _sfc_main$X = vue.defineComponent({
6768
+ const _sfc_main$T = vue.defineComponent({
6837
6769
  name: "IPopupError",
6838
6770
  components: {
6839
6771
  FIcon
@@ -6968,11 +6900,11 @@ const _sfc_main$X = vue.defineComponent({
6968
6900
  }
6969
6901
  }
6970
6902
  });
6971
- const _hoisted_1$J = {
6903
+ const _hoisted_1$H = {
6972
6904
  ref: "wrapper",
6973
6905
  class: "popup-error__wrapper"
6974
6906
  };
6975
- function _sfc_render$K(_ctx, _cache, $props, $setup, $data, $options) {
6907
+ function _sfc_render$E(_ctx, _cache, $props, $setup, $data, $options) {
6976
6908
  const _component_f_icon = vue.resolveComponent("f-icon");
6977
6909
  return _ctx.isOpen ? (vue.openBlock(), vue.createBlock(vue.Teleport, {
6978
6910
  key: 0,
@@ -6982,7 +6914,7 @@ function _sfc_render$K(_ctx, _cache, $props, $setup, $data, $options) {
6982
6914
  ref: "popup",
6983
6915
  class: vue.normalizeClass(_ctx.popupClasses),
6984
6916
  "aria-hidden": "true"
6985
- }, [vue.createElementVNode("div", _hoisted_1$J, [vue.createElementVNode("div", {
6917
+ }, [vue.createElementVNode("div", _hoisted_1$H, [vue.createElementVNode("div", {
6986
6918
  class: vue.normalizeClass(_ctx.arrowClass),
6987
6919
  style: vue.normalizeStyle(_ctx.errorStyle)
6988
6920
  }, [vue.createElementVNode("span", null, vue.toDisplayString(_ctx.errorMessage), 1), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.createElementVNode("button", {
@@ -6996,7 +6928,7 @@ function _sfc_render$K(_ctx, _cache, $props, $setup, $data, $options) {
6996
6928
  class: "button__icon"
6997
6929
  })])], 6)], 512)], 2)], 8, ["disabled"])) : vue.createCommentVNode("", true);
6998
6930
  }
6999
- const IPopupError = /* @__PURE__ */ _export_sfc(_sfc_main$X, [["render", _sfc_render$K]]);
6931
+ const IPopupError = /* @__PURE__ */ _export_sfc(_sfc_main$T, [["render", _sfc_render$E]]);
7000
6932
  function numItems(itemHeight, availableHeight, verticalSpacing) {
7001
6933
  const itemsFit = Math.floor((availableHeight - verticalSpacing) / itemHeight);
7002
6934
  return Math.min(itemsFit, 7);
@@ -7063,12 +6995,12 @@ function computeListboxRect(anchor, options, root = document.documentElement, {
7063
6995
  }
7064
6996
  return void 0;
7065
6997
  }
7066
- const _hoisted_1$I = ["onKeyup"];
7067
- const _hoisted_2$x = {
6998
+ const _hoisted_1$G = ["onKeyup"];
6999
+ const _hoisted_2$v = {
7068
7000
  ref: "content"
7069
7001
  };
7070
7002
  const teleportDisabled = false;
7071
- const _sfc_main$W = /* @__PURE__ */ vue.defineComponent({
7003
+ const _sfc_main$S = /* @__PURE__ */ vue.defineComponent({
7072
7004
  __name: "IPopupListbox",
7073
7005
  props: {
7074
7006
  isOpen: {
@@ -7087,10 +7019,7 @@ const _sfc_main$W = /* @__PURE__ */ vue.defineComponent({
7087
7019
  const wrapperRef = vue.useTemplateRef("wrapper");
7088
7020
  const contentRef = vue.useTemplateRef("content");
7089
7021
  const popupClasses = ["popup", "popup--overlay"];
7090
- const teleportTarget = vue.computed(() => {
7091
- var _config$popupTarget;
7092
- return (_config$popupTarget = config.popupTarget) !== null && _config$popupTarget !== void 0 ? _config$popupTarget : config.teleportTarget;
7093
- });
7022
+ const teleportTarget = vue.computed(() => config.teleportTarget);
7094
7023
  let guessedItemHeight = void 0;
7095
7024
  let verticalSpacing = void 0;
7096
7025
  useEventListener(__props.anchor, "keyup", onKeyEsc);
@@ -7220,7 +7149,7 @@ const _sfc_main$W = /* @__PURE__ */ vue.defineComponent({
7220
7149
  onKeyup: vue.withKeys(vue.withModifiers(onKeyEsc, ["stop"]), ["esc"]),
7221
7150
  onClick: _cache[0] || (_cache[0] = vue.withModifiers(() => {
7222
7151
  }, ["stop"]))
7223
- }), [vue.createElementVNode("div", _hoisted_2$x, [vue.renderSlot(_ctx.$slots, "default")], 512)], 16, _hoisted_1$I)], 512)], 8, ["to"])) : vue.createCommentVNode("", true);
7152
+ }), [vue.createElementVNode("div", _hoisted_2$v, [vue.renderSlot(_ctx.$slots, "default")], 512)], 16, _hoisted_1$G)], 512)], 8, ["to"])) : vue.createCommentVNode("", true);
7224
7153
  };
7225
7154
  }
7226
7155
  });
@@ -7264,7 +7193,7 @@ async function doMenuAction$2(action, target) {
7264
7193
  }
7265
7194
  }
7266
7195
  const preventKeys$2 = ["Tab", "Up", "Down", "ArrowUp", "ArrowDown", "Home", "End", " ", "Spacebar", "Enter"];
7267
- const _sfc_main$V = vue.defineComponent({
7196
+ const _sfc_main$R = vue.defineComponent({
7268
7197
  name: "IPopupMenu",
7269
7198
  components: {
7270
7199
  IPopup
@@ -7345,10 +7274,9 @@ const _sfc_main$V = vue.defineComponent({
7345
7274
  */
7346
7275
  "close",
7347
7276
  /**
7348
- * Vue 2 V-model event. Emitted when an item is selected.
7277
+ * Emitted when an item is selected.
7349
7278
  *
7350
7279
  * @event select
7351
- * @deprecated
7352
7280
  * @type {string} item key
7353
7281
  */
7354
7282
  "select",
@@ -7520,18 +7448,18 @@ const _sfc_main$V = vue.defineComponent({
7520
7448
  }
7521
7449
  }
7522
7450
  });
7523
- const _hoisted_1$H = ["aria-label"];
7524
- const _hoisted_2$w = {
7451
+ const _hoisted_1$F = ["aria-label"];
7452
+ const _hoisted_2$u = {
7525
7453
  role: "menu",
7526
7454
  class: "ipopupmenu__list"
7527
7455
  };
7528
- const _hoisted_3$q = ["onClick"];
7456
+ const _hoisted_3$p = ["onClick"];
7529
7457
  const _hoisted_4$l = ["data-ref-index", "href", "target"];
7530
7458
  const _hoisted_5$h = {
7531
7459
  key: 0,
7532
7460
  class: "sr-only"
7533
7461
  };
7534
- function _sfc_render$J(_ctx, _cache, $props, $setup, $data, $options) {
7462
+ function _sfc_render$D(_ctx, _cache, $props, $setup, $data, $options) {
7535
7463
  const _component_i_popup = vue.resolveComponent("i-popup");
7536
7464
  return vue.openBlock(), vue.createBlock(_component_i_popup, {
7537
7465
  class: "ipopupmenu",
@@ -7546,7 +7474,7 @@ function _sfc_render$J(_ctx, _cache, $props, $setup, $data, $options) {
7546
7474
  default: vue.withCtx(() => [vue.createElementVNode("nav", {
7547
7475
  class: "ipopupmenu ipopupmenu--vertical",
7548
7476
  "aria-label": _ctx.ariaLabel
7549
- }, [vue.createElementVNode("ul", _hoisted_2$w, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.items, (item, index) => {
7477
+ }, [vue.createElementVNode("ul", _hoisted_2$u, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.items, (item, index) => {
7550
7478
  return vue.openBlock(), vue.createElementBlock("li", {
7551
7479
  ref_for: true,
7552
7480
  ref: "items",
@@ -7562,18 +7490,18 @@ function _sfc_render$J(_ctx, _cache, $props, $setup, $data, $options) {
7562
7490
  role: "menuitem",
7563
7491
  target: item.target,
7564
7492
  tabindex: "0"
7565
- }, [_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);
7566
- }), 128))])], 8, _hoisted_1$H)]),
7493
+ }, [_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);
7494
+ }), 128))])], 8, _hoisted_1$F)]),
7567
7495
  _: 1
7568
7496
  }, 8, ["is-open", "anchor", "focus-element", "onKeyup", "onKeydown"]);
7569
7497
  }
7570
- const IPopupMenu = /* @__PURE__ */ _export_sfc(_sfc_main$V, [["render", _sfc_render$J]]);
7498
+ const IPopupMenu = /* @__PURE__ */ _export_sfc(_sfc_main$R, [["render", _sfc_render$D]]);
7571
7499
  const ANIMATION_DURATION = 500;
7572
7500
  const NO_CSS_CLASSES = "";
7573
7501
  const CLOSED_CSS_CLASS_OPACITY = "animate-expand animate-expand--opacity";
7574
7502
  const CLOSED_CSS_CLASS = "animate-expand";
7575
7503
  const ANIMATION_CSS_CLASSES = "animate-expand animate-expand--expanded";
7576
- const _sfc_main$U = vue.defineComponent({
7504
+ const _sfc_main$Q = vue.defineComponent({
7577
7505
  name: "IAnimateExpand",
7578
7506
  props: {
7579
7507
  /**
@@ -7765,19 +7693,19 @@ const _sfc_main$U = vue.defineComponent({
7765
7693
  }
7766
7694
  }
7767
7695
  });
7768
- const _hoisted_1$G = {
7696
+ const _hoisted_1$E = {
7769
7697
  key: 0,
7770
7698
  ref: "content",
7771
7699
  "data-test": "animation-content"
7772
7700
  };
7773
- function _sfc_render$I(_ctx, _cache, $props, $setup, $data, $options) {
7701
+ function _sfc_render$C(_ctx, _cache, $props, $setup, $data, $options) {
7774
7702
  return vue.openBlock(), vue.createElementBlock("div", {
7775
7703
  class: vue.normalizeClass(_ctx.animationClasses),
7776
7704
  style: vue.normalizeStyle(_ctx.heightStyle)
7777
- }, [_ctx.shouldVIf ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", _hoisted_1$G, [vue.renderSlot(_ctx.$slots, "default")], 512)), [[vue.vShow, _ctx.shouldVShow]]) : vue.createCommentVNode("", true)], 6);
7705
+ }, [_ctx.shouldVIf ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", _hoisted_1$E, [vue.renderSlot(_ctx.$slots, "default")], 512)), [[vue.vShow, _ctx.shouldVShow]]) : vue.createCommentVNode("", true)], 6);
7778
7706
  }
7779
- const IAnimateExpand = /* @__PURE__ */ _export_sfc(_sfc_main$U, [["render", _sfc_render$I]]);
7780
- const _sfc_main$T = vue.defineComponent({
7707
+ const IAnimateExpand = /* @__PURE__ */ _export_sfc(_sfc_main$Q, [["render", _sfc_render$C]]);
7708
+ const _sfc_main$P = vue.defineComponent({
7781
7709
  name: "ISkipLink",
7782
7710
  mixins: [TranslationMixin],
7783
7711
  props: {
@@ -7791,14 +7719,14 @@ const _sfc_main$T = vue.defineComponent({
7791
7719
  }
7792
7720
  }
7793
7721
  });
7794
- const _hoisted_1$F = ["href"];
7795
- function _sfc_render$H(_ctx, _cache, $props, $setup, $data, $options) {
7722
+ const _hoisted_1$D = ["href"];
7723
+ function _sfc_render$B(_ctx, _cache, $props, $setup, $data, $options) {
7796
7724
  return vue.openBlock(), vue.createElementBlock("a", {
7797
7725
  class: "iskiplink",
7798
7726
  href: _ctx.href
7799
- }, [vue.renderSlot(_ctx.$slots, "default", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.skip-link.text", "Gå direkt till innehåll")), 1)])], 8, _hoisted_1$F);
7727
+ }, [vue.renderSlot(_ctx.$slots, "default", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.skip-link.text", "Gå direkt till innehåll")), 1)])], 8, _hoisted_1$D);
7800
7728
  }
7801
- const ISkipLink = /* @__PURE__ */ _export_sfc(_sfc_main$T, [["render", _sfc_render$H]]);
7729
+ const ISkipLink = /* @__PURE__ */ _export_sfc(_sfc_main$P, [["render", _sfc_render$B]]);
7802
7730
  function filterOptions(options, filter2, selectMode) {
7803
7731
  if (logic.isEmpty(filter2) || selectMode) {
7804
7732
  return options;
@@ -7808,7 +7736,7 @@ function filterOptions(options, filter2, selectMode) {
7808
7736
  }
7809
7737
  const $t = useTranslate();
7810
7738
  function useCombobox(inputRef, options, onOptionSelected) {
7811
- if (!options) {
7739
+ if (options.value === void 0) {
7812
7740
  return {
7813
7741
  dropdownId: "",
7814
7742
  dropdownIsOpen: vue.ref(false),
@@ -7835,7 +7763,8 @@ function useCombobox(inputRef, options, onOptionSelected) {
7835
7763
  const selectMode = vue.ref(false);
7836
7764
  const selectedOption = vue.ref(null);
7837
7765
  const dropdownOptions = vue.computed(() => {
7838
- return filterOptions(options, filter2.value, selectMode.value);
7766
+ var _options$value;
7767
+ return filterOptions((_options$value = options.value) !== null && _options$value !== void 0 ? _options$value : [], filter2.value, selectMode.value);
7839
7768
  });
7840
7769
  const hasOptions = vue.computed(() => {
7841
7770
  return dropdownOptions.value.length > 0;
@@ -7871,7 +7800,7 @@ function useCombobox(inputRef, options, onOptionSelected) {
7871
7800
  let description = selectMode.value ? `${$t("fkui.combobox.selected", "Valt förslag")} ` : "";
7872
7801
  if (logic.isEmpty(filter2.value) || selectMode.value) {
7873
7802
  description += $t("fkui.combobox.listDetails", `Det finns {{ count }} förslag. Använd uppåtpil och nedåtpil för att navigera bland förslagen.`, {
7874
- count: options.length
7803
+ count: options.value ? options.value.length : 0
7875
7804
  });
7876
7805
  } else if (hasOptions.value) {
7877
7806
  description += $t("fkui.combobox.matchesListDetails", `Det finns {{ count }} förslag som matchar. Använd uppåtpil och nedåtpil för att navigera bland förslagen.`, {
@@ -7968,10 +7897,10 @@ function useCombobox(inputRef, options, onOptionSelected) {
7968
7897
  }
7969
7898
  async function onInputFocus() {
7970
7899
  var _a;
7971
- var _inputRef$value$value, _options$includes;
7900
+ var _inputRef$value$value;
7972
7901
  await vue.nextTick();
7973
7902
  filter2.value = (_inputRef$value$value = (_a = inputRef.value) == null ? void 0 : _a.value) !== null && _inputRef$value$value !== void 0 ? _inputRef$value$value : "";
7974
- selectMode.value = (_options$includes = options == null ? void 0 : options.includes(filter2.value)) !== null && _options$includes !== void 0 ? _options$includes : false;
7903
+ selectMode.value = options.value ? options.value.includes(filter2.value) : false;
7975
7904
  }
7976
7905
  async function onInputKeyDown(event) {
7977
7906
  let flag = false;
@@ -8043,12 +7972,12 @@ function useCombobox(inputRef, options, onOptionSelected) {
8043
7972
  }
8044
7973
  }
8045
7974
  }
8046
- const _hoisted_1$E = {
7975
+ const _hoisted_1$C = {
8047
7976
  class: "combobox"
8048
7977
  };
8049
- const _hoisted_2$v = ["id"];
8050
- const _hoisted_3$p = ["id", "aria-selected", "onClick"];
8051
- const _sfc_main$S = /* @__PURE__ */ vue.defineComponent({
7978
+ const _hoisted_2$t = ["id"];
7979
+ const _hoisted_3$o = ["id", "aria-selected", "onClick"];
7980
+ const _sfc_main$O = /* @__PURE__ */ vue.defineComponent({
8052
7981
  __name: "IComboboxDropdown",
8053
7982
  props: {
8054
7983
  id: {},
@@ -8085,7 +8014,7 @@ const _sfc_main$S = /* @__PURE__ */ vue.defineComponent({
8085
8014
  }
8086
8015
  });
8087
8016
  return (_ctx, _cache) => {
8088
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$E, [vue.createVNode(vue.unref(_sfc_main$W), {
8017
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$C, [vue.createVNode(vue.unref(_sfc_main$S), {
8089
8018
  "is-open": _ctx.isOpen,
8090
8019
  anchor: _ctx.inputNode,
8091
8020
  "num-of-items": _ctx.options.length,
@@ -8109,15 +8038,15 @@ const _sfc_main$S = /* @__PURE__ */ vue.defineComponent({
8109
8038
  "combobox__listbox__option--highlight": isOptionActive(item)
8110
8039
  }]),
8111
8040
  onClick: vue.withModifiers(($event) => onOptionClick(item), ["stop", "prevent"])
8112
- }, vue.toDisplayString(item), 11, _hoisted_3$p);
8113
- }), 128))], 8, _hoisted_2$v)]),
8041
+ }, vue.toDisplayString(item), 11, _hoisted_3$o);
8042
+ }), 128))], 8, _hoisted_2$t)]),
8114
8043
  _: 1
8115
8044
  }, 8, ["is-open", "anchor", "num-of-items", "active-element"])]);
8116
8045
  };
8117
8046
  }
8118
8047
  });
8119
- const _hoisted_1$D = ["aria-label"];
8120
- const _sfc_main$R = /* @__PURE__ */ vue.defineComponent({
8048
+ const _hoisted_1$B = ["aria-label"];
8049
+ const _sfc_main$N = /* @__PURE__ */ vue.defineComponent({
8121
8050
  __name: "IComboboxToggleButton",
8122
8051
  emits: ["toggle"],
8123
8052
  setup(__props, {
@@ -8136,7 +8065,7 @@ const _sfc_main$R = /* @__PURE__ */ vue.defineComponent({
8136
8065
  }, [vue.createVNode(vue.unref(FIcon), {
8137
8066
  name: "arrow-down",
8138
8067
  class: "text-field__icon"
8139
- })], 8, _hoisted_1$D);
8068
+ })], 8, _hoisted_1$B);
8140
8069
  };
8141
8070
  }
8142
8071
  });
@@ -8238,7 +8167,7 @@ function useHorizontalOffset(options) {
8238
8167
  }, 0);
8239
8168
  }
8240
8169
  }
8241
- const _sfc_main$Q = vue.defineComponent({
8170
+ const _sfc_main$M = vue.defineComponent({
8242
8171
  name: "FTooltip",
8243
8172
  components: {
8244
8173
  FExpand,
@@ -8287,9 +8216,6 @@ const _sfc_main$Q = vue.defineComponent({
8287
8216
  * Element to render for the header element inside the tooltip.
8288
8217
  *
8289
8218
  * Must be set to one of:
8290
- *
8291
- * - `div` (default)
8292
- * - `span`
8293
8219
  * - `h1`
8294
8220
  * - `h2`
8295
8221
  * - `h3`
@@ -8298,10 +8224,11 @@ const _sfc_main$Q = vue.defineComponent({
8298
8224
  * - `h6`
8299
8225
  */
8300
8226
  headerTag: {
8301
- default: "div",
8227
+ type: String,
8228
+ default: void 0,
8302
8229
  required: false,
8303
8230
  validator(value) {
8304
- return ["div", "span", "h1", "h2", "h3", "h4", "h5", "h6"].includes(value);
8231
+ return [void 0, "h1", "h2", "h3", "h4", "h5", "h6"].includes(value);
8305
8232
  }
8306
8233
  }
8307
8234
  },
@@ -8372,6 +8299,12 @@ const _sfc_main$Q = vue.defineComponent({
8372
8299
  }
8373
8300
  }
8374
8301
  },
8302
+ created() {
8303
+ const slots = vue.useSlots();
8304
+ if (slots.header && !this.headerTag) {
8305
+ throw new Error("Tooltip with header must define headerTag");
8306
+ }
8307
+ },
8375
8308
  methods: {
8376
8309
  /**
8377
8310
  * Gets called when the user interacts with the toggle button
@@ -8393,11 +8326,11 @@ const _sfc_main$Q = vue.defineComponent({
8393
8326
  }
8394
8327
  }
8395
8328
  });
8396
- const _hoisted_1$C = ["aria-expanded"];
8397
- const _hoisted_2$u = {
8329
+ const _hoisted_1$A = ["aria-expanded"];
8330
+ const _hoisted_2$s = {
8398
8331
  class: "icon-stack icon-stack--tooltip"
8399
8332
  };
8400
- const _hoisted_3$o = {
8333
+ const _hoisted_3$n = {
8401
8334
  class: "sr-only"
8402
8335
  };
8403
8336
  const _hoisted_4$k = {
@@ -8411,7 +8344,7 @@ const _hoisted_5$g = {
8411
8344
  const _hoisted_6$d = {
8412
8345
  class: "tooltip__footer"
8413
8346
  };
8414
- function _sfc_render$G(_ctx, _cache, $props, $setup, $data, $options) {
8347
+ function _sfc_render$A(_ctx, _cache, $props, $setup, $data, $options) {
8415
8348
  const _component_f_icon = vue.resolveComponent("f-icon");
8416
8349
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [(vue.openBlock(), vue.createBlock(vue.Teleport, {
8417
8350
  disabled: _ctx.iconTarget === null,
@@ -8422,11 +8355,11 @@ function _sfc_render$G(_ctx, _cache, $props, $setup, $data, $options) {
8422
8355
  type: "button",
8423
8356
  "aria-expanded": _ctx.isOpen,
8424
8357
  onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClickToggle && _ctx.onClickToggle(...args))
8425
- }, [vue.createElementVNode("span", _hoisted_2$u, [vue.createVNode(_component_f_icon, {
8358
+ }, [vue.createElementVNode("span", _hoisted_2$s, [vue.createVNode(_component_f_icon, {
8426
8359
  name: "circle"
8427
8360
  }), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createVNode(_component_f_icon, {
8428
8361
  name: "i"
8429
- }), _cache[3] || (_cache[3] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_3$o, vue.toDisplayString(_ctx.screenReaderText), 1)])], 8, _hoisted_1$C)], 8, ["disabled", "to"])), _cache[7] || (_cache[7] = vue.createTextVNode()), vue.createElementVNode("div", vue.mergeProps({
8362
+ }), _cache[3] || (_cache[3] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_3$n, vue.toDisplayString(_ctx.screenReaderText), 1)])], 8, _hoisted_1$A)], 8, ["disabled", "to"])), _cache[7] || (_cache[7] = vue.createTextVNode()), vue.createElementVNode("div", vue.mergeProps({
8430
8363
  ref: "wrapper",
8431
8364
  class: "tooltip"
8432
8365
  }, _ctx.$attrs), [_ctx.ready ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$k, [_ctx.hasHeader ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.headerTag), {
@@ -8444,7 +8377,7 @@ function _sfc_render$G(_ctx, _cache, $props, $setup, $data, $options) {
8444
8377
  name: "close"
8445
8378
  })])])])) : vue.createCommentVNode("", true)], 16)], 64);
8446
8379
  }
8447
- const FTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$Q, [["render", _sfc_render$G]]);
8380
+ const FTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$M, [["render", _sfc_render$A]]);
8448
8381
  function* labelClasses(options) {
8449
8382
  const {
8450
8383
  labelClass
@@ -8485,7 +8418,7 @@ function isEqual(a, b) {
8485
8418
  }
8486
8419
  return a.every((_, i) => a[i] === b[i]);
8487
8420
  }
8488
- const _sfc_main$P = vue.defineComponent({
8421
+ const _sfc_main$L = vue.defineComponent({
8489
8422
  name: "FFieldset",
8490
8423
  components: {
8491
8424
  FIcon
@@ -8580,7 +8513,7 @@ const _sfc_main$P = vue.defineComponent({
8580
8513
  validityMode: "INITIAL"
8581
8514
  },
8582
8515
  descriptionClass: ["label__description"],
8583
- discreteDescriptionClass: ["label__description", "label__description--discrete"],
8516
+ formatDescriptionClass: ["label__description", "label__description--format"],
8584
8517
  validityElement: null,
8585
8518
  dispatchObject: {},
8586
8519
  detail: {},
@@ -8713,12 +8646,12 @@ const _sfc_main$P = vue.defineComponent({
8713
8646
  }
8714
8647
  }
8715
8648
  });
8716
- const _hoisted_1$B = ["id"];
8717
- const _hoisted_2$t = {
8649
+ const _hoisted_1$z = ["id"];
8650
+ const _hoisted_2$r = {
8718
8651
  key: 0,
8719
8652
  class: "sr-only"
8720
8653
  };
8721
- const _hoisted_3$n = {
8654
+ const _hoisted_3$m = {
8722
8655
  key: 0,
8723
8656
  class: "label__message label__message--error"
8724
8657
  };
@@ -8734,18 +8667,18 @@ const _hoisted_5$f = {
8734
8667
  const _hoisted_6$c = {
8735
8668
  key: 1
8736
8669
  };
8737
- const _hoisted_7$c = {
8670
+ const _hoisted_7$b = {
8738
8671
  ref: "tooltipAttachTo",
8739
8672
  class: "label"
8740
8673
  };
8741
- const _hoisted_8$7 = {
8674
+ const _hoisted_8$6 = {
8742
8675
  "aria-hidden": "true"
8743
8676
  };
8744
8677
  const _hoisted_9$4 = {
8745
8678
  key: 0,
8746
8679
  class: "label__message label__message--error"
8747
8680
  };
8748
- function _sfc_render$F(_ctx, _cache, $props, $setup, $data, $options) {
8681
+ function _sfc_render$z(_ctx, _cache, $props, $setup, $data, $options) {
8749
8682
  const _component_f_icon = vue.resolveComponent("f-icon");
8750
8683
  return vue.openBlock(), vue.createElementBlock("fieldset", {
8751
8684
  id: _ctx.id,
@@ -8754,25 +8687,25 @@ function _sfc_render$F(_ctx, _cache, $props, $setup, $data, $options) {
8754
8687
  }, [(vue.openBlock(), vue.createElementBlock("legend", {
8755
8688
  key: _ctx.legendKey,
8756
8689
  class: vue.normalizeClass(["label", _ctx.legendClass])
8757
- }, [vue.renderSlot(_ctx.$slots, "label"), _cache[1] || (_cache[1] = vue.createTextVNode()), _ctx.hasCheckbox && _ctx.children.length > 1 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$t, [vue.createElementVNode("span", null, vue.toDisplayString(_ctx.numberOfCheckboxesScreenReaderText), 1)])) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "description", vue.normalizeProps(vue.guardReactiveProps({
8690
+ }, [vue.renderSlot(_ctx.$slots, "label"), _cache[1] || (_cache[1] = vue.createTextVNode()), _ctx.hasCheckbox && _ctx.children.length > 1 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$r, [vue.createElementVNode("span", null, vue.toDisplayString(_ctx.numberOfCheckboxesScreenReaderText), 1)])) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "description", {
8758
8691
  descriptionClass: _ctx.descriptionClass,
8759
- discreteDescriptionClass: _ctx.discreteDescriptionClass
8760
- }))), _cache[3] || (_cache[3] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "error-message", vue.normalizeProps(vue.guardReactiveProps({
8692
+ formatDescriptionClass: _ctx.formatDescriptionClass
8693
+ }), _cache[3] || (_cache[3] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "error-message", vue.normalizeProps(vue.guardReactiveProps({
8761
8694
  hasError: _ctx.hasError,
8762
8695
  validationMessage: _ctx.validity.validationMessage
8763
- })), () => [_ctx.hasError ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$n, [vue.createVNode(_component_f_icon, {
8696
+ })), () => [_ctx.hasError ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$m, [vue.createVNode(_component_f_icon, {
8764
8697
  class: "label__icon--left",
8765
8698
  name: "error"
8766
8699
  }), 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, {
8767
8700
  key: 1
8768
- }, [vue.createElementVNode("div", _hoisted_7$c, [vue.createElementVNode("span", _hoisted_8$7, [vue.renderSlot(_ctx.$slots, "label")])], 512), _cache[5] || (_cache[5] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "tooltip"), _cache[6] || (_cache[6] = vue.createTextVNode()), _ctx.hasDescriptionSlot || _ctx.hasErrorMessageSlot || _ctx.hasError ? (vue.openBlock(), vue.createElementBlock("div", {
8701
+ }, [vue.createElementVNode("div", _hoisted_7$b, [vue.createElementVNode("span", _hoisted_8$6, [vue.renderSlot(_ctx.$slots, "label")])], 512), _cache[5] || (_cache[5] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "tooltip"), _cache[6] || (_cache[6] = vue.createTextVNode()), _ctx.hasDescriptionSlot || _ctx.hasErrorMessageSlot || _ctx.hasError ? (vue.openBlock(), vue.createElementBlock("div", {
8769
8702
  key: 0,
8770
8703
  class: vue.normalizeClass(["label", _ctx.groupLabelClass]),
8771
8704
  "aria-hidden": "true"
8772
- }, [vue.renderSlot(_ctx.$slots, "description", vue.normalizeProps(vue.guardReactiveProps({
8705
+ }, [vue.renderSlot(_ctx.$slots, "description", {
8773
8706
  descriptionClass: _ctx.descriptionClass,
8774
- discreteDescriptionClass: _ctx.discreteDescriptionClass
8775
- }))), _cache[4] || (_cache[4] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "error-message", vue.normalizeProps(vue.guardReactiveProps({
8707
+ formatDescriptionClass: _ctx.formatDescriptionClass
8708
+ }), _cache[4] || (_cache[4] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "error-message", vue.normalizeProps(vue.guardReactiveProps({
8776
8709
  hasError: _ctx.hasError,
8777
8710
  validationMessage: _ctx.validity.validationMessage
8778
8711
  })), () => [_ctx.hasError ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_9$4, [vue.createVNode(_component_f_icon, {
@@ -8780,11 +8713,11 @@ function _sfc_render$F(_ctx, _cache, $props, $setup, $data, $options) {
8780
8713
  name: "error"
8781
8714
  }), vue.createTextVNode(" " + vue.toDisplayString(_ctx.validity.validationMessage), 1)])) : vue.createCommentVNode("", true)])], 2)) : vue.createCommentVNode("", true)], 64)) : vue.createCommentVNode("", true), _cache[9] || (_cache[9] = vue.createTextVNode()), vue.createElementVNode("div", {
8782
8715
  class: vue.normalizeClass(_ctx.groupContentClass)
8783
- }, [vue.renderSlot(_ctx.$slots, "default")], 2)], 42, _hoisted_1$B);
8716
+ }, [vue.renderSlot(_ctx.$slots, "default")], 2)], 42, _hoisted_1$z);
8784
8717
  }
8785
- const FFieldset = /* @__PURE__ */ _export_sfc(_sfc_main$P, [["render", _sfc_render$F]]);
8718
+ const FFieldset = /* @__PURE__ */ _export_sfc(_sfc_main$L, [["render", _sfc_render$z]]);
8786
8719
  const anyType$1 = [String, Object, Array, Number, Date, Boolean];
8787
- const _sfc_main$O = vue.defineComponent({
8720
+ const _sfc_main$K = vue.defineComponent({
8788
8721
  name: "FCheckboxField",
8789
8722
  inheritAttrs: false,
8790
8723
  props: {
@@ -8970,9 +8903,9 @@ const _sfc_main$O = vue.defineComponent({
8970
8903
  }
8971
8904
  }
8972
8905
  });
8973
- const _hoisted_1$A = ["id", "disabled"];
8974
- const _hoisted_2$s = ["for"];
8975
- const _hoisted_3$m = {
8906
+ const _hoisted_1$y = ["id", "disabled"];
8907
+ const _hoisted_2$q = ["for"];
8908
+ const _hoisted_3$l = {
8976
8909
  key: 0,
8977
8910
  class: "checkbox__details"
8978
8911
  };
@@ -8980,7 +8913,7 @@ const _hoisted_4$i = {
8980
8913
  key: 0,
8981
8914
  class: "checkbox__details"
8982
8915
  };
8983
- function _sfc_render$E(_ctx, _cache, $props, $setup, $data, $options) {
8916
+ function _sfc_render$y(_ctx, _cache, $props, $setup, $data, $options) {
8984
8917
  return vue.openBlock(), vue.createElementBlock("div", {
8985
8918
  class: vue.normalizeClass(["checkbox", _ctx.disabledClass]),
8986
8919
  onValidity: _cache[2] || (_cache[2] = (...args) => _ctx.onValidity && _ctx.onValidity(...args))
@@ -8993,12 +8926,12 @@ function _sfc_render$E(_ctx, _cache, $props, $setup, $data, $options) {
8993
8926
  disabled: _ctx.disabled,
8994
8927
  onKeydown: _cache[0] || (_cache[0] = vue.withKeys((...args) => _ctx.onKeydown && _ctx.onKeydown(...args), ["space"])),
8995
8928
  onChange: _cache[1] || (_cache[1] = ($event) => _ctx.updateExpandedFlag())
8996
- }), null, 16, _hoisted_1$A), _cache[9] || (_cache[9] = vue.createTextVNode()), vue.createElementVNode("label", {
8929
+ }), null, 16, _hoisted_1$y), _cache[9] || (_cache[9] = vue.createTextVNode()), vue.createElementVNode("label", {
8997
8930
  class: vue.normalizeClass(_ctx.$slots.details ? "checkbox__label checkbox__width" : "checkbox__label"),
8998
8931
  for: _ctx.id
8999
8932
  }, [vue.renderSlot(_ctx.$slots, "default"), _cache[8] || (_cache[8] = vue.createTextVNode()), _ctx.$slots.details ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, {
9000
8933
  key: 0
9001
- }, [_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, {
8934
+ }, [_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, {
9002
8935
  key: 1,
9003
8936
  onEnter: _ctx.enter,
9004
8937
  onAfterEnter: _ctx.afterEnter,
@@ -9008,59 +8941,9 @@ function _sfc_render$E(_ctx, _cache, $props, $setup, $data, $options) {
9008
8941
  height: _ctx.height
9009
8942
  })])) : vue.createCommentVNode("", true)]),
9010
8943
  _: 3
9011
- }, 8, ["onEnter", "onAfterEnter", "onLeave"])) : vue.createCommentVNode("", true)], 64)) : vue.createCommentVNode("", true)], 10, _hoisted_2$s)], 34);
9012
- }
9013
- const FCheckboxField = /* @__PURE__ */ _export_sfc(_sfc_main$O, [["render", _sfc_render$E]]);
9014
- const _sfc_main$N = vue.defineComponent({
9015
- name: "FCheckboxGroup",
9016
- components: {
9017
- FFieldset
9018
- },
9019
- mixins: [TranslationMixin],
9020
- inheritAttrs: false,
9021
- props: {
9022
- /**
9023
- * The id for the fieldset id attribute.
9024
- * If the prop is not set the id will be generated.
9025
- */
9026
- id: {
9027
- type: String,
9028
- required: false,
9029
- default: () => logic.ElementIdService.generateElementId()
9030
- },
9031
- /**
9032
- * The name of the checkbox group.
9033
- */
9034
- name: {
9035
- type: String,
9036
- required: true
9037
- }
9038
- }
9039
- });
9040
- function _sfc_render$D(_ctx, _cache, $props, $setup, $data, $options) {
9041
- const _component_f_fieldset = vue.resolveComponent("f-fieldset");
9042
- return vue.openBlock(), vue.createBlock(_component_f_fieldset, vue.mergeProps({
9043
- id: _ctx.id,
9044
- name: _ctx.name
9045
- }, _ctx.$attrs), vue.createSlots({
9046
- label: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "label")]),
9047
- description: vue.withCtx(({
9048
- descriptionClass,
9049
- discreteDescriptionClass
9050
- }) => [vue.renderSlot(_ctx.$slots, "description", vue.normalizeProps(vue.guardReactiveProps({
9051
- descriptionClass,
9052
- discreteDescriptionClass
9053
- })))]),
9054
- "error-message": vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "error-message")]),
9055
- default: vue.withCtx(() => [_cache[0] || (_cache[0] = vue.createTextVNode()), _cache[1] || (_cache[1] = vue.createTextVNode()), _cache[2] || (_cache[2] = vue.createTextVNode()), _cache[3] || (_cache[3] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "default")]),
9056
- _: 2
9057
- }, [_ctx.$slots.tooltip ? {
9058
- name: "tooltip",
9059
- fn: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "tooltip")]),
9060
- key: "0"
9061
- } : void 0]), 1040, ["id", "name"]);
8944
+ }, 8, ["onEnter", "onAfterEnter", "onLeave"])) : vue.createCommentVNode("", true)], 64)) : vue.createCommentVNode("", true)], 10, _hoisted_2$q)], 34);
9062
8945
  }
9063
- const FCheckboxGroup = /* @__PURE__ */ _export_sfc(_sfc_main$N, [["render", _sfc_render$D]]);
8946
+ const FCheckboxField = /* @__PURE__ */ _export_sfc(_sfc_main$K, [["render", _sfc_render$y]]);
9064
8947
  function isContextMenuTextItem(value) {
9065
8948
  return typeof value.key === "string";
9066
8949
  }
@@ -9108,7 +8991,7 @@ async function doMenuAction$1(action, target) {
9108
8991
  }
9109
8992
  const preventKeys$1 = ["Tab", "Up", "Down", "ArrowUp", "ArrowDown", "Home", "End", " ", "Spacebar", "Enter", "Escape"];
9110
8993
  const keyUp = ["ArrowUp", "Up"];
9111
- const _sfc_main$M = vue.defineComponent({
8994
+ const _sfc_main$J = vue.defineComponent({
9112
8995
  name: "FContextMenu",
9113
8996
  components: {
9114
8997
  IPopup,
@@ -9272,20 +9155,20 @@ const _sfc_main$M = vue.defineComponent({
9272
9155
  }
9273
9156
  }
9274
9157
  });
9275
- const _hoisted_1$z = ["aria-label"];
9276
- const _hoisted_2$r = {
9158
+ const _hoisted_1$x = ["aria-label"];
9159
+ const _hoisted_2$p = {
9277
9160
  ref: "contextmenu",
9278
9161
  role: "menu",
9279
9162
  tabindex: "-1",
9280
9163
  class: "contextmenu__list"
9281
9164
  };
9282
- const _hoisted_3$l = ["onClick"];
9165
+ const _hoisted_3$k = ["onClick"];
9283
9166
  const _hoisted_4$h = ["tabindex"];
9284
9167
  const _hoisted_5$e = {
9285
9168
  key: 0,
9286
9169
  class: "contextmenu__separator"
9287
9170
  };
9288
- function _sfc_render$C(_ctx, _cache, $props, $setup, $data, $options) {
9171
+ function _sfc_render$x(_ctx, _cache, $props, $setup, $data, $options) {
9289
9172
  const _component_f_icon = vue.resolveComponent("f-icon");
9290
9173
  const _component_i_popup = vue.resolveComponent("i-popup");
9291
9174
  return vue.openBlock(), vue.createBlock(_component_i_popup, {
@@ -9302,7 +9185,7 @@ function _sfc_render$C(_ctx, _cache, $props, $setup, $data, $options) {
9302
9185
  "aria-label": _ctx.ariaLabel,
9303
9186
  onKeyup: _cache[0] || (_cache[0] = (...args) => _ctx.onKeyUp && _ctx.onKeyUp(...args)),
9304
9187
  onKeydown: _cache[1] || (_cache[1] = (...args) => _ctx.onKeyDown && _ctx.onKeyDown(...args))
9305
- }, [vue.createElementVNode("ul", _hoisted_2$r, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.popupItems, (item, index) => {
9188
+ }, [vue.createElementVNode("ul", _hoisted_2$p, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.popupItems, (item, index) => {
9306
9189
  return vue.openBlock(), vue.createElementBlock("li", {
9307
9190
  key: item.key,
9308
9191
  role: "menuitem",
@@ -9320,12 +9203,12 @@ function _sfc_render$C(_ctx, _cache, $props, $setup, $data, $options) {
9320
9203
  }, null, 8, ["name", "library"])) : vue.createCommentVNode("", true), _cache[3] || (_cache[3] = vue.createTextVNode()), vue.createElementVNode("a", {
9321
9204
  ref_for: true,
9322
9205
  ref: "anchors"
9323
- }, 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);
9324
- }), 128))], 512)], 40, _hoisted_1$z)]),
9206
+ }, 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);
9207
+ }), 128))], 512)], 40, _hoisted_1$x)]),
9325
9208
  _: 1
9326
9209
  }, 8, ["is-open", "anchor", "focus-element"]);
9327
9210
  }
9328
- const FContextMenu = /* @__PURE__ */ _export_sfc(_sfc_main$M, [["render", _sfc_render$C]]);
9211
+ const FContextMenu = /* @__PURE__ */ _export_sfc(_sfc_main$J, [["render", _sfc_render$x]]);
9329
9212
  var Operation = /* @__PURE__ */ ((Operation2) => {
9330
9213
  Operation2[Operation2["ADD"] = 0] = "ADD";
9331
9214
  Operation2[Operation2["DELETE"] = 1] = "DELETE";
@@ -9333,7 +9216,7 @@ var Operation = /* @__PURE__ */ ((Operation2) => {
9333
9216
  Operation2[Operation2["NONE"] = 3] = "NONE";
9334
9217
  return Operation2;
9335
9218
  })(Operation || {});
9336
- const _sfc_main$L = vue.defineComponent({
9219
+ const _sfc_main$I = vue.defineComponent({
9337
9220
  name: "FCrudDataset",
9338
9221
  components: {
9339
9222
  FFormModal,
@@ -9439,7 +9322,7 @@ const _sfc_main$L = vue.defineComponent({
9439
9322
  default: logic.TranslationService.provider.translate("fkui.crud-dataset.modal.header.delete", "Är du säker på att du vill ta bort raden?")
9440
9323
  }
9441
9324
  },
9442
- emits: ["change", "created", "deleted", "updated", "update:modelValue"],
9325
+ emits: ["created", "deleted", "updated", "update:modelValue"],
9443
9326
  data() {
9444
9327
  return {
9445
9328
  result: [],
@@ -9456,11 +9339,20 @@ const _sfc_main$L = vue.defineComponent({
9456
9339
  };
9457
9340
  },
9458
9341
  computed: {
9459
- confirmButtonText() {
9460
- return this.operation === Operation.ADD ? this.$t("fkui.crud-dataset.modal.confirm.add", "Lägg till") : this.$t("fkui.crud-dataset.modal.confirm.modify", "Spara");
9461
- },
9462
- cancelButtonText() {
9463
- return this.operation === Operation.ADD ? this.$t("fkui.crud-dataset.modal.cancel.add", "Avbryt") : this.$t("fkui.crud-dataset.modal.cancel.modify", "Avbryt");
9342
+ formModalButtons() {
9343
+ const confirmButtonText = this.operation === Operation.ADD ? this.$t("fkui.crud-dataset.modal.confirm.add", "Lägg till") : this.$t("fkui.crud-dataset.modal.confirm.modify", "Spara");
9344
+ const cancelButtonText = this.operation === Operation.ADD ? this.$t("fkui.crud-dataset.modal.cancel.add", "Avbryt") : this.$t("fkui.crud-dataset.modal.cancel.modify", "Avbryt");
9345
+ return [{
9346
+ label: confirmButtonText,
9347
+ event: "confirm",
9348
+ type: "primary",
9349
+ submitButton: true
9350
+ }, {
9351
+ label: cancelButtonText,
9352
+ event: "dismiss",
9353
+ type: "secondary",
9354
+ submitButton: false
9355
+ }];
9464
9356
  },
9465
9357
  confirmDeleteButtons() {
9466
9358
  return [{
@@ -9524,7 +9416,6 @@ const _sfc_main$L = vue.defineComponent({
9524
9416
  this.result = this.result.filter((item) => item !== this.item);
9525
9417
  this.$emit("deleted", this.item);
9526
9418
  this.$emit("update:modelValue", this.result);
9527
- this.$emit("change", this.result);
9528
9419
  logic.alertScreenReader(this.$t("fkui.crud-dataset.aria-live.delete", "Raden har tagits bort"), {
9529
9420
  assertive: true
9530
9421
  });
@@ -9547,7 +9438,6 @@ const _sfc_main$L = vue.defineComponent({
9547
9438
  this.result.push(this.item);
9548
9439
  this.$emit("created", this.item);
9549
9440
  this.$emit("update:modelValue", this.result);
9550
- this.$emit("change", this.result);
9551
9441
  this.callbackAfterItemAdd(this.item);
9552
9442
  logic.alertScreenReader(this.$t("fkui.crud-dataset.aria-live.add", "En rad har lagts till"), {
9553
9443
  assertive: true
@@ -9560,7 +9450,6 @@ const _sfc_main$L = vue.defineComponent({
9560
9450
  }
9561
9451
  this.$emit("updated", this.originalItemToUpdate);
9562
9452
  this.$emit("update:modelValue", this.result);
9563
- this.$emit("change", this.result);
9564
9453
  logic.alertScreenReader(this.$t("fkui.crud-dataset.aria-live.modify", "Raden har ändrats"), {
9565
9454
  assertive: true
9566
9455
  });
@@ -9578,17 +9467,17 @@ const _sfc_main$L = vue.defineComponent({
9578
9467
  }
9579
9468
  }
9580
9469
  });
9581
- const _hoisted_1$y = {
9470
+ const _hoisted_1$w = {
9582
9471
  class: "crud-dataset"
9583
9472
  };
9584
- const _hoisted_2$q = {
9473
+ const _hoisted_2$o = {
9585
9474
  key: 0
9586
9475
  };
9587
- function _sfc_render$B(_ctx, _cache, $props, $setup, $data, $options) {
9476
+ function _sfc_render$w(_ctx, _cache, $props, $setup, $data, $options) {
9588
9477
  const _component_f_icon = vue.resolveComponent("f-icon");
9589
9478
  const _component_f_form_modal = vue.resolveComponent("f-form-modal");
9590
9479
  const _component_f_confirm_modal = vue.resolveComponent("f-confirm-modal");
9591
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$y, [vue.renderSlot(_ctx.$slots, "default"), _cache[7] || (_cache[7] = vue.createTextVNode()), _ctx.hasAddSlot ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$q, [vue.createElementVNode("button", {
9480
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$w, [vue.renderSlot(_ctx.$slots, "default"), _cache[5] || (_cache[5] = vue.createTextVNode()), _ctx.hasAddSlot ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$o, [vue.createElementVNode("button", {
9592
9481
  "data-test": "f-crud-dataset-add-button",
9593
9482
  type: "button",
9594
9483
  class: "button button--tertiary crud-dataset__add-button",
@@ -9596,9 +9485,10 @@ function _sfc_render$B(_ctx, _cache, $props, $setup, $data, $options) {
9596
9485
  }, [vue.createVNode(_component_f_icon, {
9597
9486
  class: "button__icon",
9598
9487
  name: "plus"
9599
- }), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "add-button", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.crud-dataset.button.add", "Lägg till ny")), 1)])])])) : vue.createCommentVNode("", true), _cache[8] || (_cache[8] = vue.createTextVNode()), vue.createVNode(_component_f_form_modal, {
9488
+ }), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "add-button", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.crud-dataset.button.add", "Lägg till ny")), 1)])])])) : vue.createCommentVNode("", true), _cache[6] || (_cache[6] = vue.createTextVNode()), vue.createVNode(_component_f_form_modal, {
9600
9489
  "is-open": _ctx.isFormModalOpen,
9601
9490
  "aria-close-text": _ctx.$t("fkui.crud-dataset.modal.close", "Stäng"),
9491
+ buttons: _ctx.formModalButtons,
9602
9492
  "use-error-list": false,
9603
9493
  "before-submit": _ctx.beforeSubmit,
9604
9494
  "before-validation": _ctx.beforeValidation,
@@ -9617,10 +9507,8 @@ function _sfc_render$B(_ctx, _cache, $props, $setup, $data, $options) {
9617
9507
  }, {
9618
9508
  item: _ctx.item
9619
9509
  }))) : vue.createCommentVNode("", true)]),
9620
- "submit-button-text": vue.withCtx(() => [vue.createTextVNode(vue.toDisplayString(_ctx.confirmButtonText), 1)]),
9621
- "cancel-button-text": vue.withCtx(() => [vue.createTextVNode(vue.toDisplayString(_ctx.cancelButtonText), 1)]),
9622
9510
  _: 3
9623
- }, 8, ["is-open", "aria-close-text", "before-submit", "before-validation", "on-cancel", "onClose", "onCancel", "onSubmit"]), _cache[9] || (_cache[9] = vue.createTextVNode()), vue.createVNode(_component_f_confirm_modal, {
9511
+ }, 8, ["is-open", "aria-close-text", "buttons", "before-submit", "before-validation", "on-cancel", "onClose", "onCancel", "onSubmit"]), _cache[7] || (_cache[7] = vue.createTextVNode()), vue.createVNode(_component_f_confirm_modal, {
9624
9512
  "is-open": _ctx.isConfirmModalOpen,
9625
9513
  buttons: _ctx.confirmDeleteButtons,
9626
9514
  onConfirm: _ctx.onDeleteConfirm,
@@ -9633,14 +9521,14 @@ function _sfc_render$B(_ctx, _cache, $props, $setup, $data, $options) {
9633
9521
  _: 3
9634
9522
  }, 8, ["is-open", "buttons", "onConfirm", "onClose"])]);
9635
9523
  }
9636
- const FCrudDataset = /* @__PURE__ */ _export_sfc(_sfc_main$L, [["render", _sfc_render$B]]);
9524
+ const FCrudDataset = /* @__PURE__ */ _export_sfc(_sfc_main$I, [["render", _sfc_render$w]]);
9637
9525
  function FCrudDatasetInjected() {
9638
9526
  return {
9639
9527
  delete: vue.inject("delete"),
9640
9528
  modify: vue.inject("modify")
9641
9529
  };
9642
9530
  }
9643
- const _sfc_main$K = vue.defineComponent({
9531
+ const _sfc_main$H = vue.defineComponent({
9644
9532
  name: "FCrudButton",
9645
9533
  components: {
9646
9534
  FIcon
@@ -9696,11 +9584,11 @@ const _sfc_main$K = vue.defineComponent({
9696
9584
  }
9697
9585
  }
9698
9586
  });
9699
- const _hoisted_1$x = {
9587
+ const _hoisted_1$v = {
9700
9588
  key: 1,
9701
9589
  class: "sr-only"
9702
9590
  };
9703
- function _sfc_render$A(_ctx, _cache, $props, $setup, $data, $options) {
9591
+ function _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) {
9704
9592
  const _component_f_icon = vue.resolveComponent("f-icon");
9705
9593
  return vue.openBlock(), vue.createElementBlock("button", {
9706
9594
  type: "button",
@@ -9710,11 +9598,11 @@ function _sfc_render$A(_ctx, _cache, $props, $setup, $data, $options) {
9710
9598
  key: 0,
9711
9599
  class: "button__icon",
9712
9600
  name: _ctx.iconName
9713
- }, null, 8, ["name"])) : vue.createCommentVNode("", true), _cache[1] || (_cache[1] = vue.createTextVNode()), !_ctx.label ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$x, [vue.renderSlot(_ctx.$slots, "default", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.buttonText), 1)])])) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), _ctx.label ? vue.renderSlot(_ctx.$slots, "default", {
9601
+ }, null, 8, ["name"])) : vue.createCommentVNode("", true), _cache[1] || (_cache[1] = vue.createTextVNode()), !_ctx.label ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$v, [vue.renderSlot(_ctx.$slots, "default", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.buttonText), 1)])])) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), _ctx.label ? vue.renderSlot(_ctx.$slots, "default", {
9714
9602
  key: 2
9715
9603
  }, () => [vue.createTextVNode(vue.toDisplayString(_ctx.buttonText), 1)]) : vue.createCommentVNode("", true)]);
9716
9604
  }
9717
- const FCrudButton = /* @__PURE__ */ _export_sfc(_sfc_main$K, [["render", _sfc_render$A]]);
9605
+ const FCrudButton = /* @__PURE__ */ _export_sfc(_sfc_main$H, [["render", _sfc_render$v]]);
9718
9606
  function ActivateItemInjected() {
9719
9607
  return {
9720
9608
  registerCallbackAfterItemAdd: vue.inject("registerCallbackAfterItemAdd", () => void 0),
@@ -9798,7 +9686,7 @@ function FTableInjected() {
9798
9686
  renderColumns: vue.inject("renderColumns", false)
9799
9687
  };
9800
9688
  }
9801
- const _sfc_main$J = vue.defineComponent({
9689
+ const _sfc_main$G = vue.defineComponent({
9802
9690
  name: "FTableColumn",
9803
9691
  inheritAttrs: false,
9804
9692
  props: {
@@ -9939,7 +9827,7 @@ const _sfc_main$J = vue.defineComponent({
9939
9827
  });
9940
9828
  }
9941
9829
  });
9942
- function _sfc_render$z(_ctx, _cache, $props, $setup, $data, $options) {
9830
+ function _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) {
9943
9831
  return _ctx.renderColumns && _ctx.visible ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.tagName), vue.mergeProps({
9944
9832
  key: 0,
9945
9833
  class: _ctx.classes,
@@ -9951,7 +9839,7 @@ function _sfc_render$z(_ctx, _cache, $props, $setup, $data, $options) {
9951
9839
  _: 3
9952
9840
  }, 16, ["class", "scope"])) : vue.createCommentVNode("", true);
9953
9841
  }
9954
- const FTableColumn = /* @__PURE__ */ _export_sfc(_sfc_main$J, [["render", _sfc_render$z]]);
9842
+ const FTableColumn = /* @__PURE__ */ _export_sfc(_sfc_main$G, [["render", _sfc_render$u]]);
9955
9843
  function FSortFilterDatasetInjected() {
9956
9844
  return {
9957
9845
  sort: vue.inject("sort", () => void 0),
@@ -9959,7 +9847,7 @@ function FSortFilterDatasetInjected() {
9959
9847
  registerCallbackOnMount: vue.inject("registerCallbackOnMount", () => void 0)
9960
9848
  };
9961
9849
  }
9962
- const _sfc_main$I = vue.defineComponent({
9850
+ const _sfc_main$F = vue.defineComponent({
9963
9851
  name: "FLabel",
9964
9852
  components: {
9965
9853
  FIcon
@@ -9980,7 +9868,7 @@ const _sfc_main$I = vue.defineComponent({
9980
9868
  data() {
9981
9869
  return {
9982
9870
  descriptionClass: ["label__description"],
9983
- discreteDescriptionClass: ["label__description", "label__description--discrete"]
9871
+ formatDescriptionClass: ["label__description", "label__description--format"]
9984
9872
  };
9985
9873
  },
9986
9874
  computed: {
@@ -9998,56 +9886,56 @@ const _sfc_main$I = vue.defineComponent({
9998
9886
  }
9999
9887
  }
10000
9888
  });
10001
- const _hoisted_1$w = {
9889
+ const _hoisted_1$u = {
10002
9890
  key: 0
10003
9891
  };
10004
- const _hoisted_2$p = {
9892
+ const _hoisted_2$n = {
10005
9893
  key: 0,
10006
9894
  ref: "tooltipAttachTo"
10007
9895
  };
10008
- const _hoisted_3$k = ["for"];
9896
+ const _hoisted_3$j = ["for"];
10009
9897
  const _hoisted_4$g = ["for"];
10010
9898
  const _hoisted_5$d = {
10011
9899
  key: 0,
10012
9900
  class: "label__message label__message--error"
10013
9901
  };
10014
9902
  const _hoisted_6$b = ["for"];
10015
- const _hoisted_7$b = {
9903
+ const _hoisted_7$a = {
10016
9904
  key: 0,
10017
9905
  class: "label__message label__message--error"
10018
9906
  };
10019
- function _sfc_render$y(_ctx, _cache, $props, $setup, $data, $options) {
9907
+ function _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) {
10020
9908
  const _component_f_icon = vue.resolveComponent("f-icon");
10021
- return _ctx.$slots.tooltip ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$w, [_ctx.hasDefaultSlot ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$p, [vue.createElementVNode("label", {
9909
+ return _ctx.$slots.tooltip ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$u, [_ctx.hasDefaultSlot ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$n, [vue.createElementVNode("label", {
10022
9910
  class: "label",
10023
9911
  for: _ctx.forProperty
10024
- }, [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", {
9912
+ }, [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", {
10025
9913
  key: 1,
10026
9914
  class: "label sr-separator",
10027
9915
  for: _ctx.forProperty
10028
- }, [vue.renderSlot(_ctx.$slots, "description", vue.normalizeProps(vue.guardReactiveProps({
9916
+ }, [vue.renderSlot(_ctx.$slots, "description", {
10029
9917
  descriptionClass: _ctx.descriptionClass,
10030
- discreteDescriptionClass: _ctx.discreteDescriptionClass
10031
- }))), _cache[1] || (_cache[1] = vue.createTextVNode()), _ctx.hasErrorMessageSlot ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_5$d, [vue.createVNode(_component_f_icon, {
9918
+ formatDescriptionClass: _ctx.formatDescriptionClass
9919
+ }), _cache[1] || (_cache[1] = vue.createTextVNode()), _ctx.hasErrorMessageSlot ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_5$d, [vue.createVNode(_component_f_icon, {
10032
9920
  class: "label__icon--left",
10033
9921
  name: "error"
10034
9922
  }), _cache[0] || (_cache[0] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "error-message")])) : vue.createCommentVNode("", true)], 8, _hoisted_4$g)) : vue.createCommentVNode("", true)])) : (vue.openBlock(), vue.createElementBlock("label", {
10035
9923
  key: 1,
10036
9924
  class: "label",
10037
9925
  for: _ctx.forProperty
10038
- }, [vue.renderSlot(_ctx.$slots, "default"), _cache[5] || (_cache[5] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "description", vue.normalizeProps(vue.guardReactiveProps({
9926
+ }, [vue.renderSlot(_ctx.$slots, "default"), _cache[5] || (_cache[5] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "description", {
10039
9927
  descriptionClass: _ctx.descriptionClass,
10040
- discreteDescriptionClass: _ctx.discreteDescriptionClass
10041
- }))), _cache[6] || (_cache[6] = vue.createTextVNode()), _ctx.hasErrorMessageSlot ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_7$b, [vue.createVNode(_component_f_icon, {
9928
+ formatDescriptionClass: _ctx.formatDescriptionClass
9929
+ }), _cache[6] || (_cache[6] = vue.createTextVNode()), _ctx.hasErrorMessageSlot ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_7$a, [vue.createVNode(_component_f_icon, {
10042
9930
  class: "label__icon--left",
10043
9931
  name: "error"
10044
9932
  }), _cache[4] || (_cache[4] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "error-message")])) : vue.createCommentVNode("", true)], 8, _hoisted_6$b));
10045
9933
  }
10046
- const FLabel = /* @__PURE__ */ _export_sfc(_sfc_main$I, [["render", _sfc_render$y]]);
9934
+ const FLabel = /* @__PURE__ */ _export_sfc(_sfc_main$F, [["render", _sfc_render$t]]);
10047
9935
  function resolveWidthClass$1(words, inline) {
10048
9936
  return inline ? void 0 : words.split(" ").map((word) => `i-width-${word}`).join(" ");
10049
9937
  }
10050
- const _sfc_main$H = vue.defineComponent({
9938
+ const _sfc_main$E = vue.defineComponent({
10051
9939
  name: "FSelectField",
10052
9940
  components: {
10053
9941
  FIcon,
@@ -10178,8 +10066,8 @@ const _sfc_main$H = vue.defineComponent({
10178
10066
  }
10179
10067
  }
10180
10068
  });
10181
- const _hoisted_1$v = ["id"];
10182
- function _sfc_render$x(_ctx, _cache, $props, $setup, $data, $options) {
10069
+ const _hoisted_1$t = ["id"];
10070
+ function _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) {
10183
10071
  const _component_f_label = vue.resolveComponent("f-label");
10184
10072
  const _component_f_icon = vue.resolveComponent("f-icon");
10185
10073
  return vue.openBlock(), vue.createElementBlock("div", {
@@ -10194,11 +10082,11 @@ function _sfc_render$x(_ctx, _cache, $props, $setup, $data, $options) {
10194
10082
  default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "label")]),
10195
10083
  description: vue.withCtx(({
10196
10084
  descriptionClass,
10197
- discreteDescriptionClass
10198
- }) => [vue.renderSlot(_ctx.$slots, "description", vue.normalizeProps(vue.guardReactiveProps({
10085
+ formatDescriptionClass
10086
+ }) => [vue.renderSlot(_ctx.$slots, "description", {
10199
10087
  descriptionClass,
10200
- discreteDescriptionClass
10201
- })))]),
10088
+ formatDescriptionClass
10089
+ })]),
10202
10090
  "error-message": vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "error-message", vue.normalizeProps(vue.guardReactiveProps({
10203
10091
  hasError: _ctx.hasError,
10204
10092
  validationMessage: _ctx.validationMessage
@@ -10216,7 +10104,7 @@ function _sfc_render$x(_ctx, _cache, $props, $setup, $data, $options) {
10216
10104
  id: _ctx.id,
10217
10105
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.vModel = $event),
10218
10106
  class: "select-field__select"
10219
- }, _ctx.attrs), [vue.renderSlot(_ctx.$slots, "default")], 16, _hoisted_1$v), [[vue.vModelSelect, _ctx.vModel]]), _cache[5] || (_cache[5] = vue.createTextVNode()), _ctx.hasError && _ctx.textFieldTableMode ? (vue.openBlock(), vue.createBlock(_component_f_icon, {
10107
+ }, _ctx.attrs), [vue.renderSlot(_ctx.$slots, "default")], 16, _hoisted_1$t), [[vue.vModelSelect, _ctx.vModel]]), _cache[5] || (_cache[5] = vue.createTextVNode()), _ctx.hasError && _ctx.textFieldTableMode ? (vue.openBlock(), vue.createBlock(_component_f_icon, {
10220
10108
  key: 0,
10221
10109
  ref: "icon",
10222
10110
  class: "text-field__icon input-icon select-field__error-popup-icon",
@@ -10226,7 +10114,7 @@ function _sfc_render$x(_ctx, _cache, $props, $setup, $data, $options) {
10226
10114
  name: "arrow-down"
10227
10115
  })], 2)], 34);
10228
10116
  }
10229
- const FSelectField = /* @__PURE__ */ _export_sfc(_sfc_main$H, [["render", _sfc_render$x]]);
10117
+ const FSelectField = /* @__PURE__ */ _export_sfc(_sfc_main$E, [["render", _sfc_render$s]]);
10230
10118
  function resolveWidthClass(words, inline) {
10231
10119
  return inline ? void 0 : words.split(" ").map((word) => `i-width-${word}`).join(" ");
10232
10120
  }
@@ -10255,7 +10143,7 @@ function useTextFieldSetup(props) {
10255
10143
  toggleDropdown,
10256
10144
  selectOption,
10257
10145
  closeDropdown
10258
- } = useCombobox(inputNode, props.options, onOptionSelected);
10146
+ } = useCombobox(inputNode, vue.toRef(props, "options"), onOptionSelected);
10259
10147
  return {
10260
10148
  textFieldTableMode,
10261
10149
  viewValue,
@@ -10270,14 +10158,14 @@ function useTextFieldSetup(props) {
10270
10158
  closeDropdown
10271
10159
  };
10272
10160
  }
10273
- const _sfc_main$G = vue.defineComponent({
10161
+ const _sfc_main$D = vue.defineComponent({
10274
10162
  name: "FTextField",
10275
10163
  components: {
10276
10164
  FLabel,
10277
10165
  FIcon,
10278
10166
  IPopupError,
10279
- IComboboxDropdown: _sfc_main$S,
10280
- IComboboxToggleButton: _sfc_main$R
10167
+ IComboboxDropdown: _sfc_main$O,
10168
+ IComboboxToggleButton: _sfc_main$N
10281
10169
  },
10282
10170
  inheritAttrs: false,
10283
10171
  props: {
@@ -10378,6 +10266,8 @@ const _sfc_main$G = vue.defineComponent({
10378
10266
  *
10379
10267
  * When set, the user can select a value from the list of options and filter while typing.
10380
10268
  *
10269
+ * If options will be set at a later time, initially specify as an empty array.
10270
+ *
10381
10271
  * If a formatter is used by the component, make sure the options are formatted as well.
10382
10272
  */
10383
10273
  options: {
@@ -10394,7 +10284,7 @@ const _sfc_main$G = vue.defineComponent({
10394
10284
  default: false
10395
10285
  }
10396
10286
  },
10397
- emits: ["blur", "change", "update", "update:modelValue"],
10287
+ emits: ["blur", "change", "update:modelValue"],
10398
10288
  setup(props) {
10399
10289
  const {
10400
10290
  textFieldTableMode,
@@ -10503,7 +10393,6 @@ const _sfc_main$G = vue.defineComponent({
10503
10393
  async onChange() {
10504
10394
  if (!this.$refs.input.hasAttribute("data-validation")) {
10505
10395
  this.$emit("update:modelValue", this.viewValue);
10506
- this.$emit("update", this.viewValue);
10507
10396
  await this.$nextTick();
10508
10397
  this.$emit("change", this.viewValue);
10509
10398
  }
@@ -10518,7 +10407,6 @@ const _sfc_main$G = vue.defineComponent({
10518
10407
  }
10519
10408
  if (!this.$refs.input.hasAttribute("data-validation")) {
10520
10409
  this.$emit("update:modelValue", this.viewValue);
10521
- this.$emit("update", this.viewValue);
10522
10410
  await this.$nextTick();
10523
10411
  this.$emit("blur", this.viewValue);
10524
10412
  }
@@ -10537,7 +10425,6 @@ const _sfc_main$G = vue.defineComponent({
10537
10425
  }
10538
10426
  this.lastModelValue = newModelValue;
10539
10427
  this.$emit("update:modelValue", newModelValue);
10540
- this.$emit("update", newModelValue);
10541
10428
  await this.$nextTick();
10542
10429
  this.$emit(detail.nativeEvent, newModelValue);
10543
10430
  if (detail.isValid) {
@@ -10609,14 +10496,14 @@ const _sfc_main$G = vue.defineComponent({
10609
10496
  }
10610
10497
  }
10611
10498
  });
10612
- const _hoisted_1$u = {
10499
+ const _hoisted_1$s = {
10613
10500
  key: 0
10614
10501
  };
10615
- const _hoisted_2$o = {
10502
+ const _hoisted_2$m = {
10616
10503
  key: 0,
10617
10504
  class: "sr-only"
10618
10505
  };
10619
- const _hoisted_3$j = {
10506
+ const _hoisted_3$i = {
10620
10507
  key: 0,
10621
10508
  class: "sr-only"
10622
10509
  };
@@ -10628,11 +10515,11 @@ const _hoisted_6$a = {
10628
10515
  key: 2,
10629
10516
  class: "text-field__append-inner"
10630
10517
  };
10631
- const _hoisted_7$a = {
10518
+ const _hoisted_7$9 = {
10632
10519
  key: 3,
10633
10520
  class: "text-field__append-inner"
10634
10521
  };
10635
- function _sfc_render$w(_ctx, _cache, $props, $setup, $data, $options) {
10522
+ function _sfc_render$r(_ctx, _cache, $props, $setup, $data, $options) {
10636
10523
  const _component_f_label = vue.resolveComponent("f-label");
10637
10524
  const _component_f_icon = vue.resolveComponent("f-icon");
10638
10525
  const _component_i_popup_error = vue.resolveComponent("i-popup-error");
@@ -10646,20 +10533,20 @@ function _sfc_render$w(_ctx, _cache, $props, $setup, $data, $options) {
10646
10533
  for: _ctx.id,
10647
10534
  class: vue.normalizeClass(_ctx.labelClass)
10648
10535
  }, vue.createSlots({
10649
- default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "default", {}, () => [_ctx.defaultText !== "" ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$u, vue.toDisplayString(_ctx.defaultText), 1)) : vue.createCommentVNode("", true)])]),
10536
+ default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "default", {}, () => [_ctx.defaultText !== "" ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$s, vue.toDisplayString(_ctx.defaultText), 1)) : vue.createCommentVNode("", true)])]),
10650
10537
  description: vue.withCtx(({
10651
10538
  descriptionClass,
10652
- discreteDescriptionClass
10653
- }) => [vue.renderSlot(_ctx.$slots, "description", vue.normalizeProps(vue.guardReactiveProps({
10539
+ formatDescriptionClass
10540
+ }) => [vue.renderSlot(_ctx.$slots, "description", {
10654
10541
  descriptionClass,
10655
- discreteDescriptionClass
10656
- })), () => [_ctx.descriptionText ? (vue.openBlock(), vue.createElementBlock("span", {
10542
+ formatDescriptionClass
10543
+ }, () => [_ctx.descriptionText ? (vue.openBlock(), vue.createElementBlock("span", {
10657
10544
  key: 0,
10658
10545
  class: vue.normalizeClass(descriptionClass)
10659
- }, [_ctx.descriptionScreenReaderText ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$o, 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", {
10546
+ }, [_ctx.descriptionScreenReaderText ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$m, 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", {
10660
10547
  key: 1,
10661
- class: vue.normalizeClass(discreteDescriptionClass)
10662
- }, [_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)])]),
10548
+ class: vue.normalizeClass(formatDescriptionClass)
10549
+ }, [_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)])]),
10663
10550
  "error-message": vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "error-message", vue.normalizeProps(vue.guardReactiveProps({
10664
10551
  hasError: _ctx.hasError,
10665
10552
  validationMessage: _ctx.validationMessage
@@ -10698,7 +10585,7 @@ function _sfc_render$w(_ctx, _cache, $props, $setup, $data, $options) {
10698
10585
  "is-open": _ctx.showPopupError,
10699
10586
  "error-message": _ctx.validationMessage,
10700
10587
  onClose: _ctx.closePopupError
10701
- }, null, 8, ["anchor", "is-open", "error-message", "onClose"])) : vue.createCommentVNode("", true), _cache[15] || (_cache[15] = vue.createTextVNode()), _ctx.$slots["append-inner"] ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$a, [vue.renderSlot(_ctx.$slots, "append-inner")])) : vue.createCommentVNode("", true), _cache[16] || (_cache[16] = vue.createTextVNode()), _ctx.options ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$a, [vue.createVNode(_component_i_combobox_toggle_button, {
10588
+ }, null, 8, ["anchor", "is-open", "error-message", "onClose"])) : vue.createCommentVNode("", true), _cache[15] || (_cache[15] = vue.createTextVNode()), _ctx.$slots["append-inner"] ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$a, [vue.renderSlot(_ctx.$slots, "append-inner")])) : vue.createCommentVNode("", true), _cache[16] || (_cache[16] = vue.createTextVNode()), _ctx.options ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$9, [vue.createVNode(_component_i_combobox_toggle_button, {
10702
10589
  disabled: _ctx.disabled,
10703
10590
  "aria-controls": _ctx.dropdownIsOpen ? _ctx.dropdownId : void 0,
10704
10591
  "aria-expanded": _ctx.dropdownIsOpen,
@@ -10715,8 +10602,8 @@ function _sfc_render$w(_ctx, _cache, $props, $setup, $data, $options) {
10715
10602
  onClose: _ctx.onDropdownClose
10716
10603
  }, null, 8, ["id", "is-open", "options", "active-option", "active-option-id", "input-node", "onSelect", "onClose"])) : vue.createCommentVNode("", true)], 2);
10717
10604
  }
10718
- const FTextField = /* @__PURE__ */ _export_sfc(_sfc_main$G, [["render", _sfc_render$w]]);
10719
- const _sfc_main$F = vue.defineComponent({
10605
+ const FTextField = /* @__PURE__ */ _export_sfc(_sfc_main$D, [["render", _sfc_render$r]]);
10606
+ const _sfc_main$C = vue.defineComponent({
10720
10607
  name: "FEmailTextField",
10721
10608
  components: {
10722
10609
  FTextField
@@ -10762,7 +10649,7 @@ const _sfc_main$F = vue.defineComponent({
10762
10649
  default: logic.TranslationService.provider.translate("fkui.email-text-field.error.pasting", "Du kan inte kopiera mejladressen. Du måste skriva in den igen.")
10763
10650
  }
10764
10651
  },
10765
- emits: ["blur", "change", "update", "update:modelValue"],
10652
+ emits: ["blur", "change", "update:modelValue"],
10766
10653
  data() {
10767
10654
  return {
10768
10655
  validityMode: "INITIAL",
@@ -10783,7 +10670,6 @@ const _sfc_main$F = vue.defineComponent({
10783
10670
  },
10784
10671
  onUpdate(event) {
10785
10672
  this.$emit("update:modelValue", event);
10786
- this.$emit("update", event);
10787
10673
  },
10788
10674
  onPaste(event) {
10789
10675
  this.showPasteErrorMessage = true;
@@ -10833,10 +10719,10 @@ const _sfc_main$F = vue.defineComponent({
10833
10719
  }
10834
10720
  }
10835
10721
  });
10836
- const _hoisted_1$t = {
10722
+ const _hoisted_1$r = {
10837
10723
  key: 0
10838
10724
  };
10839
- function _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) {
10725
+ function _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {
10840
10726
  const _component_f_text_field = vue.resolveComponent("f-text-field");
10841
10727
  return vue.openBlock(), vue.createElementBlock("div", null, [vue.createVNode(_component_f_text_field, vue.mergeProps({
10842
10728
  id: _ctx.id,
@@ -10846,14 +10732,14 @@ function _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) {
10846
10732
  "model-value": _ctx.modelValue,
10847
10733
  onChange: _ctx.onChange,
10848
10734
  onBlur: _ctx.onBlur,
10849
- onUpdate: _ctx.onUpdate,
10735
+ "onUpdate:modelValue": _ctx.onUpdate,
10850
10736
  onValidity: _ctx.onValidity,
10851
10737
  onPendingValidity: _ctx.onPendingValidity
10852
10738
  }), {
10853
- "error-message": vue.withCtx(() => [_ctx.showPasteErrorMessage ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$t, vue.toDisplayString(_ctx.pasteErrorText), 1)) : vue.createCommentVNode("", true)]),
10739
+ "error-message": vue.withCtx(() => [_ctx.showPasteErrorMessage ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$r, vue.toDisplayString(_ctx.pasteErrorText), 1)) : vue.createCommentVNode("", true)]),
10854
10740
  default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "default", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.defaultText), 1)]), _cache[2] || (_cache[2] = vue.createTextVNode())]),
10855
10741
  _: 3
10856
- }, 16, ["id", "maxlength", "model-value", "onChange", "onBlur", "onUpdate", "onValidity", "onPendingValidity"]), _cache[3] || (_cache[3] = vue.createTextVNode()), _ctx.extendedValidation ? (vue.openBlock(), vue.createBlock(_component_f_text_field, {
10742
+ }, 16, ["id", "maxlength", "model-value", "onChange", "onBlur", "onUpdate:modelValue", "onValidity", "onPendingValidity"]), _cache[3] || (_cache[3] = vue.createTextVNode()), _ctx.extendedValidation ? (vue.openBlock(), vue.createBlock(_component_f_text_field, {
10857
10743
  key: 0,
10858
10744
  modelValue: _ctx.secondEmail,
10859
10745
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.secondEmail = $event),
@@ -10866,8 +10752,8 @@ function _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) {
10866
10752
  _: 3
10867
10753
  }, 8, ["modelValue", "maxlength", "onPaste"])) : vue.createCommentVNode("", true)]);
10868
10754
  }
10869
- const FEmailTextField = /* @__PURE__ */ _export_sfc(_sfc_main$F, [["render", _sfc_render$v]]);
10870
- const _sfc_main$E = vue.defineComponent({
10755
+ const FEmailTextField = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["render", _sfc_render$q]]);
10756
+ const _sfc_main$B = vue.defineComponent({
10871
10757
  name: "FPhoneTextField",
10872
10758
  components: {
10873
10759
  FTextField
@@ -10904,7 +10790,7 @@ const _sfc_main$E = vue.defineComponent({
10904
10790
  default: false
10905
10791
  }
10906
10792
  },
10907
- emits: ["blur", "change", "update", "update:modelValue"],
10793
+ emits: ["blur", "change", "update:modelValue"],
10908
10794
  data() {
10909
10795
  return {
10910
10796
  validityMode: "INITIAL",
@@ -10924,7 +10810,6 @@ const _sfc_main$E = vue.defineComponent({
10924
10810
  },
10925
10811
  onUpdate(event) {
10926
10812
  this.$emit("update:modelValue", event);
10927
- this.$emit("update", event);
10928
10813
  },
10929
10814
  onValidity({
10930
10815
  detail
@@ -10968,7 +10853,7 @@ const _sfc_main$E = vue.defineComponent({
10968
10853
  }
10969
10854
  }
10970
10855
  });
10971
- function _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) {
10856
+ function _sfc_render$p(_ctx, _cache, $props, $setup, $data, $options) {
10972
10857
  const _component_f_text_field = vue.resolveComponent("f-text-field");
10973
10858
  return vue.openBlock(), vue.createElementBlock("div", null, [vue.createVNode(_component_f_text_field, vue.mergeProps({
10974
10859
  id: _ctx.id,
@@ -10978,13 +10863,13 @@ function _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) {
10978
10863
  "model-value": _ctx.modelValue,
10979
10864
  onChange: _ctx.onChange,
10980
10865
  onBlur: _ctx.onBlur,
10981
- onUpdate: _ctx.onUpdate,
10866
+ "onUpdate:modelValue": _ctx.onUpdate,
10982
10867
  onValidity: _ctx.onValidity,
10983
10868
  onPendingValidity: _ctx.onPendingValidity
10984
10869
  }), {
10985
10870
  default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "default", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.defaultText), 1)])]),
10986
10871
  _: 3
10987
- }, 16, ["id", "maxlength", "model-value", "onChange", "onBlur", "onUpdate", "onValidity", "onPendingValidity"]), _cache[1] || (_cache[1] = vue.createTextVNode()), _ctx.extendedValidation ? (vue.openBlock(), vue.createBlock(_component_f_text_field, {
10872
+ }, 16, ["id", "maxlength", "model-value", "onChange", "onBlur", "onUpdate:modelValue", "onValidity", "onPendingValidity"]), _cache[1] || (_cache[1] = vue.createTextVNode()), _ctx.extendedValidation ? (vue.openBlock(), vue.createBlock(_component_f_text_field, {
10988
10873
  key: 0,
10989
10874
  modelValue: _ctx.secondPhone,
10990
10875
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.secondPhone = $event),
@@ -10995,8 +10880,8 @@ function _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) {
10995
10880
  _: 3
10996
10881
  }, 8, ["modelValue", "maxlength"])) : vue.createCommentVNode("", true)]);
10997
10882
  }
10998
- const FPhoneTextField = /* @__PURE__ */ _export_sfc(_sfc_main$E, [["render", _sfc_render$u]]);
10999
- const _sfc_main$D = vue.defineComponent({
10883
+ const FPhoneTextField = /* @__PURE__ */ _export_sfc(_sfc_main$B, [["render", _sfc_render$p]]);
10884
+ const _sfc_main$A = vue.defineComponent({
11000
10885
  name: "FCurrencyTextField",
11001
10886
  extends: FTextField,
11002
10887
  mixins: [TranslationMixin],
@@ -11031,7 +10916,7 @@ const _sfc_main$D = vue.defineComponent({
11031
10916
  logic.ValidationService.validateElement(inputElement);
11032
10917
  }
11033
10918
  });
11034
- const _sfc_main$C = vue.defineComponent({
10919
+ const _sfc_main$z = vue.defineComponent({
11035
10920
  name: "FSearchTextField",
11036
10921
  components: {
11037
10922
  FTextField,
@@ -11091,10 +10976,10 @@ const _sfc_main$C = vue.defineComponent({
11091
10976
  }
11092
10977
  }
11093
10978
  });
11094
- const _hoisted_1$s = {
10979
+ const _hoisted_1$q = {
11095
10980
  class: "sr-only"
11096
10981
  };
11097
- function _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) {
10982
+ function _sfc_render$o(_ctx, _cache, $props, $setup, $data, $options) {
11098
10983
  const _component_f_icon = vue.resolveComponent("f-icon");
11099
10984
  const _component_f_text_field = vue.resolveComponent("f-text-field");
11100
10985
  return vue.openBlock(), vue.createElementBlock("div", null, [vue.createVNode(_component_f_text_field, vue.mergeProps({
@@ -11120,11 +11005,11 @@ function _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) {
11120
11005
  })))]),
11121
11006
  description: vue.withCtx(({
11122
11007
  descriptionClass,
11123
- discreteDescriptionClass
11124
- }) => [vue.renderSlot(_ctx.$slots, "description", vue.normalizeProps(vue.guardReactiveProps({
11008
+ formatDescriptionClass
11009
+ }) => [vue.renderSlot(_ctx.$slots, "description", {
11125
11010
  descriptionClass,
11126
- discreteDescriptionClass
11127
- })))]),
11011
+ formatDescriptionClass
11012
+ })]),
11128
11013
  default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "default", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.defaultText), 1)]), _cache[2] || (_cache[2] = vue.createTextVNode()), _cache[3] || (_cache[3] = vue.createTextVNode()), _cache[4] || (_cache[4] = vue.createTextVNode()), _cache[5] || (_cache[5] = vue.createTextVNode()), _cache[6] || (_cache[6] = vue.createTextVNode()), _cache[7] || (_cache[7] = vue.createTextVNode())]),
11129
11014
  _: 2
11130
11015
  }, [_ctx.$slots.tooltip ? {
@@ -11140,12 +11025,12 @@ function _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) {
11140
11025
  }, [vue.createVNode(_component_f_icon, {
11141
11026
  name: "cross",
11142
11027
  class: "clear-button__icon"
11143
- }), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_1$s, vue.toDisplayString(_ctx.clearableScreenReaderText), 1)])]),
11028
+ }), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_1$q, vue.toDisplayString(_ctx.clearableScreenReaderText), 1)])]),
11144
11029
  key: "1"
11145
11030
  } : void 0]), 1040, ["id", "maxlength", "model-value", "onChange", "onInput", "onBlur", "onUpdate"])]);
11146
11031
  }
11147
- const FSearchTextField = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["render", _sfc_render$t]]);
11148
- const _sfc_main$B = vue.defineComponent({
11032
+ const FSearchTextField = /* @__PURE__ */ _export_sfc(_sfc_main$z, [["render", _sfc_render$o]]);
11033
+ const _sfc_main$y = vue.defineComponent({
11149
11034
  name: "FBankAccountNumberTextField",
11150
11035
  extends: FTextField,
11151
11036
  mixins: [TranslationMixin],
@@ -11174,7 +11059,7 @@ const _sfc_main$B = vue.defineComponent({
11174
11059
  logic.ValidationService.validateElement(inputElement);
11175
11060
  }
11176
11061
  });
11177
- const _sfc_main$A = vue.defineComponent({
11062
+ const _sfc_main$x = vue.defineComponent({
11178
11063
  name: "FBankgiroTextField",
11179
11064
  extends: FTextField,
11180
11065
  mixins: [TranslationMixin],
@@ -11206,7 +11091,7 @@ const _sfc_main$A = vue.defineComponent({
11206
11091
  logic.ValidationService.validateElement(inputElement);
11207
11092
  }
11208
11093
  });
11209
- const _sfc_main$z = vue.defineComponent({
11094
+ const _sfc_main$w = vue.defineComponent({
11210
11095
  name: "FClearingnumberTextField",
11211
11096
  extends: FTextField,
11212
11097
  mixins: [TranslationMixin],
@@ -11238,7 +11123,7 @@ const _sfc_main$z = vue.defineComponent({
11238
11123
  function defaultFormatter$1(modelValue) {
11239
11124
  return logic.formatNumber(modelValue, this.decimals);
11240
11125
  }
11241
- const _sfc_main$y = vue.defineComponent({
11126
+ const _sfc_main$v = vue.defineComponent({
11242
11127
  name: "FNumericTextField",
11243
11128
  extends: FTextField,
11244
11129
  props: {
@@ -11275,7 +11160,7 @@ const _sfc_main$y = vue.defineComponent({
11275
11160
  logic.ValidationService.validateElement(inputElement);
11276
11161
  }
11277
11162
  });
11278
- const _sfc_main$x = vue.defineComponent({
11163
+ const _sfc_main$u = vue.defineComponent({
11279
11164
  name: "FPersonnummerTextField",
11280
11165
  extends: FTextField,
11281
11166
  mixins: [TranslationMixin],
@@ -11315,7 +11200,7 @@ const _sfc_main$x = vue.defineComponent({
11315
11200
  logic.ValidationService.validateElement(inputElement);
11316
11201
  }
11317
11202
  });
11318
- const _sfc_main$w = vue.defineComponent({
11203
+ const _sfc_main$t = vue.defineComponent({
11319
11204
  name: "FPlusgiroTextField",
11320
11205
  extends: FTextField,
11321
11206
  mixins: [TranslationMixin],
@@ -11347,7 +11232,7 @@ const _sfc_main$w = vue.defineComponent({
11347
11232
  logic.ValidationService.validateElement(inputElement);
11348
11233
  }
11349
11234
  });
11350
- const _sfc_main$v = vue.defineComponent({
11235
+ const _sfc_main$s = vue.defineComponent({
11351
11236
  name: "FPostalCodeTextField",
11352
11237
  extends: FTextField,
11353
11238
  mixins: [TranslationMixin],
@@ -11384,7 +11269,7 @@ const _sfc_main$v = vue.defineComponent({
11384
11269
  function defaultFormatter(modelValue) {
11385
11270
  return logic.formatPercent(modelValue, this.decimals);
11386
11271
  }
11387
- const _sfc_main$u = vue.defineComponent({
11272
+ const _sfc_main$r = vue.defineComponent({
11388
11273
  name: "FPercentTextField",
11389
11274
  extends: FTextField,
11390
11275
  mixins: [TranslationMixin],
@@ -11432,7 +11317,7 @@ const _sfc_main$u = vue.defineComponent({
11432
11317
  logic.ValidationService.validateElement(inputElement);
11433
11318
  }
11434
11319
  });
11435
- const _sfc_main$t = vue.defineComponent({
11320
+ const _sfc_main$q = vue.defineComponent({
11436
11321
  name: "FOrganisationsnummerTextField",
11437
11322
  extends: FTextField,
11438
11323
  mixins: [TranslationMixin],
@@ -11540,7 +11425,7 @@ function filter(list, filterAttributes, searchString) {
11540
11425
  const searchTerms = searchString.split(/\s+/).map((word) => word.toLocaleLowerCase());
11541
11426
  return list.filter((item) => includesAllSearchTerms(item, filterAttributes, searchTerms));
11542
11427
  }
11543
- const _sfc_main$s = vue.defineComponent({
11428
+ const _sfc_main$p = vue.defineComponent({
11544
11429
  name: "FSortFilterDataset",
11545
11430
  components: {
11546
11431
  FSelectField,
@@ -11742,13 +11627,13 @@ const _sfc_main$s = vue.defineComponent({
11742
11627
  }
11743
11628
  }
11744
11629
  });
11745
- const _hoisted_1$r = {
11630
+ const _hoisted_1$p = {
11746
11631
  class: "sort-filter-dataset"
11747
11632
  };
11748
- const _hoisted_2$n = {
11633
+ const _hoisted_2$l = {
11749
11634
  class: "sort-filter-dataset__search"
11750
11635
  };
11751
- const _hoisted_3$i = {
11636
+ const _hoisted_3$h = {
11752
11637
  class: "sr-only"
11753
11638
  };
11754
11639
  const _hoisted_4$e = ["title"];
@@ -11761,14 +11646,14 @@ const _hoisted_6$9 = {
11761
11646
  ascending: false
11762
11647
  }
11763
11648
  };
11764
- const _hoisted_7$9 = ["value"];
11765
- function _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) {
11649
+ const _hoisted_7$8 = ["value"];
11650
+ function _sfc_render$n(_ctx, _cache, $props, $setup, $data, $options) {
11766
11651
  const _component_i_flex_item = vue.resolveComponent("i-flex-item");
11767
11652
  const _component_f_icon = vue.resolveComponent("f-icon");
11768
11653
  const _component_f_text_field = vue.resolveComponent("f-text-field");
11769
11654
  const _component_f_select_field = vue.resolveComponent("f-select-field");
11770
11655
  const _component_i_flex = vue.resolveComponent("i-flex");
11771
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$r, [vue.createVNode(_component_i_flex, {
11656
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [vue.createVNode(_component_i_flex, {
11772
11657
  collapse: "",
11773
11658
  gap: "3x",
11774
11659
  wrap: ""
@@ -11793,7 +11678,7 @@ function _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) {
11793
11678
  shrink: "",
11794
11679
  align: "center"
11795
11680
  }, {
11796
- default: vue.withCtx(() => [vue.createElementVNode("div", _hoisted_2$n, [vue.createVNode(_component_f_icon, {
11681
+ default: vue.withCtx(() => [vue.createElementVNode("div", _hoisted_2$l, [vue.createVNode(_component_f_icon, {
11797
11682
  name: "search",
11798
11683
  class: "sort-filter-dataset__search__magnify-icon"
11799
11684
  }), _cache[4] || (_cache[4] = vue.createTextVNode()), vue.createVNode(_component_f_text_field, {
@@ -11804,7 +11689,7 @@ function _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) {
11804
11689
  maxlength: "64",
11805
11690
  onInput: _ctx.onSearchInput
11806
11691
  }, {
11807
- default: vue.withCtx(() => [vue.createElementVNode("span", _hoisted_3$i, vue.toDisplayString(_ctx.placeholderFilter), 1)]),
11692
+ default: vue.withCtx(() => [vue.createElementVNode("span", _hoisted_3$h, vue.toDisplayString(_ctx.placeholderFilter), 1)]),
11808
11693
  _: 1
11809
11694
  }, 8, ["modelValue", "placeholder", "onInput"]), _cache[5] || (_cache[5] = vue.createTextVNode()), _ctx.showClearButton ? (vue.openBlock(), vue.createElementBlock("button", {
11810
11695
  key: 0,
@@ -11833,7 +11718,7 @@ function _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) {
11833
11718
  return vue.openBlock(), vue.createElementBlock("option", {
11834
11719
  key: sortOrder.id,
11835
11720
  value: sortOrder
11836
- }, vue.toDisplayString(sortOrder.name) + " (" + vue.toDisplayString(sortOrder.ascendingName) + ")\n ", 9, _hoisted_7$9);
11721
+ }, vue.toDisplayString(sortOrder.name) + " (" + vue.toDisplayString(sortOrder.ascendingName) + ")\n ", 9, _hoisted_7$8);
11837
11722
  }), 128))]),
11838
11723
  _: 1
11839
11724
  }, 8, ["modelValue", "onChange"])]),
@@ -11848,8 +11733,8 @@ function _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) {
11848
11733
  sortFilterResult: _ctx.sortFilterResult
11849
11734
  })))]);
11850
11735
  }
11851
- const FSortFilterDataset = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["render", _sfc_render$s]]);
11852
- const _sfc_main$r = vue.defineComponent({
11736
+ const FSortFilterDataset = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["render", _sfc_render$n]]);
11737
+ const _sfc_main$o = vue.defineComponent({
11853
11738
  name: "FDataTable",
11854
11739
  components: {
11855
11740
  FIcon
@@ -11994,11 +11879,11 @@ const _sfc_main$r = vue.defineComponent({
11994
11879
  }
11995
11880
  }
11996
11881
  });
11997
- const _hoisted_1$q = ["tabindex"];
11998
- const _hoisted_2$m = {
11882
+ const _hoisted_1$o = ["tabindex"];
11883
+ const _hoisted_2$k = {
11999
11884
  key: 0
12000
11885
  };
12001
- const _hoisted_3$h = {
11886
+ const _hoisted_3$g = {
12002
11887
  class: "table__row"
12003
11888
  };
12004
11889
  const _hoisted_4$d = ["innerHTML"];
@@ -12009,23 +11894,23 @@ const _hoisted_5$a = {
12009
11894
  const _hoisted_6$8 = {
12010
11895
  key: 0
12011
11896
  };
12012
- const _hoisted_7$8 = {
11897
+ const _hoisted_7$7 = {
12013
11898
  key: 1
12014
11899
  };
12015
- const _hoisted_8$6 = ["colspan"];
12016
- function _sfc_render$r(_ctx, _cache, $props, $setup, $data, $options) {
11900
+ const _hoisted_8$5 = ["colspan"];
11901
+ function _sfc_render$m(_ctx, _cache, $props, $setup, $data, $options) {
12017
11902
  const _component_f_icon = vue.resolveComponent("f-icon");
12018
11903
  return vue.openBlock(), vue.createElementBlock("div", {
12019
11904
  class: vue.normalizeClass(_ctx.wrapperClasses)
12020
11905
  }, [vue.createElementVNode("table", vue.mergeProps({
12021
11906
  class: ["table", _ctx.tableClasses],
12022
11907
  tabindex: _ctx.tabindex
12023
- }, _ctx.$attrs), [_ctx.hasCaption ? (vue.openBlock(), vue.createElementBlock("caption", _hoisted_2$m, [vue.renderSlot(_ctx.$slots, "caption")])) : vue.createCommentVNode("", true), _cache[4] || (_cache[4] = vue.createTextVNode()), vue.createElementVNode("colgroup", null, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.columns, (column) => {
11908
+ }, _ctx.$attrs), [_ctx.hasCaption ? (vue.openBlock(), vue.createElementBlock("caption", _hoisted_2$k, [vue.renderSlot(_ctx.$slots, "caption")])) : vue.createCommentVNode("", true), _cache[4] || (_cache[4] = vue.createTextVNode()), vue.createElementVNode("colgroup", null, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.columns, (column) => {
12024
11909
  return vue.openBlock(), vue.createElementBlock("col", {
12025
11910
  key: column.id,
12026
11911
  class: vue.normalizeClass(column.size)
12027
11912
  }, null, 2);
12028
- }), 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(_ctx.visibleColumns, (column) => {
11913
+ }), 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(_ctx.visibleColumns, (column) => {
12029
11914
  return vue.openBlock(), vue.createElementBlock("th", vue.mergeProps({
12030
11915
  key: column.id,
12031
11916
  scope: "col",
@@ -12041,10 +11926,10 @@ function _sfc_render$r(_ctx, _cache, $props, $setup, $data, $options) {
12041
11926
  }, null, 8, ["class", "name"])) : vue.createCommentVNode("", true), _cache[1] || (_cache[1] = vue.createTextVNode()), column.description ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_5$a, vue.toDisplayString(column.description), 1)) : vue.createCommentVNode("", true)], 16);
12042
11927
  }), 128))])]), _cache[6] || (_cache[6] = vue.createTextVNode()), vue.createElementVNode("tbody", null, [_ctx.isEmpty && _ctx.columns.length === 0 ? (vue.openBlock(), vue.createElementBlock("tr", _hoisted_6$8, [vue.renderSlot(_ctx.$slots, "default", vue.normalizeProps(vue.guardReactiveProps({
12043
11928
  row: {}
12044
- })))])) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), _ctx.isEmpty ? (vue.openBlock(), vue.createElementBlock("tr", _hoisted_7$8, [vue.createElementVNode("td", {
11929
+ })))])) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), _ctx.isEmpty ? (vue.openBlock(), vue.createElementBlock("tr", _hoisted_7$7, [vue.createElementVNode("td", {
12045
11930
  class: "table__column table__column--action",
12046
11931
  colspan: _ctx.columns.length
12047
- }, [vue.renderSlot(_ctx.$slots, "empty", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.data-table.empty", "Tabellen är tom")), 1)])], 8, _hoisted_8$6)])) : vue.createCommentVNode("", true), _cache[3] || (_cache[3] = vue.createTextVNode()), (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.rows, (row) => {
11932
+ }, [vue.renderSlot(_ctx.$slots, "empty", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.data-table.empty", "Tabellen är tom")), 1)])], 8, _hoisted_8$5)])) : vue.createCommentVNode("", true), _cache[3] || (_cache[3] = vue.createTextVNode()), (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.rows, (row) => {
12048
11933
  return vue.openBlock(), vue.createElementBlock("tr", {
12049
11934
  key: _ctx.rowKey(row),
12050
11935
  class: "table__row"
@@ -12053,9 +11938,9 @@ function _sfc_render$r(_ctx, _cache, $props, $setup, $data, $options) {
12053
11938
  }, {
12054
11939
  row
12055
11940
  }))]);
12056
- }), 128))])], 16, _hoisted_1$q)], 2);
11941
+ }), 128))])], 16, _hoisted_1$o)], 2);
12057
11942
  }
12058
- const FDataTable = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["render", _sfc_render$r]]);
11943
+ const FDataTable = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["render", _sfc_render$m]]);
12059
11944
  function isDayEnabled(day, config2) {
12060
11945
  return passesMinDate(day, config2.minDate) && passesMaxDate(day, config2.maxDate) && passesInvalidDates(day, config2.invalidDates) && passesInvalidWeekdays(day, config2.invalidWeekdays);
12061
11946
  }
@@ -12131,7 +12016,7 @@ function getDisplayMonth(minDate, maxDate, selectedDate, initialMonth) {
12131
12016
  }
12132
12017
  return month || date.FDate.now().startOfMonth();
12133
12018
  }
12134
- const _sfc_main$q = vue.defineComponent({
12019
+ const _sfc_main$n = vue.defineComponent({
12135
12020
  name: "FDatepickerField",
12136
12021
  components: {
12137
12022
  FCalendar,
@@ -12389,24 +12274,24 @@ const _sfc_main$q = vue.defineComponent({
12389
12274
  }
12390
12275
  }
12391
12276
  });
12392
- const _hoisted_1$p = {
12277
+ const _hoisted_1$n = {
12393
12278
  ref: "component",
12394
12279
  class: "datepicker-field"
12395
12280
  };
12396
- const _hoisted_2$l = ["disabled", "aria-expanded"];
12397
- const _hoisted_3$g = {
12281
+ const _hoisted_2$j = ["disabled", "aria-expanded"];
12282
+ const _hoisted_3$f = {
12398
12283
  class: "sr-only"
12399
12284
  };
12400
12285
  const _hoisted_4$c = {
12401
12286
  class: "datepicker-field__close"
12402
12287
  };
12403
- function _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {
12288
+ function _sfc_render$l(_ctx, _cache, $props, $setup, $data, $options) {
12404
12289
  const _component_f_icon = vue.resolveComponent("f-icon");
12405
12290
  const _component_f_text_field = vue.resolveComponent("f-text-field");
12406
12291
  const _component_f_calendar_day = vue.resolveComponent("f-calendar-day");
12407
12292
  const _component_f_calendar = vue.resolveComponent("f-calendar");
12408
12293
  const _component_i_popup = vue.resolveComponent("i-popup");
12409
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [vue.createElementVNode("div", {
12294
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$n, [vue.createElementVNode("div", {
12410
12295
  ref: "calendarInputs",
12411
12296
  onFocusout: _cache[2] || (_cache[2] = (...args) => _ctx.onFocusoutTextFieldButton && _ctx.onFocusoutTextFieldButton(...args))
12412
12297
  }, [vue.createVNode(_component_f_text_field, vue.mergeProps(_ctx.$attrs, {
@@ -12423,11 +12308,11 @@ function _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {
12423
12308
  }), vue.createSlots({
12424
12309
  description: vue.withCtx(({
12425
12310
  descriptionClass,
12426
- discreteDescriptionClass
12427
- }) => [vue.renderSlot(_ctx.$slots, "description", vue.normalizeProps(vue.guardReactiveProps({
12311
+ formatDescriptionClass
12312
+ }) => [vue.renderSlot(_ctx.$slots, "description", {
12428
12313
  descriptionClass,
12429
- discreteDescriptionClass
12430
- })))]),
12314
+ formatDescriptionClass
12315
+ })]),
12431
12316
  "error-message": vue.withCtx(({
12432
12317
  hasError,
12433
12318
  validationMessage
@@ -12445,7 +12330,7 @@ function _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {
12445
12330
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.onClickCalendarButton())
12446
12331
  }, [vue.createVNode(_component_f_icon, {
12447
12332
  name: "calendar"
12448
- }), _cache[6] || (_cache[6] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_3$g, vue.toDisplayString(_ctx.calendarButtonText), 1)], 8, _hoisted_2$l)]),
12333
+ }), _cache[6] || (_cache[6] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_3$f, vue.toDisplayString(_ctx.calendarButtonText), 1)], 8, _hoisted_2$j)]),
12449
12334
  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())]),
12450
12335
  _: 2
12451
12336
  }, [_ctx.$slots.tooltip ? {
@@ -12496,11 +12381,11 @@ function _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {
12496
12381
  _: 1
12497
12382
  }, 8, ["is-open", "anchor", "inline", "onOpen", "onClose"])], 512);
12498
12383
  }
12499
- const FDatepickerField = /* @__PURE__ */ _export_sfc(_sfc_main$q, [["render", _sfc_render$q]]);
12384
+ const FDatepickerField = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["render", _sfc_render$l]]);
12500
12385
  function isDialogueTreeEndQuestion(value) {
12501
12386
  return Boolean(value.userData);
12502
12387
  }
12503
- const _sfc_main$p = vue.defineComponent({
12388
+ const _sfc_main$m = vue.defineComponent({
12504
12389
  name: "FDialogueTree",
12505
12390
  components: {
12506
12391
  FIcon
@@ -12522,7 +12407,7 @@ const _sfc_main$p = vue.defineComponent({
12522
12407
  required: true
12523
12408
  }
12524
12409
  },
12525
- emits: ["change", "update:modelValue"],
12410
+ emits: ["update:modelValue"],
12526
12411
  data() {
12527
12412
  return {
12528
12413
  currentStep: this.dialogueTree,
@@ -12575,21 +12460,20 @@ const _sfc_main$p = vue.defineComponent({
12575
12460
  steps: this.steps
12576
12461
  };
12577
12462
  this.$emit("update:modelValue", emit);
12578
- this.$emit("change", emit);
12579
12463
  }
12580
12464
  }
12581
12465
  });
12582
- const _hoisted_1$o = {
12466
+ const _hoisted_1$m = {
12583
12467
  class: "dialogue-tree"
12584
12468
  };
12585
- const _hoisted_2$k = {
12469
+ const _hoisted_2$i = {
12586
12470
  key: 0,
12587
12471
  class: "dialogue-tree__list"
12588
12472
  };
12589
- const _hoisted_3$f = ["onClick"];
12590
- function _sfc_render$p(_ctx, _cache, $props, $setup, $data, $options) {
12473
+ const _hoisted_3$e = ["onClick"];
12474
+ function _sfc_render$k(_ctx, _cache, $props, $setup, $data, $options) {
12591
12475
  const _component_f_icon = vue.resolveComponent("f-icon");
12592
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$o, [_ctx.options.length > 0 ? (vue.openBlock(), vue.createElementBlock("ul", _hoisted_2$k, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.options, (option, index) => {
12476
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$m, [_ctx.options.length > 0 ? (vue.openBlock(), vue.createElementBlock("ul", _hoisted_2$i, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.options, (option, index) => {
12593
12477
  return vue.openBlock(), vue.createElementBlock("li", {
12594
12478
  key: option.label,
12595
12479
  class: "dialogue-tree__list-item"
@@ -12600,15 +12484,15 @@ function _sfc_render$p(_ctx, _cache, $props, $setup, $data, $options) {
12600
12484
  onClick: ($event) => _ctx.onClickedOption(option, index)
12601
12485
  }, [vue.createElementVNode("span", null, vue.toDisplayString(option.label), 1), _cache[0] || (_cache[0] = vue.createTextVNode()), vue.createVNode(_component_f_icon, {
12602
12486
  name: "arrow-right"
12603
- })], 8, _hoisted_3$f)]);
12487
+ })], 8, _hoisted_3$e)]);
12604
12488
  }), 128))])) : vue.renderSlot(_ctx.$slots, "default", vue.normalizeProps(vue.mergeProps({
12605
12489
  key: 1
12606
12490
  }, {
12607
12491
  userData: _ctx.userData
12608
12492
  })))]);
12609
12493
  }
12610
- const FDialogueTree = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["render", _sfc_render$p]]);
12611
- const _sfc_main$o = vue.defineComponent({
12494
+ const FDialogueTree = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["render", _sfc_render$k]]);
12495
+ const _sfc_main$l = vue.defineComponent({
12612
12496
  name: "FExpandablePanel",
12613
12497
  components: {
12614
12498
  FIcon,
@@ -12682,11 +12566,11 @@ const _sfc_main$o = vue.defineComponent({
12682
12566
  }
12683
12567
  }
12684
12568
  });
12685
- const _hoisted_1$n = ["aria-expanded", "aria-controls"];
12686
- const _hoisted_2$j = {
12569
+ const _hoisted_1$l = ["aria-expanded", "aria-controls"];
12570
+ const _hoisted_2$h = {
12687
12571
  class: "expandable-panel__icon"
12688
12572
  };
12689
- const _hoisted_3$e = {
12573
+ const _hoisted_3$d = {
12690
12574
  class: "icon-stack"
12691
12575
  };
12692
12576
  const _hoisted_4$b = ["title"];
@@ -12694,14 +12578,14 @@ const _hoisted_5$9 = {
12694
12578
  class: "sr-only"
12695
12579
  };
12696
12580
  const _hoisted_6$7 = ["id"];
12697
- const _hoisted_7$7 = {
12581
+ const _hoisted_7$6 = {
12698
12582
  class: "expandable-panel__body"
12699
12583
  };
12700
- const _hoisted_8$5 = {
12584
+ const _hoisted_8$4 = {
12701
12585
  key: 0,
12702
12586
  class: "expandable-panel__outside"
12703
12587
  };
12704
- function _sfc_render$o(_ctx, _cache, $props, $setup, $data, $options) {
12588
+ function _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) {
12705
12589
  const _component_f_icon = vue.resolveComponent("f-icon");
12706
12590
  const _component_f_expand = vue.resolveComponent("f-expand");
12707
12591
  return vue.openBlock(), vue.createElementBlock("div", {
@@ -12715,7 +12599,7 @@ function _sfc_render$o(_ctx, _cache, $props, $setup, $data, $options) {
12715
12599
  "aria-controls": _ctx.id
12716
12600
  }, _ctx.$attrs, {
12717
12601
  onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClickHeadingButton && _ctx.onClickHeadingButton(...args))
12718
- }), [vue.createElementVNode("span", _hoisted_2$j, [vue.createElementVNode("span", _hoisted_3$e, [vue.createVNode(_component_f_icon, {
12602
+ }), [vue.createElementVNode("span", _hoisted_2$h, [vue.createElementVNode("span", _hoisted_3$d, [vue.createVNode(_component_f_icon, {
12719
12603
  name: "dash"
12720
12604
  }), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.createVNode(_component_f_icon, {
12721
12605
  name: "dash"
@@ -12728,18 +12612,18 @@ function _sfc_render$o(_ctx, _cache, $props, $setup, $data, $options) {
12728
12612
  })
12729
12613
  }, [vue.createElementVNode("span", _hoisted_5$9, vue.toDisplayString(_ctx.screenReaderNotificationText), 1), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createVNode(_component_f_icon, {
12730
12614
  name: "bell"
12731
- })], 8, _hoisted_4$b)) : vue.createCommentVNode("", true)], 16, _hoisted_1$n)]),
12615
+ })], 8, _hoisted_4$b)) : vue.createCommentVNode("", true)], 16, _hoisted_1$l)]),
12732
12616
  _: 3
12733
12617
  })), _cache[6] || (_cache[6] = vue.createTextVNode()), vue.createVNode(_component_f_expand, null, {
12734
12618
  default: vue.withCtx(() => [vue.withDirectives(vue.createElementVNode("div", {
12735
12619
  id: _ctx.id,
12736
12620
  class: "expandable-panel__content"
12737
- }, [vue.createElementVNode("div", _hoisted_7$7, [vue.renderSlot(_ctx.$slots, "default")]), _cache[5] || (_cache[5] = vue.createTextVNode()), _ctx.hasOutsideSlot ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_8$5, [vue.renderSlot(_ctx.$slots, "outside")])) : vue.createCommentVNode("", true)], 8, _hoisted_6$7), [[vue.vShow, _ctx.expanded]])]),
12621
+ }, [vue.createElementVNode("div", _hoisted_7$6, [vue.renderSlot(_ctx.$slots, "default")]), _cache[5] || (_cache[5] = vue.createTextVNode()), _ctx.hasOutsideSlot ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_8$4, [vue.renderSlot(_ctx.$slots, "outside")])) : vue.createCommentVNode("", true)], 8, _hoisted_6$7), [[vue.vShow, _ctx.expanded]])]),
12738
12622
  _: 3
12739
12623
  })], 2);
12740
12624
  }
12741
- const FExpandablePanel = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["render", _sfc_render$o]]);
12742
- const _sfc_main$n = vue.defineComponent({
12625
+ const FExpandablePanel = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["render", _sfc_render$j]]);
12626
+ const _sfc_main$k = vue.defineComponent({
12743
12627
  name: "FExpandableParagraph",
12744
12628
  components: {
12745
12629
  FIcon,
@@ -12821,11 +12705,11 @@ const _sfc_main$n = vue.defineComponent({
12821
12705
  }
12822
12706
  }
12823
12707
  });
12824
- const _hoisted_1$m = ["aria-expanded", "aria-controls"];
12825
- const _hoisted_2$i = {
12708
+ const _hoisted_1$k = ["aria-expanded", "aria-controls"];
12709
+ const _hoisted_2$g = {
12826
12710
  class: "expandable-paragraph__icon"
12827
12711
  };
12828
- const _hoisted_3$d = {
12712
+ const _hoisted_3$c = {
12829
12713
  class: "icon-stack"
12830
12714
  };
12831
12715
  const _hoisted_4$a = {
@@ -12836,11 +12720,11 @@ const _hoisted_5$8 = ["id"];
12836
12720
  const _hoisted_6$6 = {
12837
12721
  class: "expandable-paragraph__content"
12838
12722
  };
12839
- const _hoisted_7$6 = {
12723
+ const _hoisted_7$5 = {
12840
12724
  key: 0,
12841
12725
  class: "expandable-paragraph__separator"
12842
12726
  };
12843
- function _sfc_render$n(_ctx, _cache, $props, $setup, $data, $options) {
12727
+ function _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {
12844
12728
  const _component_f_icon = vue.resolveComponent("f-icon");
12845
12729
  const _component_f_expand = vue.resolveComponent("f-expand");
12846
12730
  return vue.openBlock(), vue.createElementBlock("div", {
@@ -12857,21 +12741,21 @@ function _sfc_render$n(_ctx, _cache, $props, $setup, $data, $options) {
12857
12741
  "aria-controls": _ctx.id
12858
12742
  }, _ctx.$attrs, {
12859
12743
  onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClickMinimize && _ctx.onClickMinimize(...args))
12860
- }), [vue.createElementVNode("span", _hoisted_2$i, [vue.createElementVNode("span", _hoisted_3$d, [vue.createVNode(_component_f_icon, {
12744
+ }), [vue.createElementVNode("span", _hoisted_2$g, [vue.createElementVNode("span", _hoisted_3$c, [vue.createVNode(_component_f_icon, {
12861
12745
  name: "dash"
12862
12746
  }), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.createVNode(_component_f_icon, {
12863
12747
  name: "dash"
12864
- })])]), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "title")], 16, _hoisted_1$m)]),
12748
+ })])]), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "title")], 16, _hoisted_1$k)]),
12865
12749
  _: 3
12866
12750
  }, 8, ["class"])), _cache[3] || (_cache[3] = vue.createTextVNode()), _ctx.hasRelatedSlot ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$a, [vue.renderSlot(_ctx.$slots, "related")])) : vue.createCommentVNode("", true)], 2), _cache[5] || (_cache[5] = vue.createTextVNode()), vue.createVNode(_component_f_expand, null, {
12867
12751
  default: vue.withCtx(() => [vue.withDirectives(vue.createElementVNode("div", {
12868
12752
  id: _ctx.id,
12869
12753
  class: "expandable-paragraph__container"
12870
- }, [vue.createElementVNode("div", _hoisted_6$6, [vue.renderSlot(_ctx.$slots, "default")]), _cache[4] || (_cache[4] = vue.createTextVNode()), !_ctx.list ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$6)) : vue.createCommentVNode("", true)], 8, _hoisted_5$8), [[vue.vShow, _ctx.expanded]])]),
12754
+ }, [vue.createElementVNode("div", _hoisted_6$6, [vue.renderSlot(_ctx.$slots, "default")]), _cache[4] || (_cache[4] = vue.createTextVNode()), !_ctx.list ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$5)) : vue.createCommentVNode("", true)], 8, _hoisted_5$8), [[vue.vShow, _ctx.expanded]])]),
12871
12755
  _: 3
12872
12756
  })], 2);
12873
12757
  }
12874
- const FExpandableParagraph = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["render", _sfc_render$n]]);
12758
+ const FExpandableParagraph = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["render", _sfc_render$i]]);
12875
12759
  const DEFAULT_ICON = "file";
12876
12760
  const iconMap = {
12877
12761
  "image/*": "pic",
@@ -12880,7 +12764,7 @@ const iconMap = {
12880
12764
  "application/vnd.openxmlformats-officedocument.wordprocessingml.document": "doc",
12881
12765
  "application/vnd.openxmlformats-officedocument.wordprocessingml.template": "doc"
12882
12766
  };
12883
- const _sfc_main$m = vue.defineComponent({
12767
+ const _sfc_main$j = vue.defineComponent({
12884
12768
  name: "FFileItem",
12885
12769
  components: {
12886
12770
  FIcon
@@ -12959,13 +12843,13 @@ const _sfc_main$m = vue.defineComponent({
12959
12843
  }
12960
12844
  }
12961
12845
  });
12962
- const _hoisted_1$l = {
12846
+ const _hoisted_1$j = {
12963
12847
  class: "file-item"
12964
12848
  };
12965
- const _hoisted_2$h = {
12849
+ const _hoisted_2$f = {
12966
12850
  class: "file-item__row"
12967
12851
  };
12968
- const _hoisted_3$c = ["id"];
12852
+ const _hoisted_3$b = ["id"];
12969
12853
  const _hoisted_4$9 = {
12970
12854
  class: "icon-stack button__icon icon-stack--new-window"
12971
12855
  };
@@ -12975,25 +12859,25 @@ const _hoisted_5$7 = {
12975
12859
  const _hoisted_6$5 = {
12976
12860
  class: "sr-only"
12977
12861
  };
12978
- const _hoisted_7$5 = {
12862
+ const _hoisted_7$4 = {
12979
12863
  key: 0,
12980
12864
  class: "file-item__change-info"
12981
12865
  };
12982
- function _sfc_render$m(_ctx, _cache, $props, $setup, $data, $options) {
12866
+ function _sfc_render$h(_ctx, _cache, $props, $setup, $data, $options) {
12983
12867
  const _component_f_icon = vue.resolveComponent("f-icon");
12984
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$l, [vue.createElementVNode("div", _hoisted_2$h, [vue.createElementVNode("a", vue.mergeProps({
12868
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$j, [vue.createElementVNode("div", _hoisted_2$f, [vue.createElementVNode("a", vue.mergeProps({
12985
12869
  id: _ctx.id,
12986
12870
  class: "file-item__file-open"
12987
12871
  }, _ctx.$attrs), [vue.createElementVNode("div", _hoisted_4$9, [vue.createVNode(_component_f_icon, {
12988
12872
  name: "new-window"
12989
12873
  }), _cache[0] || (_cache[0] = vue.createTextVNode()), vue.createVNode(_component_f_icon, {
12990
12874
  name: _ctx.iconName
12991
- }, 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$5, vue.toDisplayString(_ctx.mimeTypeChangedText), 1)) : vue.createCommentVNode("", true), _cache[6] || (_cache[6] = vue.createTextVNode()), _cache[7] || (_cache[7] = vue.createElementVNode("hr", {
12875
+ }, 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", {
12992
12876
  class: "file-item__separator"
12993
12877
  }, null, -1))]);
12994
12878
  }
12995
- const FFileItem = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["render", _sfc_render$m]]);
12996
- const _sfc_main$l = vue.defineComponent({
12879
+ const FFileItem = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["render", _sfc_render$h]]);
12880
+ const _sfc_main$i = vue.defineComponent({
12997
12881
  name: "FFileSelector",
12998
12882
  components: {
12999
12883
  FIcon
@@ -13054,14 +12938,14 @@ const _sfc_main$l = vue.defineComponent({
13054
12938
  }
13055
12939
  }
13056
12940
  });
13057
- const _hoisted_1$k = {
12941
+ const _hoisted_1$i = {
13058
12942
  class: "file-selector"
13059
12943
  };
13060
- const _hoisted_2$g = ["id", "aria-labelledby", "aria-disabled"];
13061
- const _hoisted_3$b = ["id", "for"];
13062
- function _sfc_render$l(_ctx, _cache, $props, $setup, $data, $options) {
12944
+ const _hoisted_2$e = ["id", "aria-labelledby", "aria-disabled"];
12945
+ const _hoisted_3$a = ["id", "for"];
12946
+ function _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) {
13063
12947
  const _component_f_icon = vue.resolveComponent("f-icon");
13064
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$k, [vue.createElementVNode("input", vue.mergeProps({
12948
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$i, [vue.createElementVNode("input", vue.mergeProps({
13065
12949
  id: _ctx.id,
13066
12950
  ref: "file-selector",
13067
12951
  type: "file",
@@ -13069,7 +12953,7 @@ function _sfc_render$l(_ctx, _cache, $props, $setup, $data, $options) {
13069
12953
  "aria-disabled": _ctx.ariaDisabled ? "true" : void 0
13070
12954
  }, _ctx.attrs, {
13071
12955
  onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClick && _ctx.onClick(...args))
13072
- }), null, 16, _hoisted_2$g), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createElementVNode("label", {
12956
+ }), null, 16, _hoisted_2$e), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createElementVNode("label", {
13073
12957
  id: _ctx.labelId,
13074
12958
  role: "button",
13075
12959
  class: vue.normalizeClass([_ctx.labelClass, "button button--tertiary button--medium"]),
@@ -13078,673 +12962,15 @@ function _sfc_render$l(_ctx, _cache, $props, $setup, $data, $options) {
13078
12962
  }, [vue.createVNode(_component_f_icon, {
13079
12963
  class: "button__icon",
13080
12964
  name: "paper-clip"
13081
- }), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "default")], 10, _hoisted_3$b)]);
12965
+ }), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "default")], 10, _hoisted_3$a)]);
13082
12966
  }
13083
- const FFileSelector = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["render", _sfc_render$l]]);
13084
- const iconClasses = {
13085
- success: {
13086
- symbol: "circle",
13087
- sign: "success",
13088
- screenReaderContextKey: "fkui.message-box.sr-context.success",
13089
- screenReaderContextDefault: "Meddelande"
13090
- },
13091
- warning: {
13092
- symbol: "circle",
13093
- sign: "alert",
13094
- screenReaderContextKey: "fkui.message-box.sr-context.warning",
13095
- screenReaderContextDefault: "Varningsmeddelande"
13096
- },
13097
- error: {
13098
- symbol: "triangle",
13099
- sign: "alert",
13100
- screenReaderContextKey: "fkui.message-box.sr-context.error",
13101
- screenReaderContextDefault: "Felmeddelande"
13102
- },
13103
- info: {
13104
- symbol: "circle",
13105
- sign: "i",
13106
- screenReaderContextKey: "fkui.message-box.sr-context.info",
13107
- screenReaderContextDefault: "Informationsmeddelande"
13108
- }
13109
- };
13110
- const _sfc_main$k = vue.defineComponent({
13111
- name: "FMessageBox",
13112
- components: {
13113
- FIcon,
13114
- IFlex,
13115
- IFlexItem
13116
- },
13117
- props: {
13118
- /**
13119
- * Type of message-box. 'success', 'error', 'warning' and 'info' is valid.
13120
- * */
13121
- type: {
13122
- type: String,
13123
- required: true,
13124
- validator(value) {
13125
- return ["success", "warning", "error", "info"].includes(value);
13126
- }
13127
- },
13128
- /**
13129
- * If message-box should be a banner.
13130
- * If prop is not used message-box will have default styling.
13131
- */
13132
- banner: {
13133
- type: Boolean,
13134
- required: false
13135
- },
13136
- /**
13137
- * It is important to provide a context for a screenreader, similar to a modal that initially outputs it is a dialog.
13138
- * Type-specific screenreader context is output by default in this component.
13139
- * By setting this property to false no context will be output.
13140
- * Note that by doing this, it is the applications responsiblity to provide a clear context.
13141
- */
13142
- provideScreenReaderContext: {
13143
- type: Boolean,
13144
- required: false,
13145
- default: true
13146
- },
13147
- /**
13148
- * Select standard or short layout.
13149
- *
13150
- * - 'normal' - Use normal layout when need for heading and/or longer text/multiple sentences
13151
- * - 'short' - Use short layout when only need for shorter text
13152
- */
13153
- layout: {
13154
- type: String,
13155
- required: false,
13156
- default: "standard",
13157
- validator(value) {
13158
- return ["standard", "short"].includes(value);
13159
- }
13160
- }
13161
- },
13162
- data() {
13163
- return {
13164
- headingClass: ["message-box__heading"]
13165
- };
13166
- },
13167
- computed: {
13168
- messageBoxType() {
13169
- if (this.layout === "short") {
13170
- return `message-box--${this.type}-short`;
13171
- } else {
13172
- return `message-box--${this.type}`;
13173
- }
13174
- },
13175
- bannerType() {
13176
- return this.banner ? `message-box--banner` : "";
13177
- },
13178
- classType() {
13179
- return `icon__${this.type}`;
13180
- },
13181
- classIcon() {
13182
- return iconClasses[this.type].symbol === "circle" && iconClasses[this.type].sign === "alert" ? `icon__exclamation` : "";
13183
- },
13184
- stackTypeClass() {
13185
- return `icon-stack--${this.type}`;
13186
- },
13187
- symbol() {
13188
- return iconClasses[this.type].symbol;
13189
- },
13190
- sign() {
13191
- return iconClasses[this.type].sign;
13192
- }
13193
- },
13194
- methods: {
13195
- screenReaderContext() {
13196
- return logic.TranslationService.provider.translate(iconClasses[this.type].screenReaderContextKey, iconClasses[this.type].screenReaderContextDefault);
13197
- }
13198
- }
13199
- });
13200
- const _hoisted_1$j = {
13201
- key: 0,
13202
- class: "sr-only"
13203
- };
13204
- function _sfc_render$k(_ctx, _cache, $props, $setup, $data, $options) {
13205
- const _component_f_icon = vue.resolveComponent("f-icon");
13206
- const _component_i_flex_item = vue.resolveComponent("i-flex-item");
13207
- const _component_i_flex = vue.resolveComponent("i-flex");
13208
- return vue.openBlock(), vue.createElementBlock("div", {
13209
- class: vue.normalizeClass(["message-box", [_ctx.messageBoxType, _ctx.bannerType]])
13210
- }, [_ctx.provideScreenReaderContext ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$j, vue.toDisplayString(_ctx.screenReaderContext()), 1)) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createVNode(_component_i_flex, {
13211
- gap: "2x"
13212
- }, {
13213
- default: vue.withCtx(() => [_ctx.layout === "short" ? (vue.openBlock(), vue.createBlock(_component_i_flex_item, {
13214
- key: 0,
13215
- class: "message-box__icon",
13216
- shrink: "",
13217
- align: "center"
13218
- }, {
13219
- default: vue.withCtx(() => [vue.createElementVNode("span", {
13220
- class: vue.normalizeClass(["icon-stack", _ctx.stackTypeClass])
13221
- }, [vue.createVNode(_component_f_icon, {
13222
- class: vue.normalizeClass(_ctx.classType),
13223
- name: _ctx.symbol
13224
- }, null, 8, ["class", "name"]), _cache[0] || (_cache[0] = vue.createTextVNode()), vue.createVNode(_component_f_icon, {
13225
- class: vue.normalizeClass(_ctx.classIcon),
13226
- name: _ctx.sign
13227
- }, null, 8, ["class", "name"])], 2)]),
13228
- _: 1
13229
- })) : vue.createCommentVNode("", true), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.createVNode(_component_i_flex_item, {
13230
- class: "message-box__content",
13231
- grow: "",
13232
- align: "center"
13233
- }, {
13234
- default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "default", vue.normalizeProps(vue.guardReactiveProps(_ctx.layout === "short" ? {} : {
13235
- headingSlotClass: _ctx.headingClass
13236
- })))]),
13237
- _: 3
13238
- })]),
13239
- _: 3
13240
- })], 2);
13241
- }
13242
- const FMessageBox = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["render", _sfc_render$k]]);
13243
- const setRef = Symbol("setRef");
13244
- const getRef = Symbol("getRef");
13245
- const setIsOpen = Symbol("setIsOpen");
13246
- function createFFormProvideOptions(vm) {
13247
- const {
13248
- components
13249
- } = vm;
13250
- return {
13251
- [setRef](id, data) {
13252
- components[id] = new logic.Reference(data);
13253
- },
13254
- [getRef](id) {
13255
- return components[id];
13256
- },
13257
- [setIsOpen](id, isOpen) {
13258
- const steps = Object.values(components).filter(isFormStepReference);
13259
- for (const step2 of steps) {
13260
- step2.ref.isOpen = false;
13261
- }
13262
- const step = components[id];
13263
- if (isFormStepReference(step)) {
13264
- step.ref.isOpen = isOpen;
13265
- }
13266
- }
13267
- };
13268
- }
13269
- const _sfc_main$j = vue.defineComponent({
13270
- name: "FForm",
13271
- components: {
13272
- FMessageBox,
13273
- FErrorList
13274
- },
13275
- provide() {
13276
- return createFFormProvideOptions(this);
13277
- },
13278
- inheritAttrs: false,
13279
- props: {
13280
- /**
13281
- * The id for the form id attribute.
13282
- * If the prop is not set a random value will be generated.
13283
- */
13284
- id: {
13285
- type: String,
13286
- required: false,
13287
- default: () => logic.ElementIdService.generateElementId()
13288
- },
13289
- /**
13290
- * If the error-message slot and the invalid elements list
13291
- * should be displayed.
13292
- */
13293
- displayError: {
13294
- type: Boolean,
13295
- default: true
13296
- },
13297
- /**
13298
- * If invalid fields at submit this tells how the scroll to the error
13299
- * field should occur. The default, "center", centres the error information
13300
- * vertically. Allowed value is also "top" which scrolls such that the error
13301
- * informations top is at the top of the viewport.
13302
- */
13303
- errorScroll: {
13304
- type: String,
13305
- default: "center",
13306
- validator(value) {
13307
- return ["center", "top"].includes(value);
13308
- }
13309
- }
13310
- },
13311
- data() {
13312
- return {
13313
- errorMessageSlotClass: ["message-box__heading"],
13314
- components: {}
13315
- };
13316
- },
13317
- computed: {
13318
- attrs() {
13319
- let onSubmit;
13320
- if (this.$attrs.onSubmit) {
13321
- const originalSubmit = this.$attrs.onSubmit;
13322
- onSubmit = async (event) => {
13323
- const isValid = await this.onSubmit(event);
13324
- if (isValid) {
13325
- if (Array.isArray(originalSubmit)) {
13326
- originalSubmit.forEach((submitFunction) => submitFunction(event));
13327
- } else {
13328
- originalSubmit(event);
13329
- }
13330
- }
13331
- };
13332
- } else {
13333
- onSubmit = this.onSubmit;
13334
- }
13335
- const attrs = {
13336
- ...this.$attrs,
13337
- id: this.id,
13338
- onSubmit
13339
- };
13340
- return attrs;
13341
- },
13342
- numberOfTimesSubmitted() {
13343
- const components = Object.values(this.components);
13344
- return Math.max(0, ...components.map((it) => it.ref.numberOfTimesSubmitted));
13345
- },
13346
- isSubmitted() {
13347
- return this.numberOfTimesSubmitted > 0;
13348
- },
13349
- hasError() {
13350
- if (Object.values(this.components).length === 0) {
13351
- return false;
13352
- } else {
13353
- const components = Object.values(this.components);
13354
- return components.some((component) => component.ref.isValid === false);
13355
- }
13356
- },
13357
- componentsWithErrors() {
13358
- const sortedComponents = sortComponentsWithErrorsOnDOMOrder(this.components);
13359
- return sortedComponents.map((c) => c.ref);
13360
- },
13361
- needsErrorScroll() {
13362
- return this.errorScroll !== "center";
13363
- }
13364
- },
13365
- methods: {
13366
- async focusDomElement() {
13367
- await this.$nextTick();
13368
- const messageBoxError = this.$el.querySelector(".message-box--error");
13369
- if (messageBoxError) {
13370
- logic.focus(messageBoxError, {
13371
- scrollToTop: this.needsErrorScroll
13372
- });
13373
- }
13374
- },
13375
- async focusFallbackElement() {
13376
- await this.$nextTick();
13377
- const element = this.$el.querySelector(".form-step__header");
13378
- const invalidElement = this.$el.querySelector(":invalid");
13379
- if (element) {
13380
- logic.focus(element, {
13381
- scrollToTop: this.needsErrorScroll
13382
- });
13383
- } else if (invalidElement) {
13384
- logic.focus(invalidElement, {
13385
- force: true,
13386
- scrollToTop: this.needsErrorScroll
13387
- });
13388
- }
13389
- },
13390
- async onSubmit(event) {
13391
- event.preventDefault();
13392
- const components = Object.values(this.components);
13393
- components.forEach((component) => {
13394
- component.ref.numberOfTimesSubmitted++;
13395
- if (!isFormStepReference(component)) {
13396
- logic.ValidationService.setTouched(component.ref.id);
13397
- logic.ValidationService.setSubmitted(component.ref.id);
13398
- }
13399
- });
13400
- await cleanUpElements(this);
13401
- await logic.ValidationService.validateAllElements(this.id);
13402
- if (this.displayError) {
13403
- this.focusDomElement();
13404
- } else {
13405
- this.focusFallbackElement();
13406
- }
13407
- return this.hasError === false;
13408
- },
13409
- async onComponentValidity(event) {
13410
- const reference = new logic.Reference({
13411
- id: event.detail.elementId,
13412
- focusElementId: event.detail.focusElementId,
13413
- title: event.detail.errorMessage,
13414
- isValid: event.detail.isValid,
13415
- numberOfTimesSubmitted: this.numberOfTimesSubmitted
13416
- });
13417
- this.components[event.detail.elementId] = reference;
13418
- await cleanUpElements(this);
13419
- }
13420
- }
13421
- });
13422
- const _hoisted_1$i = ["id"];
13423
- function _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) {
13424
- const _component_f_error_list = vue.resolveComponent("f-error-list");
13425
- const _component_f_message_box = vue.resolveComponent("f-message-box");
13426
- return vue.openBlock(), vue.createElementBlock("form", vue.mergeProps({
13427
- id: _ctx.id,
13428
- class: "form",
13429
- novalidate: ""
13430
- }, _ctx.attrs, {
13431
- onComponentValidity: _cache[0] || (_cache[0] = (...args) => _ctx.onComponentValidity && _ctx.onComponentValidity(...args))
13432
- }), [_ctx.displayError && _ctx.isSubmitted && _ctx.hasError ? (vue.openBlock(), vue.createBlock(_component_f_message_box, {
13433
- key: 0,
13434
- tabindex: "-1",
13435
- type: "error"
13436
- }, {
13437
- default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "error-message", vue.normalizeProps(vue.guardReactiveProps({
13438
- slotClass: _ctx.errorMessageSlotClass
13439
- }))), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.createElementVNode("nav", null, [vue.createVNode(_component_f_error_list, {
13440
- items: _ctx.componentsWithErrors
13441
- }, null, 8, ["items"])])]),
13442
- _: 3
13443
- })) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "default")], 16, _hoisted_1$i);
13444
- }
13445
- const FForm = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["render", _sfc_render$j]]);
13446
- const _sfc_main$i = vue.defineComponent({
13447
- name: "FFormStep",
13448
- components: {
13449
- FIcon,
13450
- FValidationGroup,
13451
- FErrorList
13452
- },
13453
- mixins: [TranslationMixin],
13454
- inheritAttrs: false,
13455
- props: {
13456
- /**
13457
- * The id for the root div id attribute.
13458
- * If the prop is not set a random value will be generated.
13459
- */
13460
- id: {
13461
- type: String,
13462
- required: true,
13463
- default: () => logic.ElementIdService.generateElementId()
13464
- },
13465
- /**
13466
- * If the form step should have a bottom arrow.
13467
- * It is recommended to remove the arrow for the last step with `:has-arrow="false"`.
13468
- */
13469
- hasArrow: {
13470
- type: Boolean,
13471
- default: true
13472
- },
13473
- /**
13474
- * If the form step is the last step.
13475
- * If set to true the form step will have a bigger bottom margin.
13476
- */
13477
- isLastStep: {
13478
- type: Boolean,
13479
- default: false
13480
- },
13481
- /**
13482
- * If error links should be disabled, `:disable-error-links="true"`..
13483
- * If `true`, errors will be displayed as text instead.
13484
- */
13485
- disableErrorLinks: {
13486
- type: Boolean,
13487
- default: false
13488
- }
13489
- },
13490
- setup() {
13491
- return {
13492
- setRef: vue.inject(setRef),
13493
- getRef: vue.inject(getRef),
13494
- setIsOpen: vue.inject(setIsOpen)
13495
- };
13496
- },
13497
- data() {
13498
- return {
13499
- self: new logic.Reference({
13500
- isOpen: false,
13501
- numberOfTimesSubmitted: 0,
13502
- isAnyFieldTouched: false,
13503
- isValid: true,
13504
- id: this.id,
13505
- focusElementId: `${this.id}-error`,
13506
- title: ""
13507
- }),
13508
- hasBeenValid: false,
13509
- isOpenedClosed: false,
13510
- headerSlotClass: ["form-step__title"],
13511
- stepErrorId: `${this.id}-error`,
13512
- groupValidity: {
13513
- isValid: false,
13514
- componentsWithError: [],
13515
- componentCount: 0
13516
- }
13517
- };
13518
- },
13519
- computed: {
13520
- attrs() {
13521
- return {
13522
- ...this.$attrs,
13523
- class: {
13524
- "form-step--complete": this.self.ref.isValid,
13525
- "form-step--last-step": this.isLastStep
13526
- }
13527
- };
13528
- },
13529
- defaultErrorMessage() {
13530
- return this.$t("fkui.form-step.errorlist.title", "Oj, du har glömt att fylla i något. Gå till:");
13531
- },
13532
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- technical debt, not sure what is going on here
13533
- injected() {
13534
- return this;
13535
- },
13536
- isSubmitted() {
13537
- return this.self.ref.numberOfTimesSubmitted > 0;
13538
- },
13539
- componentsWithError() {
13540
- return this.groupValidity.componentsWithError.map((c) => ({
13541
- id: this.disableErrorLinks ? void 0 : c.elementId,
13542
- focusElementId: c.focusElementId,
13543
- title: c.errorMessage
13544
- }));
13545
- },
13546
- hasError() {
13547
- return this.groupValidity.componentsWithError.length > 0;
13548
- },
13549
- displayErrorList() {
13550
- return (this.isOpenedClosed || this.hasBeenValid || this.isSubmitted) && this.hasError;
13551
- },
13552
- validationGroupKey() {
13553
- return `${this.id}-group`;
13554
- }
13555
- },
13556
- watch: {
13557
- "self.ref.numberOfTimesSubmitted": {
13558
- handler() {
13559
- logic.ValidationService.setSubmitted(this.$el);
13560
- logic.ValidationService.validateAllElements(this.id);
13561
- }
13562
- },
13563
- groupValidity: {
13564
- immediate: true,
13565
- handler() {
13566
- this.self.ref.isValid = this.groupValidity.isValid;
13567
- if (this.hasBeenValid === false) {
13568
- this.hasBeenValid = this.groupValidity.isValid;
13569
- }
13570
- }
13571
- }
13572
- },
13573
- async mounted() {
13574
- await this.$nextTick();
13575
- this.loadSelf();
13576
- this.injected.setRef(this.id, this.self.ref);
13577
- this.loadSelf();
13578
- this.updateSelfRefTitle();
13579
- },
13580
- beforeUpdate() {
13581
- this.updateSelfRefTitle();
13582
- },
13583
- methods: {
13584
- updateSelfRefTitle() {
13585
- const [firstSlotClass] = this.headerSlotClass;
13586
- const headerElement = this.$el.querySelector(`.${firstSlotClass}`);
13587
- if (headerElement && headerElement.textContent) {
13588
- this.self.ref.title = headerElement.textContent;
13589
- }
13590
- },
13591
- loadSelf() {
13592
- const ref = this.injected.getRef(this.id);
13593
- Object.assign(this.self, ref);
13594
- },
13595
- async focusDomElement() {
13596
- await this.$nextTick();
13597
- if (this.hasError && this.self.ref.isAnyFieldTouched) {
13598
- const formStepError = this.$el.querySelector(".form-step__error");
13599
- logic.focus(formStepError);
13600
- } else {
13601
- const formStepHeader = this.$el.querySelector(".form-step__header");
13602
- logic.focus(formStepHeader);
13603
- }
13604
- },
13605
- async beforeNavigateToError() {
13606
- this.injected.setIsOpen(this.id, true);
13607
- await this.$nextTick();
13608
- },
13609
- /**
13610
- * Toggle if open or closed.
13611
- * If another form step is open then it will be closed.
13612
- * @public
13613
- */
13614
- toggleIsOpen() {
13615
- this.injected.setIsOpen(this.id, !this.self.ref.isOpen);
13616
- if (this.self.ref.isAnyFieldTouched && this.self.ref.isOpen === false) {
13617
- if (this.isOpenedClosed === false) {
13618
- this.isOpenedClosed = true;
13619
- }
13620
- logic.ValidationService.setTouched(this.$el);
13621
- logic.ValidationService.validateAllElements(this.id);
13622
- }
13623
- this.focusDomElement();
13624
- },
13625
- onComponentValidity(event) {
13626
- const hasReceivedValidOrErrorEvent = event.detail.validityMode === "VALID" || event.detail.validityMode === "ERROR";
13627
- if (hasReceivedValidOrErrorEvent && this.self.ref.isOpen) {
13628
- this.self.ref.isAnyFieldTouched = true;
13629
- }
13630
- }
13631
- }
13632
- });
13633
- const _hoisted_1$h = {
13634
- class: "form-step__header",
13635
- tabindex: "-1",
13636
- role: "group"
13637
- };
13638
- const _hoisted_2$f = ["id"];
13639
- const _hoisted_3$a = {
13640
- key: 0,
13641
- class: "form-step__arrow"
13642
- };
13643
- function _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {
13644
- const _component_f_icon = vue.resolveComponent("f-icon");
13645
- const _component_f_error_list = vue.resolveComponent("f-error-list");
13646
- const _component_f_validation_group = vue.resolveComponent("f-validation-group");
13647
- return vue.openBlock(), vue.createBlock(_component_f_validation_group, vue.mergeProps({
13648
- id: _ctx.id
13649
- }, _ctx.attrs, {
13650
- key: _ctx.validationGroupKey,
13651
- modelValue: _ctx.groupValidity,
13652
- "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => _ctx.groupValidity = $event),
13653
- class: "form-step",
13654
- "stop-propagation": true
13655
- }), {
13656
- default: vue.withCtx(() => [vue.createElementVNode("div", _hoisted_1$h, [vue.renderSlot(_ctx.$slots, "header", vue.normalizeProps(vue.guardReactiveProps({
13657
- slotClass: _ctx.headerSlotClass,
13658
- ..._ctx.self.ref,
13659
- toggleIsOpen: _ctx.toggleIsOpen
13660
- }))), _cache[2] || (_cache[2] = vue.createTextVNode()), _ctx.self.ref.isValid ? (vue.openBlock(), vue.createBlock(_component_f_icon, {
13661
- key: 0,
13662
- class: "form-step__check",
13663
- name: "success"
13664
- })) : vue.createCommentVNode("", true)]), _cache[4] || (_cache[4] = vue.createTextVNode()), _ctx.displayErrorList ? (vue.openBlock(), vue.createElementBlock("div", {
13665
- key: 0,
13666
- id: _ctx.stepErrorId,
13667
- class: "form-step__error",
13668
- tabindex: "-1",
13669
- role: "group"
13670
- }, [vue.createElementVNode("nav", null, [vue.createVNode(_component_f_error_list, {
13671
- bullets: true,
13672
- items: _ctx.componentsWithError,
13673
- "before-navigate": _ctx.beforeNavigateToError
13674
- }, {
13675
- title: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "error-message", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.defaultErrorMessage), 1)])]),
13676
- _: 3
13677
- }, 8, ["items", "before-navigate"])])], 8, _hoisted_2$f)) : vue.createCommentVNode("", true), _cache[5] || (_cache[5] = vue.createTextVNode()), vue.createElementVNode("div", {
13678
- onComponentValidity: _cache[0] || (_cache[0] = (...args) => _ctx.onComponentValidity && _ctx.onComponentValidity(...args))
13679
- }, [vue.renderSlot(_ctx.$slots, "default", vue.normalizeProps(vue.guardReactiveProps({
13680
- ..._ctx.self.ref,
13681
- isSubmitted: _ctx.isSubmitted,
13682
- toggleIsOpen: _ctx.toggleIsOpen
13683
- }))), _cache[3] || (_cache[3] = vue.createTextVNode()), _ctx.hasArrow ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$a)) : vue.createCommentVNode("", true)], 32)]),
13684
- _: 3
13685
- }, 16, ["id", "modelValue"]);
13686
- }
13687
- const FFormStep = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["render", _sfc_render$i]]);
13688
- const _sfc_main$h = vue.defineComponent({
13689
- name: "FFormStepButton",
13690
- components: {
13691
- FIcon
13692
- },
13693
- mixins: [TranslationMixin],
13694
- inheritAttrs: false,
13695
- model: {
13696
- prop: "sr-only"
13697
- },
13698
- props: {
13699
- /**
13700
- * If the id is not set a random value will be generated.
13701
- */
13702
- id: {
13703
- type: String,
13704
- required: false,
13705
- default: () => logic.ElementIdService.generateElementId()
13706
- },
13707
- isOpen: Boolean,
13708
- isAnyFieldTouched: Boolean,
13709
- additionalScreenreaderText: {
13710
- type: String,
13711
- required: false,
13712
- default: ""
13713
- }
13714
- }
13715
- });
13716
- const _hoisted_1$g = ["id", "aria-expanded"];
13717
- const _hoisted_2$e = {
13718
- class: "sr-only"
13719
- };
13720
- function _sfc_render$h(_ctx, _cache, $props, $setup, $data, $options) {
13721
- const _component_f_icon = vue.resolveComponent("f-icon");
13722
- return vue.openBlock(), vue.createElementBlock("button", vue.mergeProps({
13723
- id: _ctx.id,
13724
- class: "button button--margin-bottom-0 button--large",
13725
- type: "button"
13726
- }, _ctx.$attrs, {
13727
- "aria-expanded": _ctx.isOpen ? "true" : "false",
13728
- "data-form-step-button": ""
13729
- }), [_ctx.isOpen ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, {
13730
- key: 0
13731
- }, [vue.createVNode(_component_f_icon, {
13732
- name: "success",
13733
- class: "button__icon"
13734
- }), vue.createTextVNode(" " + vue.toDisplayString(_ctx.$t("fkui.form-step-button.close", "OK")), 1)], 64)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, {
13735
- key: 1
13736
- }, [vue.createVNode(_component_f_icon, {
13737
- name: "pen",
13738
- class: "button__icon"
13739
- }), vue.createTextVNode(" " + vue.toDisplayString(_ctx.isAnyFieldTouched ? _ctx.$t("fkui.form-step-button.edit", "Ändra") : _ctx.$t("fkui.form-step-button.open", "Fyll i")), 1)], 64)), _cache[0] || (_cache[0] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_2$e, vue.toDisplayString(_ctx.additionalScreenreaderText), 1)], 16, _hoisted_1$g);
13740
- }
13741
- const FFormStepButton = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["render", _sfc_render$h]]);
13742
- const keybindings = Object.fromEntries([["Up", focusTrAbove], ["Down", focusTrBelow], ["ArrowUp", focusTrAbove], ["ArrowDown", focusTrBelow], [" ", activateRow], ["Spacebar", activateRow]]);
13743
- function focusTrAbove(current) {
13744
- if (current > 0) {
13745
- this.tr[current - 1].focus();
13746
- } else {
13747
- this.tr[this.tr.length - 1].focus();
12967
+ const FFileSelector = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["render", _sfc_render$g]]);
12968
+ const keybindings = Object.fromEntries([["Up", focusTrAbove], ["Down", focusTrBelow], ["ArrowUp", focusTrAbove], ["ArrowDown", focusTrBelow], [" ", activateRow], ["Spacebar", activateRow]]);
12969
+ function focusTrAbove(current) {
12970
+ if (current > 0) {
12971
+ this.tr[current - 1].focus();
12972
+ } else {
12973
+ this.tr[this.tr.length - 1].focus();
13748
12974
  }
13749
12975
  }
13750
12976
  function focusTrBelow(current) {
@@ -13846,7 +13072,7 @@ function forceRepaintIE11(target) {
13846
13072
  target.style.removeProperty("display");
13847
13073
  }
13848
13074
  }
13849
- const _sfc_main$g = vue.defineComponent({
13075
+ const _sfc_main$h = vue.defineComponent({
13850
13076
  name: "FInteractiveTable",
13851
13077
  components: {
13852
13078
  FCheckboxField,
@@ -13964,7 +13190,6 @@ const _sfc_main$g = vue.defineComponent({
13964
13190
  emits: [
13965
13191
  "change",
13966
13192
  "click",
13967
- "update",
13968
13193
  "unselect",
13969
13194
  "update:modelValue",
13970
13195
  "update:active",
@@ -14157,7 +13382,6 @@ const _sfc_main$g = vue.defineComponent({
14157
13382
  updateVModelWithSelectedRows() {
14158
13383
  if (this.modelValue) {
14159
13384
  this.$emit("update:modelValue", this.selectedRows);
14160
- this.$emit("update", this.selectedRows);
14161
13385
  }
14162
13386
  },
14163
13387
  rowClasses(row, index) {
@@ -14234,7 +13458,7 @@ const _sfc_main$g = vue.defineComponent({
14234
13458
  }
14235
13459
  }
14236
13460
  });
14237
- const _hoisted_1$f = ["role"];
13461
+ const _hoisted_1$h = ["role"];
14238
13462
  const _hoisted_2$d = {
14239
13463
  key: 0
14240
13464
  };
@@ -14253,10 +13477,10 @@ const _hoisted_6$4 = {
14253
13477
  key: 0,
14254
13478
  scope: "col"
14255
13479
  };
14256
- const _hoisted_7$4 = {
13480
+ const _hoisted_7$3 = {
14257
13481
  class: "sr-only"
14258
13482
  };
14259
- const _hoisted_8$4 = {
13483
+ const _hoisted_8$3 = {
14260
13484
  key: 1,
14261
13485
  scope: "col"
14262
13486
  };
@@ -14299,7 +13523,7 @@ const _hoisted_21 = {
14299
13523
  key: 1
14300
13524
  };
14301
13525
  const _hoisted_22 = ["colspan"];
14302
- function _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) {
13526
+ function _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) {
14303
13527
  const _component_f_icon = vue.resolveComponent("f-icon");
14304
13528
  const _component_f_checkbox_field = vue.resolveComponent("f-checkbox-field");
14305
13529
  return vue.openBlock(), vue.createElementBlock("div", {
@@ -14312,7 +13536,7 @@ function _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) {
14312
13536
  key: column.id,
14313
13537
  class: vue.normalizeClass(column.size)
14314
13538
  }, null, 2);
14315
- }), 128))]), _cache[16] || (_cache[16] = vue.createTextVNode()), vue.createElementVNode("thead", null, [vue.createElementVNode("tr", _hoisted_5$6, [_ctx.isExpandableTable ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_6$4, [vue.createElementVNode("span", _hoisted_7$4, vue.toDisplayString(_ctx.$t("fkui.interactive-table.select", "Expandera")), 1)])) : vue.createCommentVNode("", true), _cache[4] || (_cache[4] = vue.createTextVNode()), _ctx.selectable ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_8$4, [vue.createElementVNode("span", _hoisted_9$3, vue.toDisplayString(_ctx.$t("fkui.interactive-table.select", "Markera")), 1)])) : vue.createCommentVNode("", true), _cache[5] || (_cache[5] = vue.createTextVNode()), (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.visibleColumns, (column) => {
13539
+ }), 128))]), _cache[16] || (_cache[16] = vue.createTextVNode()), vue.createElementVNode("thead", null, [vue.createElementVNode("tr", _hoisted_5$6, [_ctx.isExpandableTable ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_6$4, [vue.createElementVNode("span", _hoisted_7$3, vue.toDisplayString(_ctx.$t("fkui.interactive-table.select", "Expandera")), 1)])) : vue.createCommentVNode("", true), _cache[4] || (_cache[4] = vue.createTextVNode()), _ctx.selectable ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_8$3, [vue.createElementVNode("span", _hoisted_9$3, vue.toDisplayString(_ctx.$t("fkui.interactive-table.select", "Markera")), 1)])) : vue.createCommentVNode("", true), _cache[5] || (_cache[5] = vue.createTextVNode()), (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.visibleColumns, (column) => {
14316
13540
  return vue.openBlock(), vue.createElementBlock("th", vue.mergeProps({
14317
13541
  key: column.id,
14318
13542
  scope: "col",
@@ -14391,10 +13615,10 @@ function _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) {
14391
13615
  colspan: _ctx.nbOfColumns
14392
13616
  }, [vue.renderSlot(_ctx.$slots, "empty", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.interactive-table.empty", "Tabellen är tom")), 1)])], 8, _hoisted_22), _cache[12] || (_cache[12] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "default", vue.normalizeProps(vue.guardReactiveProps({
14393
13617
  row: {}
14394
- })))])) : vue.createCommentVNode("", true)]))], 16, _hoisted_1$f)], 2);
13618
+ })))])) : vue.createCommentVNode("", true)]))], 16, _hoisted_1$h)], 2);
14395
13619
  }
14396
- const FInteractiveTable = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["render", _sfc_render$g]]);
14397
- const _sfc_main$f = vue.defineComponent({
13620
+ const FInteractiveTable = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["render", _sfc_render$f]]);
13621
+ const _sfc_main$g = vue.defineComponent({
14398
13622
  name: "FLayoutApplicationTemplate",
14399
13623
  computed: {
14400
13624
  showHeader() {
@@ -14419,7 +13643,7 @@ const _sfc_main$f = vue.defineComponent({
14419
13643
  }
14420
13644
  }
14421
13645
  });
14422
- const _hoisted_1$e = {
13646
+ const _hoisted_1$g = {
14423
13647
  class: "layout-application-template"
14424
13648
  };
14425
13649
  const _hoisted_2$c = {
@@ -14438,12 +13662,12 @@ const _hoisted_5$5 = {
14438
13662
  key: 0,
14439
13663
  class: "layout-application-template__footer"
14440
13664
  };
14441
- function _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) {
14442
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$e, [_ctx.showHeader || _ctx.showTopNavigation ? (vue.openBlock(), vue.createElementBlock("header", _hoisted_2$c, [_ctx.showHeader ? vue.renderSlot(_ctx.$slots, "header", {
13665
+ function _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {
13666
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$g, [_ctx.showHeader || _ctx.showTopNavigation ? (vue.openBlock(), vue.createElementBlock("header", _hoisted_2$c, [_ctx.showHeader ? vue.renderSlot(_ctx.$slots, "header", {
14443
13667
  key: 0
14444
13668
  }) : 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)]);
14445
13669
  }
14446
- const FLayoutApplicationTemplate = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["render", _sfc_render$f]]);
13670
+ const FLayoutApplicationTemplate = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["render", _sfc_render$e]]);
14447
13671
  function getGridClasses(target) {
14448
13672
  if (target === null) {
14449
13673
  return {};
@@ -14544,7 +13768,7 @@ function useLayoutPanel(options) {
14544
13768
  rightPrimaryClasses
14545
13769
  };
14546
13770
  }
14547
- const _sfc_main$e = vue.defineComponent({
13771
+ const _sfc_main$f = vue.defineComponent({
14548
13772
  name: "FLayoutLeftPanel",
14549
13773
  components: {
14550
13774
  FIcon
@@ -14629,7 +13853,7 @@ const _sfc_main$e = vue.defineComponent({
14629
13853
  }
14630
13854
  }
14631
13855
  });
14632
- const _hoisted_1$d = {
13856
+ const _hoisted_1$f = {
14633
13857
  class: "layout-navigation"
14634
13858
  };
14635
13859
  const _hoisted_2$b = ["aria-expanded"];
@@ -14640,9 +13864,9 @@ const _hoisted_4$6 = {
14640
13864
  key: 1,
14641
13865
  class: "layout-navigation__navigation__inner--minimized"
14642
13866
  };
14643
- function _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {
13867
+ function _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {
14644
13868
  const _component_f_icon = vue.resolveComponent("f-icon");
14645
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$d, [vue.createElementVNode("nav", {
13869
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$f, [vue.createElementVNode("nav", {
14646
13870
  id: "layout-navigation__navigation",
14647
13871
  class: "layout-navigation__navigation",
14648
13872
  style: vue.normalizeStyle(_ctx.navigationStyle),
@@ -14691,7 +13915,7 @@ function _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {
14691
13915
  style: vue.normalizeStyle(_ctx.primaryStyle)
14692
13916
  }, [vue.renderSlot(_ctx.$slots, "default")], 6)]);
14693
13917
  }
14694
- const FLayoutLeftPanel = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["render", _sfc_render$e]]);
13918
+ const FLayoutLeftPanel = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["render", _sfc_render$d]]);
14695
13919
  class FRightPanelServiceImpl {
14696
13920
  constructor() {
14697
13921
  _defineProperty(this, "focusedElementBeforeOpenining", null);
@@ -14721,7 +13945,7 @@ class FRightPanelServiceImpl {
14721
13945
  }
14722
13946
  }
14723
13947
  const FLayoutRightPanelService = new FRightPanelServiceImpl();
14724
- const _sfc_main$d = vue.defineComponent({
13948
+ const _sfc_main$e = vue.defineComponent({
14725
13949
  name: "FLayoutRightPanel",
14726
13950
  components: {
14727
13951
  FIcon
@@ -14838,15 +14062,15 @@ const _sfc_main$d = vue.defineComponent({
14838
14062
  }
14839
14063
  }
14840
14064
  });
14841
- const _hoisted_1$c = {
14065
+ const _hoisted_1$e = {
14842
14066
  class: "layout-secondary"
14843
14067
  };
14844
14068
  const _hoisted_2$a = {
14845
14069
  class: "layout-secondary__secondary__inner"
14846
14070
  };
14847
- function _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {
14071
+ function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {
14848
14072
  const _component_f_icon = vue.resolveComponent("f-icon");
14849
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$c, [vue.createElementVNode("div", {
14073
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$e, [vue.createElementVNode("div", {
14850
14074
  id: "layout-secondary__primary",
14851
14075
  class: vue.normalizeClass(["layout-secondary__primary", _ctx.rightPrimaryClasses]),
14852
14076
  style: vue.normalizeStyle(_ctx.primaryStyle)
@@ -14883,8 +14107,8 @@ function _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {
14883
14107
  name: "close"
14884
14108
  })])], 6)])], 4)) : vue.createCommentVNode("", true)]);
14885
14109
  }
14886
- const FLayoutRightPanel = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["render", _sfc_render$d]]);
14887
- const _sfc_main$c = vue.defineComponent({
14110
+ const FLayoutRightPanel = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["render", _sfc_render$c]]);
14111
+ const _sfc_main$d = vue.defineComponent({
14888
14112
  name: "FList",
14889
14113
  components: {
14890
14114
  FCheckboxField
@@ -14949,7 +14173,7 @@ const _sfc_main$c = vue.defineComponent({
14949
14173
  default: () => logic.ElementIdService.generateElementId()
14950
14174
  }
14951
14175
  },
14952
- emits: ["change", "click", "update", "unselect", "update:modelValue", "select", "update:active"],
14176
+ emits: ["change", "click", "unselect", "update:modelValue", "select", "update:active"],
14953
14177
  setup() {
14954
14178
  return ActivateItemInjected();
14955
14179
  },
@@ -15047,7 +14271,6 @@ const _sfc_main$c = vue.defineComponent({
15047
14271
  updateVModelWithSelectedItems() {
15048
14272
  if (this.modelValue) {
15049
14273
  this.$emit("update:modelValue", this.selectedItems);
15050
- this.$emit("update", this.selectedItems);
15051
14274
  }
15052
14275
  },
15053
14276
  updateSelectedItemsFromVModel() {
@@ -15127,7 +14350,7 @@ const _sfc_main$c = vue.defineComponent({
15127
14350
  }
15128
14351
  }
15129
14352
  });
15130
- const _hoisted_1$b = {
14353
+ const _hoisted_1$d = {
15131
14354
  key: 0,
15132
14355
  class: "list"
15133
14356
  };
@@ -15141,10 +14364,10 @@ const _hoisted_3$6 = {
15141
14364
  const _hoisted_4$5 = ["tabindex"];
15142
14365
  const _hoisted_5$4 = ["id", "aria-labelledby", "tabindex", "onKeydown"];
15143
14366
  const _hoisted_6$3 = ["onClick"];
15144
- const _hoisted_7$3 = {
14367
+ const _hoisted_7$2 = {
15145
14368
  class: "list__item__selectpane__input"
15146
14369
  };
15147
- const _hoisted_8$3 = ["id"];
14370
+ const _hoisted_8$2 = ["id"];
15148
14371
  const _hoisted_9$2 = {
15149
14372
  key: 0,
15150
14373
  class: "list__item"
@@ -15152,9 +14375,9 @@ const _hoisted_9$2 = {
15152
14375
  const _hoisted_10$1 = {
15153
14376
  class: "list__item__itempane"
15154
14377
  };
15155
- function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {
14378
+ function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
15156
14379
  const _component_f_checkbox_field = vue.resolveComponent("f-checkbox-field");
15157
- return !_ctx.selectable ? (vue.openBlock(), vue.createElementBlock("ul", _hoisted_1$b, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.items, (item) => {
14380
+ return !_ctx.selectable ? (vue.openBlock(), vue.createElementBlock("ul", _hoisted_1$d, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.items, (item) => {
15158
14381
  return vue.openBlock(), vue.createElementBlock("li", {
15159
14382
  key: _ctx.itemKey(item),
15160
14383
  class: "list__item"
@@ -15186,7 +14409,7 @@ function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {
15186
14409
  key: 0,
15187
14410
  class: "list__item__selectpane",
15188
14411
  onClick: vue.withModifiers(($event) => _ctx.onSelect(item), ["self"])
15189
- }, [vue.createElementVNode("div", _hoisted_7$3, [vue.createVNode(_component_f_checkbox_field, {
14412
+ }, [vue.createElementVNode("div", _hoisted_7$2, [vue.createVNode(_component_f_checkbox_field, {
15190
14413
  value: true,
15191
14414
  "model-value": _ctx.isSelected(item),
15192
14415
  onClick: vue.withModifiers(($event) => _ctx.onSelect(item), ["self"])
@@ -15198,7 +14421,7 @@ function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {
15198
14421
  ref_for: true
15199
14422
  }, {
15200
14423
  item
15201
- }))], 8, _hoisted_8$3)]),
14424
+ }))], 8, _hoisted_8$2)]),
15202
14425
  _: 2
15203
14426
  }, 1032, ["model-value", "onClick"])])], 8, _hoisted_6$3)) : vue.createCommentVNode("", true), _cache[3] || (_cache[3] = vue.createTextVNode()), (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.checkbox ? "div" : "a"), {
15204
14427
  ref_for: true,
@@ -15216,8 +14439,8 @@ function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {
15216
14439
  }, 1032, ["href", "onClick"]))], 42, _hoisted_5$4);
15217
14440
  }), 128)), _cache[4] || (_cache[4] = vue.createTextVNode()), _ctx.isEmpty ? (vue.openBlock(), vue.createElementBlock("li", _hoisted_9$2, [vue.createElementVNode("div", _hoisted_10$1, [vue.renderSlot(_ctx.$slots, "empty", {}, () => [vue.createElementVNode("em", null, vue.toDisplayString(_ctx.$t("fkui.list.empty", "Listan är tom")), 1)])])])) : vue.createCommentVNode("", true)], 8, _hoisted_4$5));
15218
14441
  }
15219
- const FList = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["render", _sfc_render$c]]);
15220
- const _sfc_main$b = vue.defineComponent({
14442
+ const FList = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["render", _sfc_render$b]]);
14443
+ const _sfc_main$c = vue.defineComponent({
15221
14444
  name: "FLoader",
15222
14445
  mixins: [TranslationMixin],
15223
14446
  inheritAttrs: false,
@@ -15329,59 +14552,258 @@ const _sfc_main$b = vue.defineComponent({
15329
14552
  }
15330
14553
  }
15331
14554
  });
14555
+ const _hoisted_1$c = {
14556
+ class: "loader__backdrop"
14557
+ };
14558
+ const _hoisted_2$8 = {
14559
+ role: "alert"
14560
+ };
14561
+ function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {
14562
+ return vue.openBlock(), vue.createBlock(vue.Teleport, {
14563
+ to: _ctx.teleportTarget,
14564
+ disabled: _ctx.teleportDisabled
14565
+ }, [vue.withDirectives(vue.createElementVNode("div", vue.mergeProps(_ctx.$attrs, {
14566
+ class: ["loader", _ctx.classes]
14567
+ }), [vue.createElementVNode("div", _hoisted_1$c, [_cache[0] || (_cache[0] = vue.createElementVNode("div", {
14568
+ class: "loader__wrapper"
14569
+ }, [vue.createElementVNode("div", {
14570
+ class: "loader__spinner-1 loader__spinner"
14571
+ }, [vue.createElementVNode("div", {
14572
+ class: "loader__spinner-1-circle1 loader__circle loader__circle--1"
14573
+ }), vue.createTextVNode(), vue.createElementVNode("div", {
14574
+ class: "loader__spinner-1-circle2 loader__circle loader__circle--2"
14575
+ }), vue.createTextVNode(), vue.createElementVNode("div", {
14576
+ class: "loader__spinner-1-circle3 loader__circle loader__circle--3"
14577
+ }), vue.createTextVNode(), vue.createElementVNode("div", {
14578
+ class: "loader__spinner-1-circle4 loader__circle loader__circle--4"
14579
+ })]), vue.createTextVNode(), vue.createElementVNode("div", {
14580
+ class: "loader__spinner-2 loader__spinner"
14581
+ }, [vue.createElementVNode("div", {
14582
+ class: "loader__spinner-2-circle1 loader__circle loader__circle--1"
14583
+ }), vue.createTextVNode(), vue.createElementVNode("div", {
14584
+ class: "loader__spinner-2-circle2 loader__circle loader__circle--2"
14585
+ }), vue.createTextVNode(), vue.createElementVNode("div", {
14586
+ class: "loader__spinner-2-circle3 loader__circle loader__circle--3"
14587
+ }), vue.createTextVNode(), vue.createElementVNode("div", {
14588
+ class: "loader__spinner-2-circle4 loader__circle loader__circle--4"
14589
+ })]), vue.createTextVNode(), vue.createElementVNode("div", {
14590
+ class: "loader__spinner-3 loader__spinner"
14591
+ }, [vue.createElementVNode("div", {
14592
+ class: "loader__spinner-3-circle1 loader__circle loader__circle--1"
14593
+ }), vue.createTextVNode(), vue.createElementVNode("div", {
14594
+ class: "loader__spinner-3-circle2 loader__circle loader__circle--2"
14595
+ }), vue.createTextVNode(), vue.createElementVNode("div", {
14596
+ class: "loader__spinner-3-circle3 loader__circle loader__circle--3"
14597
+ }), vue.createTextVNode(), vue.createElementVNode("div", {
14598
+ class: "loader__spinner-3-circle4 loader__circle loader__circle--4"
14599
+ })])], -1)), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.createElementVNode("div", {
14600
+ ref: "loader-text",
14601
+ class: vue.normalizeClass(["loader__wait-text", {
14602
+ "loader--delay": _ctx.delay
14603
+ }]),
14604
+ tabindex: "-1"
14605
+ }, [vue.createElementVNode("span", _hoisted_2$8, [vue.renderSlot(_ctx.$slots, "default", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.loader.wait.text", _ctx.defaultLoadingText)), 1)])])], 2)])], 16), [[vue.vShow, _ctx.show]])], 8, ["to", "disabled"]);
14606
+ }
14607
+ const FLoader = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["render", _sfc_render$a]]);
14608
+ const _hoisted_1$b = ["aria-label"];
14609
+ const __default__ = vue.defineComponent({
14610
+ computed: {
14611
+ ariaLabel() {
14612
+ const content = renderSlotText(this.$slots.default);
14613
+ if (!content) {
14614
+ throw new Error("`f-logo` requires text content.");
14615
+ }
14616
+ return content;
14617
+ }
14618
+ }
14619
+ });
14620
+ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
14621
+ ...__default__,
14622
+ __name: "FLogo",
14623
+ props: {
14624
+ /**
14625
+ * Size of the logo: `"small"`, `"large"`, or `"responsive"`.
14626
+ * Requires matching CSS variable to be set (`--f-logo-image-{small/large}`), or both if "responsive".
14627
+ */
14628
+ size: {
14629
+ type: String,
14630
+ default: "responsive",
14631
+ required: false,
14632
+ validator(value) {
14633
+ return ["small", "large", "responsive"].includes(value);
14634
+ }
14635
+ }
14636
+ },
14637
+ setup(__props) {
14638
+ const props = __props;
14639
+ return (_ctx, _cache) => {
14640
+ return vue.openBlock(), vue.createElementBlock("span", {
14641
+ class: vue.normalizeClass(`logo logo--${props.size}`),
14642
+ "aria-label": _ctx.ariaLabel,
14643
+ role: "img"
14644
+ }, null, 10, _hoisted_1$b);
14645
+ };
14646
+ }
14647
+ });
14648
+ const iconClasses = {
14649
+ success: {
14650
+ symbol: "circle",
14651
+ sign: "success",
14652
+ screenReaderContextKey: "fkui.message-box.sr-context.success",
14653
+ screenReaderContextDefault: "Meddelande"
14654
+ },
14655
+ warning: {
14656
+ symbol: "circle",
14657
+ sign: "alert",
14658
+ screenReaderContextKey: "fkui.message-box.sr-context.warning",
14659
+ screenReaderContextDefault: "Varningsmeddelande"
14660
+ },
14661
+ error: {
14662
+ symbol: "triangle",
14663
+ sign: "alert",
14664
+ screenReaderContextKey: "fkui.message-box.sr-context.error",
14665
+ screenReaderContextDefault: "Felmeddelande"
14666
+ },
14667
+ info: {
14668
+ symbol: "circle",
14669
+ sign: "i",
14670
+ screenReaderContextKey: "fkui.message-box.sr-context.info",
14671
+ screenReaderContextDefault: "Informationsmeddelande"
14672
+ }
14673
+ };
14674
+ const _sfc_main$a = vue.defineComponent({
14675
+ name: "FMessageBox",
14676
+ components: {
14677
+ FIcon,
14678
+ IFlex,
14679
+ IFlexItem
14680
+ },
14681
+ props: {
14682
+ /**
14683
+ * Type of message-box. 'success', 'error', 'warning' and 'info' is valid.
14684
+ * */
14685
+ type: {
14686
+ type: String,
14687
+ required: true,
14688
+ validator(value) {
14689
+ return ["success", "warning", "error", "info"].includes(value);
14690
+ }
14691
+ },
14692
+ /**
14693
+ * If message-box should be a banner.
14694
+ * If prop is not used message-box will have default styling.
14695
+ */
14696
+ banner: {
14697
+ type: Boolean,
14698
+ required: false
14699
+ },
14700
+ /**
14701
+ * It is important to provide a context for a screenreader, similar to a modal that initially outputs it is a dialog.
14702
+ * Type-specific screenreader context is output by default in this component.
14703
+ * By setting this property to false no context will be output.
14704
+ * Note that by doing this, it is the applications responsiblity to provide a clear context.
14705
+ */
14706
+ provideScreenReaderContext: {
14707
+ type: Boolean,
14708
+ required: false,
14709
+ default: true
14710
+ },
14711
+ /**
14712
+ * Select standard or short layout.
14713
+ *
14714
+ * - 'normal' - Use normal layout when need for heading and/or longer text/multiple sentences
14715
+ * - 'short' - Use short layout when only need for shorter text
14716
+ */
14717
+ layout: {
14718
+ type: String,
14719
+ required: false,
14720
+ default: "standard",
14721
+ validator(value) {
14722
+ return ["standard", "short"].includes(value);
14723
+ }
14724
+ }
14725
+ },
14726
+ data() {
14727
+ return {
14728
+ headingClass: ["message-box__heading"]
14729
+ };
14730
+ },
14731
+ computed: {
14732
+ messageBoxType() {
14733
+ if (this.layout === "short") {
14734
+ return `message-box--${this.type}-short`;
14735
+ } else {
14736
+ return `message-box--${this.type}`;
14737
+ }
14738
+ },
14739
+ bannerType() {
14740
+ return this.banner ? `message-box--banner` : "";
14741
+ },
14742
+ classType() {
14743
+ return `icon__${this.type}`;
14744
+ },
14745
+ classIcon() {
14746
+ return iconClasses[this.type].symbol === "circle" && iconClasses[this.type].sign === "alert" ? `icon__exclamation` : "";
14747
+ },
14748
+ stackTypeClass() {
14749
+ return `icon-stack--${this.type}`;
14750
+ },
14751
+ symbol() {
14752
+ return iconClasses[this.type].symbol;
14753
+ },
14754
+ sign() {
14755
+ return iconClasses[this.type].sign;
14756
+ }
14757
+ },
14758
+ methods: {
14759
+ screenReaderContext() {
14760
+ return logic.TranslationService.provider.translate(iconClasses[this.type].screenReaderContextKey, iconClasses[this.type].screenReaderContextDefault);
14761
+ }
14762
+ }
14763
+ });
15332
14764
  const _hoisted_1$a = {
15333
- class: "loader__backdrop"
15334
- };
15335
- const _hoisted_2$8 = {
15336
- role: "alert"
14765
+ key: 0,
14766
+ class: "sr-only"
15337
14767
  };
15338
- function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
15339
- return vue.openBlock(), vue.createBlock(vue.Teleport, {
15340
- to: _ctx.teleportTarget,
15341
- disabled: _ctx.teleportDisabled
15342
- }, [vue.withDirectives(vue.createElementVNode("div", vue.mergeProps(_ctx.$attrs, {
15343
- class: ["loader", _ctx.classes]
15344
- }), [vue.createElementVNode("div", _hoisted_1$a, [_cache[0] || (_cache[0] = vue.createElementVNode("div", {
15345
- class: "loader__wrapper"
15346
- }, [vue.createElementVNode("div", {
15347
- class: "loader__spinner-1 loader__spinner"
15348
- }, [vue.createElementVNode("div", {
15349
- class: "loader__spinner-1-circle1 loader__circle loader__circle--1"
15350
- }), vue.createTextVNode(), vue.createElementVNode("div", {
15351
- class: "loader__spinner-1-circle2 loader__circle loader__circle--2"
15352
- }), vue.createTextVNode(), vue.createElementVNode("div", {
15353
- class: "loader__spinner-1-circle3 loader__circle loader__circle--3"
15354
- }), vue.createTextVNode(), vue.createElementVNode("div", {
15355
- class: "loader__spinner-1-circle4 loader__circle loader__circle--4"
15356
- })]), vue.createTextVNode(), vue.createElementVNode("div", {
15357
- class: "loader__spinner-2 loader__spinner"
15358
- }, [vue.createElementVNode("div", {
15359
- class: "loader__spinner-2-circle1 loader__circle loader__circle--1"
15360
- }), vue.createTextVNode(), vue.createElementVNode("div", {
15361
- class: "loader__spinner-2-circle2 loader__circle loader__circle--2"
15362
- }), vue.createTextVNode(), vue.createElementVNode("div", {
15363
- class: "loader__spinner-2-circle3 loader__circle loader__circle--3"
15364
- }), vue.createTextVNode(), vue.createElementVNode("div", {
15365
- class: "loader__spinner-2-circle4 loader__circle loader__circle--4"
15366
- })]), vue.createTextVNode(), vue.createElementVNode("div", {
15367
- class: "loader__spinner-3 loader__spinner"
15368
- }, [vue.createElementVNode("div", {
15369
- class: "loader__spinner-3-circle1 loader__circle loader__circle--1"
15370
- }), vue.createTextVNode(), vue.createElementVNode("div", {
15371
- class: "loader__spinner-3-circle2 loader__circle loader__circle--2"
15372
- }), vue.createTextVNode(), vue.createElementVNode("div", {
15373
- class: "loader__spinner-3-circle3 loader__circle loader__circle--3"
15374
- }), vue.createTextVNode(), vue.createElementVNode("div", {
15375
- class: "loader__spinner-3-circle4 loader__circle loader__circle--4"
15376
- })])], -1)), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.createElementVNode("div", {
15377
- ref: "loader-text",
15378
- class: vue.normalizeClass(["loader__wait-text", {
15379
- "loader--delay": _ctx.delay
15380
- }]),
15381
- tabindex: "-1"
15382
- }, [vue.createElementVNode("span", _hoisted_2$8, [vue.renderSlot(_ctx.$slots, "default", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.loader.wait.text", _ctx.defaultLoadingText)), 1)])])], 2)])], 16), [[vue.vShow, _ctx.show]])], 8, ["to", "disabled"]);
14768
+ function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {
14769
+ const _component_f_icon = vue.resolveComponent("f-icon");
14770
+ const _component_i_flex_item = vue.resolveComponent("i-flex-item");
14771
+ const _component_i_flex = vue.resolveComponent("i-flex");
14772
+ return vue.openBlock(), vue.createElementBlock("div", {
14773
+ class: vue.normalizeClass(["message-box", [_ctx.messageBoxType, _ctx.bannerType]])
14774
+ }, [_ctx.provideScreenReaderContext ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$a, vue.toDisplayString(_ctx.screenReaderContext()), 1)) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createVNode(_component_i_flex, {
14775
+ gap: "2x"
14776
+ }, {
14777
+ default: vue.withCtx(() => [_ctx.layout === "short" ? (vue.openBlock(), vue.createBlock(_component_i_flex_item, {
14778
+ key: 0,
14779
+ class: "message-box__icon",
14780
+ shrink: "",
14781
+ align: "center"
14782
+ }, {
14783
+ default: vue.withCtx(() => [vue.createElementVNode("span", {
14784
+ class: vue.normalizeClass(["icon-stack", _ctx.stackTypeClass])
14785
+ }, [vue.createVNode(_component_f_icon, {
14786
+ class: vue.normalizeClass(_ctx.classType),
14787
+ name: _ctx.symbol
14788
+ }, null, 8, ["class", "name"]), _cache[0] || (_cache[0] = vue.createTextVNode()), vue.createVNode(_component_f_icon, {
14789
+ class: vue.normalizeClass(_ctx.classIcon),
14790
+ name: _ctx.sign
14791
+ }, null, 8, ["class", "name"])], 2)]),
14792
+ _: 1
14793
+ })) : vue.createCommentVNode("", true), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.createVNode(_component_i_flex_item, {
14794
+ class: "message-box__content",
14795
+ grow: "",
14796
+ align: "center"
14797
+ }, {
14798
+ default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "default", vue.normalizeProps(vue.guardReactiveProps(_ctx.layout === "short" ? {} : {
14799
+ headingSlotClass: _ctx.headingClass
14800
+ })))]),
14801
+ _: 3
14802
+ })]),
14803
+ _: 3
14804
+ })], 2);
15383
14805
  }
15384
- const FLoader = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["render", _sfc_render$b]]);
14806
+ const FMessageBox = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["render", _sfc_render$9]]);
15385
14807
  function findOverflowIndex(totalWidth, elements) {
15386
14808
  let sum = 0;
15387
14809
  const index = elements.findIndex((element) => {
@@ -15431,7 +14853,7 @@ const upKeys = ["Up", "ArrowUp"];
15431
14853
  const downKeys = ["Down", "ArrowDown"];
15432
14854
  const verticalKeys = [...upKeys, ...downKeys];
15433
14855
  const preventKeys = ["Tab", "Left", "Right", "ArrowLeft", "ArrowRight", "Home", "End", " ", "Spacebar", "Enter", ...verticalKeys];
15434
- const _sfc_main$a = vue.defineComponent({
14856
+ const _sfc_main$9 = vue.defineComponent({
15435
14857
  name: "FNavigationMenu",
15436
14858
  components: {
15437
14859
  FIcon,
@@ -15779,14 +15201,14 @@ const _hoisted_6$2 = {
15779
15201
  class: "imenu__popup-item",
15780
15202
  role: "none"
15781
15203
  };
15782
- const _hoisted_7$2 = {
15204
+ const _hoisted_7$1 = {
15783
15205
  class: "imenu__list__anchor-container"
15784
15206
  };
15785
- const _hoisted_8$2 = ["aria-expanded"];
15207
+ const _hoisted_8$1 = ["aria-expanded"];
15786
15208
  const _hoisted_9$1 = {
15787
15209
  class: "sr-only"
15788
15210
  };
15789
- function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {
15211
+ function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
15790
15212
  const _component_f_icon = vue.resolveComponent("f-icon");
15791
15213
  const _component_i_popup_menu = vue.resolveComponent("i-popup-menu");
15792
15214
  return vue.openBlock(), vue.createElementBlock("nav", {
@@ -15821,7 +15243,7 @@ function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {
15821
15243
  ref: "popup-item",
15822
15244
  class: vue.normalizeClass(_ctx.popupItemClasses),
15823
15245
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.togglePopup(true))
15824
- }, [vue.createElementVNode("div", _hoisted_7$2, [vue.createElementVNode("a", {
15246
+ }, [vue.createElementVNode("div", _hoisted_7$1, [vue.createElementVNode("a", {
15825
15247
  ref: "popup-anchor",
15826
15248
  tabindex: "0",
15827
15249
  class: "imenu__list__anchor",
@@ -15831,7 +15253,7 @@ function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {
15831
15253
  }, [vue.createElementVNode("span", _hoisted_9$1, [vue.createElementVNode("span", null, vue.toDisplayString(_ctx.popupMenuSrText) + " ", 1)]), vue.createTextVNode(" " + vue.toDisplayString(_ctx.popupLabel) + " ", 1), vue.createVNode(_component_f_icon, {
15832
15254
  name: "arrow-down",
15833
15255
  class: "imenu__list__anchor-icon-right"
15834
- })], 8, _hoisted_8$2)])], 2)])) : vue.createCommentVNode("", true)], 32), _cache[7] || (_cache[7] = vue.createTextVNode()), vue.createVNode(_component_i_popup_menu, {
15256
+ })], 8, _hoisted_8$1)])], 2)])) : vue.createCommentVNode("", true)], 32), _cache[7] || (_cache[7] = vue.createTextVNode()), vue.createVNode(_component_i_popup_menu, {
15835
15257
  ref: "popup-menu",
15836
15258
  modelValue: _ctx.selectedItem,
15837
15259
  "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => _ctx.selectedItem = $event),
@@ -15847,9 +15269,9 @@ function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {
15847
15269
  onClose: _cache[5] || (_cache[5] = ($event) => _ctx.togglePopup(false))
15848
15270
  }, null, 8, ["modelValue", "focused-item", "items", "is-open", "anchor", "selected-menu-item-screen-reader-text", "aria-label", "onSelect"])], 10, _hoisted_1$9);
15849
15271
  }
15850
- const FNavigationMenu = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["render", _sfc_render$a]]);
15272
+ const FNavigationMenu = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["render", _sfc_render$8]]);
15851
15273
  const EVENTS = ["online", "offline"];
15852
- const _sfc_main$9 = vue.defineComponent({
15274
+ const _sfc_main$8 = vue.defineComponent({
15853
15275
  name: "FOffline",
15854
15276
  components: {
15855
15277
  FIcon,
@@ -15909,7 +15331,7 @@ const _hoisted_4$3 = {
15909
15331
  class: "offline__content"
15910
15332
  };
15911
15333
  const _hoisted_5$2 = ["aria-hidden"];
15912
- function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {
15334
+ function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
15913
15335
  const _component_f_icon = vue.resolveComponent("f-icon");
15914
15336
  const _component_i_flex_item = vue.resolveComponent("i-flex-item");
15915
15337
  const _component_i_flex = vue.resolveComponent("i-flex");
@@ -15945,8 +15367,8 @@ function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {
15945
15367
  "aria-hidden": _ctx.shouldNotRead ? "true" : void 0
15946
15368
  }, "\n Din internetuppkoppling fungerar igen\n ", 8, _hoisted_5$2), [[vue.vShow, _ctx.isOnline]])], 8, _hoisted_1$8);
15947
15369
  }
15948
- const FOffline = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["render", _sfc_render$9]]);
15949
- const _sfc_main$8 = vue.defineComponent({
15370
+ const FOffline = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["render", _sfc_render$7]]);
15371
+ const _sfc_main$7 = vue.defineComponent({
15950
15372
  name: "FOutputField",
15951
15373
  components: {
15952
15374
  FLabel
@@ -15983,7 +15405,7 @@ const _hoisted_1$7 = {
15983
15405
  class: "output-field"
15984
15406
  };
15985
15407
  const _hoisted_2$5 = ["id", "for"];
15986
- function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
15408
+ function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
15987
15409
  const _component_f_label = vue.resolveComponent("f-label");
15988
15410
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$7, [vue.createVNode(_component_f_label, {
15989
15411
  for: _ctx.id
@@ -16000,62 +15422,26 @@ function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
16000
15422
  class: "output-field__output"
16001
15423
  }, _ctx.$attrs), [vue.renderSlot(_ctx.$slots, "default")], 16, _hoisted_2$5)]);
16002
15424
  }
16003
- const FOutputField = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["render", _sfc_render$8]]);
16004
- function getAltLogoText(hasRouterLink, routerLinkLabel, t) {
16005
- const srStdLogoAltText = t("fkui.page-header.logo.alt-text", "Försäkringskassan");
16006
- const srStdRouterLinkLabel = t("fkui.page-header.router.link.label", "gå till startsidan");
16007
- if (hasRouterLink && routerLinkLabel !== "") {
16008
- return `${srStdLogoAltText} ${routerLinkLabel}`;
16009
- } else if (hasRouterLink) {
16010
- return `${srStdLogoAltText}, ${srStdRouterLinkLabel}`;
16011
- } else {
16012
- return srStdLogoAltText;
16013
- }
16014
- }
16015
- const _sfc_main$7 = vue.defineComponent({
15425
+ const FOutputField = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["render", _sfc_render$6]]);
15426
+ const _sfc_main$6 = vue.defineComponent({
16016
15427
  name: "FPageHeader",
16017
15428
  components: {
16018
15429
  ISkipLink
16019
15430
  },
16020
- mixins: [TranslationMixin],
16021
15431
  inheritAttrs: true,
16022
15432
  props: {
16023
- /** Setting the logo sizes small, large or responsive. */
16024
- logoSize: {
16025
- type: String,
16026
- default: "responsive",
16027
- required: false,
16028
- validator(value) {
16029
- return ["small", "large", "responsive"].includes(value);
16030
- }
16031
- },
16032
15433
  /**
16033
15434
  * Render skiplink.
16034
15435
  *
16035
- * When set to a non-empty string thethe skiplink feature is enabled.
15436
+ * When set to a non-empty string the skiplink feature is enabled.
16036
15437
  * The string is the id of the element to move focus to.
16037
15438
  *
16038
- * When set to `true` the deprecated `skipLinkHref` prop is used to
16039
- * set the element id to move focus to.
16040
- *
16041
- * When set to `false` or empty string the skiplink feature is disabled.
16042
- *
16043
- * Using a boolean is deprecated. Leave unset or a non-empty string.
15439
+ * When set to empty string (default) the skiplink feature is disabled.
16044
15440
  */
16045
15441
  skipLink: {
16046
- type: [String, Boolean],
16047
- required: false,
16048
- default: ""
16049
- },
16050
- /**
16051
- * Target for skiplink.
16052
- *
16053
- * @deprecated Use `skipLink` prop with a non-empty string instead.
16054
- */
16055
- skipLinkHref: {
16056
15442
  type: String,
16057
15443
  required: false,
16058
- default: "#applicationlayout-main-content"
15444
+ default: ""
16059
15445
  },
16060
15446
  /**
16061
15447
  * HTML element type for header.
@@ -16066,73 +15452,21 @@ const _sfc_main$7 = vue.defineComponent({
16066
15452
  validator(value) {
16067
15453
  return ["span", "h1"].includes(value);
16068
15454
  }
16069
- },
16070
- /**
16071
- * Target for router-link via path.
16072
- * (Behaviour from using both name and path in combination is undefined.)
16073
- */
16074
- routerLinkPath: {
16075
- type: String,
16076
- required: false,
16077
- default: ""
16078
- },
16079
- /**
16080
- * Target for router-link via name.
16081
- * (Behaviour from using both name and path in combination is undefined.)
16082
- */
16083
- routerLinkName: {
16084
- type: String,
16085
- required: false,
16086
- default: ""
16087
- },
16088
- /**
16089
- * Label to override the router-link label when router-link is present.
16090
- */
16091
- routerLinkLabel: {
16092
- type: String,
16093
- required: false,
16094
- default: ""
16095
15455
  }
16096
15456
  },
16097
15457
  computed: {
16098
- logoClass() {
16099
- return `page-header__logo--${this.logoSize}`;
16100
- },
16101
- hasRouterLink() {
16102
- return Boolean(this.routerLinkName || this.routerLinkPath);
16103
- },
16104
- routerLinkTo() {
16105
- const {
16106
- routerLinkName,
16107
- routerLinkPath
16108
- } = this;
16109
- if (routerLinkName) {
16110
- return {
16111
- name: routerLinkName
16112
- };
16113
- }
16114
- if (routerLinkPath) {
16115
- return {
16116
- path: routerLinkPath
16117
- };
16118
- }
16119
- return null;
16120
- },
16121
15458
  skipLinkAnchor() {
16122
15459
  const {
16123
- skipLink,
16124
- skipLinkHref
15460
+ skipLink
16125
15461
  } = this;
16126
- if (skipLink === false || skipLink === "") {
15462
+ if (skipLink === "") {
16127
15463
  return null;
16128
- } else if (skipLink === true) {
16129
- return skipLinkHref;
16130
15464
  } else {
16131
15465
  return `#${skipLink}`;
16132
15466
  }
16133
15467
  },
16134
- altLogoText() {
16135
- return getAltLogoText(this.hasRouterLink, this.routerLinkLabel, this.$t);
15468
+ hasLogo() {
15469
+ return Boolean(this.$slots.logo);
16136
15470
  }
16137
15471
  }
16138
15472
  });
@@ -16147,124 +15481,111 @@ const _hoisted_3$3 = {
16147
15481
  class: "page-header"
16148
15482
  };
16149
15483
  const _hoisted_4$2 = {
15484
+ key: 0,
16150
15485
  class: "page-header__logo"
16151
15486
  };
16152
- const _hoisted_5$1 = ["aria-label"];
16153
- const _hoisted_6$1 = ["aria-label"];
16154
- const _hoisted_7$1 = {
15487
+ const _hoisted_5$1 = {
16155
15488
  class: "page-header__right"
16156
15489
  };
16157
- const _hoisted_8$1 = {
15490
+ const _hoisted_6$1 = {
16158
15491
  class: "page-header__right-slot"
16159
15492
  };
16160
- function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
15493
+ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
16161
15494
  const _component_i_skip_link = vue.resolveComponent("i-skip-link");
16162
- const _component_router_link = vue.resolveComponent("router-link");
16163
15495
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$6, [_ctx.skipLinkAnchor ? (vue.openBlock(), vue.createElementBlock("nav", _hoisted_2$4, [vue.createVNode(_component_i_skip_link, {
16164
15496
  href: _ctx.skipLinkAnchor
16165
15497
  }, {
16166
15498
  default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "skip-link-text")]),
16167
15499
  _: 3
16168
- }, 8, ["href"])])) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createElementVNode("div", _hoisted_3$3, [vue.createElementVNode("div", _hoisted_4$2, [vue.renderSlot(_ctx.$slots, "logo", {}, () => [_ctx.routerLinkTo ? (vue.openBlock(), vue.createBlock(_component_router_link, {
16169
- key: 0,
16170
- to: _ctx.routerLinkTo
16171
- }, {
16172
- default: vue.withCtx(() => [vue.createElementVNode("span", {
16173
- class: vue.normalizeClass(_ctx.logoClass),
16174
- "aria-label": _ctx.altLogoText,
16175
- role: "img"
16176
- }, null, 10, _hoisted_5$1)]),
16177
- _: 1
16178
- }, 8, ["to"])) : (vue.openBlock(), vue.createElementBlock("span", {
16179
- key: 1,
16180
- class: vue.normalizeClass(_ctx.logoClass),
16181
- "aria-label": _ctx.altLogoText,
16182
- role: "img"
16183
- }, null, 10, _hoisted_6$1))])]), _cache[0] || (_cache[0] = vue.createTextVNode()), (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.headerTag), {
15500
+ }, 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), {
16184
15501
  class: "page-header__app-name"
16185
15502
  }, {
16186
15503
  default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "default")]),
16187
15504
  _: 3
16188
- })), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.createElementVNode("div", _hoisted_7$1, [vue.createElementVNode("div", _hoisted_8$1, [vue.renderSlot(_ctx.$slots, "right")])])], 512)]);
15505
+ })), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.createElementVNode("div", _hoisted_5$1, [vue.createElementVNode("div", _hoisted_6$1, [vue.renderSlot(_ctx.$slots, "right")])])], 512)]);
16189
15506
  }
16190
- const FPageHeader = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["render", _sfc_render$7]]);
15507
+ const FPageHeader = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$5]]);
15508
+ const _hoisted_1$5 = {
15509
+ class: "progress"
15510
+ };
15511
+ const _hoisted_2$3 = ["aria-label", "aria-valuenow", "aria-valuetext"];
15512
+ const _hoisted_3$2 = {
15513
+ class: "sr-only"
15514
+ };
16191
15515
  const MIN_VALUE = 0;
16192
15516
  const MAX_VALUE = 100;
16193
- function clamp(val) {
16194
- return Math.round(Math.min(Math.max(val || 0, MIN_VALUE), MAX_VALUE));
16195
- }
16196
- const _sfc_main$6 = vue.defineComponent({
16197
- name: "FProgressbar",
15517
+ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
15518
+ __name: "FProgressbar",
16198
15519
  props: {
16199
15520
  /**
16200
- * Sets the progress. Higher value indicates further progress. Value must be in range 0-100.
15521
+ * Sets the progress. Higher value indicates further progress.
15522
+ *
15523
+ * Value must be in range 0-100.
16201
15524
  */
16202
15525
  value: {
16203
15526
  type: Number,
16204
15527
  required: true,
16205
15528
  validator(value) {
16206
- return value >= MIN_VALUE && value <= MAX_VALUE;
15529
+ return value >= 0 && value <= 100;
16207
15530
  }
16208
15531
  },
16209
15532
  /**
16210
- * Text that the screenreader will read, the actual value will be replaced with %VALUE% e.g You have uploaded %VALUE% percent
15533
+ * Text that the screenreader will read.
15534
+ *
15535
+ * `%VALUE%` can be used as a placeholder for the actual value e.g
15536
+ * `"You have uploaded %VALUE% percent"`.
16211
15537
  */
16212
15538
  valueText: {
16213
15539
  type: String,
16214
15540
  required: false,
16215
15541
  default: "Du har slutfört %VALUE% %."
16216
15542
  },
16217
- ariaLabel: {
15543
+ /**
15544
+ * Accessible name for this progressbar. Should describe the purpose of this
15545
+ * progressbar.
15546
+ */
15547
+ /* eslint-disable-next-line vue/prop-name-casing -- vue does not allow ariaLabel as a prop as it collides with internal types */
15548
+ "aria-label": {
16218
15549
  type: String,
16219
15550
  required: true
16220
15551
  }
16221
15552
  },
16222
- computed: {
16223
- progressValueNow() {
16224
- return clamp(this.value);
16225
- },
16226
- isFinished() {
16227
- return this.progressValueNow === MAX_VALUE;
16228
- },
16229
- isInProgress() {
16230
- return this.progressValueNow > MIN_VALUE && this.progressValueNow < MAX_VALUE;
16231
- },
16232
- isPending() {
16233
- return this.progressValueNow === MIN_VALUE;
16234
- },
16235
- cssWidth() {
16236
- return `width: ${this.progressValueNow}%`;
16237
- },
16238
- progressBarClass() {
16239
- return `${this.isInProgress ? "progress__meter--inprogress" : ""} ${this.isPending ? "progress__meter--pending" : ""} ${this.isFinished ? "progress__meter--finished" : ""}`;
16240
- },
16241
- progressText() {
16242
- return `${this.valueText.replace("%VALUE%", this.progressValueNow.toString())}`;
16243
- }
15553
+ setup(__props) {
15554
+ const props = __props;
15555
+ const ariaLabel = props.ariaLabel;
15556
+ function clamp(val) {
15557
+ return Math.round(Math.min(Math.max(val || 0, MIN_VALUE), MAX_VALUE));
15558
+ }
15559
+ const progressValueNow = vue.computed(() => clamp(props.value));
15560
+ const cssWidth = vue.computed(() => `width: ${progressValueNow.value}%`);
15561
+ const progressBarClass = vue.computed(() => {
15562
+ if (progressValueNow.value === MIN_VALUE) {
15563
+ return "progress__meter--pending";
15564
+ } else if (progressValueNow.value === MAX_VALUE) {
15565
+ return "progress__meter--finished";
15566
+ } else {
15567
+ return "progress__meter--inprogress";
15568
+ }
15569
+ });
15570
+ const progressText = vue.computed(() => {
15571
+ return `${props.valueText.replace("%VALUE%", progressValueNow.value.toString())}`;
15572
+ });
15573
+ return (_ctx, _cache) => {
15574
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [vue.createElementVNode("span", {
15575
+ class: vue.normalizeClass(["progress__meter", progressBarClass.value]),
15576
+ role: "progressbar",
15577
+ "aria-label": vue.unref(ariaLabel),
15578
+ "aria-valuemin": "0",
15579
+ "aria-valuemax": "100",
15580
+ "aria-valuenow": progressValueNow.value,
15581
+ "aria-valuetext": progressText.value,
15582
+ style: vue.normalizeStyle(cssWidth.value)
15583
+ }, [vue.createElementVNode("span", _hoisted_3$2, vue.toDisplayString(progressText.value), 1)], 14, _hoisted_2$3)]);
15584
+ };
16244
15585
  }
16245
15586
  });
16246
- const _hoisted_1$5 = {
16247
- class: "progress"
16248
- };
16249
- const _hoisted_2$3 = ["aria-label", "aria-valuenow", "aria-valuetext"];
16250
- const _hoisted_3$2 = {
16251
- class: "sr-only"
16252
- };
16253
- function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
16254
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [vue.createElementVNode("span", {
16255
- class: vue.normalizeClass(["progress__meter", _ctx.progressBarClass]),
16256
- role: "progressbar",
16257
- "aria-label": _ctx.ariaLabel,
16258
- "aria-valuemin": "0",
16259
- "aria-valuemax": "100",
16260
- "aria-valuenow": _ctx.progressValueNow,
16261
- "aria-valuetext": _ctx.progressText,
16262
- style: vue.normalizeStyle(_ctx.cssWidth)
16263
- }, [vue.createElementVNode("span", _hoisted_3$2, vue.toDisplayString(_ctx.progressText), 1)], 14, _hoisted_2$3)]);
16264
- }
16265
- const FProgressbar = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$6]]);
16266
15587
  const anyType = [String, Object, Array, Number, Date, Boolean];
16267
- const _sfc_main$5 = vue.defineComponent({
15588
+ const _sfc_main$4 = vue.defineComponent({
16268
15589
  name: "FRadioField",
16269
15590
  inheritAttrs: false,
16270
15591
  props: {
@@ -16430,7 +15751,7 @@ const _hoisted_4$1 = {
16430
15751
  key: 0,
16431
15752
  class: "radio-button__details"
16432
15753
  };
16433
- function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
15754
+ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
16434
15755
  return vue.openBlock(), vue.createElementBlock("div", {
16435
15756
  class: vue.normalizeClass(["radio-button", _ctx.disabledClass]),
16436
15757
  onValidity: _cache[0] || (_cache[0] = (...args) => _ctx.onValidity && _ctx.onValidity(...args))
@@ -16456,70 +15777,7 @@ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
16456
15777
  _: 3
16457
15778
  }, 8, ["onEnter", "onAfterEnter", "onLeave"])) : vue.createCommentVNode("", true)], 64)) : vue.createCommentVNode("", true)], 10, _hoisted_2$2)], 34);
16458
15779
  }
16459
- const FRadioField = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["render", _sfc_render$5]]);
16460
- const _sfc_main$4 = vue.defineComponent({
16461
- name: "FRadioGroup",
16462
- components: {
16463
- FFieldset
16464
- },
16465
- inheritAttrs: false,
16466
- props: {
16467
- /**
16468
- * The id for the fieldset id attribute.
16469
- * If the prop is not set the id will be generated.
16470
- */
16471
- id: {
16472
- type: String,
16473
- required: false,
16474
- default: () => logic.ElementIdService.generateElementId()
16475
- },
16476
- /**
16477
- * The name of the radio group.
16478
- * The radio group fields in the group will use the same name.
16479
- */
16480
- name: {
16481
- type: String,
16482
- required: true
16483
- },
16484
- /**
16485
- * If radio buttons should be aligned horizontally.
16486
- * If the prop is not set the radio buttons will be aligned vertically.
16487
- * Default: `false`
16488
- */
16489
- isHorizontal: {
16490
- type: Boolean,
16491
- required: false
16492
- }
16493
- }
16494
- });
16495
- function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
16496
- const _component_f_fieldset = vue.resolveComponent("f-fieldset");
16497
- return vue.openBlock(), vue.createBlock(_component_f_fieldset, vue.mergeProps({
16498
- id: _ctx.id,
16499
- name: _ctx.name
16500
- }, _ctx.$attrs, {
16501
- horizontal: _ctx.isHorizontal
16502
- }), vue.createSlots({
16503
- label: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "label")]),
16504
- description: vue.withCtx(({
16505
- descriptionClass,
16506
- discreteDescriptionClass
16507
- }) => [vue.renderSlot(_ctx.$slots, "description", vue.normalizeProps(vue.guardReactiveProps({
16508
- descriptionClass,
16509
- discreteDescriptionClass
16510
- })))]),
16511
- "error-message": vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "error-message")]),
16512
- default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "default", vue.normalizeProps(vue.guardReactiveProps({
16513
- indentClass: "indent"
16514
- })))]),
16515
- _: 2
16516
- }, [_ctx.$slots.tooltip ? {
16517
- name: "tooltip",
16518
- fn: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "tooltip")]),
16519
- key: "0"
16520
- } : void 0]), 1040, ["id", "name", "horizontal"]);
16521
- }
16522
- const FRadioGroup = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["render", _sfc_render$4]]);
15780
+ const FRadioField = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["render", _sfc_render$4]]);
16523
15781
  const _sfc_main$3 = vue.defineComponent({
16524
15782
  name: "FStaticField",
16525
15783
  components: {
@@ -16538,11 +15796,11 @@ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
16538
15796
  default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "label")]),
16539
15797
  description: vue.withCtx(({
16540
15798
  descriptionClass,
16541
- discreteDescriptionClass
16542
- }) => [vue.renderSlot(_ctx.$slots, "description", vue.normalizeProps(vue.guardReactiveProps({
15799
+ formatDescriptionClass
15800
+ }) => [vue.renderSlot(_ctx.$slots, "description", {
16543
15801
  descriptionClass,
16544
- discreteDescriptionClass
16545
- })))]),
15802
+ formatDescriptionClass
15803
+ })]),
16546
15804
  _: 2
16547
15805
  }, [_ctx.$slots.tooltip ? {
16548
15806
  name: "tooltip",
@@ -16718,11 +15976,11 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
16718
15976
  default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "default")]),
16719
15977
  description: vue.withCtx(({
16720
15978
  descriptionClass,
16721
- discreteDescriptionClass
16722
- }) => [vue.renderSlot(_ctx.$slots, "description", vue.normalizeProps(vue.guardReactiveProps({
15979
+ formatDescriptionClass
15980
+ }) => [vue.renderSlot(_ctx.$slots, "description", {
16723
15981
  descriptionClass,
16724
- discreteDescriptionClass
16725
- })))]),
15982
+ formatDescriptionClass
15983
+ })]),
16726
15984
  "error-message": vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "error-message", vue.normalizeProps(vue.guardReactiveProps({
16727
15985
  hasError: _ctx.hasError,
16728
15986
  validationMessage: _ctx.validationMessage
@@ -16845,7 +16103,7 @@ const _sfc_main$1 = vue.defineComponent({
16845
16103
  default: false
16846
16104
  }
16847
16105
  },
16848
- emits: ["cancel", "change", "completed", "update:modelValue"],
16106
+ emits: ["cancel", "completed", "update:modelValue"],
16849
16107
  data() {
16850
16108
  return {
16851
16109
  steps: []
@@ -16924,10 +16182,8 @@ const _sfc_main$1 = vue.defineComponent({
16924
16182
  if (open >= 0) {
16925
16183
  const step = this.steps[open - 1];
16926
16184
  this.$emit("update:modelValue", step.key);
16927
- this.$emit("change", step.key);
16928
16185
  } else {
16929
16186
  this.$emit("update:modelValue", null);
16930
- this.$emit("change", null);
16931
16187
  }
16932
16188
  },
16933
16189
  cancel(isFinalStep) {
@@ -17260,7 +16516,10 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
17260
16516
  class: "wizard-step-body",
17261
16517
  onSubmit: _ctx.onSubmit
17262
16518
  }, {
17263
- "error-message": vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "error-message", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.wizard-step.errorlist.title", "Oj, du har glömt att fylla i något. Gå till:")), 1)])]),
16519
+ "error-message": vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "error-message", vue.normalizeProps(vue.guardReactiveProps({
16520
+ stepNumber: _ctx.stepNumber,
16521
+ totalSteps: _ctx.totalSteps
16522
+ })), () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.wizard-step.errorlist.title", "Oj, du har glömt att fylla i något. Gå till:")), 1)])]),
17264
16523
  default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "default"), _cache[14] || (_cache[14] = vue.createTextVNode()), vue.createElementVNode("div", _hoisted_10, [vue.createElementVNode("button", {
17265
16524
  "data-test": "submit-button",
17266
16525
  "data-disabled": _ctx.ignoreClick ? "true" : "false",
@@ -17278,10 +16537,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
17278
16537
  type: "button",
17279
16538
  class: "button button--secondary button-group__item button--large",
17280
16539
  onClick: _cache[2] || (_cache[2] = (...args) => _ctx.onCancel && _ctx.onCancel(...args))
17281
- }, [vue.renderSlot(_ctx.$slots, "cancel-button-text", vue.normalizeProps(vue.guardReactiveProps({
17282
- stepNumber: _ctx.stepNumber,
17283
- totalSteps: _ctx.totalSteps
17284
- })), () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.wizard-step.button.cancel.text", "Avbryt")), 1)])])])]),
16540
+ }, [vue.renderSlot(_ctx.$slots, "cancel-button-text", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.wizard-step.button.cancel.text", "Avbryt")), 1)])])])]),
17285
16541
  _: 3
17286
16542
  }, 8, ["id", "before-submit", "before-validation", "use-error-list", "onSubmit"])]),
17287
16543
  _: 3
@@ -17293,21 +16549,19 @@ exports.ErrorData = ErrorData;
17293
16549
  exports.ErrorPlugin = ErrorPlugin;
17294
16550
  exports.ErrorViewData = ErrorViewData;
17295
16551
  exports.EventBus = EventBus;
17296
- exports.FBadge = _sfc_main$1f;
17297
- exports.FBankAccountNumberTextField = _sfc_main$B;
17298
- exports.FBankgiroTextField = _sfc_main$A;
16552
+ exports.FBadge = _sfc_main$1b;
16553
+ exports.FBankAccountNumberTextField = _sfc_main$y;
16554
+ exports.FBankgiroTextField = _sfc_main$x;
17299
16555
  exports.FCalendar = FCalendar;
17300
16556
  exports.FCalendarDay = FCalendarDay;
17301
- exports.FCard = _sfc_main$_;
16557
+ exports.FCard = _sfc_main$W;
17302
16558
  exports.FCheckboxField = FCheckboxField;
17303
- exports.FCheckboxGroup = FCheckboxGroup;
17304
- exports.FCheckboxGroupField = FCheckboxField;
17305
- exports.FClearingnumberTextField = _sfc_main$z;
16559
+ exports.FClearingnumberTextField = _sfc_main$w;
17306
16560
  exports.FConfirmModal = FConfirmModal;
17307
16561
  exports.FContextMenu = FContextMenu;
17308
16562
  exports.FCrudButton = FCrudButton;
17309
16563
  exports.FCrudDataset = FCrudDataset;
17310
- exports.FCurrencyTextField = _sfc_main$D;
16564
+ exports.FCurrencyTextField = _sfc_main$A;
17311
16565
  exports.FDataTable = FDataTable;
17312
16566
  exports.FDatepickerField = FDatepickerField;
17313
16567
  exports.FDialogueTree = FDialogueTree;
@@ -17320,11 +16574,8 @@ exports.FExpandableParagraph = FExpandableParagraph;
17320
16574
  exports.FFieldset = FFieldset;
17321
16575
  exports.FFileItem = FFileItem;
17322
16576
  exports.FFileSelector = FFileSelector;
17323
- exports.FForm = FForm;
17324
16577
  exports.FFormModal = FFormModal;
17325
16578
  exports.FFormModalAction = FValidationFormAction;
17326
- exports.FFormStep = FFormStep;
17327
- exports.FFormStepButton = FFormStepButton;
17328
16579
  exports.FIcon = FIcon;
17329
16580
  exports.FInteractiveTable = FInteractiveTable;
17330
16581
  exports.FKUIConfigButtonOrder = FKUIConfigButtonOrder;
@@ -17335,23 +16586,22 @@ exports.FLayoutRightPanel = FLayoutRightPanel;
17335
16586
  exports.FLayoutRightPanelService = FLayoutRightPanelService;
17336
16587
  exports.FList = FList;
17337
16588
  exports.FLoader = FLoader;
16589
+ exports.FLogo = _sfc_main$b;
17338
16590
  exports.FMessageBox = FMessageBox;
17339
16591
  exports.FModal = FModal;
17340
16592
  exports.FNavigationMenu = FNavigationMenu;
17341
- exports.FNumericTextField = _sfc_main$y;
16593
+ exports.FNumericTextField = _sfc_main$v;
17342
16594
  exports.FOffline = FOffline;
17343
- exports.FOrganisationsnummerTextField = _sfc_main$t;
16595
+ exports.FOrganisationsnummerTextField = _sfc_main$q;
17344
16596
  exports.FOutputField = FOutputField;
17345
16597
  exports.FPageHeader = FPageHeader;
17346
- exports.FPercentTextField = _sfc_main$u;
17347
- exports.FPersonnummerTextField = _sfc_main$x;
16598
+ exports.FPercentTextField = _sfc_main$r;
16599
+ exports.FPersonnummerTextField = _sfc_main$u;
17348
16600
  exports.FPhoneTextField = FPhoneTextField;
17349
- exports.FPlusgiroTextField = _sfc_main$w;
17350
- exports.FPostalCodeTextField = _sfc_main$v;
17351
- exports.FProgressbar = FProgressbar;
16601
+ exports.FPlusgiroTextField = _sfc_main$t;
16602
+ exports.FPostalCodeTextField = _sfc_main$s;
16603
+ exports.FProgressbar = _sfc_main$5;
17352
16604
  exports.FRadioField = FRadioField;
17353
- exports.FRadioGroup = FRadioGroup;
17354
- exports.FRadioGroupField = FRadioField;
17355
16605
  exports.FSearchTextField = FSearchTextField;
17356
16606
  exports.FSelectField = FSelectField;
17357
16607
  exports.FSortFilterDataset = FSortFilterDataset;
@@ -17371,18 +16621,17 @@ exports.FWizard = FWizard;
17371
16621
  exports.FWizardStep = FWizardStep;
17372
16622
  exports.FWizardStepAction = FValidationFormAction;
17373
16623
  exports.FormErrorList = FormErrorList;
17374
- exports.FormStep = FormStep;
17375
16624
  exports.IAnimateExpand = IAnimateExpand;
17376
16625
  exports.ICalendarMonth = ICalendarMonth;
17377
16626
  exports.ICalendarMonthGrid = ICalendarMonthGrid;
17378
16627
  exports.ICalendarNavbar = ICalendarNavbar;
17379
- exports.IComboboxDropdown = _sfc_main$S;
17380
- exports.IComboboxToggleButton = _sfc_main$R;
16628
+ exports.IComboboxDropdown = _sfc_main$O;
16629
+ exports.IComboboxToggleButton = _sfc_main$N;
17381
16630
  exports.IFlex = IFlex;
17382
16631
  exports.IFlexItem = IFlexItem;
17383
16632
  exports.IPopup = IPopup;
17384
16633
  exports.IPopupError = IPopupError;
17385
- exports.IPopupListbox = _sfc_main$W;
16634
+ exports.IPopupListbox = _sfc_main$S;
17386
16635
  exports.IPopupMenu = IPopupMenu;
17387
16636
  exports.ISkipLink = ISkipLink;
17388
16637
  exports.IValidationForm = FValidationForm;
@@ -17397,10 +16646,8 @@ exports.TranslationPlugin = TranslationPlugin;
17397
16646
  exports.UNHANDLED_ERROR_EVENT = UNHANDLED_ERROR_EVENT;
17398
16647
  exports.ValidationPlugin = ValidationPlugin;
17399
16648
  exports.actionFromKeyboardEvent = actionFromKeyboardEvent;
17400
- exports.cleanUpElements = cleanUpElements;
17401
16649
  exports.config = config;
17402
16650
  exports.confirmModal = confirmModal;
17403
- exports.createFFormProvideOptions = createFFormProvideOptions;
17404
16651
  exports.dispatchComponentUnmountEvent = dispatchComponentUnmountEvent;
17405
16652
  exports.dispatchComponentValidityEvent = dispatchComponentValidityEvent;
17406
16653
  exports.findElementFromVueRef = findElementFromVueRef;
@@ -17417,9 +16664,7 @@ exports.getHTMLElementFromVueRef = getHTMLElementFromVueRef;
17417
16664
  exports.getHTMLElementsFromVueRef = getHTMLElementsFromVueRef;
17418
16665
  exports.getInputElement = getInputElement;
17419
16666
  exports.getParentByName = getParentByName;
17420
- exports.getRef = getRef;
17421
16667
  exports.getSortedHTMLElementsFromVueRef = getSortedHTMLElementsFromVueRef;
17422
- exports.getTextFromScopedSlot = getTextFromScopedSlot;
17423
16668
  exports.handleKeyboardFocusNavigation = handleKeyboardFocusNavigation;
17424
16669
  exports.hasParentByName = hasParentByName;
17425
16670
  exports.hasSlot = hasSlot;
@@ -17427,7 +16672,6 @@ exports.includeItem = includeItem;
17427
16672
  exports.isContextMenuSeparatorItem = isContextMenuSeparatorItem;
17428
16673
  exports.isContextMenuTextItem = isContextMenuTextItem;
17429
16674
  exports.isDialogueTreeEndQuestion = isDialogueTreeEndQuestion;
17430
- exports.isFormStepReference = isFormStepReference;
17431
16675
  exports.itemEquals = itemEquals;
17432
16676
  exports.mountComponent = mountComponent;
17433
16677
  exports.openModal = openModal;
@@ -17437,10 +16681,7 @@ exports.refIsHTMLElementArray = refIsHTMLElementArray;
17437
16681
  exports.refIsVue = refIsVue;
17438
16682
  exports.refIsVueArray = refIsVueArray;
17439
16683
  exports.renderSlotText = renderSlotText;
17440
- exports.setIsOpen = setIsOpen;
17441
- exports.setRef = setRef;
17442
16684
  exports.setRunningContext = setRunningContext;
17443
- exports.sortComponentsWithErrorsOnDOMOrder = sortComponentsWithErrorsOnDOMOrder;
17444
16685
  exports.tableScrollClasses = tableScrollClasses;
17445
16686
  exports.tooltipAttachTo = tooltipAttachTo;
17446
16687
  exports.useCombobox = useCombobox;