fds-vue-core 8.3.2 → 8.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components.d.ts +2 -0
- package/dist/components/FdsDrawer/FdsDrawer.vue.d.ts +39 -0
- package/dist/components/FdsDrawer/types.d.ts +11 -0
- package/dist/composables/useFocusTrap.d.ts +8 -0
- package/dist/composables/useRouteFilters.d.ts +73 -0
- package/dist/fds-vue-core.cjs.js +781 -275
- package/dist/fds-vue-core.cjs.js.map +1 -1
- package/dist/fds-vue-core.css +1 -1
- package/dist/fds-vue-core.es.js +782 -276
- package/dist/fds-vue-core.es.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/slot-styles.css +40 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +8 -4
- package/src/components/FdsDrawer/FdsDrawer.stories.ts +155 -0
- package/src/components/FdsDrawer/FdsDrawer.vue +236 -0
- package/src/components/FdsDrawer/types.ts +12 -0
- package/src/components/FdsModal/FdsModal.vue +6 -57
- package/src/composables/useFocusTrap.spec.ts +57 -0
- package/src/composables/useFocusTrap.ts +72 -0
- package/src/composables/useRouteFilters.spec.ts +157 -0
- package/src/composables/useRouteFilters.ts +500 -0
- package/src/index.ts +26 -0
- package/src/lang/en.json +1 -0
- package/src/lang/sv.json +1 -0
- package/src/slot-styles.css +40 -0
- package/src/style.css +45 -1
package/dist/fds-vue-core.cjs.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
3
|
const vue = require("vue");
|
|
4
|
+
const vueRouter = require("vue-router");
|
|
4
5
|
function useAttrsWithDefaults(props) {
|
|
5
6
|
const attrs = vue.useAttrs();
|
|
6
7
|
return {
|
|
@@ -77,6 +78,7 @@ const en = {
|
|
|
77
78
|
"FdsInput.today": "(today)",
|
|
78
79
|
"FdsListHeading.loading": "Loading...",
|
|
79
80
|
"FdsListHeading.separator": "of",
|
|
81
|
+
"FdsDrawer.closeDrawer": "Close drawer",
|
|
80
82
|
"FdsModal.closeModal": "Close modal window",
|
|
81
83
|
"FdsPagination.currentPage": "Current page",
|
|
82
84
|
"FdsPagination.firstPage": "Go to first page",
|
|
@@ -152,6 +154,7 @@ const sv = {
|
|
|
152
154
|
"FdsInput.today": "(idag)",
|
|
153
155
|
"FdsListHeading.loading": "Laddar...",
|
|
154
156
|
"FdsListHeading.separator": "av",
|
|
157
|
+
"FdsDrawer.closeDrawer": "Stäng sidopanel",
|
|
155
158
|
"FdsModal.closeModal": "Stäng dialogruta",
|
|
156
159
|
"FdsPagination.currentPage": "Aktuell sida",
|
|
157
160
|
"FdsPagination.firstPage": "Gå till första sidan",
|
|
@@ -754,8 +757,8 @@ const icons = {
|
|
|
754
757
|
</defs>
|
|
755
758
|
</svg>`
|
|
756
759
|
};
|
|
757
|
-
const _hoisted_1$
|
|
758
|
-
const _sfc_main$
|
|
760
|
+
const _hoisted_1$C = ["innerHTML"];
|
|
761
|
+
const _sfc_main$O = /* @__PURE__ */ vue.defineComponent({
|
|
759
762
|
__name: "FdsIcon",
|
|
760
763
|
props: {
|
|
761
764
|
name: {},
|
|
@@ -788,11 +791,11 @@ const _sfc_main$N = /* @__PURE__ */ vue.defineComponent({
|
|
|
788
791
|
return vue.openBlock(), vue.createElementBlock("span", vue.mergeProps({
|
|
789
792
|
class: "flex items-center justify-center align-middle",
|
|
790
793
|
style: { width: pixelSize.value, height: pixelSize.value }
|
|
791
|
-
}, rootAttrs.value, { innerHTML: svgHtml.value }), null, 16, _hoisted_1$
|
|
794
|
+
}, rootAttrs.value, { innerHTML: svgHtml.value }), null, 16, _hoisted_1$C);
|
|
792
795
|
};
|
|
793
796
|
}
|
|
794
797
|
});
|
|
795
|
-
const _sfc_main$
|
|
798
|
+
const _sfc_main$N = /* @__PURE__ */ vue.defineComponent({
|
|
796
799
|
__name: "FdsButtonIcon",
|
|
797
800
|
props: {
|
|
798
801
|
icon: {},
|
|
@@ -836,12 +839,12 @@ const _sfc_main$M = /* @__PURE__ */ vue.defineComponent({
|
|
|
836
839
|
class: buttonClasses.value,
|
|
837
840
|
onClick
|
|
838
841
|
}), [
|
|
839
|
-
!__props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
842
|
+
!__props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$O, {
|
|
840
843
|
key: 0,
|
|
841
844
|
size: iconSize.value,
|
|
842
845
|
name: __props.icon,
|
|
843
846
|
"aria-hidden": "true"
|
|
844
|
-
}, null, 8, ["size", "name"])) : (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
847
|
+
}, null, 8, ["size", "name"])) : (vue.openBlock(), vue.createBlock(_sfc_main$O, {
|
|
845
848
|
key: 1,
|
|
846
849
|
size: iconSize.value,
|
|
847
850
|
name: "spinner",
|
|
@@ -852,7 +855,7 @@ const _sfc_main$M = /* @__PURE__ */ vue.defineComponent({
|
|
|
852
855
|
};
|
|
853
856
|
}
|
|
854
857
|
});
|
|
855
|
-
const _hoisted_1$
|
|
858
|
+
const _hoisted_1$B = { class: "flex items-start gap-2" };
|
|
856
859
|
const _hoisted_2$q = { class: "h-7 flex items-center" };
|
|
857
860
|
const _hoisted_3$l = { class: "leading-7" };
|
|
858
861
|
const _hoisted_4$j = { class: "relative h-7" };
|
|
@@ -860,7 +863,7 @@ const _hoisted_5$h = {
|
|
|
860
863
|
key: 1,
|
|
861
864
|
class: "fds-block-alert-slot mb-0-last-child"
|
|
862
865
|
};
|
|
863
|
-
const _sfc_main$
|
|
866
|
+
const _sfc_main$M = /* @__PURE__ */ vue.defineComponent({
|
|
864
867
|
__name: "FdsBlockAlert",
|
|
865
868
|
props: {
|
|
866
869
|
visible: { type: Boolean, default: true },
|
|
@@ -878,7 +881,7 @@ const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({
|
|
|
878
881
|
const { t } = useFdsI18n();
|
|
879
882
|
const emit = __emit;
|
|
880
883
|
const isExpanded = vue.ref(props.expanded);
|
|
881
|
-
const
|
|
884
|
+
const isVisible2 = vue.ref(props.visible);
|
|
882
885
|
const expandLabel = vue.computed(() => t("FdsBlockAlert.showMore"));
|
|
883
886
|
const collapseLabel = vue.computed(() => t("FdsBlockAlert.showLess"));
|
|
884
887
|
const closeLabel = vue.computed(() => t("FdsBlockAlert.close"));
|
|
@@ -886,7 +889,7 @@ const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({
|
|
|
886
889
|
vue.watch(
|
|
887
890
|
() => props.visible,
|
|
888
891
|
(v) => {
|
|
889
|
-
|
|
892
|
+
isVisible2.value = v;
|
|
890
893
|
}
|
|
891
894
|
);
|
|
892
895
|
const alertClasses = vue.computed(() => [
|
|
@@ -900,7 +903,7 @@ const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({
|
|
|
900
903
|
...props.dataTestid && { "data-testid": props.dataTestid }
|
|
901
904
|
}));
|
|
902
905
|
function handleClose() {
|
|
903
|
-
|
|
906
|
+
isVisible2.value = false;
|
|
904
907
|
emit("update:visible", false);
|
|
905
908
|
emit("close");
|
|
906
909
|
}
|
|
@@ -909,16 +912,16 @@ const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({
|
|
|
909
912
|
emit("toggle");
|
|
910
913
|
}
|
|
911
914
|
return (_ctx, _cache) => {
|
|
912
|
-
return
|
|
915
|
+
return isVisible2.value ? (vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({ key: 0 }, rootAttrs.value, { class: alertClasses.value }), [
|
|
913
916
|
vue.createElementVNode("div", null, [
|
|
914
917
|
vue.createElementVNode("div", null, [
|
|
915
918
|
__props.heading ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
916
919
|
key: 0,
|
|
917
920
|
class: vue.normalizeClass(["font-bold w-full justify-between items-start flex gap-2", { "mb-2": (isExpanded.value || !__props.collapsable) && vue.unref(hasSlot) }])
|
|
918
921
|
}, [
|
|
919
|
-
vue.createElementVNode("div", _hoisted_1$
|
|
922
|
+
vue.createElementVNode("div", _hoisted_1$B, [
|
|
920
923
|
vue.createElementVNode("div", _hoisted_2$q, [
|
|
921
|
-
vue.createVNode(_sfc_main$
|
|
924
|
+
vue.createVNode(_sfc_main$O, {
|
|
922
925
|
name: "alert",
|
|
923
926
|
size: 24,
|
|
924
927
|
class: "fill-yellow-700"
|
|
@@ -927,13 +930,13 @@ const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({
|
|
|
927
930
|
vue.createElementVNode("span", _hoisted_3$l, vue.toDisplayString(__props.heading), 1)
|
|
928
931
|
]),
|
|
929
932
|
vue.createElementVNode("div", _hoisted_4$j, [
|
|
930
|
-
__props.closeable ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
933
|
+
__props.closeable ? (vue.openBlock(), vue.createBlock(_sfc_main$N, vue.mergeProps({
|
|
931
934
|
key: 0,
|
|
932
935
|
icon: "cross",
|
|
933
936
|
size: 28,
|
|
934
937
|
onClick: handleClose
|
|
935
938
|
}, { "aria-label": closeLabel.value }, { class: ["fill-gray-900! hover:bg-gray-100 active:bg-gray-200"] }), null, 16)) : vue.createCommentVNode("", true),
|
|
936
|
-
__props.collapsable ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
939
|
+
__props.collapsable ? (vue.openBlock(), vue.createBlock(_sfc_main$N, vue.mergeProps({
|
|
937
940
|
key: 1,
|
|
938
941
|
icon: "arrowDown",
|
|
939
942
|
size: 28,
|
|
@@ -956,7 +959,7 @@ const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({
|
|
|
956
959
|
};
|
|
957
960
|
}
|
|
958
961
|
});
|
|
959
|
-
const _hoisted_1$
|
|
962
|
+
const _hoisted_1$A = ["id"];
|
|
960
963
|
const _hoisted_2$p = {
|
|
961
964
|
key: 0,
|
|
962
965
|
class: "flex items-start justify-between gap-4 mb-4"
|
|
@@ -964,7 +967,7 @@ const _hoisted_2$p = {
|
|
|
964
967
|
const _hoisted_3$k = { class: "flex items-center gap-3" };
|
|
965
968
|
const _hoisted_4$i = { class: "flex items-start gap-3 leading-8" };
|
|
966
969
|
const _hoisted_5$g = { class: "mb-0-last-child" };
|
|
967
|
-
const _sfc_main$
|
|
970
|
+
const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({
|
|
968
971
|
__name: "FdsBlockContent",
|
|
969
972
|
props: {
|
|
970
973
|
heading: { default: void 0 },
|
|
@@ -1021,11 +1024,11 @@ const _sfc_main$K = /* @__PURE__ */ vue.defineComponent({
|
|
|
1021
1024
|
vue.createElementVNode("div", _hoisted_5$g, [
|
|
1022
1025
|
vue.renderSlot(_ctx.$slots, "default")
|
|
1023
1026
|
])
|
|
1024
|
-
], 16, _hoisted_1$
|
|
1027
|
+
], 16, _hoisted_1$A);
|
|
1025
1028
|
};
|
|
1026
1029
|
}
|
|
1027
1030
|
});
|
|
1028
|
-
const _sfc_main$
|
|
1031
|
+
const _sfc_main$K = /* @__PURE__ */ vue.defineComponent({
|
|
1029
1032
|
__name: "FdsSticker",
|
|
1030
1033
|
props: {
|
|
1031
1034
|
variant: { default: "blue" },
|
|
@@ -1073,7 +1076,7 @@ const _sfc_main$J = /* @__PURE__ */ vue.defineComponent({
|
|
|
1073
1076
|
};
|
|
1074
1077
|
}
|
|
1075
1078
|
});
|
|
1076
|
-
const _hoisted_1$
|
|
1079
|
+
const _hoisted_1$z = { class: "leading-6 w-full flex justify-between gap-4" };
|
|
1077
1080
|
const _hoisted_2$o = {
|
|
1078
1081
|
key: 0,
|
|
1079
1082
|
class: "flex items-center mr-4"
|
|
@@ -1085,7 +1088,7 @@ const _hoisted_5$f = {
|
|
|
1085
1088
|
class: "w-full flex mt-2"
|
|
1086
1089
|
};
|
|
1087
1090
|
const _hoisted_6$b = ["aria-hidden"];
|
|
1088
|
-
const _sfc_main$
|
|
1091
|
+
const _sfc_main$J = /* @__PURE__ */ vue.defineComponent({
|
|
1089
1092
|
...{
|
|
1090
1093
|
inheritAttrs: false
|
|
1091
1094
|
},
|
|
@@ -1157,12 +1160,12 @@ const _sfc_main$I = /* @__PURE__ */ vue.defineComponent({
|
|
|
1157
1160
|
vue.createElementVNode("span", {
|
|
1158
1161
|
class: vue.normalizeClass(buttonRowClasses.value)
|
|
1159
1162
|
}, [
|
|
1160
|
-
vue.createElementVNode("span", _hoisted_1$
|
|
1163
|
+
vue.createElementVNode("span", _hoisted_1$z, [
|
|
1161
1164
|
vue.createElementVNode("span", {
|
|
1162
1165
|
class: vue.normalizeClass(["flex items-center", { "inline-flex items-start": __props.icon }])
|
|
1163
1166
|
}, [
|
|
1164
1167
|
__props.icon ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$o, [
|
|
1165
|
-
vue.createVNode(_sfc_main$
|
|
1168
|
+
vue.createVNode(_sfc_main$O, {
|
|
1166
1169
|
name: __props.icon,
|
|
1167
1170
|
size: 24,
|
|
1168
1171
|
class: vue.normalizeClass(["fill-blue-500", [{ "fill-gray-500": __props.disabled }, __props.iconClass]])
|
|
@@ -1175,7 +1178,7 @@ const _sfc_main$I = /* @__PURE__ */ vue.defineComponent({
|
|
|
1175
1178
|
])
|
|
1176
1179
|
], 2),
|
|
1177
1180
|
vue.createElementVNode("span", _hoisted_4$h, [
|
|
1178
|
-
__props.stickerText && __props.stickerColor ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
1181
|
+
__props.stickerText && __props.stickerColor ? (vue.openBlock(), vue.createBlock(_sfc_main$K, {
|
|
1179
1182
|
key: 0,
|
|
1180
1183
|
variant: __props.stickerColor
|
|
1181
1184
|
}, {
|
|
@@ -1184,7 +1187,7 @@ const _sfc_main$I = /* @__PURE__ */ vue.defineComponent({
|
|
|
1184
1187
|
]),
|
|
1185
1188
|
_: 1
|
|
1186
1189
|
}, 8, ["variant"])) : vue.createCommentVNode("", true),
|
|
1187
|
-
vue.createVNode(_sfc_main$
|
|
1190
|
+
vue.createVNode(_sfc_main$O, {
|
|
1188
1191
|
name: "arrowDown",
|
|
1189
1192
|
size: 24,
|
|
1190
1193
|
class: vue.normalizeClass(["transition-transform duration-200 fill-blue-500 min-w-6 min-h-6", { "rotate-180": isOpen.value, "fill-gray-500": __props.disabled }])
|
|
@@ -1208,7 +1211,7 @@ const _sfc_main$I = /* @__PURE__ */ vue.defineComponent({
|
|
|
1208
1211
|
};
|
|
1209
1212
|
}
|
|
1210
1213
|
});
|
|
1211
|
-
const _hoisted_1$
|
|
1214
|
+
const _hoisted_1$y = ["id"];
|
|
1212
1215
|
const _hoisted_2$n = {
|
|
1213
1216
|
key: 0,
|
|
1214
1217
|
class: "flex items-start gap-4"
|
|
@@ -1233,7 +1236,7 @@ const _hoisted_13$2 = { class: "flex items-start gap-3" };
|
|
|
1233
1236
|
const _hoisted_14$2 = { class: "mb-0-last-child" };
|
|
1234
1237
|
const smallIconSize = 24;
|
|
1235
1238
|
const largeIconSize = 48;
|
|
1236
|
-
const _sfc_main$
|
|
1239
|
+
const _sfc_main$I = /* @__PURE__ */ vue.defineComponent({
|
|
1237
1240
|
__name: "FdsBlockInfo",
|
|
1238
1241
|
props: {
|
|
1239
1242
|
heading: { default: void 0 },
|
|
@@ -1266,7 +1269,7 @@ const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
|
|
|
1266
1269
|
class: contentClasses.value
|
|
1267
1270
|
}, rootAttrs.value), [
|
|
1268
1271
|
__props.iconSize === "large" && __props.icon ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$n, [
|
|
1269
|
-
vue.createVNode(_sfc_main$
|
|
1272
|
+
vue.createVNode(_sfc_main$O, {
|
|
1270
1273
|
name: __props.icon,
|
|
1271
1274
|
size: largeIconSize,
|
|
1272
1275
|
class: "fill-blue-500"
|
|
@@ -1291,7 +1294,7 @@ const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
|
|
|
1291
1294
|
}, [
|
|
1292
1295
|
vue.createElementVNode("header", _hoisted_10$4, [
|
|
1293
1296
|
vue.createElementVNode("div", _hoisted_11$4, [
|
|
1294
|
-
__props.icon && __props.iconSize === "small" ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
1297
|
+
__props.icon && __props.iconSize === "small" ? (vue.openBlock(), vue.createBlock(_sfc_main$O, {
|
|
1295
1298
|
key: 0,
|
|
1296
1299
|
name: __props.icon,
|
|
1297
1300
|
size: smallIconSize,
|
|
@@ -1308,16 +1311,16 @@ const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
|
|
|
1308
1311
|
vue.renderSlot(_ctx.$slots, "default")
|
|
1309
1312
|
])
|
|
1310
1313
|
]))
|
|
1311
|
-
], 16, _hoisted_1$
|
|
1314
|
+
], 16, _hoisted_1$y);
|
|
1312
1315
|
};
|
|
1313
1316
|
}
|
|
1314
1317
|
});
|
|
1315
|
-
const _hoisted_1$
|
|
1318
|
+
const _hoisted_1$x = { class: "mb-0-last-child" };
|
|
1316
1319
|
const _hoisted_2$m = {
|
|
1317
1320
|
key: 0,
|
|
1318
1321
|
class: "flex items-end"
|
|
1319
1322
|
};
|
|
1320
|
-
const _sfc_main$
|
|
1323
|
+
const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
|
|
1321
1324
|
...{
|
|
1322
1325
|
inheritAttrs: false
|
|
1323
1326
|
},
|
|
@@ -1430,7 +1433,7 @@ const _sfc_main$G = /* @__PURE__ */ vue.defineComponent({
|
|
|
1430
1433
|
vue.createElementVNode("div", {
|
|
1431
1434
|
class: vue.normalizeClass(["flex w-full flex-1", contentClasses.value])
|
|
1432
1435
|
}, [
|
|
1433
|
-
__props.icon ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
1436
|
+
__props.icon ? (vue.openBlock(), vue.createBlock(_sfc_main$O, {
|
|
1434
1437
|
key: 0,
|
|
1435
1438
|
name: __props.icon,
|
|
1436
1439
|
size: 24,
|
|
@@ -1449,7 +1452,7 @@ const _sfc_main$G = /* @__PURE__ */ vue.defineComponent({
|
|
|
1449
1452
|
vue.createElementVNode("div", {
|
|
1450
1453
|
class: vue.normalizeClass(slotWrapperClasses.value)
|
|
1451
1454
|
}, [
|
|
1452
|
-
vue.createElementVNode("div", _hoisted_1$
|
|
1455
|
+
vue.createElementVNode("div", _hoisted_1$x, [
|
|
1453
1456
|
vue.renderSlot(_ctx.$slots, "default")
|
|
1454
1457
|
]),
|
|
1455
1458
|
vue.unref(hasStickerSlot) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$m, [
|
|
@@ -1458,7 +1461,7 @@ const _sfc_main$G = /* @__PURE__ */ vue.defineComponent({
|
|
|
1458
1461
|
], 2)
|
|
1459
1462
|
], 2)
|
|
1460
1463
|
], 2),
|
|
1461
|
-
__props.variant === "link" ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
1464
|
+
__props.variant === "link" ? (vue.openBlock(), vue.createBlock(_sfc_main$O, {
|
|
1462
1465
|
key: 0,
|
|
1463
1466
|
name: "arrowRight",
|
|
1464
1467
|
size: 24,
|
|
@@ -1470,8 +1473,8 @@ const _sfc_main$G = /* @__PURE__ */ vue.defineComponent({
|
|
|
1470
1473
|
};
|
|
1471
1474
|
}
|
|
1472
1475
|
});
|
|
1473
|
-
const _hoisted_1$
|
|
1474
|
-
const _sfc_main$
|
|
1476
|
+
const _hoisted_1$w = ["aria-label"];
|
|
1477
|
+
const _sfc_main$G = /* @__PURE__ */ vue.defineComponent({
|
|
1475
1478
|
__name: "FdsSpinner",
|
|
1476
1479
|
props: {
|
|
1477
1480
|
size: { default: "48px" },
|
|
@@ -1551,13 +1554,13 @@ const _sfc_main$F = /* @__PURE__ */ vue.defineComponent({
|
|
|
1551
1554
|
key: 0,
|
|
1552
1555
|
class: vue.normalizeClass(__props.labelPosition === "bottom" ? "font-bold" : "")
|
|
1553
1556
|
}, vue.toDisplayString(__props.label), 3)) : vue.createCommentVNode("", true)
|
|
1554
|
-
], 16, _hoisted_1$
|
|
1557
|
+
], 16, _hoisted_1$w);
|
|
1555
1558
|
};
|
|
1556
1559
|
}
|
|
1557
1560
|
});
|
|
1558
|
-
const _hoisted_1$
|
|
1561
|
+
const _hoisted_1$v = ["aria-disabled"];
|
|
1559
1562
|
const elBase$2 = "box-border appearance-none inline-flex items-center justify-center w-fit min-h-0 shadow-none p-0.5 text-base select-none m-0 rounded-md text-left align-middle no-underline transition-[box-shadow,border-color,background-color] duration-200 font-main font-bold text-base leading-5 tracking-normal focus-visible:outline-dashed focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-blue-500";
|
|
1560
|
-
const _sfc_main$
|
|
1563
|
+
const _sfc_main$F = /* @__PURE__ */ vue.defineComponent({
|
|
1561
1564
|
...{
|
|
1562
1565
|
inheritAttrs: false
|
|
1563
1566
|
},
|
|
@@ -1642,7 +1645,7 @@ const _sfc_main$E = /* @__PURE__ */ vue.defineComponent({
|
|
|
1642
1645
|
onClick
|
|
1643
1646
|
}), {
|
|
1644
1647
|
default: vue.withCtx(() => [
|
|
1645
|
-
__props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
1648
|
+
__props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$G, {
|
|
1646
1649
|
key: 0,
|
|
1647
1650
|
class: "mr-2",
|
|
1648
1651
|
size: "24px",
|
|
@@ -1652,7 +1655,7 @@ const _sfc_main$E = /* @__PURE__ */ vue.defineComponent({
|
|
|
1652
1655
|
class: vue.normalizeClass(iconOrderClasses.value),
|
|
1653
1656
|
"aria-hidden": "true"
|
|
1654
1657
|
}, [
|
|
1655
|
-
vue.createVNode(_sfc_main$
|
|
1658
|
+
vue.createVNode(_sfc_main$O, {
|
|
1656
1659
|
class: vue.normalizeClass(iconFillClass2.value),
|
|
1657
1660
|
name: __props.icon,
|
|
1658
1661
|
size: __props.iconSize
|
|
@@ -1662,15 +1665,15 @@ const _sfc_main$E = /* @__PURE__ */ vue.defineComponent({
|
|
|
1662
1665
|
]),
|
|
1663
1666
|
_: 1
|
|
1664
1667
|
}, 16, ["type", "disabled", "data-testid", "class"]))
|
|
1665
|
-
], 10, _hoisted_1$
|
|
1668
|
+
], 10, _hoisted_1$v);
|
|
1666
1669
|
};
|
|
1667
1670
|
}
|
|
1668
1671
|
});
|
|
1669
|
-
const _hoisted_1$
|
|
1672
|
+
const _hoisted_1$u = {
|
|
1670
1673
|
key: 0,
|
|
1671
1674
|
class: "flex items-center gap-2 h-7"
|
|
1672
1675
|
};
|
|
1673
|
-
const _sfc_main$
|
|
1676
|
+
const _sfc_main$E = /* @__PURE__ */ vue.defineComponent({
|
|
1674
1677
|
__name: "FdsButtonCopy",
|
|
1675
1678
|
props: {
|
|
1676
1679
|
value: { default: "" },
|
|
@@ -1732,10 +1735,10 @@ const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
|
|
|
1732
1735
|
}
|
|
1733
1736
|
});
|
|
1734
1737
|
return (_ctx, _cache) => {
|
|
1735
|
-
return isCopied.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$
|
|
1736
|
-
vue.createVNode(_sfc_main$
|
|
1738
|
+
return isCopied.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$u, [
|
|
1739
|
+
vue.createVNode(_sfc_main$O, { name: "bigSuccess" }),
|
|
1737
1740
|
vue.createElementVNode("span", null, vue.toDisplayString(props.copiedText), 1)
|
|
1738
|
-
])) : (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
1741
|
+
])) : (vue.openBlock(), vue.createBlock(_sfc_main$F, {
|
|
1739
1742
|
key: 1,
|
|
1740
1743
|
type: "button",
|
|
1741
1744
|
disabled: props.disabled,
|
|
@@ -5026,8 +5029,8 @@ function useDownload() {
|
|
|
5026
5029
|
isDownloading
|
|
5027
5030
|
};
|
|
5028
5031
|
}
|
|
5029
|
-
const _hoisted_1$
|
|
5030
|
-
const _sfc_main$
|
|
5032
|
+
const _hoisted_1$t = ["disabled", "aria-disabled"];
|
|
5033
|
+
const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
|
|
5031
5034
|
__name: "FdsButtonDownload",
|
|
5032
5035
|
props: {
|
|
5033
5036
|
loading: { type: Boolean, default: false },
|
|
@@ -5128,23 +5131,23 @@ const _sfc_main$C = /* @__PURE__ */ vue.defineComponent({
|
|
|
5128
5131
|
class: vue.normalizeClass(iconOrderClasses.value),
|
|
5129
5132
|
"aria-hidden": "true"
|
|
5130
5133
|
}, [
|
|
5131
|
-
vue.createVNode(_sfc_main$
|
|
5134
|
+
vue.createVNode(_sfc_main$O, {
|
|
5132
5135
|
class: vue.normalizeClass(iconFillClass2.value),
|
|
5133
5136
|
name: "download",
|
|
5134
5137
|
size: 24
|
|
5135
5138
|
}, null, 8, ["class"])
|
|
5136
5139
|
], 2),
|
|
5137
5140
|
vue.createTextVNode(" " + vue.toDisplayString(__props.text), 1)
|
|
5138
|
-
], 16, _hoisted_1$
|
|
5141
|
+
], 16, _hoisted_1$t);
|
|
5139
5142
|
};
|
|
5140
5143
|
}
|
|
5141
5144
|
});
|
|
5142
|
-
const _hoisted_1$
|
|
5145
|
+
const _hoisted_1$s = ["aria-disabled"];
|
|
5143
5146
|
const _hoisted_2$l = { key: 2 };
|
|
5144
5147
|
const elBase$1 = "fds-button-primary box-border appearance-none inline-flex items-center justify-center select-none w-full min-h-0 min-w-12 m-0 rounded-lg text-center align-middle whitespace-nowrap no-underline shadow-[0_2px_4px_rgba(12,72,153,0.12)] transition-[box-shadow,border-color,background-color] duration-200 font-main font-bold text-base leading-5 tracking-normal focus-visible:outline-dashed focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-blue-500";
|
|
5145
5148
|
const variantClasses$1 = "bg-blue-600 border border-blue-600 text-white hover:bg-blue-700";
|
|
5146
5149
|
const iconFillClass$1 = "fill-white";
|
|
5147
|
-
const _sfc_main$
|
|
5150
|
+
const _sfc_main$C = /* @__PURE__ */ vue.defineComponent({
|
|
5148
5151
|
...{
|
|
5149
5152
|
inheritAttrs: false
|
|
5150
5153
|
},
|
|
@@ -5227,7 +5230,7 @@ const _sfc_main$B = /* @__PURE__ */ vue.defineComponent({
|
|
|
5227
5230
|
onClick
|
|
5228
5231
|
}), {
|
|
5229
5232
|
default: vue.withCtx(() => [
|
|
5230
|
-
__props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
5233
|
+
__props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$G, {
|
|
5231
5234
|
key: 0,
|
|
5232
5235
|
size: __props.size === "sm" ? "18px" : "24px",
|
|
5233
5236
|
color: "inherit"
|
|
@@ -5236,7 +5239,7 @@ const _sfc_main$B = /* @__PURE__ */ vue.defineComponent({
|
|
|
5236
5239
|
class: vue.normalizeClass(iconOrderClasses.value),
|
|
5237
5240
|
"aria-hidden": "true"
|
|
5238
5241
|
}, [
|
|
5239
|
-
vue.createVNode(_sfc_main$
|
|
5242
|
+
vue.createVNode(_sfc_main$O, {
|
|
5240
5243
|
class: vue.normalizeClass(iconFillClass$1),
|
|
5241
5244
|
name: __props.icon,
|
|
5242
5245
|
size: __props.iconSize
|
|
@@ -5246,16 +5249,16 @@ const _sfc_main$B = /* @__PURE__ */ vue.defineComponent({
|
|
|
5246
5249
|
]),
|
|
5247
5250
|
_: 1
|
|
5248
5251
|
}, 16, ["type", "disabled", "data-testid", "class"]))
|
|
5249
|
-
], 10, _hoisted_1$
|
|
5252
|
+
], 10, _hoisted_1$s);
|
|
5250
5253
|
};
|
|
5251
5254
|
}
|
|
5252
5255
|
});
|
|
5253
|
-
const _hoisted_1$
|
|
5256
|
+
const _hoisted_1$r = ["aria-disabled"];
|
|
5254
5257
|
const _hoisted_2$k = { key: 2 };
|
|
5255
5258
|
const elBase = "fds-button-secondary box-border appearance-none inline-flex items-center justify-center select-none w-full min-h-0 min-w-12 m-0 rounded-lg text-center align-middle whitespace-nowrap no-underline shadow-[0_2px_4px_rgba(12,72,153,0.12)] transition-[box-shadow,border-color,background-color] duration-200 font-main font-bold text-base leading-5 tracking-normal focus-visible:outline-dashed focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-blue-500";
|
|
5256
5259
|
const variantClasses = "bg-white border-2 border-blue-500 text-blue-600 hover:bg-blue_t-100 hover:border-blue-500 hover:text-blue-600 active:bg-blue_t-200 active:border-blue-500 active:text-blue-600";
|
|
5257
5260
|
const iconFillClass = "fill-blue-500";
|
|
5258
|
-
const _sfc_main$
|
|
5261
|
+
const _sfc_main$B = /* @__PURE__ */ vue.defineComponent({
|
|
5259
5262
|
...{
|
|
5260
5263
|
inheritAttrs: false
|
|
5261
5264
|
},
|
|
@@ -5339,7 +5342,7 @@ const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
|
|
|
5339
5342
|
onClick
|
|
5340
5343
|
}), {
|
|
5341
5344
|
default: vue.withCtx(() => [
|
|
5342
|
-
__props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
5345
|
+
__props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$G, {
|
|
5343
5346
|
key: 0,
|
|
5344
5347
|
size: __props.size === "sm" ? "18px" : "24px",
|
|
5345
5348
|
color: "inherit"
|
|
@@ -5348,7 +5351,7 @@ const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
|
|
|
5348
5351
|
class: vue.normalizeClass(iconOrderClasses.value),
|
|
5349
5352
|
"aria-hidden": "true"
|
|
5350
5353
|
}, [
|
|
5351
|
-
vue.createVNode(_sfc_main$
|
|
5354
|
+
vue.createVNode(_sfc_main$O, {
|
|
5352
5355
|
class: vue.normalizeClass(iconFillClass),
|
|
5353
5356
|
name: __props.icon,
|
|
5354
5357
|
size: __props.iconSize
|
|
@@ -5358,7 +5361,7 @@ const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
|
|
|
5358
5361
|
]),
|
|
5359
5362
|
_: 1
|
|
5360
5363
|
}, 16, ["type", "disabled", "data-testid", "class"]))
|
|
5361
|
-
], 10, _hoisted_1$
|
|
5364
|
+
], 10, _hoisted_1$r);
|
|
5362
5365
|
};
|
|
5363
5366
|
}
|
|
5364
5367
|
});
|
|
@@ -5680,8 +5683,8 @@ function useViewportBreakpoint() {
|
|
|
5680
5683
|
breakpoints
|
|
5681
5684
|
};
|
|
5682
5685
|
}
|
|
5683
|
-
const _hoisted_1$
|
|
5684
|
-
const _sfc_main$
|
|
5686
|
+
const _hoisted_1$q = ["title"];
|
|
5687
|
+
const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
|
|
5685
5688
|
__name: "FdsBreakpointIndicator",
|
|
5686
5689
|
props: {
|
|
5687
5690
|
popoverClass: {}
|
|
@@ -5720,7 +5723,7 @@ const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
|
|
|
5720
5723
|
class: "px-2 py-1 rounded text-xs bg-white bg-opacity-20 text-black hover:bg-opacity-30 cursor-pointer",
|
|
5721
5724
|
title: `${vue.unref(windowWidth)}px`,
|
|
5722
5725
|
onClick: toggleBreakpointList
|
|
5723
|
-
}, vue.toDisplayString(vue.unref(currentBreakpoint)), 9, _hoisted_1$
|
|
5726
|
+
}, vue.toDisplayString(vue.unref(currentBreakpoint)), 9, _hoisted_1$q),
|
|
5724
5727
|
showBreakpointList.value ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
5725
5728
|
key: 0,
|
|
5726
5729
|
class: vue.normalizeClass(["absolute bottom-full left-0 mb-2 rounded-lg shadow-lg p-2 text-xs font-mono whitespace-nowrap z-10", __props.popoverClass])
|
|
@@ -5800,9 +5803,9 @@ function useDevModePoEditor() {
|
|
|
5800
5803
|
setI18nKeysVisibility
|
|
5801
5804
|
};
|
|
5802
5805
|
}
|
|
5803
|
-
const _hoisted_1$
|
|
5806
|
+
const _hoisted_1$p = ["for"];
|
|
5804
5807
|
const _hoisted_2$j = ["value", "disabled", "required"];
|
|
5805
|
-
const _sfc_main$
|
|
5808
|
+
const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
|
|
5806
5809
|
...{
|
|
5807
5810
|
inheritAttrs: false
|
|
5808
5811
|
},
|
|
@@ -5970,14 +5973,14 @@ const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
|
|
|
5970
5973
|
vue.createTextVNode(vue.toDisplayString(props.label), 1)
|
|
5971
5974
|
], 64)) : vue.createCommentVNode("", true)
|
|
5972
5975
|
], 2)) : vue.createCommentVNode("", true)
|
|
5973
|
-
], 16, _hoisted_1$
|
|
5976
|
+
], 16, _hoisted_1$p)
|
|
5974
5977
|
], 2);
|
|
5975
5978
|
};
|
|
5976
5979
|
}
|
|
5977
5980
|
});
|
|
5978
|
-
const _hoisted_1$
|
|
5981
|
+
const _hoisted_1$o = ["for"];
|
|
5979
5982
|
const _hoisted_2$i = ["value", "checked", "disabled", "required"];
|
|
5980
|
-
const _sfc_main$
|
|
5983
|
+
const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
|
|
5981
5984
|
...{
|
|
5982
5985
|
inheritAttrs: false
|
|
5983
5986
|
},
|
|
@@ -6108,7 +6111,7 @@ const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
|
|
|
6108
6111
|
vue.createTextVNode(vue.toDisplayString(props.label), 1)
|
|
6109
6112
|
], 64)) : vue.createCommentVNode("", true)
|
|
6110
6113
|
], 2)) : vue.createCommentVNode("", true)
|
|
6111
|
-
], 16, _hoisted_1$
|
|
6114
|
+
], 16, _hoisted_1$o)
|
|
6112
6115
|
], 2);
|
|
6113
6116
|
};
|
|
6114
6117
|
}
|
|
@@ -6125,7 +6128,7 @@ function classValueToString(value) {
|
|
|
6125
6128
|
}
|
|
6126
6129
|
return String(value);
|
|
6127
6130
|
}
|
|
6128
|
-
const _sfc_main$
|
|
6131
|
+
const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
|
|
6129
6132
|
...{
|
|
6130
6133
|
inheritAttrs: false
|
|
6131
6134
|
},
|
|
@@ -6156,7 +6159,7 @@ const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
|
|
|
6156
6159
|
};
|
|
6157
6160
|
}
|
|
6158
6161
|
});
|
|
6159
|
-
const _hoisted_1$
|
|
6162
|
+
const _hoisted_1$n = {
|
|
6160
6163
|
key: 0,
|
|
6161
6164
|
class: "absolute bottom-full right-0 mb-3 z-60 flex min-w-54 flex-col font-normal"
|
|
6162
6165
|
};
|
|
@@ -6172,7 +6175,7 @@ const _hoisted_5$d = {
|
|
|
6172
6175
|
};
|
|
6173
6176
|
const _hoisted_6$9 = { key: 2 };
|
|
6174
6177
|
const OVERLAY_OPEN_KEY = "devModeOverlayOpen";
|
|
6175
|
-
const _sfc_main$
|
|
6178
|
+
const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
|
|
6176
6179
|
__name: "FdsDevModeOverlay",
|
|
6177
6180
|
props: {
|
|
6178
6181
|
environment: { default: null },
|
|
@@ -6239,11 +6242,11 @@ const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
|
|
|
6239
6242
|
() => checkToggles.value.length > 0 || radioToggles.value.length > 0 || buttonToggles.value.length > 0 || canToggleI18nKeys.value || showLocaleSwitcher.value
|
|
6240
6243
|
);
|
|
6241
6244
|
return (_ctx, _cache) => {
|
|
6242
|
-
return hasContent.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$
|
|
6245
|
+
return hasContent.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$n, [
|
|
6243
6246
|
isOpen.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$h, [
|
|
6244
6247
|
vue.createElementVNode("div", _hoisted_3$h, [
|
|
6245
6248
|
vue.createElementVNode("div", null, [
|
|
6246
|
-
vue.unref(canToggleI18nKeys) ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
6249
|
+
vue.unref(canToggleI18nKeys) ? (vue.openBlock(), vue.createBlock(_sfc_main$z, {
|
|
6247
6250
|
key: 0,
|
|
6248
6251
|
checked: vue.unref(showingTranslationKeys),
|
|
6249
6252
|
onChange: vue.unref(setI18nKeysVisibility),
|
|
@@ -6255,7 +6258,7 @@ const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
|
|
|
6255
6258
|
_: 1
|
|
6256
6259
|
}, 8, ["checked", "onChange"])) : vue.createCommentVNode("", true),
|
|
6257
6260
|
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(checkToggles.value, (toggle) => {
|
|
6258
|
-
return vue.openBlock(), vue.createBlock(_sfc_main$
|
|
6261
|
+
return vue.openBlock(), vue.createBlock(_sfc_main$z, {
|
|
6259
6262
|
key: `${toggle.key}-${toggle.checked}`,
|
|
6260
6263
|
checked: toggle.checked,
|
|
6261
6264
|
class: "mb-0!",
|
|
@@ -6270,7 +6273,7 @@ const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
|
|
|
6270
6273
|
]),
|
|
6271
6274
|
radioToggles.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$f, [
|
|
6272
6275
|
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(radioToggles.value, (toggle) => {
|
|
6273
|
-
return vue.openBlock(), vue.createBlock(_sfc_main$
|
|
6276
|
+
return vue.openBlock(), vue.createBlock(_sfc_main$y, {
|
|
6274
6277
|
key: `${toggle.key}-${toggle.checked}`,
|
|
6275
6278
|
name: toggle.group,
|
|
6276
6279
|
value: toggle.value,
|
|
@@ -6287,7 +6290,7 @@ const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
|
|
|
6287
6290
|
])) : vue.createCommentVNode("", true),
|
|
6288
6291
|
buttonToggles.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$d, [
|
|
6289
6292
|
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(buttonToggles.value, (toggle) => {
|
|
6290
|
-
return vue.openBlock(), vue.createBlock(_sfc_main$
|
|
6293
|
+
return vue.openBlock(), vue.createBlock(_sfc_main$F, {
|
|
6291
6294
|
key: toggle.key,
|
|
6292
6295
|
size: "sm",
|
|
6293
6296
|
block: "",
|
|
@@ -6298,7 +6301,7 @@ const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
|
|
|
6298
6301
|
])) : vue.createCommentVNode("", true),
|
|
6299
6302
|
showLocaleSwitcher.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$9, [
|
|
6300
6303
|
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(localeOptions.value, (localeCode) => {
|
|
6301
|
-
return vue.openBlock(), vue.createBlock(_sfc_main$
|
|
6304
|
+
return vue.openBlock(), vue.createBlock(_sfc_main$y, {
|
|
6302
6305
|
key: localeCode,
|
|
6303
6306
|
name: "fds-dev-mode-locale",
|
|
6304
6307
|
value: localeCode,
|
|
@@ -6322,13 +6325,13 @@ const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
|
|
|
6322
6325
|
onClick: _cache[0] || (_cache[0] = ($event) => isOpen.value = !isOpen.value),
|
|
6323
6326
|
class: "flex w-full cursor-pointer justify-between gap-2 px-3 py-2 active:bg-gray-100"
|
|
6324
6327
|
}, [
|
|
6325
|
-
vue.createVNode(_sfc_main$
|
|
6328
|
+
vue.createVNode(_sfc_main$x, { class: "mb-0!" }, {
|
|
6326
6329
|
default: vue.withCtx(() => [
|
|
6327
6330
|
vue.createTextVNode(vue.toDisplayString(vue.unref(t)("FdsDevMode.overlay.quickSettings")), 1)
|
|
6328
6331
|
]),
|
|
6329
6332
|
_: 1
|
|
6330
6333
|
}),
|
|
6331
|
-
vue.createVNode(_sfc_main$
|
|
6334
|
+
vue.createVNode(_sfc_main$O, {
|
|
6332
6335
|
name: isOpen.value ? "arrowUp" : "arrowDown",
|
|
6333
6336
|
size: 20,
|
|
6334
6337
|
class: "fill-gray-700"
|
|
@@ -6339,10 +6342,60 @@ const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
|
|
|
6339
6342
|
};
|
|
6340
6343
|
}
|
|
6341
6344
|
});
|
|
6342
|
-
const
|
|
6345
|
+
const FOCUSABLE_SELECTOR = [
|
|
6346
|
+
"a[href]:not([disabled])",
|
|
6347
|
+
"button:not([disabled])",
|
|
6348
|
+
"textarea:not([disabled])",
|
|
6349
|
+
'input:not([disabled]):not([type="hidden"])',
|
|
6350
|
+
"select:not([disabled])",
|
|
6351
|
+
'[tabindex]:not([tabindex="-1"])'
|
|
6352
|
+
].join(", ");
|
|
6353
|
+
const isVisible = (el) => !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);
|
|
6354
|
+
const getFocusableElements = (container) => Array.from(container.querySelectorAll(FOCUSABLE_SELECTOR)).filter(
|
|
6355
|
+
(el) => el.tabIndex >= 0 && !el.hasAttribute("disabled") && isVisible(el)
|
|
6356
|
+
);
|
|
6357
|
+
function useFocusTrap() {
|
|
6358
|
+
let cleanup = null;
|
|
6359
|
+
const deactivate = () => {
|
|
6360
|
+
cleanup?.();
|
|
6361
|
+
cleanup = null;
|
|
6362
|
+
};
|
|
6363
|
+
const activate = (getContainer) => {
|
|
6364
|
+
deactivate();
|
|
6365
|
+
vue.nextTick(() => {
|
|
6366
|
+
const container = getContainer();
|
|
6367
|
+
if (!container) return;
|
|
6368
|
+
const focusable = getFocusableElements(container);
|
|
6369
|
+
if (focusable.length > 0) {
|
|
6370
|
+
focusable[0].focus();
|
|
6371
|
+
}
|
|
6372
|
+
const handleTabKey = (e) => {
|
|
6373
|
+
if (e.key !== "Tab") return;
|
|
6374
|
+
const current = getFocusableElements(container);
|
|
6375
|
+
if (current.length === 0) return;
|
|
6376
|
+
const first = current[0];
|
|
6377
|
+
const last = current[current.length - 1];
|
|
6378
|
+
if (e.shiftKey && document.activeElement === first) {
|
|
6379
|
+
last.focus();
|
|
6380
|
+
e.preventDefault();
|
|
6381
|
+
} else if (!e.shiftKey && document.activeElement === last) {
|
|
6382
|
+
first.focus();
|
|
6383
|
+
e.preventDefault();
|
|
6384
|
+
}
|
|
6385
|
+
};
|
|
6386
|
+
container.addEventListener("keydown", handleTabKey, true);
|
|
6387
|
+
cleanup = () => {
|
|
6388
|
+
container.removeEventListener("keydown", handleTabKey, true);
|
|
6389
|
+
};
|
|
6390
|
+
});
|
|
6391
|
+
};
|
|
6392
|
+
vue.onBeforeUnmount(deactivate);
|
|
6393
|
+
return { activate, deactivate };
|
|
6394
|
+
}
|
|
6395
|
+
const _hoisted_1$m = { class: "flex justify-between mb-4" };
|
|
6343
6396
|
const _hoisted_2$g = { class: "flex items-center gap-2" };
|
|
6344
6397
|
const _hoisted_3$g = { class: "mb-0-last-child" };
|
|
6345
|
-
const _sfc_main$
|
|
6398
|
+
const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
|
|
6346
6399
|
__name: "FdsModal",
|
|
6347
6400
|
props: {
|
|
6348
6401
|
open: { type: Boolean, default: false },
|
|
@@ -6364,8 +6417,8 @@ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
|
|
|
6364
6417
|
const props = __props;
|
|
6365
6418
|
const emit = __emit;
|
|
6366
6419
|
const isOpen = vue.ref(props.open);
|
|
6367
|
-
let cleanupFocusTrap = null;
|
|
6368
6420
|
const previouslyFocusedElement = vue.ref(null);
|
|
6421
|
+
const { activate: activateFocusTrap, deactivate: deactivateFocusTrap } = useFocusTrap();
|
|
6369
6422
|
const hasFooterSlot = useHasSlot("modal-footer");
|
|
6370
6423
|
const { t } = useFdsI18n();
|
|
6371
6424
|
const modalInnerRef = vue.ref(null);
|
|
@@ -6461,39 +6514,6 @@ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
|
|
|
6461
6514
|
handleClose();
|
|
6462
6515
|
}
|
|
6463
6516
|
};
|
|
6464
|
-
const getTabList = (modal) => modal.querySelectorAll(
|
|
6465
|
-
'a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])'
|
|
6466
|
-
);
|
|
6467
|
-
const trapFocus = () => {
|
|
6468
|
-
if (!isOpen.value) return;
|
|
6469
|
-
vue.nextTick(() => {
|
|
6470
|
-
const modal = document.querySelector(".fds-modal-inner");
|
|
6471
|
-
if (!modal) return;
|
|
6472
|
-
const tabList = getTabList(modal);
|
|
6473
|
-
if (tabList.length > 0) {
|
|
6474
|
-
tabList[0].focus();
|
|
6475
|
-
}
|
|
6476
|
-
const handleTabKey = (e) => {
|
|
6477
|
-
if (e.key !== "Tab") return;
|
|
6478
|
-
const currentTabList = getTabList(modal);
|
|
6479
|
-
if (currentTabList.length === 0) return;
|
|
6480
|
-
const firstFocusableEl = currentTabList[0];
|
|
6481
|
-
const lastFocusableEl = currentTabList[currentTabList.length - 1];
|
|
6482
|
-
const isTabOrderReversed = e.shiftKey;
|
|
6483
|
-
if (isTabOrderReversed && document.activeElement === firstFocusableEl) {
|
|
6484
|
-
lastFocusableEl.focus();
|
|
6485
|
-
e.preventDefault();
|
|
6486
|
-
} else if (!isTabOrderReversed && document.activeElement === lastFocusableEl) {
|
|
6487
|
-
firstFocusableEl.focus();
|
|
6488
|
-
e.preventDefault();
|
|
6489
|
-
}
|
|
6490
|
-
};
|
|
6491
|
-
modal.addEventListener("keydown", handleTabKey, true);
|
|
6492
|
-
cleanupFocusTrap = () => {
|
|
6493
|
-
modal.removeEventListener("keydown", handleTabKey, true);
|
|
6494
|
-
};
|
|
6495
|
-
});
|
|
6496
|
-
};
|
|
6497
6517
|
vue.watch(
|
|
6498
6518
|
() => props.open,
|
|
6499
6519
|
(newValue) => {
|
|
@@ -6504,14 +6524,11 @@ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
|
|
|
6504
6524
|
if (props.lockScroll) {
|
|
6505
6525
|
setHtmlOverflow("hidden");
|
|
6506
6526
|
}
|
|
6507
|
-
|
|
6527
|
+
activateFocusTrap(() => modalInnerRef.value);
|
|
6508
6528
|
} else {
|
|
6509
6529
|
setHtmlOverflow("auto");
|
|
6510
6530
|
resetDragResize();
|
|
6511
|
-
|
|
6512
|
-
cleanupFocusTrap();
|
|
6513
|
-
cleanupFocusTrap = null;
|
|
6514
|
-
}
|
|
6531
|
+
deactivateFocusTrap();
|
|
6515
6532
|
vue.nextTick(() => {
|
|
6516
6533
|
if (previouslyFocusedElement.value) {
|
|
6517
6534
|
previouslyFocusedElement.value.focus();
|
|
@@ -6529,16 +6546,14 @@ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
|
|
|
6529
6546
|
if (props.lockScroll) {
|
|
6530
6547
|
setHtmlOverflow("hidden");
|
|
6531
6548
|
}
|
|
6532
|
-
|
|
6549
|
+
activateFocusTrap(() => modalInnerRef.value);
|
|
6533
6550
|
}
|
|
6534
6551
|
});
|
|
6535
6552
|
vue.onBeforeUnmount(() => {
|
|
6536
6553
|
document.removeEventListener("keydown", handleKeyDown, true);
|
|
6537
6554
|
cleanupDragResize();
|
|
6538
6555
|
setHtmlOverflow("auto");
|
|
6539
|
-
|
|
6540
|
-
cleanupFocusTrap();
|
|
6541
|
-
}
|
|
6556
|
+
deactivateFocusTrap();
|
|
6542
6557
|
});
|
|
6543
6558
|
const modalAttrs = vue.computed(() => {
|
|
6544
6559
|
const attrs = {};
|
|
@@ -6571,9 +6586,9 @@ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
|
|
|
6571
6586
|
vue.createElementVNode("div", {
|
|
6572
6587
|
class: vue.normalizeClass(__props.resizable ? "overflow-auto flex-1 min-h-0" : "")
|
|
6573
6588
|
}, [
|
|
6574
|
-
vue.createElementVNode("div", _hoisted_1$
|
|
6589
|
+
vue.createElementVNode("div", _hoisted_1$m, [
|
|
6575
6590
|
vue.createElementVNode("div", _hoisted_2$g, [
|
|
6576
|
-
iconName.value ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
6591
|
+
iconName.value ? (vue.openBlock(), vue.createBlock(_sfc_main$O, {
|
|
6577
6592
|
key: 0,
|
|
6578
6593
|
name: iconName.value,
|
|
6579
6594
|
size: 24,
|
|
@@ -6584,7 +6599,7 @@ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
|
|
|
6584
6599
|
class: vue.normalizeClass(headerTitleClasses.value)
|
|
6585
6600
|
}, vue.toDisplayString(__props.heading), 3)
|
|
6586
6601
|
]),
|
|
6587
|
-
!__props.strict ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
6602
|
+
!__props.strict ? (vue.openBlock(), vue.createBlock(_sfc_main$N, vue.mergeProps({
|
|
6588
6603
|
key: 0,
|
|
6589
6604
|
icon: "cross",
|
|
6590
6605
|
size: 28,
|
|
@@ -9846,7 +9861,7 @@ try {
|
|
|
9846
9861
|
globalThis.IMask = IMask;
|
|
9847
9862
|
} catch {
|
|
9848
9863
|
}
|
|
9849
|
-
const _sfc_main$
|
|
9864
|
+
const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
|
|
9850
9865
|
...{
|
|
9851
9866
|
inheritAttrs: false
|
|
9852
9867
|
},
|
|
@@ -9877,7 +9892,7 @@ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
|
|
|
9877
9892
|
};
|
|
9878
9893
|
}
|
|
9879
9894
|
});
|
|
9880
|
-
const _hoisted_1$
|
|
9895
|
+
const _hoisted_1$l = ["for", "id"];
|
|
9881
9896
|
const _hoisted_2$f = { class: "relative" };
|
|
9882
9897
|
const _hoisted_3$f = ["type", "required", "disabled", "tabindex", "aria-invalid", "aria-label", "aria-labelledby", "aria-describedby", "autocomplete", "placeholder", "pattern", "searchIcon"];
|
|
9883
9898
|
const _hoisted_4$e = {
|
|
@@ -9885,7 +9900,7 @@ const _hoisted_4$e = {
|
|
|
9885
9900
|
class: "text-red-700 font-bold mt-1"
|
|
9886
9901
|
};
|
|
9887
9902
|
const inputPaddingClasses = "px-3 py-[calc(0.75rem-1px)]";
|
|
9888
|
-
const _sfc_main$
|
|
9903
|
+
const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
|
|
9889
9904
|
...{
|
|
9890
9905
|
inheritAttrs: false
|
|
9891
9906
|
},
|
|
@@ -10185,8 +10200,8 @@ const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
|
|
|
10185
10200
|
for: inputId.value,
|
|
10186
10201
|
id: labelId.value,
|
|
10187
10202
|
class: ["block font-bold text-gray-900 cursor-pointer", { "mb-0": props.meta, "mb-1": !props.meta }]
|
|
10188
|
-
}, labelAttrs.value), vue.toDisplayString(props.label), 17, _hoisted_1$
|
|
10189
|
-
props.meta ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
10203
|
+
}, labelAttrs.value), vue.toDisplayString(props.label), 17, _hoisted_1$l)) : vue.createCommentVNode("", true),
|
|
10204
|
+
props.meta ? (vue.openBlock(), vue.createBlock(_sfc_main$u, {
|
|
10190
10205
|
key: 1,
|
|
10191
10206
|
id: metaId.value,
|
|
10192
10207
|
class: vue.normalizeClass({ "mb-1": !props.labelLeft })
|
|
@@ -10231,7 +10246,7 @@ const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
|
|
|
10231
10246
|
vue.createElementVNode("div", {
|
|
10232
10247
|
class: vue.normalizeClass(rightIconsContainerClasses.value)
|
|
10233
10248
|
}, [
|
|
10234
|
-
showDateIcon.value ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
10249
|
+
showDateIcon.value ? (vue.openBlock(), vue.createBlock(_sfc_main$N, {
|
|
10235
10250
|
key: 0,
|
|
10236
10251
|
"aria-label": dateButtonLabel.value,
|
|
10237
10252
|
onClick: onDateIconClick,
|
|
@@ -10239,29 +10254,29 @@ const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
|
|
|
10239
10254
|
size: 28,
|
|
10240
10255
|
class: "fill-blue-500"
|
|
10241
10256
|
}, null, 8, ["aria-label"])) : vue.createCommentVNode("", true),
|
|
10242
|
-
isInvalid.value ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
10257
|
+
isInvalid.value ? (vue.openBlock(), vue.createBlock(_sfc_main$O, {
|
|
10243
10258
|
key: 1,
|
|
10244
10259
|
name: "alert",
|
|
10245
10260
|
class: "fill-red-700"
|
|
10246
10261
|
})) : vue.createCommentVNode("", true),
|
|
10247
|
-
isValid2.value ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
10262
|
+
isValid2.value ? (vue.openBlock(), vue.createBlock(_sfc_main$O, {
|
|
10248
10263
|
key: 2,
|
|
10249
10264
|
name: "bigSuccess"
|
|
10250
10265
|
})) : vue.createCommentVNode("", true),
|
|
10251
|
-
props.searchIcon ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
10266
|
+
props.searchIcon ? (vue.openBlock(), vue.createBlock(_sfc_main$O, {
|
|
10252
10267
|
key: 3,
|
|
10253
10268
|
name: "search",
|
|
10254
10269
|
size: 24,
|
|
10255
10270
|
class: "fill-blue-500"
|
|
10256
10271
|
})) : vue.createCommentVNode("", true),
|
|
10257
|
-
showClearButton.value ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
10272
|
+
showClearButton.value ? (vue.openBlock(), vue.createBlock(_sfc_main$N, vue.mergeProps({
|
|
10258
10273
|
key: 4,
|
|
10259
10274
|
icon: "cross"
|
|
10260
10275
|
}, { "aria-label": clearButtonLabel.value }, {
|
|
10261
10276
|
onClick: onClear,
|
|
10262
10277
|
size: 30
|
|
10263
10278
|
}), null, 16)) : vue.createCommentVNode("", true),
|
|
10264
|
-
showPasswordToggle.value ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
10279
|
+
showPasswordToggle.value ? (vue.openBlock(), vue.createBlock(_sfc_main$F, {
|
|
10265
10280
|
key: 5,
|
|
10266
10281
|
icon: showPassword.value ? "viewOff" : "viewOn",
|
|
10267
10282
|
text: showPassword.value ? passwordButtonHideLabel.value : passwordButtonShowLabel.value,
|
|
@@ -10281,7 +10296,7 @@ const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
|
|
|
10281
10296
|
};
|
|
10282
10297
|
}
|
|
10283
10298
|
});
|
|
10284
|
-
const _sfc_main$
|
|
10299
|
+
const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
|
|
10285
10300
|
__name: "FdsTabs",
|
|
10286
10301
|
props: {
|
|
10287
10302
|
block: { type: Boolean, default: false },
|
|
@@ -10314,7 +10329,7 @@ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
|
|
|
10314
10329
|
};
|
|
10315
10330
|
}
|
|
10316
10331
|
});
|
|
10317
|
-
const _sfc_main$
|
|
10332
|
+
const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
|
|
10318
10333
|
...{
|
|
10319
10334
|
inheritAttrs: false
|
|
10320
10335
|
},
|
|
@@ -10429,7 +10444,7 @@ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
|
|
|
10429
10444
|
};
|
|
10430
10445
|
}
|
|
10431
10446
|
});
|
|
10432
|
-
const _hoisted_1$
|
|
10447
|
+
const _hoisted_1$k = { class: "space-y-6" };
|
|
10433
10448
|
const _hoisted_2$e = {
|
|
10434
10449
|
key: 0,
|
|
10435
10450
|
class: "text-sm text-gray-600"
|
|
@@ -10528,7 +10543,7 @@ const _hoisted_59 = {
|
|
|
10528
10543
|
class: "mt-2"
|
|
10529
10544
|
};
|
|
10530
10545
|
const _hoisted_60 = { class: "mt-4 flex justify-end gap-3" };
|
|
10531
|
-
const _sfc_main$
|
|
10546
|
+
const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
|
|
10532
10547
|
__name: "FdsDevModeStorage",
|
|
10533
10548
|
props: {
|
|
10534
10549
|
open: { type: Boolean, default: false },
|
|
@@ -10701,7 +10716,7 @@ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
|
|
|
10701
10716
|
loadStorageEntries();
|
|
10702
10717
|
};
|
|
10703
10718
|
return (_ctx, _cache) => {
|
|
10704
|
-
return vue.openBlock(), vue.createBlock(_sfc_main$
|
|
10719
|
+
return vue.openBlock(), vue.createBlock(_sfc_main$v, {
|
|
10705
10720
|
open: isOpen.value,
|
|
10706
10721
|
heading: "DevTools",
|
|
10707
10722
|
size: "xl",
|
|
@@ -10711,31 +10726,31 @@ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
|
|
|
10711
10726
|
onClose: _cache[11] || (_cache[11] = () => handleOpenChange(false))
|
|
10712
10727
|
}, {
|
|
10713
10728
|
default: vue.withCtx(() => [
|
|
10714
|
-
vue.createElementVNode("div", _hoisted_1$
|
|
10715
|
-
vue.createVNode(_sfc_main$
|
|
10729
|
+
vue.createElementVNode("div", _hoisted_1$k, [
|
|
10730
|
+
vue.createVNode(_sfc_main$s, {
|
|
10716
10731
|
variant: "secondary",
|
|
10717
10732
|
class: "flex-wrap overflow-visible! *:w-auto!"
|
|
10718
10733
|
}, {
|
|
10719
10734
|
default: vue.withCtx(() => [
|
|
10720
|
-
vue.createVNode(_sfc_main$
|
|
10735
|
+
vue.createVNode(_sfc_main$r, {
|
|
10721
10736
|
label: vue.unref(t)("FdsDevModeStorage.tabs.localStorage"),
|
|
10722
10737
|
active: activeTab.value === "local",
|
|
10723
10738
|
as: "button",
|
|
10724
10739
|
onClick: _cache[0] || (_cache[0] = ($event) => activeTab.value = "local")
|
|
10725
10740
|
}, null, 8, ["label", "active"]),
|
|
10726
|
-
vue.createVNode(_sfc_main$
|
|
10741
|
+
vue.createVNode(_sfc_main$r, {
|
|
10727
10742
|
label: vue.unref(t)("FdsDevModeStorage.tabs.sessionStorage"),
|
|
10728
10743
|
active: activeTab.value === "session",
|
|
10729
10744
|
as: "button",
|
|
10730
10745
|
onClick: _cache[1] || (_cache[1] = ($event) => activeTab.value = "session")
|
|
10731
10746
|
}, null, 8, ["label", "active"]),
|
|
10732
|
-
vue.createVNode(_sfc_main$
|
|
10747
|
+
vue.createVNode(_sfc_main$r, {
|
|
10733
10748
|
label: vue.unref(t)("FdsDevModeStorage.tabs.cookies"),
|
|
10734
10749
|
active: activeTab.value === "cookies",
|
|
10735
10750
|
as: "button",
|
|
10736
10751
|
onClick: _cache[2] || (_cache[2] = ($event) => activeTab.value = "cookies")
|
|
10737
10752
|
}, null, 8, ["label", "active"]),
|
|
10738
|
-
vue.createVNode(_sfc_main$
|
|
10753
|
+
vue.createVNode(_sfc_main$r, {
|
|
10739
10754
|
label: vue.unref(t)("FdsDevModeStorage.tabs.actions"),
|
|
10740
10755
|
active: activeTab.value === "actions",
|
|
10741
10756
|
as: "button",
|
|
@@ -10744,7 +10759,7 @@ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
|
|
|
10744
10759
|
]),
|
|
10745
10760
|
_: 1
|
|
10746
10761
|
}),
|
|
10747
|
-
activeTab.value === "local" ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
10762
|
+
activeTab.value === "local" ? (vue.openBlock(), vue.createBlock(_sfc_main$I, {
|
|
10748
10763
|
key: 0,
|
|
10749
10764
|
heading: vue.unref(t)("FdsDevModeStorage.tabs.localStorage"),
|
|
10750
10765
|
icon: "information",
|
|
@@ -10798,12 +10813,12 @@ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
|
|
|
10798
10813
|
])
|
|
10799
10814
|
]),
|
|
10800
10815
|
localEditKey.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_18, [
|
|
10801
|
-
vue.createVNode(_sfc_main$
|
|
10816
|
+
vue.createVNode(_sfc_main$B, {
|
|
10802
10817
|
text: vue.unref(t)("FdsDevModeStorage.actions.delete"),
|
|
10803
10818
|
size: "sm",
|
|
10804
10819
|
onClick: deleteLocalEntry
|
|
10805
10820
|
}, null, 8, ["text"]),
|
|
10806
|
-
vue.createVNode(_sfc_main$
|
|
10821
|
+
vue.createVNode(_sfc_main$C, {
|
|
10807
10822
|
text: vue.unref(t)("FdsDevModeStorage.actions.save"),
|
|
10808
10823
|
size: "sm",
|
|
10809
10824
|
onClick: saveLocalEntry
|
|
@@ -10812,7 +10827,7 @@ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
|
|
|
10812
10827
|
])
|
|
10813
10828
|
]),
|
|
10814
10829
|
_: 1
|
|
10815
|
-
}, 8, ["heading"])) : activeTab.value === "session" ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
10830
|
+
}, 8, ["heading"])) : activeTab.value === "session" ? (vue.openBlock(), vue.createBlock(_sfc_main$I, {
|
|
10816
10831
|
key: 1,
|
|
10817
10832
|
heading: vue.unref(t)("FdsDevModeStorage.tabs.sessionStorage"),
|
|
10818
10833
|
icon: "information",
|
|
@@ -10866,12 +10881,12 @@ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
|
|
|
10866
10881
|
])
|
|
10867
10882
|
]),
|
|
10868
10883
|
sessionEditKey.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_35, [
|
|
10869
|
-
vue.createVNode(_sfc_main$
|
|
10884
|
+
vue.createVNode(_sfc_main$B, {
|
|
10870
10885
|
text: vue.unref(t)("FdsDevModeStorage.actions.delete"),
|
|
10871
10886
|
size: "sm",
|
|
10872
10887
|
onClick: deleteSessionEntry
|
|
10873
10888
|
}, null, 8, ["text"]),
|
|
10874
|
-
vue.createVNode(_sfc_main$
|
|
10889
|
+
vue.createVNode(_sfc_main$C, {
|
|
10875
10890
|
text: vue.unref(t)("FdsDevModeStorage.actions.save"),
|
|
10876
10891
|
size: "sm",
|
|
10877
10892
|
onClick: saveSessionEntry
|
|
@@ -10880,7 +10895,7 @@ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
|
|
|
10880
10895
|
])
|
|
10881
10896
|
]),
|
|
10882
10897
|
_: 1
|
|
10883
|
-
}, 8, ["heading"])) : activeTab.value === "cookies" ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
10898
|
+
}, 8, ["heading"])) : activeTab.value === "cookies" ? (vue.openBlock(), vue.createBlock(_sfc_main$I, {
|
|
10884
10899
|
key: 2,
|
|
10885
10900
|
heading: vue.unref(t)("FdsDevModeStorage.tabs.cookies"),
|
|
10886
10901
|
icon: "information",
|
|
@@ -10934,12 +10949,12 @@ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
|
|
|
10934
10949
|
])
|
|
10935
10950
|
]),
|
|
10936
10951
|
cookieEditKey.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_52, [
|
|
10937
|
-
vue.createVNode(_sfc_main$
|
|
10952
|
+
vue.createVNode(_sfc_main$B, {
|
|
10938
10953
|
text: vue.unref(t)("FdsDevModeStorage.actions.delete"),
|
|
10939
10954
|
size: "sm",
|
|
10940
10955
|
onClick: deleteCookieEntry
|
|
10941
10956
|
}, null, 8, ["text"]),
|
|
10942
|
-
vue.createVNode(_sfc_main$
|
|
10957
|
+
vue.createVNode(_sfc_main$C, {
|
|
10943
10958
|
text: vue.unref(t)("FdsDevModeStorage.actions.save"),
|
|
10944
10959
|
size: "sm",
|
|
10945
10960
|
onClick: saveCookieEntry
|
|
@@ -10948,7 +10963,7 @@ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
|
|
|
10948
10963
|
])
|
|
10949
10964
|
]),
|
|
10950
10965
|
_: 1
|
|
10951
|
-
}, 8, ["heading"])) : activeTab.value === "actions" ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
10966
|
+
}, 8, ["heading"])) : activeTab.value === "actions" ? (vue.openBlock(), vue.createBlock(_sfc_main$I, {
|
|
10952
10967
|
key: 3,
|
|
10953
10968
|
heading: vue.unref(t)("FdsDevModeStorage.tabs.actions"),
|
|
10954
10969
|
icon: "information",
|
|
@@ -10966,14 +10981,14 @@ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
|
|
|
10966
10981
|
vue.createElementVNode("div", _hoisted_57, vue.toDisplayString(action.label), 1),
|
|
10967
10982
|
action.description ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_58, vue.toDisplayString(action.description), 1)) : vue.createCommentVNode("", true)
|
|
10968
10983
|
]),
|
|
10969
|
-
vue.createVNode(_sfc_main$
|
|
10984
|
+
vue.createVNode(_sfc_main$B, {
|
|
10970
10985
|
text: action.label,
|
|
10971
10986
|
size: "sm",
|
|
10972
10987
|
onClick: ($event) => runAction(index, action)
|
|
10973
10988
|
}, null, 8, ["text", "onClick"])
|
|
10974
10989
|
]),
|
|
10975
10990
|
action.input ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_59, [
|
|
10976
|
-
vue.createVNode(_sfc_main$
|
|
10991
|
+
vue.createVNode(_sfc_main$t, {
|
|
10977
10992
|
type: action.input.type ?? "text",
|
|
10978
10993
|
modelValue: getActionInputValue(index, action.input.defaultValue),
|
|
10979
10994
|
placeholder: action.input.placeholder,
|
|
@@ -10987,11 +11002,11 @@ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
|
|
|
10987
11002
|
_: 1
|
|
10988
11003
|
}, 8, ["heading"])) : vue.createCommentVNode("", true),
|
|
10989
11004
|
vue.createElementVNode("div", _hoisted_60, [
|
|
10990
|
-
vue.createVNode(_sfc_main$
|
|
11005
|
+
vue.createVNode(_sfc_main$B, {
|
|
10991
11006
|
text: vue.unref(t)("FdsDevModeStorage.actions.refresh"),
|
|
10992
11007
|
onClick: refreshStorageEntries
|
|
10993
11008
|
}, null, 8, ["text"]),
|
|
10994
|
-
vue.createVNode(_sfc_main$
|
|
11009
|
+
vue.createVNode(_sfc_main$C, {
|
|
10995
11010
|
text: vue.unref(t)("FdsDevModeStorage.actions.close"),
|
|
10996
11011
|
onClick: _cache[10] || (_cache[10] = ($event) => handleOpenChange(false))
|
|
10997
11012
|
}, null, 8, ["text"])
|
|
@@ -11003,11 +11018,11 @@ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
|
|
|
11003
11018
|
};
|
|
11004
11019
|
}
|
|
11005
11020
|
});
|
|
11006
|
-
const _hoisted_1$
|
|
11021
|
+
const _hoisted_1$j = { class: "relative px-2 py-1" };
|
|
11007
11022
|
const _hoisted_2$d = { class: "flex flex-col sm:flex-row items-center gap-2 sm:gap-1" };
|
|
11008
11023
|
const _hoisted_3$d = { class: "flex items-center gap-1" };
|
|
11009
11024
|
const _hoisted_4$c = { class: "flex items-center gap-1" };
|
|
11010
|
-
const _sfc_main$
|
|
11025
|
+
const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
|
|
11011
11026
|
__name: "FdsDevMode",
|
|
11012
11027
|
props: /* @__PURE__ */ vue.mergeModels({
|
|
11013
11028
|
environment: { default: null },
|
|
@@ -11169,8 +11184,8 @@ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
|
|
|
11169
11184
|
onMousedown: _cache[1] || (_cache[1] = //@ts-ignore
|
|
11170
11185
|
(...args) => vue.unref(onDragStart) && vue.unref(onDragStart)(...args))
|
|
11171
11186
|
}, [
|
|
11172
|
-
vue.createElementVNode("div", _hoisted_1$
|
|
11173
|
-
vue.unref(isDevMode) ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
11187
|
+
vue.createElementVNode("div", _hoisted_1$j, [
|
|
11188
|
+
vue.unref(isDevMode) ? (vue.openBlock(), vue.createBlock(_sfc_main$w, {
|
|
11174
11189
|
key: 0,
|
|
11175
11190
|
environment: __props.environment,
|
|
11176
11191
|
toggles: overlayToggles.value,
|
|
@@ -11180,7 +11195,7 @@ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
|
|
|
11180
11195
|
}, null, 8, ["environment", "toggles"])) : vue.createCommentVNode("", true),
|
|
11181
11196
|
vue.createElementVNode("div", _hoisted_2$d, [
|
|
11182
11197
|
vue.createElementVNode("div", _hoisted_3$d, [
|
|
11183
|
-
vue.createVNode(_sfc_main$
|
|
11198
|
+
vue.createVNode(_sfc_main$A, { "popover-class": envBannerClasses.value }, null, 8, ["popover-class"]),
|
|
11184
11199
|
vue.createElementVNode("span", null, vue.toDisplayString(vue.unref(environmentText)), 1)
|
|
11185
11200
|
]),
|
|
11186
11201
|
vue.createElementVNode("div", _hoisted_4$c, [
|
|
@@ -11189,13 +11204,13 @@ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
|
|
|
11189
11204
|
(...args) => vue.unref(toggleDevMode) && vue.unref(toggleDevMode)(...args)),
|
|
11190
11205
|
class: "py-1 px-2 rounded text-xs font-bold bg-white bg-opacity-20 text-black hover:bg-opacity-30 min-w-[120px] cursor-pointer"
|
|
11191
11206
|
}, vue.toDisplayString(devModeButtonText.value), 1),
|
|
11192
|
-
vue.createVNode(_sfc_main$
|
|
11207
|
+
vue.createVNode(_sfc_main$N, {
|
|
11193
11208
|
icon: "settings",
|
|
11194
11209
|
size: 24,
|
|
11195
11210
|
class: vue.normalizeClass(envBannerFillColor.value),
|
|
11196
11211
|
onClick: openStorageModal
|
|
11197
11212
|
}, null, 8, ["class"]),
|
|
11198
|
-
vue.createVNode(_sfc_main$
|
|
11213
|
+
vue.createVNode(_sfc_main$N, {
|
|
11199
11214
|
onClick: handleEnvBanner,
|
|
11200
11215
|
icon: "cross",
|
|
11201
11216
|
size: 24,
|
|
@@ -11205,7 +11220,7 @@ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
|
|
|
11205
11220
|
])
|
|
11206
11221
|
])
|
|
11207
11222
|
], 38)) : vue.createCommentVNode("", true),
|
|
11208
|
-
vue.createVNode(_sfc_main$
|
|
11223
|
+
vue.createVNode(_sfc_main$q, {
|
|
11209
11224
|
open: isStorageModalOpen.value,
|
|
11210
11225
|
"onUpdate:open": _cache[2] || (_cache[2] = ($event) => isStorageModalOpen.value = $event),
|
|
11211
11226
|
customActions: __props.customActions
|
|
@@ -11214,8 +11229,8 @@ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
|
|
|
11214
11229
|
};
|
|
11215
11230
|
}
|
|
11216
11231
|
});
|
|
11217
|
-
const _hoisted_1$
|
|
11218
|
-
const _sfc_main$
|
|
11232
|
+
const _hoisted_1$i = { class: "flex justify-between gap-6 w-full" };
|
|
11233
|
+
const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
|
|
11219
11234
|
__name: "FdsExitModal",
|
|
11220
11235
|
props: {
|
|
11221
11236
|
showExitConfirmModal: {},
|
|
@@ -11230,7 +11245,7 @@ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
|
|
|
11230
11245
|
const props = __props;
|
|
11231
11246
|
const isOpen = vue.computed(() => props.showExitConfirmModal.value);
|
|
11232
11247
|
return (_ctx, _cache) => {
|
|
11233
|
-
return vue.openBlock(), vue.createBlock(_sfc_main$
|
|
11248
|
+
return vue.openBlock(), vue.createBlock(_sfc_main$v, {
|
|
11234
11249
|
heading: props.heading,
|
|
11235
11250
|
size: "sm",
|
|
11236
11251
|
open: isOpen.value,
|
|
@@ -11238,13 +11253,13 @@ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
|
|
|
11238
11253
|
onClose: props.cancelExit
|
|
11239
11254
|
}, {
|
|
11240
11255
|
"modal-footer": vue.withCtx(() => [
|
|
11241
|
-
vue.createElementVNode("div", _hoisted_1$
|
|
11242
|
-
vue.createVNode(_sfc_main$
|
|
11256
|
+
vue.createElementVNode("div", _hoisted_1$i, [
|
|
11257
|
+
vue.createVNode(_sfc_main$B, {
|
|
11243
11258
|
text: props.stayText,
|
|
11244
11259
|
onClick: props.cancelExit,
|
|
11245
11260
|
block: ""
|
|
11246
11261
|
}, null, 8, ["text", "onClick"]),
|
|
11247
|
-
vue.createVNode(_sfc_main$
|
|
11262
|
+
vue.createVNode(_sfc_main$B, {
|
|
11248
11263
|
text: props.leaveText,
|
|
11249
11264
|
onClick: props.confirmExit,
|
|
11250
11265
|
block: ""
|
|
@@ -11259,6 +11274,196 @@ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
|
|
|
11259
11274
|
};
|
|
11260
11275
|
}
|
|
11261
11276
|
});
|
|
11277
|
+
const _hoisted_1$h = { class: "flex items-center gap-2 min-w-0" };
|
|
11278
|
+
const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
|
|
11279
|
+
__name: "FdsDrawer",
|
|
11280
|
+
props: {
|
|
11281
|
+
open: { type: Boolean, default: false },
|
|
11282
|
+
heading: { default: "" },
|
|
11283
|
+
size: { default: "md" },
|
|
11284
|
+
strict: { type: Boolean, default: false },
|
|
11285
|
+
lockScroll: { type: Boolean, default: false },
|
|
11286
|
+
info: { default: void 0 },
|
|
11287
|
+
dataTestid: { default: void 0 },
|
|
11288
|
+
onClose: {}
|
|
11289
|
+
},
|
|
11290
|
+
emits: ["close", "update:open"],
|
|
11291
|
+
setup(__props, { emit: __emit }) {
|
|
11292
|
+
const props = __props;
|
|
11293
|
+
const emit = __emit;
|
|
11294
|
+
const isOpen = vue.ref(props.open);
|
|
11295
|
+
const drawerInnerRef = vue.ref(null);
|
|
11296
|
+
const previouslyFocusedElement = vue.ref(null);
|
|
11297
|
+
const { activate: activateFocusTrap, deactivate: deactivateFocusTrap } = useFocusTrap();
|
|
11298
|
+
const { t } = useFdsI18n();
|
|
11299
|
+
const drawerOuterClasses = vue.computed(() => ["fixed top-0 left-0 w-full h-full z-100"]);
|
|
11300
|
+
const drawerInnerClasses = vue.computed(() => [
|
|
11301
|
+
"bg-white shadow-lg z-[99999] overflow-hidden flex flex-col",
|
|
11302
|
+
// Mobile: bottom sheet
|
|
11303
|
+
"fixed bottom-0 left-0 right-0 max-h-[90vh] rounded-t-lg",
|
|
11304
|
+
// Desktop: right panel
|
|
11305
|
+
"md:top-0 md:right-0 md:bottom-auto md:left-auto md:h-full md:max-h-none md:rounded-none md:w-full",
|
|
11306
|
+
{
|
|
11307
|
+
"md:max-w-[320px]": props.size === "sm",
|
|
11308
|
+
"md:max-w-[400px]": props.size === "md",
|
|
11309
|
+
"md:max-w-[480px]": props.size === "lg",
|
|
11310
|
+
"md:max-w-[588px]": props.size === "xl"
|
|
11311
|
+
}
|
|
11312
|
+
]);
|
|
11313
|
+
const headerClasses = vue.computed(() => ["shrink-0 flex justify-between bg-white p-6", "rounded-t-lg md:rounded-none"]);
|
|
11314
|
+
const contentClasses = vue.computed(() => ["flex-1 min-h-0 overflow-auto px-6 pb-6 mb-0-last-child"]);
|
|
11315
|
+
const headerTitleClasses = vue.computed(() => ["m-0"]);
|
|
11316
|
+
const iconName = vue.computed(() => {
|
|
11317
|
+
if (props.info === "valid") return "check";
|
|
11318
|
+
if (props.info === "invalid" || props.info === "warning") return "alert";
|
|
11319
|
+
return null;
|
|
11320
|
+
});
|
|
11321
|
+
const iconClasses = vue.computed(() => [
|
|
11322
|
+
{
|
|
11323
|
+
"fill-green-600": props.info === "valid",
|
|
11324
|
+
"fill-red-600": props.info === "invalid",
|
|
11325
|
+
"fill-yellow-600": props.info === "warning"
|
|
11326
|
+
}
|
|
11327
|
+
]);
|
|
11328
|
+
const closeLabel = vue.computed(() => t("FdsDrawer.closeDrawer"));
|
|
11329
|
+
const setHtmlOverflow = (value) => {
|
|
11330
|
+
if (typeof document === "undefined") return;
|
|
11331
|
+
const htmlEl = document.documentElement;
|
|
11332
|
+
if (htmlEl) {
|
|
11333
|
+
htmlEl.style.overflow = value;
|
|
11334
|
+
}
|
|
11335
|
+
};
|
|
11336
|
+
const handleBackdropClick = () => {
|
|
11337
|
+
handleClose();
|
|
11338
|
+
};
|
|
11339
|
+
const restoreFocus = () => {
|
|
11340
|
+
if (previouslyFocusedElement.value) {
|
|
11341
|
+
previouslyFocusedElement.value.focus();
|
|
11342
|
+
previouslyFocusedElement.value = null;
|
|
11343
|
+
}
|
|
11344
|
+
};
|
|
11345
|
+
const handleClose = () => {
|
|
11346
|
+
if (props.strict) {
|
|
11347
|
+
return;
|
|
11348
|
+
}
|
|
11349
|
+
isOpen.value = false;
|
|
11350
|
+
setHtmlOverflow("auto");
|
|
11351
|
+
emit("close");
|
|
11352
|
+
emit("update:open", false);
|
|
11353
|
+
};
|
|
11354
|
+
const handleKeyDown = (e) => {
|
|
11355
|
+
if (isOpen.value && e.code === "Escape") {
|
|
11356
|
+
handleClose();
|
|
11357
|
+
}
|
|
11358
|
+
};
|
|
11359
|
+
vue.watch(
|
|
11360
|
+
() => props.open,
|
|
11361
|
+
(newValue) => {
|
|
11362
|
+
isOpen.value = newValue;
|
|
11363
|
+
if (newValue) {
|
|
11364
|
+
previouslyFocusedElement.value = document.activeElement;
|
|
11365
|
+
if (props.lockScroll) {
|
|
11366
|
+
setHtmlOverflow("hidden");
|
|
11367
|
+
}
|
|
11368
|
+
activateFocusTrap(() => drawerInnerRef.value);
|
|
11369
|
+
} else {
|
|
11370
|
+
setHtmlOverflow("auto");
|
|
11371
|
+
deactivateFocusTrap();
|
|
11372
|
+
}
|
|
11373
|
+
}
|
|
11374
|
+
);
|
|
11375
|
+
vue.onMounted(() => {
|
|
11376
|
+
document.addEventListener("keydown", handleKeyDown, true);
|
|
11377
|
+
if (props.open) {
|
|
11378
|
+
previouslyFocusedElement.value = document.activeElement;
|
|
11379
|
+
if (props.lockScroll) {
|
|
11380
|
+
setHtmlOverflow("hidden");
|
|
11381
|
+
}
|
|
11382
|
+
activateFocusTrap(() => drawerInnerRef.value);
|
|
11383
|
+
}
|
|
11384
|
+
});
|
|
11385
|
+
vue.onBeforeUnmount(() => {
|
|
11386
|
+
document.removeEventListener("keydown", handleKeyDown, true);
|
|
11387
|
+
setHtmlOverflow("auto");
|
|
11388
|
+
deactivateFocusTrap();
|
|
11389
|
+
});
|
|
11390
|
+
const drawerAttrs = vue.computed(() => {
|
|
11391
|
+
const attrs = {};
|
|
11392
|
+
if (props.dataTestid) {
|
|
11393
|
+
attrs["data-testid"] = props.dataTestid;
|
|
11394
|
+
}
|
|
11395
|
+
return attrs;
|
|
11396
|
+
});
|
|
11397
|
+
return (_ctx, _cache) => {
|
|
11398
|
+
return vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
|
|
11399
|
+
vue.createVNode(vue.Transition, {
|
|
11400
|
+
name: "fds-drawer",
|
|
11401
|
+
duration: { enter: 280, leave: 180 },
|
|
11402
|
+
onAfterLeave: restoreFocus
|
|
11403
|
+
}, {
|
|
11404
|
+
default: vue.withCtx(() => [
|
|
11405
|
+
isOpen.value ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
11406
|
+
key: 0,
|
|
11407
|
+
onClick: handleBackdropClick,
|
|
11408
|
+
class: vue.normalizeClass(drawerOuterClasses.value)
|
|
11409
|
+
}, [
|
|
11410
|
+
_cache[2] || (_cache[2] = vue.createElementVNode("div", { class: "fds-drawer-backdrop fixed top-0 left-0 w-full h-full bg-black/34 z-99" }, null, -1)),
|
|
11411
|
+
vue.createElementVNode("div", vue.mergeProps({
|
|
11412
|
+
ref_key: "drawerInnerRef",
|
|
11413
|
+
ref: drawerInnerRef,
|
|
11414
|
+
class: ["fds-drawer-inner", drawerInnerClasses.value],
|
|
11415
|
+
role: "dialog",
|
|
11416
|
+
"aria-modal": "true"
|
|
11417
|
+
}, drawerAttrs.value, {
|
|
11418
|
+
onClick: _cache[1] || (_cache[1] = vue.withModifiers(() => {
|
|
11419
|
+
}, ["stop"]))
|
|
11420
|
+
}), [
|
|
11421
|
+
vue.createElementVNode("div", {
|
|
11422
|
+
class: vue.normalizeClass(headerClasses.value)
|
|
11423
|
+
}, [
|
|
11424
|
+
vue.createElementVNode("div", _hoisted_1$h, [
|
|
11425
|
+
iconName.value ? (vue.openBlock(), vue.createBlock(_sfc_main$O, {
|
|
11426
|
+
key: 0,
|
|
11427
|
+
name: iconName.value,
|
|
11428
|
+
size: 24,
|
|
11429
|
+
class: vue.normalizeClass(iconClasses.value)
|
|
11430
|
+
}, null, 8, ["name", "class"])) : vue.createCommentVNode("", true),
|
|
11431
|
+
vue.createElementVNode("h3", {
|
|
11432
|
+
tabindex: "-1",
|
|
11433
|
+
class: vue.normalizeClass(headerTitleClasses.value)
|
|
11434
|
+
}, vue.toDisplayString(__props.heading), 3)
|
|
11435
|
+
]),
|
|
11436
|
+
vue.createElementVNode("div", null, [
|
|
11437
|
+
!__props.strict ? (vue.openBlock(), vue.createBlock(_sfc_main$N, vue.mergeProps({
|
|
11438
|
+
key: 0,
|
|
11439
|
+
icon: "cross",
|
|
11440
|
+
size: 28,
|
|
11441
|
+
onClick: _cache[0] || (_cache[0] = ($event) => handleClose())
|
|
11442
|
+
}, { "aria-label": closeLabel.value }, { class: "ml-4 shrink-0" }), null, 16)) : vue.createCommentVNode("", true)
|
|
11443
|
+
])
|
|
11444
|
+
], 2),
|
|
11445
|
+
vue.createElementVNode("div", {
|
|
11446
|
+
class: vue.normalizeClass(contentClasses.value)
|
|
11447
|
+
}, [
|
|
11448
|
+
vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
|
|
11449
|
+
], 2)
|
|
11450
|
+
], 16)
|
|
11451
|
+
], 2)) : vue.createCommentVNode("", true)
|
|
11452
|
+
]),
|
|
11453
|
+
_: 3
|
|
11454
|
+
})
|
|
11455
|
+
]);
|
|
11456
|
+
};
|
|
11457
|
+
}
|
|
11458
|
+
});
|
|
11459
|
+
const _export_sfc = (sfc, props) => {
|
|
11460
|
+
const target = sfc.__vccOpts || sfc;
|
|
11461
|
+
for (const [key, val] of props) {
|
|
11462
|
+
target[key] = val;
|
|
11463
|
+
}
|
|
11464
|
+
return target;
|
|
11465
|
+
};
|
|
11466
|
+
const FdsDrawer = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["__scopeId", "data-v-afc45d1a"]]);
|
|
11262
11467
|
function debounce(fn, delayMs) {
|
|
11263
11468
|
let timeoutId;
|
|
11264
11469
|
const debounced = (...args) => {
|
|
@@ -11374,11 +11579,11 @@ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
|
|
|
11374
11579
|
id: inputId.value
|
|
11375
11580
|
}, rootAttrs.value), [
|
|
11376
11581
|
vue.createElementVNode("div", _hoisted_2$c, [
|
|
11377
|
-
__props.loading && loadingIndicator.value === "start" ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
11582
|
+
__props.loading && loadingIndicator.value === "start" ? (vue.openBlock(), vue.createBlock(_sfc_main$G, {
|
|
11378
11583
|
key: 0,
|
|
11379
11584
|
size: "32px",
|
|
11380
11585
|
color: "blue"
|
|
11381
|
-
})) : (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
11586
|
+
})) : (vue.openBlock(), vue.createBlock(_sfc_main$N, vue.mergeProps({ key: 1 }, { "aria-disabled": __props.current === 1 }, {
|
|
11382
11587
|
type: "button",
|
|
11383
11588
|
"aria-label": firstPageLabel.value,
|
|
11384
11589
|
icon: "first",
|
|
@@ -11387,11 +11592,11 @@ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
|
|
|
11387
11592
|
class: [{ "hidden!": __props.current === 1 }, "w-8 h-8 sm:w-12 sm:h-12"],
|
|
11388
11593
|
onClick: _cache[0] || (_cache[0] = ($event) => handlePagination("start"))
|
|
11389
11594
|
}), null, 16, ["aria-label", "disabled", "class"])),
|
|
11390
|
-
__props.loading && loadingIndicator.value === "prev" ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
11595
|
+
__props.loading && loadingIndicator.value === "prev" ? (vue.openBlock(), vue.createBlock(_sfc_main$G, {
|
|
11391
11596
|
key: 2,
|
|
11392
11597
|
size: "24px",
|
|
11393
11598
|
color: "blue"
|
|
11394
|
-
})) : (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
11599
|
+
})) : (vue.openBlock(), vue.createBlock(_sfc_main$N, vue.mergeProps({ key: 3 }, { "aria-disabled": __props.current === 1 }, {
|
|
11395
11600
|
type: "button",
|
|
11396
11601
|
"aria-label": prevPageLabel.value,
|
|
11397
11602
|
icon: "arrowLeft",
|
|
@@ -11402,14 +11607,14 @@ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
|
|
|
11402
11607
|
}), null, 16, ["aria-label", "disabled", "class"]))
|
|
11403
11608
|
]),
|
|
11404
11609
|
vue.createElementVNode("div", _hoisted_3$c, [
|
|
11405
|
-
__props.loading && loadingIndicator.value === "input" ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
11610
|
+
__props.loading && loadingIndicator.value === "input" ? (vue.openBlock(), vue.createBlock(_sfc_main$G, {
|
|
11406
11611
|
key: 0,
|
|
11407
11612
|
size: "24px",
|
|
11408
11613
|
color: "blue",
|
|
11409
11614
|
label: loadingLabel.value,
|
|
11410
11615
|
"label-position": "right"
|
|
11411
11616
|
}, null, 8, ["label"])) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
|
|
11412
|
-
vue.createVNode(_sfc_main$
|
|
11617
|
+
vue.createVNode(_sfc_main$t, {
|
|
11413
11618
|
style: { "text-align": "center" },
|
|
11414
11619
|
value: inputValue.value,
|
|
11415
11620
|
type: "text",
|
|
@@ -11423,11 +11628,11 @@ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
|
|
|
11423
11628
|
], 64))
|
|
11424
11629
|
]),
|
|
11425
11630
|
vue.createElementVNode("div", _hoisted_5$b, [
|
|
11426
|
-
__props.loading && loadingIndicator.value === "next" ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
11631
|
+
__props.loading && loadingIndicator.value === "next" ? (vue.openBlock(), vue.createBlock(_sfc_main$G, {
|
|
11427
11632
|
key: 0,
|
|
11428
11633
|
size: "24px",
|
|
11429
11634
|
color: "blue"
|
|
11430
|
-
})) : (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
11635
|
+
})) : (vue.openBlock(), vue.createBlock(_sfc_main$N, vue.mergeProps({
|
|
11431
11636
|
key: 1,
|
|
11432
11637
|
type: "button",
|
|
11433
11638
|
"aria-label": nextPageLabel.value,
|
|
@@ -11438,11 +11643,11 @@ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
|
|
|
11438
11643
|
class: [{ "hidden!": __props.current === __props.max }, "w-8 h-8 sm:w-12 sm:h-12"],
|
|
11439
11644
|
onClick: _cache[2] || (_cache[2] = ($event) => handlePagination("next"))
|
|
11440
11645
|
}), null, 16, ["aria-label", "disabled", "class"])),
|
|
11441
|
-
__props.loading && loadingIndicator.value === "end" ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
11646
|
+
__props.loading && loadingIndicator.value === "end" ? (vue.openBlock(), vue.createBlock(_sfc_main$G, {
|
|
11442
11647
|
key: 2,
|
|
11443
11648
|
size: "24px",
|
|
11444
11649
|
color: "blue"
|
|
11445
|
-
})) : (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
11650
|
+
})) : (vue.openBlock(), vue.createBlock(_sfc_main$N, vue.mergeProps({
|
|
11446
11651
|
key: 3,
|
|
11447
11652
|
type: "button",
|
|
11448
11653
|
"aria-label": lastPageLabel.value,
|
|
@@ -11604,13 +11809,13 @@ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
|
|
|
11604
11809
|
}, { ...popoverAttrs.value, popover: "auto" }), [
|
|
11605
11810
|
__props.label ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
|
|
11606
11811
|
vue.createElementVNode("div", _hoisted_4$a, [
|
|
11607
|
-
vue.createVNode(_sfc_main$
|
|
11812
|
+
vue.createVNode(_sfc_main$x, { class: "mb-0! min-w-0 grow balance-text whitespace-normal" }, {
|
|
11608
11813
|
default: vue.withCtx(() => [
|
|
11609
11814
|
vue.createTextVNode(vue.toDisplayString(__props.label), 1)
|
|
11610
11815
|
]),
|
|
11611
11816
|
_: 1
|
|
11612
11817
|
}),
|
|
11613
|
-
vue.createVNode(_sfc_main$
|
|
11818
|
+
vue.createVNode(_sfc_main$N, {
|
|
11614
11819
|
icon: "cross",
|
|
11615
11820
|
size: 28,
|
|
11616
11821
|
"aria-label": __props.closeAriaLabel,
|
|
@@ -11628,7 +11833,7 @@ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
|
|
|
11628
11833
|
vue.createTextVNode(vue.toDisplayString(__props.body), 1)
|
|
11629
11834
|
])
|
|
11630
11835
|
]),
|
|
11631
|
-
vue.createVNode(_sfc_main$
|
|
11836
|
+
vue.createVNode(_sfc_main$N, {
|
|
11632
11837
|
icon: "cross",
|
|
11633
11838
|
size: 28,
|
|
11634
11839
|
"aria-label": __props.closeAriaLabel,
|
|
@@ -12126,7 +12331,7 @@ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
|
|
|
12126
12331
|
vue.createElementVNode("div", _hoisted_1$e, [
|
|
12127
12332
|
!singleItemName.value.length ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$a, [
|
|
12128
12333
|
vue.createElementVNode("div", _hoisted_3$a, [
|
|
12129
|
-
vue.createVNode(_sfc_main$
|
|
12334
|
+
vue.createVNode(_sfc_main$t, vue.mergeProps({
|
|
12130
12335
|
ref_key: "inputComponentRef",
|
|
12131
12336
|
ref: inputComponentRef,
|
|
12132
12337
|
label: __props.label,
|
|
@@ -12160,7 +12365,7 @@ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
|
|
|
12160
12365
|
style: vue.normalizeStyle(listWrapperStyle.value)
|
|
12161
12366
|
}, [
|
|
12162
12367
|
__props.loading ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$6, [
|
|
12163
|
-
vue.createVNode(_sfc_main$
|
|
12368
|
+
vue.createVNode(_sfc_main$G, {
|
|
12164
12369
|
color: "blue",
|
|
12165
12370
|
size: "48px"
|
|
12166
12371
|
})
|
|
@@ -13235,7 +13440,7 @@ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
|
|
|
13235
13440
|
vue.createElementVNode("div", _hoisted_1$d, [
|
|
13236
13441
|
vue.createElementVNode("div", _hoisted_2$9, [
|
|
13237
13442
|
vue.createElementVNode("div", _hoisted_3$9, [
|
|
13238
|
-
vue.createVNode(_sfc_main$
|
|
13443
|
+
vue.createVNode(_sfc_main$t, vue.mergeProps({
|
|
13239
13444
|
ref_key: "inputComponentRef",
|
|
13240
13445
|
ref: inputComponentRef,
|
|
13241
13446
|
label: __props.label,
|
|
@@ -13271,19 +13476,19 @@ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
|
|
|
13271
13476
|
class: vue.normalizeClass([headerClasses.value, "flex items-center justify-between gap-3 min-h-[53px]"])
|
|
13272
13477
|
}, [
|
|
13273
13478
|
vue.createElementVNode("div", _hoisted_4$8, [
|
|
13274
|
-
vue.createVNode(_sfc_main$
|
|
13479
|
+
vue.createVNode(_sfc_main$u, null, {
|
|
13275
13480
|
default: vue.withCtx(() => [
|
|
13276
13481
|
vue.createTextVNode(vue.toDisplayString(searchTerm.value && searchTerm.value.length ? `${totalMatchingItems.value} ${__props.searchContext.linkWord} ${totalCount.value} ${__props.searchContext.context}` : `${totalCount.value} ${__props.searchContext.context}`), 1)
|
|
13277
13482
|
]),
|
|
13278
13483
|
_: 1
|
|
13279
13484
|
}),
|
|
13280
|
-
isSearching.value ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
13485
|
+
isSearching.value ? (vue.openBlock(), vue.createBlock(_sfc_main$G, {
|
|
13281
13486
|
key: 0,
|
|
13282
13487
|
color: "blue",
|
|
13283
13488
|
size: "20px"
|
|
13284
13489
|
})) : vue.createCommentVNode("", true)
|
|
13285
13490
|
]),
|
|
13286
|
-
__props.multiple && __props.showSelectedToggle && selectedItems.value.length > 0 ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
13491
|
+
__props.multiple && __props.showSelectedToggle && selectedItems.value.length > 0 ? (vue.openBlock(), vue.createBlock(_sfc_main$z, {
|
|
13287
13492
|
key: 0,
|
|
13288
13493
|
label: `${__props.selectedToggleLabel} (${selectedItems.value.length})`,
|
|
13289
13494
|
checked: showSelectedOnly.value,
|
|
@@ -13318,7 +13523,7 @@ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
|
|
|
13318
13523
|
class: vue.normalizeClass([labelClasses.value, listItemClasses.value]),
|
|
13319
13524
|
style: vue.normalizeStyle(vue.unref(optionPaddingStyle)(item))
|
|
13320
13525
|
}, [
|
|
13321
|
-
__props.multiple ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
13526
|
+
__props.multiple ? (vue.openBlock(), vue.createBlock(_sfc_main$z, {
|
|
13322
13527
|
key: 0,
|
|
13323
13528
|
id: `search-select-radio-${index}`,
|
|
13324
13529
|
name: `search-select-checkbox-group-${inputId}`,
|
|
@@ -13335,7 +13540,7 @@ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
|
|
|
13335
13540
|
}, null, 8, _hoisted_8$3)
|
|
13336
13541
|
]),
|
|
13337
13542
|
_: 2
|
|
13338
|
-
}, 1032, ["id", "name", "checked", "onChange"])) : (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
13543
|
+
}, 1032, ["id", "name", "checked", "onChange"])) : (vue.openBlock(), vue.createBlock(_sfc_main$y, {
|
|
13339
13544
|
key: 1,
|
|
13340
13545
|
id: `search-select-radio-${index}`,
|
|
13341
13546
|
name: "search-select-radio-group",
|
|
@@ -13370,7 +13575,7 @@ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
|
|
|
13370
13575
|
_cache[2] || (_cache[2] = vue.withKeys(vue.withModifiers(($event) => !__props.loadingMore && handleLoadMore(), ["prevent"]), ["space"]))
|
|
13371
13576
|
]
|
|
13372
13577
|
}, [
|
|
13373
|
-
vue.createVNode(_sfc_main$
|
|
13578
|
+
vue.createVNode(_sfc_main$N, {
|
|
13374
13579
|
icon: "sync",
|
|
13375
13580
|
loading: __props.loadingMore,
|
|
13376
13581
|
"aria-label": __props.loadingMore ? resolvedLoadingMoreLabel.value : resolvedLoadMoreLabel.value,
|
|
@@ -13384,7 +13589,7 @@ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
|
|
|
13384
13589
|
], 64)) : (vue.openBlock(), vue.createElementBlock("ul", _hoisted_12, [
|
|
13385
13590
|
vue.createElementVNode("li", _hoisted_13, [
|
|
13386
13591
|
!isSearching.value ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_14, vue.toDisplayString(__props.noResultPrompt), 1)) : vue.createCommentVNode("", true),
|
|
13387
|
-
isSearching.value ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
13592
|
+
isSearching.value ? (vue.openBlock(), vue.createBlock(_sfc_main$G, {
|
|
13388
13593
|
key: 1,
|
|
13389
13594
|
color: "blue",
|
|
13390
13595
|
size: "20px"
|
|
@@ -14130,7 +14335,7 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
|
|
|
14130
14335
|
class: vue.normalizeClass("pt-2 pb-2")
|
|
14131
14336
|
}, [
|
|
14132
14337
|
vue.createElementVNode("div", _hoisted_1$c, [
|
|
14133
|
-
hasChildrenNodes.value ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
14338
|
+
hasChildrenNodes.value ? (vue.openBlock(), vue.createBlock(_sfc_main$N, vue.mergeProps({
|
|
14134
14339
|
key: 0,
|
|
14135
14340
|
onClick: _cache[0] || (_cache[0] = ($event) => vue.unref(treeState)?.toggleExpandNode(props.nodeId))
|
|
14136
14341
|
}, { "aria-label": props.title ? childrenToggleAriaLabel(props.title) : void 0 }, {
|
|
@@ -14143,7 +14348,7 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
|
|
|
14143
14348
|
style: vue.normalizeStyle({ minWidth: `${__props.indentation}px` })
|
|
14144
14349
|
}, null, 4)) : vue.createCommentVNode("", true),
|
|
14145
14350
|
vue.createElementVNode("div", _hoisted_2$8, [
|
|
14146
|
-
vue.createVNode(_sfc_main$
|
|
14351
|
+
vue.createVNode(_sfc_main$z, {
|
|
14147
14352
|
id: `checkbox-${props.nodeId}`,
|
|
14148
14353
|
checked: nodeIsSelected.value,
|
|
14149
14354
|
indeterminate: nodeIsIndeterminate.value,
|
|
@@ -14162,7 +14367,7 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
|
|
|
14162
14367
|
}, 8, ["id", "checked", "indeterminate"])
|
|
14163
14368
|
]),
|
|
14164
14369
|
shouldShowPopoverActions.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$4, [
|
|
14165
|
-
vue.createVNode(_sfc_main$
|
|
14370
|
+
vue.createVNode(_sfc_main$N, vue.mergeProps({
|
|
14166
14371
|
ref_key: "triggerRef",
|
|
14167
14372
|
ref: triggerRef,
|
|
14168
14373
|
icon: "more",
|
|
@@ -14210,7 +14415,7 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
|
|
|
14210
14415
|
},
|
|
14211
14416
|
class: "cursor-pointer"
|
|
14212
14417
|
}, [
|
|
14213
|
-
vue.createVNode(_sfc_main$
|
|
14418
|
+
vue.createVNode(_sfc_main$y, {
|
|
14214
14419
|
modelValue: selectedOption.value,
|
|
14215
14420
|
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => selectedOption.value = $event),
|
|
14216
14421
|
id: `tree-popover-${props.nodeId}-${option.value}`,
|
|
@@ -14222,7 +14427,7 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
|
|
|
14222
14427
|
], 8, _hoisted_8$2);
|
|
14223
14428
|
}), 64))
|
|
14224
14429
|
]),
|
|
14225
|
-
vue.createVNode(_sfc_main$
|
|
14430
|
+
vue.createVNode(_sfc_main$N, vue.mergeProps({
|
|
14226
14431
|
icon: "cross",
|
|
14227
14432
|
id: "tree-popover-close-button",
|
|
14228
14433
|
size: 24,
|
|
@@ -14372,7 +14577,7 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
|
|
|
14372
14577
|
ref: searchContainerRef,
|
|
14373
14578
|
class: "pb-4"
|
|
14374
14579
|
}, [
|
|
14375
|
-
vue.createVNode(_sfc_main$
|
|
14580
|
+
vue.createVNode(_sfc_main$t, {
|
|
14376
14581
|
value: vue.unref(treeState)?.searchTerm?.value ?? "",
|
|
14377
14582
|
onInput: _cache[0] || (_cache[0] = ($event) => vue.unref(treeState)?.setSearchTerm($event.target.value)),
|
|
14378
14583
|
class: "w-full",
|
|
@@ -14389,7 +14594,7 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
|
|
|
14389
14594
|
props.searchCountTemplate && vue.unref(treeState)?.searchTerm?.value && String(vue.unref(treeState)?.searchTerm?.value || "").trim().length >= (vue.unref(treeState)?.triggerLength ?? 1) ? (vue.openBlock(), vue.createElementBlock("h2", _hoisted_2$7, vue.toDisplayString(props.searchCountTemplate.replace("[[filteredNodes]]", vue.unref(treeState)?.filteredMatchCount.value.toString()).replace("[[totalNodes]]", totalNodeCount.value.toString())), 1)) : (vue.openBlock(), vue.createElementBlock("h2", _hoisted_3$7, vue.toDisplayString(props.searchCountTemplateUnfiltered?.replace("[[totalNodes]]", totalNodeCount.value.toString()).replace("[[totalNodes]]", totalNodeCount.value.toString())), 1))
|
|
14390
14595
|
])) : vue.createCommentVNode("", true)
|
|
14391
14596
|
], 512)) : vue.createCommentVNode("", true),
|
|
14392
|
-
vue.unref(treeState)?.isEmptySearchResult?.value ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
14597
|
+
vue.unref(treeState)?.isEmptySearchResult?.value ? (vue.openBlock(), vue.createBlock(_sfc_main$L, {
|
|
14393
14598
|
key: 1,
|
|
14394
14599
|
class: "mt-4"
|
|
14395
14600
|
}, {
|
|
@@ -14397,7 +14602,7 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
|
|
|
14397
14602
|
vue.createTextVNode(vue.toDisplayString(props.searchResultNoMatchesTitle), 1)
|
|
14398
14603
|
]),
|
|
14399
14604
|
default: vue.withCtx(() => [
|
|
14400
|
-
vue.createVNode(_sfc_main$
|
|
14605
|
+
vue.createVNode(_sfc_main$u, null, {
|
|
14401
14606
|
default: vue.withCtx(() => [
|
|
14402
14607
|
vue.createTextVNode(vue.toDisplayString(props.searchResultNoMatchesBody), 1)
|
|
14403
14608
|
]),
|
|
@@ -14489,7 +14694,7 @@ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
|
|
|
14489
14694
|
return vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({ class: "block mb-4" }, rootAttrs.value), [
|
|
14490
14695
|
hasContent.value ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
|
|
14491
14696
|
vue.createElementVNode("span", null, vue.toDisplayString(truncatedText.value), 1),
|
|
14492
|
-
isTruncated.value ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
14697
|
+
isTruncated.value ? (vue.openBlock(), vue.createBlock(_sfc_main$F, {
|
|
14493
14698
|
key: 0,
|
|
14494
14699
|
icon: isOpen.value ? "arrowUp" : "arrowDown",
|
|
14495
14700
|
iconPos: "right",
|
|
@@ -16144,12 +16349,12 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
|
|
|
16144
16349
|
vue.createElementVNode("span", {
|
|
16145
16350
|
class: vue.normalizeClass(weekdayLabelClasses.value)
|
|
16146
16351
|
}, [
|
|
16147
|
-
__props.isToday ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
16352
|
+
__props.isToday ? (vue.openBlock(), vue.createBlock(_sfc_main$u, { key: 0 }, {
|
|
16148
16353
|
default: vue.withCtx(() => [
|
|
16149
16354
|
vue.createTextVNode(vue.toDisplayString(vue.unref(t)("FdsWeekCalendar.today")), 1)
|
|
16150
16355
|
]),
|
|
16151
16356
|
_: 1
|
|
16152
|
-
})) : (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
16357
|
+
})) : (vue.openBlock(), vue.createBlock(_sfc_main$u, { key: 1 }, {
|
|
16153
16358
|
default: vue.withCtx(() => [
|
|
16154
16359
|
vue.createTextVNode(vue.toDisplayString(weekdayLabel.value), 1)
|
|
16155
16360
|
]),
|
|
@@ -16309,13 +16514,13 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
|
|
|
16309
16514
|
vue.createElementVNode("div", _hoisted_3$6, [
|
|
16310
16515
|
vue.createElementVNode("p", _hoisted_4$6, vue.toDisplayString(weekText.value), 1),
|
|
16311
16516
|
vue.createElementVNode("div", _hoisted_5$6, [
|
|
16312
|
-
vue.createVNode(_sfc_main$
|
|
16517
|
+
vue.createVNode(_sfc_main$N, {
|
|
16313
16518
|
icon: "arrowLeft",
|
|
16314
16519
|
disabled: disableLastWeekInteraction.value,
|
|
16315
16520
|
"aria-label": vue.unref(t)("FdsWeekCalendar.previousWeek"),
|
|
16316
16521
|
onClick: decrementWeek
|
|
16317
16522
|
}, null, 8, ["disabled", "aria-label"]),
|
|
16318
|
-
vue.createVNode(_sfc_main$
|
|
16523
|
+
vue.createVNode(_sfc_main$N, {
|
|
16319
16524
|
icon: "arrowRight",
|
|
16320
16525
|
disabled: disableNextWeekInteraction.value,
|
|
16321
16526
|
"aria-label": vue.unref(t)("FdsWeekCalendar.nextWeek"),
|
|
@@ -16351,7 +16556,7 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
|
|
|
16351
16556
|
}, 8, ["enter-active-class", "leave-active-class", "enter-from-class", "leave-to-class"])
|
|
16352
16557
|
]),
|
|
16353
16558
|
__props.loading?.loading ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$3, [
|
|
16354
|
-
vue.createVNode(_sfc_main$
|
|
16559
|
+
vue.createVNode(_sfc_main$G),
|
|
16355
16560
|
vue.createElementVNode("p", _hoisted_8$1, vue.toDisplayString(__props.loading.label), 1)
|
|
16356
16561
|
])) : vue.createCommentVNode("", true)
|
|
16357
16562
|
])
|
|
@@ -16832,7 +17037,7 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
|
|
|
16832
17037
|
vue.createElementVNode("span", {
|
|
16833
17038
|
class: vue.normalizeClass(["relative mb-6 flex flex-col items-center text-blue-600 font-bold justify-center transition-all duration-200 ease-in-out rounded-full w-[44px] h-[44px] bg-white-solid", setStepClasses(entry.index)])
|
|
16834
17039
|
}, [
|
|
16835
|
-
entry.index >= internalCompletedTo.value + 1 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_7$2, vue.toDisplayString(entry.index + 1), 1)) : (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
17040
|
+
entry.index >= internalCompletedTo.value + 1 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_7$2, vue.toDisplayString(entry.index + 1), 1)) : (vue.openBlock(), vue.createBlock(_sfc_main$O, {
|
|
16836
17041
|
key: 1,
|
|
16837
17042
|
name: "checkmark",
|
|
16838
17043
|
size: 24
|
|
@@ -19020,7 +19225,7 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
|
|
|
19020
19225
|
"aria-hidden": "true",
|
|
19021
19226
|
onMousedown: vue.withModifiers(onArrowPointerDown, ["prevent"])
|
|
19022
19227
|
}, [
|
|
19023
|
-
vue.createVNode(_sfc_main$
|
|
19228
|
+
vue.createVNode(_sfc_main$O, {
|
|
19024
19229
|
name: "arrowDown",
|
|
19025
19230
|
size: 24,
|
|
19026
19231
|
class: vue.normalizeClass(arrowClasses.value)
|
|
@@ -19062,7 +19267,7 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
|
|
|
19062
19267
|
vue.createElementVNode("span", _hoisted_10, "(" + vue.toDisplayString(vue.unref(t)("common.plus")) + vue.toDisplayString(option.countryCode) + ")", 1)
|
|
19063
19268
|
]),
|
|
19064
19269
|
vue.createElementVNode("span", _hoisted_11, [
|
|
19065
|
-
option.value === country.value ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
19270
|
+
option.value === country.value ? (vue.openBlock(), vue.createBlock(_sfc_main$O, {
|
|
19066
19271
|
key: 0,
|
|
19067
19272
|
name: "check",
|
|
19068
19273
|
size: 24,
|
|
@@ -19299,7 +19504,7 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
|
|
|
19299
19504
|
class: vue.normalizeClass(["mb-0! shrink-0", __props.selectClass ?? ""]),
|
|
19300
19505
|
onNoCountryResults
|
|
19301
19506
|
}, null, 8, ["modelValue", "items", "valid", "disabled", "ariaLabel", "data-testid", "class"]),
|
|
19302
|
-
vue.createVNode(_sfc_main$
|
|
19507
|
+
vue.createVNode(_sfc_main$t, vue.mergeProps({
|
|
19303
19508
|
"model-value": vue.unref(nationalNumber),
|
|
19304
19509
|
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => nationalNumber.value = $event ?? ""),
|
|
19305
19510
|
mask: phoneMask.value,
|
|
@@ -19767,7 +19972,7 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
|
|
|
19767
19972
|
}
|
|
19768
19973
|
return (_ctx, _cache) => {
|
|
19769
19974
|
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$4, [
|
|
19770
|
-
vue.createVNode(_sfc_main$
|
|
19975
|
+
vue.createVNode(_sfc_main$t, vue.mergeProps({
|
|
19771
19976
|
"model-value": modelValue.value,
|
|
19772
19977
|
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event ?? ""),
|
|
19773
19978
|
mask: ssnMask.value,
|
|
@@ -19914,7 +20119,7 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
|
|
|
19914
20119
|
[vue.vModelSelect, internalValue.value]
|
|
19915
20120
|
]),
|
|
19916
20121
|
vue.createElementVNode("div", _hoisted_6, [
|
|
19917
|
-
vue.createVNode(_sfc_main$
|
|
20122
|
+
vue.createVNode(_sfc_main$O, {
|
|
19918
20123
|
name: "arrowDown",
|
|
19919
20124
|
size: 24,
|
|
19920
20125
|
class: vue.normalizeClass({
|
|
@@ -20081,12 +20286,12 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
|
|
|
20081
20286
|
vue.createElementVNode("div", {
|
|
20082
20287
|
class: vue.normalizeClass(validationIconClasses.value)
|
|
20083
20288
|
}, [
|
|
20084
|
-
isInvalid.value ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
20289
|
+
isInvalid.value ? (vue.openBlock(), vue.createBlock(_sfc_main$O, {
|
|
20085
20290
|
key: 0,
|
|
20086
20291
|
name: "alert",
|
|
20087
20292
|
class: "fill-red-600"
|
|
20088
20293
|
})) : vue.createCommentVNode("", true),
|
|
20089
|
-
isValid2.value ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
20294
|
+
isValid2.value ? (vue.openBlock(), vue.createBlock(_sfc_main$O, {
|
|
20090
20295
|
key: 1,
|
|
20091
20296
|
name: "bigSuccess"
|
|
20092
20297
|
})) : vue.createCommentVNode("", true)
|
|
@@ -20177,7 +20382,7 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
|
|
|
20177
20382
|
vue.unref(hasSlot) ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2, [
|
|
20178
20383
|
vue.renderSlot(_ctx.$slots, "default")
|
|
20179
20384
|
])) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_3, vue.toDisplayString(__props.heading), 1)),
|
|
20180
|
-
vue.createVNode(_sfc_main$
|
|
20385
|
+
vue.createVNode(_sfc_main$O, {
|
|
20181
20386
|
name: iconName.value,
|
|
20182
20387
|
size: "24px",
|
|
20183
20388
|
class: "fill-blue-500 ml-1"
|
|
@@ -20409,7 +20614,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
20409
20614
|
});
|
|
20410
20615
|
return (_ctx, _cache) => {
|
|
20411
20616
|
return vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({ class: wrapperClasses.value }, rootAttrs.value), [
|
|
20412
|
-
__props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
20617
|
+
__props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$G, {
|
|
20413
20618
|
key: 0,
|
|
20414
20619
|
size: "24px",
|
|
20415
20620
|
color: "blue",
|
|
@@ -20618,6 +20823,302 @@ const teardownRouterLinkInterceptor = () => {
|
|
|
20618
20823
|
}
|
|
20619
20824
|
globalRouter = null;
|
|
20620
20825
|
};
|
|
20826
|
+
const isArr = (v) => Array.isArray(v);
|
|
20827
|
+
const clone = (v) => isArr(v) ? [...v] : v;
|
|
20828
|
+
const cloneRecord = (defaults2) => {
|
|
20829
|
+
const out = {};
|
|
20830
|
+
for (const k in defaults2) {
|
|
20831
|
+
out[k] = clone(defaults2[k]);
|
|
20832
|
+
}
|
|
20833
|
+
return out;
|
|
20834
|
+
};
|
|
20835
|
+
const isDefault = (v, def) => {
|
|
20836
|
+
if (isArr(def)) return isArr(v) && v.length === 0;
|
|
20837
|
+
return v === def;
|
|
20838
|
+
};
|
|
20839
|
+
const parseValue = (key, query, def) => {
|
|
20840
|
+
const raw = query[key];
|
|
20841
|
+
if (isArr(def)) {
|
|
20842
|
+
if (raw === void 0 || raw === null) return [];
|
|
20843
|
+
if (Array.isArray(raw)) return raw.filter((x) => x != null).map(String);
|
|
20844
|
+
return [String(raw)];
|
|
20845
|
+
}
|
|
20846
|
+
if (typeof def === "boolean") return raw === "true";
|
|
20847
|
+
if (typeof def === "number") {
|
|
20848
|
+
if (raw === void 0 || raw === null || raw === "") return def;
|
|
20849
|
+
const n = Number(Array.isArray(raw) ? raw[0] : raw);
|
|
20850
|
+
return Number.isFinite(n) ? n : def;
|
|
20851
|
+
}
|
|
20852
|
+
if (raw === void 0 || raw === null) return def;
|
|
20853
|
+
return String(Array.isArray(raw) ? raw[0] : raw);
|
|
20854
|
+
};
|
|
20855
|
+
const serializeValue = (v, def) => {
|
|
20856
|
+
if (isDefault(v, def)) return void 0;
|
|
20857
|
+
if (isArr(def)) return isArr(v) && v.length > 0 ? v : void 0;
|
|
20858
|
+
if (typeof def === "boolean") return v === true ? "true" : void 0;
|
|
20859
|
+
if (typeof def === "number") return String(v);
|
|
20860
|
+
if (typeof v === "string" && v !== "") return v;
|
|
20861
|
+
return void 0;
|
|
20862
|
+
};
|
|
20863
|
+
const normalizeQuery = (q) => {
|
|
20864
|
+
const out = {};
|
|
20865
|
+
for (const k of Object.keys(q).sort()) {
|
|
20866
|
+
const v = q[k];
|
|
20867
|
+
if (v === void 0 || v === null) continue;
|
|
20868
|
+
if (Array.isArray(v)) {
|
|
20869
|
+
const items = v.filter((x) => x != null).map(String);
|
|
20870
|
+
if (items.length) out[k] = items;
|
|
20871
|
+
} else {
|
|
20872
|
+
out[k] = String(v);
|
|
20873
|
+
}
|
|
20874
|
+
}
|
|
20875
|
+
return out;
|
|
20876
|
+
};
|
|
20877
|
+
const queriesEqual = (a, b) => JSON.stringify(normalizeQuery(a)) === JSON.stringify(normalizeQuery(b));
|
|
20878
|
+
const statesEqual = (a, b) => {
|
|
20879
|
+
for (const k in a) {
|
|
20880
|
+
const av = a[k];
|
|
20881
|
+
const bv = b[k];
|
|
20882
|
+
if (isArr(av)) {
|
|
20883
|
+
if (!isArr(bv) || av.length !== bv.length || av.some((x, i) => x !== bv[i])) return false;
|
|
20884
|
+
} else if (av !== bv) {
|
|
20885
|
+
return false;
|
|
20886
|
+
}
|
|
20887
|
+
}
|
|
20888
|
+
return true;
|
|
20889
|
+
};
|
|
20890
|
+
const applyInPlace = (target, source, defaults2) => {
|
|
20891
|
+
for (const k in defaults2) {
|
|
20892
|
+
const next = source[k];
|
|
20893
|
+
const current = target[k];
|
|
20894
|
+
if (isArr(defaults2[k])) {
|
|
20895
|
+
const na = next;
|
|
20896
|
+
const ca = current;
|
|
20897
|
+
if (na.length !== ca.length || na.some((x, i) => x !== ca[i])) {
|
|
20898
|
+
ca.splice(0, ca.length, ...na);
|
|
20899
|
+
}
|
|
20900
|
+
} else if (current !== next) {
|
|
20901
|
+
target[k] = next;
|
|
20902
|
+
}
|
|
20903
|
+
}
|
|
20904
|
+
};
|
|
20905
|
+
const copyPlain = (source, target, keys) => {
|
|
20906
|
+
for (const k of keys) {
|
|
20907
|
+
const v = source[k];
|
|
20908
|
+
if (isArr(v)) {
|
|
20909
|
+
const ca = target[k];
|
|
20910
|
+
if (Array.isArray(ca)) {
|
|
20911
|
+
ca.splice(0, ca.length, ...v);
|
|
20912
|
+
} else {
|
|
20913
|
+
target[k] = [...v];
|
|
20914
|
+
}
|
|
20915
|
+
} else {
|
|
20916
|
+
target[k] = clone(v);
|
|
20917
|
+
}
|
|
20918
|
+
}
|
|
20919
|
+
};
|
|
20920
|
+
const SEARCH_KEY = "_search";
|
|
20921
|
+
const PAGE_KEY = "_page";
|
|
20922
|
+
const SORT_KEY = "_sort";
|
|
20923
|
+
function useRouteFilters(schema) {
|
|
20924
|
+
const route = vueRouter.useRoute();
|
|
20925
|
+
const router = vueRouter.useRouter();
|
|
20926
|
+
const filterDefaults = schema.filter;
|
|
20927
|
+
const draftDefaults = schema.draft ?? {};
|
|
20928
|
+
const sortDefault = schema.sort ?? {};
|
|
20929
|
+
const searchDefault = schema.search ?? "";
|
|
20930
|
+
const pageDefault = schema.page ?? 0;
|
|
20931
|
+
const draftKeys = Object.keys(draftDefaults);
|
|
20932
|
+
const schemaQueryKeys = /* @__PURE__ */ new Set([...Object.keys(filterDefaults), ...draftKeys, SEARCH_KEY, PAGE_KEY, SORT_KEY]);
|
|
20933
|
+
const filterState = vue.reactive(cloneRecord(filterDefaults));
|
|
20934
|
+
const draftState = vue.reactive(cloneRecord(draftDefaults));
|
|
20935
|
+
const searchRef = vue.ref(searchDefault);
|
|
20936
|
+
const pageRef = vue.ref(pageDefault);
|
|
20937
|
+
const defaultSortValue = sortDefault.field && sortDefault.dir ? `${sortDefault.dir === "desc" ? "-" : "+"}${sortDefault.field}` : "";
|
|
20938
|
+
const sortValueRef = vue.ref(defaultSortValue);
|
|
20939
|
+
const filterRaw = filterState;
|
|
20940
|
+
const draftRaw = draftState;
|
|
20941
|
+
const draftKeyStrings = draftKeys;
|
|
20942
|
+
let syncingFromRoute = false;
|
|
20943
|
+
let syncingToRoute = false;
|
|
20944
|
+
const readFromRoute = () => {
|
|
20945
|
+
const q = route.query;
|
|
20946
|
+
const parsed = cloneRecord(filterDefaults);
|
|
20947
|
+
for (const k in filterDefaults) {
|
|
20948
|
+
parsed[k] = parseValue(k, q, filterDefaults[k]);
|
|
20949
|
+
}
|
|
20950
|
+
if (!statesEqual(filterState, parsed)) {
|
|
20951
|
+
applyInPlace(filterState, parsed, filterDefaults);
|
|
20952
|
+
}
|
|
20953
|
+
const rawSearch = q[SEARCH_KEY];
|
|
20954
|
+
const nextSearch = rawSearch !== void 0 && rawSearch !== null ? String(Array.isArray(rawSearch) ? rawSearch[0] : rawSearch) : searchDefault;
|
|
20955
|
+
if (searchRef.value !== nextSearch) searchRef.value = nextSearch;
|
|
20956
|
+
const rawPage = q[PAGE_KEY];
|
|
20957
|
+
const nextPage = rawPage !== void 0 && rawPage !== null ? Number(Array.isArray(rawPage) ? rawPage[0] : rawPage) || pageDefault : pageDefault;
|
|
20958
|
+
if (pageRef.value !== nextPage) pageRef.value = nextPage;
|
|
20959
|
+
const rawSort = q[SORT_KEY];
|
|
20960
|
+
const nextSort = typeof rawSort === "string" && rawSort !== "" ? rawSort : defaultSortValue;
|
|
20961
|
+
if (sortValueRef.value !== nextSort) sortValueRef.value = nextSort;
|
|
20962
|
+
if (draftKeys.length > 0) {
|
|
20963
|
+
copyPlain(
|
|
20964
|
+
filterState,
|
|
20965
|
+
draftState,
|
|
20966
|
+
draftKeys
|
|
20967
|
+
);
|
|
20968
|
+
}
|
|
20969
|
+
};
|
|
20970
|
+
readFromRoute();
|
|
20971
|
+
const buildQuery = () => {
|
|
20972
|
+
const q = {};
|
|
20973
|
+
for (const k in route.query) {
|
|
20974
|
+
if (!schemaQueryKeys.has(k)) q[k] = route.query[k];
|
|
20975
|
+
}
|
|
20976
|
+
for (const k in filterDefaults) {
|
|
20977
|
+
const s = serializeValue(filterState[k], filterDefaults[k]);
|
|
20978
|
+
if (s !== void 0) q[k] = s;
|
|
20979
|
+
}
|
|
20980
|
+
if (searchRef.value !== searchDefault && searchRef.value !== "") {
|
|
20981
|
+
q[SEARCH_KEY] = searchRef.value;
|
|
20982
|
+
}
|
|
20983
|
+
if (pageRef.value !== pageDefault) {
|
|
20984
|
+
q[PAGE_KEY] = String(pageRef.value);
|
|
20985
|
+
}
|
|
20986
|
+
if (sortValueRef.value !== "" && sortValueRef.value !== defaultSortValue) {
|
|
20987
|
+
q[SORT_KEY] = sortValueRef.value;
|
|
20988
|
+
} else if (defaultSortValue !== "" && sortValueRef.value === defaultSortValue) ;
|
|
20989
|
+
return q;
|
|
20990
|
+
};
|
|
20991
|
+
const pushRoute = () => {
|
|
20992
|
+
if (syncingFromRoute || syncingToRoute) return;
|
|
20993
|
+
const next = buildQuery();
|
|
20994
|
+
if (queriesEqual(route.query, next)) return;
|
|
20995
|
+
syncingToRoute = true;
|
|
20996
|
+
return router.replace({ query: next }).then(() => void 0).finally(() => {
|
|
20997
|
+
syncingToRoute = false;
|
|
20998
|
+
});
|
|
20999
|
+
};
|
|
21000
|
+
vue.watch(
|
|
21001
|
+
() => route.query,
|
|
21002
|
+
() => {
|
|
21003
|
+
if (syncingToRoute) return;
|
|
21004
|
+
syncingFromRoute = true;
|
|
21005
|
+
readFromRoute();
|
|
21006
|
+
syncingFromRoute = false;
|
|
21007
|
+
}
|
|
21008
|
+
);
|
|
21009
|
+
vue.watch(
|
|
21010
|
+
filterState,
|
|
21011
|
+
() => {
|
|
21012
|
+
pushRoute();
|
|
21013
|
+
},
|
|
21014
|
+
{ deep: true }
|
|
21015
|
+
);
|
|
21016
|
+
vue.watch(searchRef, () => {
|
|
21017
|
+
pushRoute();
|
|
21018
|
+
});
|
|
21019
|
+
vue.watch(pageRef, () => {
|
|
21020
|
+
pushRoute();
|
|
21021
|
+
});
|
|
21022
|
+
vue.watch(sortValueRef, () => {
|
|
21023
|
+
pushRoute();
|
|
21024
|
+
});
|
|
21025
|
+
const sort = {
|
|
21026
|
+
get value() {
|
|
21027
|
+
return sortValueRef.value;
|
|
21028
|
+
},
|
|
21029
|
+
get field() {
|
|
21030
|
+
return sortValueRef.value.length > 1 ? sortValueRef.value.slice(1) : "";
|
|
21031
|
+
},
|
|
21032
|
+
get dir() {
|
|
21033
|
+
if (!sortValueRef.value) return "";
|
|
21034
|
+
return sortValueRef.value[0] === "-" ? "desc" : "asc";
|
|
21035
|
+
},
|
|
21036
|
+
toggle(field) {
|
|
21037
|
+
if (sortValueRef.value === `-${field}`) {
|
|
21038
|
+
sortValueRef.value = `+${field}`;
|
|
21039
|
+
} else if (sortValueRef.value === `+${field}`) {
|
|
21040
|
+
sortValueRef.value = "";
|
|
21041
|
+
} else {
|
|
21042
|
+
sortValueRef.value = `-${field}`;
|
|
21043
|
+
}
|
|
21044
|
+
},
|
|
21045
|
+
set(field, dir) {
|
|
21046
|
+
sortValueRef.value = `${dir === "desc" ? "-" : "+"}${field}`;
|
|
21047
|
+
},
|
|
21048
|
+
clear() {
|
|
21049
|
+
sortValueRef.value = "";
|
|
21050
|
+
},
|
|
21051
|
+
iconFor(field) {
|
|
21052
|
+
if (sortValueRef.value.slice(1) !== field) return "sort";
|
|
21053
|
+
return sortValueRef.value[0] === "-" ? "descending" : "ascending";
|
|
21054
|
+
}
|
|
21055
|
+
};
|
|
21056
|
+
const draft = {
|
|
21057
|
+
state: draftState,
|
|
21058
|
+
open() {
|
|
21059
|
+
copyPlain(filterRaw, draftRaw, draftKeyStrings);
|
|
21060
|
+
},
|
|
21061
|
+
apply() {
|
|
21062
|
+
copyPlain(draftRaw, filterRaw, draftKeyStrings);
|
|
21063
|
+
},
|
|
21064
|
+
cancel() {
|
|
21065
|
+
copyPlain(filterRaw, draftRaw, draftKeyStrings);
|
|
21066
|
+
},
|
|
21067
|
+
reset() {
|
|
21068
|
+
const defClone = cloneRecord(draftDefaults);
|
|
21069
|
+
copyPlain(defClone, draftRaw, draftKeyStrings);
|
|
21070
|
+
}
|
|
21071
|
+
};
|
|
21072
|
+
const reset = async () => {
|
|
21073
|
+
syncingFromRoute = true;
|
|
21074
|
+
applyInPlace(filterState, cloneRecord(filterDefaults), filterDefaults);
|
|
21075
|
+
searchRef.value = searchDefault;
|
|
21076
|
+
pageRef.value = pageDefault;
|
|
21077
|
+
sortValueRef.value = defaultSortValue;
|
|
21078
|
+
if (draftKeys.length > 0) {
|
|
21079
|
+
copyPlain(filterRaw, draftRaw, draftKeyStrings);
|
|
21080
|
+
}
|
|
21081
|
+
syncingFromRoute = false;
|
|
21082
|
+
await pushRoute();
|
|
21083
|
+
};
|
|
21084
|
+
const clear = async () => {
|
|
21085
|
+
syncingToRoute = true;
|
|
21086
|
+
applyInPlace(filterState, cloneRecord(filterDefaults), filterDefaults);
|
|
21087
|
+
searchRef.value = searchDefault;
|
|
21088
|
+
pageRef.value = pageDefault;
|
|
21089
|
+
sortValueRef.value = defaultSortValue;
|
|
21090
|
+
if (draftKeys.length > 0) {
|
|
21091
|
+
copyPlain(filterRaw, draftRaw, draftKeyStrings);
|
|
21092
|
+
}
|
|
21093
|
+
await router.replace({ query: {} }).finally(() => {
|
|
21094
|
+
syncingToRoute = false;
|
|
21095
|
+
});
|
|
21096
|
+
};
|
|
21097
|
+
return {
|
|
21098
|
+
filter: filterState,
|
|
21099
|
+
draft,
|
|
21100
|
+
sort,
|
|
21101
|
+
search: searchRef,
|
|
21102
|
+
page: pageRef,
|
|
21103
|
+
reset,
|
|
21104
|
+
clear
|
|
21105
|
+
};
|
|
21106
|
+
}
|
|
21107
|
+
const parseRouteFiltersFromQuery = (query, defaults2) => {
|
|
21108
|
+
const out = cloneRecord(defaults2);
|
|
21109
|
+
for (const k in defaults2) {
|
|
21110
|
+
out[k] = parseValue(k, query, defaults2[k]);
|
|
21111
|
+
}
|
|
21112
|
+
return out;
|
|
21113
|
+
};
|
|
21114
|
+
const serializeRouteFiltersToQuery = (state, defaults2) => {
|
|
21115
|
+
const q = {};
|
|
21116
|
+
for (const k in defaults2) {
|
|
21117
|
+
const s = serializeValue(state[k], defaults2[k]);
|
|
21118
|
+
if (s !== void 0) q[k] = s;
|
|
21119
|
+
}
|
|
21120
|
+
return q;
|
|
21121
|
+
};
|
|
20621
21122
|
function useRouteScrollPositions(currentRoute) {
|
|
20622
21123
|
const scrollPositions = vue.ref({});
|
|
20623
21124
|
vue.watch(
|
|
@@ -20699,33 +21200,34 @@ const FdsVueCorePlugin = {
|
|
|
20699
21200
|
app.provide(FDS_VUE_CORE_I18N_KEY, options.i18n);
|
|
20700
21201
|
}
|
|
20701
21202
|
app.component("FdsTreeView", _sfc_main$h);
|
|
20702
|
-
app.component("FdsButtonPrimary", _sfc_main$
|
|
20703
|
-
app.component("FdsButtonSecondary", _sfc_main$
|
|
20704
|
-
app.component("FdsButtonMinor", _sfc_main$
|
|
20705
|
-
app.component("FdsButtonIcon", _sfc_main$
|
|
20706
|
-
app.component("FdsButtonCopy", _sfc_main$
|
|
20707
|
-
app.component("FdsButtonDownload", _sfc_main$
|
|
20708
|
-
app.component("FdsDevMode", _sfc_main$
|
|
20709
|
-
app.component("FdsIcon", _sfc_main$
|
|
20710
|
-
app.component("FdsSpinner", _sfc_main$
|
|
20711
|
-
app.component("FdsRadio", _sfc_main$
|
|
20712
|
-
app.component("FdsCheckbox", _sfc_main$
|
|
21203
|
+
app.component("FdsButtonPrimary", _sfc_main$C);
|
|
21204
|
+
app.component("FdsButtonSecondary", _sfc_main$B);
|
|
21205
|
+
app.component("FdsButtonMinor", _sfc_main$F);
|
|
21206
|
+
app.component("FdsButtonIcon", _sfc_main$N);
|
|
21207
|
+
app.component("FdsButtonCopy", _sfc_main$E);
|
|
21208
|
+
app.component("FdsButtonDownload", _sfc_main$D);
|
|
21209
|
+
app.component("FdsDevMode", _sfc_main$p);
|
|
21210
|
+
app.component("FdsIcon", _sfc_main$O);
|
|
21211
|
+
app.component("FdsSpinner", _sfc_main$G);
|
|
21212
|
+
app.component("FdsRadio", _sfc_main$y);
|
|
21213
|
+
app.component("FdsCheckbox", _sfc_main$z);
|
|
20713
21214
|
app.component("FdsTextarea", _sfc_main$7);
|
|
20714
21215
|
app.component("FdsPhonenumber", _sfc_main$a);
|
|
20715
21216
|
app.component("FdsSsn", _sfc_main$9);
|
|
20716
21217
|
app.component("FdsSelect", _sfc_main$8);
|
|
20717
21218
|
app.component("FdsTable", _sfc_main$6);
|
|
20718
21219
|
app.component("FdsTableHead", _sfc_main$5);
|
|
20719
|
-
app.component("FdsInput", _sfc_main$
|
|
20720
|
-
app.component("FdsBlockContent", _sfc_main$
|
|
20721
|
-
app.component("FdsBlockInfo", _sfc_main$
|
|
20722
|
-
app.component("FdsBlockAlert", _sfc_main$
|
|
20723
|
-
app.component("FdsBlockExpander", _sfc_main$
|
|
20724
|
-
app.component("FdsBlockLink", _sfc_main$
|
|
20725
|
-
app.component("FdsSticker", _sfc_main$
|
|
20726
|
-
app.component("FdsTabs", _sfc_main$
|
|
20727
|
-
app.component("FdsTabsItem", _sfc_main$
|
|
20728
|
-
app.component("
|
|
21220
|
+
app.component("FdsInput", _sfc_main$t);
|
|
21221
|
+
app.component("FdsBlockContent", _sfc_main$L);
|
|
21222
|
+
app.component("FdsBlockInfo", _sfc_main$I);
|
|
21223
|
+
app.component("FdsBlockAlert", _sfc_main$M);
|
|
21224
|
+
app.component("FdsBlockExpander", _sfc_main$J);
|
|
21225
|
+
app.component("FdsBlockLink", _sfc_main$H);
|
|
21226
|
+
app.component("FdsSticker", _sfc_main$K);
|
|
21227
|
+
app.component("FdsTabs", _sfc_main$s);
|
|
21228
|
+
app.component("FdsTabsItem", _sfc_main$r);
|
|
21229
|
+
app.component("FdsDrawer", FdsDrawer);
|
|
21230
|
+
app.component("FdsModal", _sfc_main$v);
|
|
20729
21231
|
app.component("FdsPagination", _sfc_main$m);
|
|
20730
21232
|
app.component("FdsPopover", _sfc_main$l);
|
|
20731
21233
|
app.component("FdsSearchSelect", _sfc_main$k);
|
|
@@ -20737,52 +21239,53 @@ const FdsVueCorePlugin = {
|
|
|
20737
21239
|
app.component("FdsH2", _sfc_main$3);
|
|
20738
21240
|
app.component("FdsH3", _sfc_main$2);
|
|
20739
21241
|
app.component("FdsHr", _sfc_main$1);
|
|
20740
|
-
app.component("FdsLabel", _sfc_main$
|
|
21242
|
+
app.component("FdsLabel", _sfc_main$x);
|
|
20741
21243
|
app.component("FdsLead", _sfc_main$d);
|
|
20742
|
-
app.component("FdsMeta", _sfc_main$
|
|
21244
|
+
app.component("FdsMeta", _sfc_main$u);
|
|
20743
21245
|
app.component("FdsListHeading", _sfc_main);
|
|
20744
21246
|
}
|
|
20745
21247
|
};
|
|
20746
21248
|
exports.FDS_VUE_CORE_I18N_KEY = FDS_VUE_CORE_I18N_KEY;
|
|
20747
|
-
exports.FdsBlockAlert = _sfc_main$
|
|
20748
|
-
exports.FdsBlockContent = _sfc_main$
|
|
20749
|
-
exports.FdsBlockExpander = _sfc_main$
|
|
20750
|
-
exports.FdsBlockInfo = _sfc_main$
|
|
20751
|
-
exports.FdsBlockLink = _sfc_main$
|
|
20752
|
-
exports.FdsButtonCopy = _sfc_main$
|
|
20753
|
-
exports.FdsButtonDownload = _sfc_main$
|
|
20754
|
-
exports.FdsButtonIcon = _sfc_main$
|
|
20755
|
-
exports.FdsButtonMinor = _sfc_main$
|
|
20756
|
-
exports.FdsButtonPrimary = _sfc_main$
|
|
20757
|
-
exports.FdsButtonSecondary = _sfc_main$
|
|
20758
|
-
exports.FdsCheckbox = _sfc_main$
|
|
20759
|
-
exports.FdsDevMode = _sfc_main$
|
|
20760
|
-
exports.
|
|
21249
|
+
exports.FdsBlockAlert = _sfc_main$M;
|
|
21250
|
+
exports.FdsBlockContent = _sfc_main$L;
|
|
21251
|
+
exports.FdsBlockExpander = _sfc_main$J;
|
|
21252
|
+
exports.FdsBlockInfo = _sfc_main$I;
|
|
21253
|
+
exports.FdsBlockLink = _sfc_main$H;
|
|
21254
|
+
exports.FdsButtonCopy = _sfc_main$E;
|
|
21255
|
+
exports.FdsButtonDownload = _sfc_main$D;
|
|
21256
|
+
exports.FdsButtonIcon = _sfc_main$N;
|
|
21257
|
+
exports.FdsButtonMinor = _sfc_main$F;
|
|
21258
|
+
exports.FdsButtonPrimary = _sfc_main$C;
|
|
21259
|
+
exports.FdsButtonSecondary = _sfc_main$B;
|
|
21260
|
+
exports.FdsCheckbox = _sfc_main$z;
|
|
21261
|
+
exports.FdsDevMode = _sfc_main$p;
|
|
21262
|
+
exports.FdsDrawer = FdsDrawer;
|
|
21263
|
+
exports.FdsExitModal = _sfc_main$o;
|
|
20761
21264
|
exports.FdsH1 = _sfc_main$4;
|
|
20762
21265
|
exports.FdsH2 = _sfc_main$3;
|
|
20763
21266
|
exports.FdsH3 = _sfc_main$2;
|
|
20764
21267
|
exports.FdsHr = _sfc_main$1;
|
|
20765
|
-
exports.FdsIcon = _sfc_main$
|
|
20766
|
-
exports.FdsInput = _sfc_main$
|
|
20767
|
-
exports.FdsLabel = _sfc_main$
|
|
21268
|
+
exports.FdsIcon = _sfc_main$O;
|
|
21269
|
+
exports.FdsInput = _sfc_main$t;
|
|
21270
|
+
exports.FdsLabel = _sfc_main$x;
|
|
20768
21271
|
exports.FdsLead = _sfc_main$d;
|
|
20769
21272
|
exports.FdsListHeading = _sfc_main;
|
|
20770
|
-
exports.FdsMeta = _sfc_main$
|
|
20771
|
-
exports.FdsModal = _sfc_main$
|
|
21273
|
+
exports.FdsMeta = _sfc_main$u;
|
|
21274
|
+
exports.FdsModal = _sfc_main$v;
|
|
20772
21275
|
exports.FdsPagination = _sfc_main$m;
|
|
20773
21276
|
exports.FdsPhonenumber = _sfc_main$a;
|
|
20774
21277
|
exports.FdsPopover = _sfc_main$l;
|
|
20775
|
-
exports.FdsRadio = _sfc_main$
|
|
21278
|
+
exports.FdsRadio = _sfc_main$y;
|
|
20776
21279
|
exports.FdsSearchSelect = _sfc_main$k;
|
|
20777
21280
|
exports.FdsSearchSelectPro = _sfc_main$j;
|
|
20778
21281
|
exports.FdsSelect = _sfc_main$8;
|
|
20779
|
-
exports.FdsSpinner = _sfc_main$
|
|
21282
|
+
exports.FdsSpinner = _sfc_main$G;
|
|
20780
21283
|
exports.FdsSsn = _sfc_main$9;
|
|
20781
|
-
exports.FdsSticker = _sfc_main$
|
|
21284
|
+
exports.FdsSticker = _sfc_main$K;
|
|
20782
21285
|
exports.FdsTable = _sfc_main$6;
|
|
20783
21286
|
exports.FdsTableHead = _sfc_main$5;
|
|
20784
|
-
exports.FdsTabs = _sfc_main$
|
|
20785
|
-
exports.FdsTabsItem = _sfc_main$
|
|
21287
|
+
exports.FdsTabs = _sfc_main$s;
|
|
21288
|
+
exports.FdsTabsItem = _sfc_main$r;
|
|
20786
21289
|
exports.FdsTextarea = _sfc_main$7;
|
|
20787
21290
|
exports.FdsTreeView = _sfc_main$h;
|
|
20788
21291
|
exports.FdsTruncatedText = _sfc_main$g;
|
|
@@ -20811,7 +21314,9 @@ exports.isRelativeHref = isRelativeHref;
|
|
|
20811
21314
|
exports.logoFeelgoodColored = logoFeelgoodColored;
|
|
20812
21315
|
exports.logoFeelgoodLight = logoFeelgoodLight;
|
|
20813
21316
|
exports.normalizePidSearchValue = normalizePidSearchValue;
|
|
21317
|
+
exports.parseRouteFiltersFromQuery = parseRouteFiltersFromQuery;
|
|
20814
21318
|
exports.resolveRouterLinkTarget = resolveRouterLinkTarget;
|
|
21319
|
+
exports.serializeRouteFiltersToQuery = serializeRouteFiltersToQuery;
|
|
20815
21320
|
exports.setupExitConfirmationGuard = setupExitConfirmationGuard;
|
|
20816
21321
|
exports.setupRouterLinkInterceptor = setupRouterLinkInterceptor;
|
|
20817
21322
|
exports.shouldBlockNavigation = shouldBlockNavigation;
|
|
@@ -20829,6 +21334,7 @@ exports.useExitConfirmationGuardState = useExitConfirmationGuardState;
|
|
|
20829
21334
|
exports.useFileSizeValidation = useFileSizeValidation;
|
|
20830
21335
|
exports.useFileValidation = useFileValidation;
|
|
20831
21336
|
exports.useIsPid = useIsPid;
|
|
21337
|
+
exports.useRouteFilters = useRouteFilters;
|
|
20832
21338
|
exports.useRouteScrollPositions = useRouteScrollPositions;
|
|
20833
21339
|
exports.useTreeState = useTreeState;
|
|
20834
21340
|
exports.useViewportBreakpoint = useViewportBreakpoint;
|