@iris-ui-kit/vue 0.2.12 → 0.2.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin.cjs +324 -86
- package/dist/admin.cjs.map +1 -1
- package/dist/admin.js +1 -1
- package/dist/behaviors.d.cts +1 -1
- package/dist/behaviors.d.ts +1 -1
- package/dist/{chunk-A4H4AEVB.js → chunk-KIEJL6C6.js} +326 -88
- package/dist/chunk-KIEJL6C6.js.map +1 -0
- package/dist/index.cjs +357 -119
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +15 -15
- package/dist/chunk-A4H4AEVB.js.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -832,6 +832,253 @@ var IrisIcon = vue.defineComponent({
|
|
|
832
832
|
}
|
|
833
833
|
});
|
|
834
834
|
|
|
835
|
+
// src/admin/styles.ts
|
|
836
|
+
var __NAV_MENU_STYLE_ID = "iris-nav-menu-styles";
|
|
837
|
+
var CSS2 = `
|
|
838
|
+
:where(.iris-nav-menu) {
|
|
839
|
+
--iris-nav-indent-step: 16px;
|
|
840
|
+
--iris-nav-item-padding-inline: 10px;
|
|
841
|
+
--iris-nav-item-padding-block: 8px;
|
|
842
|
+
--iris-nav-item-border-radius: var(--iris-radius-md, 6px);
|
|
843
|
+
--iris-nav-item-hover: var(--iris-surface-hover, var(--iris-surface));
|
|
844
|
+
--iris-nav-item-height: 34px;
|
|
845
|
+
display: flex;
|
|
846
|
+
flex-direction: column;
|
|
847
|
+
align-items: stretch;
|
|
848
|
+
gap: 2px;
|
|
849
|
+
width: 100%;
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
:where(.iris-nav-menu--horizontal) {
|
|
853
|
+
flex-direction: row;
|
|
854
|
+
align-items: center;
|
|
855
|
+
width: auto;
|
|
856
|
+
}
|
|
857
|
+
|
|
858
|
+
:where(.iris-nav-menu-group) {
|
|
859
|
+
position: relative;
|
|
860
|
+
}
|
|
861
|
+
|
|
862
|
+
:where(.iris-nav-menu-item) {
|
|
863
|
+
appearance: none;
|
|
864
|
+
box-sizing: border-box;
|
|
865
|
+
display: flex;
|
|
866
|
+
flex: 0 1 auto;
|
|
867
|
+
align-items: center;
|
|
868
|
+
width: 100%;
|
|
869
|
+
min-height: var(--iris-nav-item-height);
|
|
870
|
+
border: none;
|
|
871
|
+
border-radius: var(--iris-nav-item-border-radius);
|
|
872
|
+
background: transparent;
|
|
873
|
+
color: var(--iris-foreground, var(--iris-color-text, var(--iris-foreground)));
|
|
874
|
+
font: inherit;
|
|
875
|
+
font-size: 14px;
|
|
876
|
+
line-height: 1.2;
|
|
877
|
+
font-weight: 400;
|
|
878
|
+
text-align: start;
|
|
879
|
+
cursor: pointer;
|
|
880
|
+
opacity: 1;
|
|
881
|
+
margin: 0;
|
|
882
|
+
gap: 10px;
|
|
883
|
+
padding-block: var(--iris-nav-item-padding-block);
|
|
884
|
+
padding-inline: var(--iris-nav-item-padding-inline);
|
|
885
|
+
text-overflow: ellipsis;
|
|
886
|
+
white-space: nowrap;
|
|
887
|
+
}
|
|
888
|
+
|
|
889
|
+
:where(.iris-nav-menu--horizontal .iris-nav-menu-item) {
|
|
890
|
+
width: auto;
|
|
891
|
+
padding-inline-start: var(--iris-nav-item-padding-inline);
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
:where(.iris-nav-menu-item[data-depth='0']) {
|
|
895
|
+
--iris-nav-item-padding-inline-start: 10px;
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
:where(.iris-nav-menu-item[data-depth='1']) {
|
|
899
|
+
--iris-nav-item-padding-inline-start: calc(12px + var(--iris-nav-indent-step));
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
:where(.iris-nav-menu-item[data-depth='2']) {
|
|
903
|
+
--iris-nav-item-padding-inline-start: calc(12px + var(--iris-nav-indent-step) * 2);
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
:where(.iris-nav-menu-item[data-depth='3']) {
|
|
907
|
+
--iris-nav-item-padding-inline-start: calc(12px + var(--iris-nav-indent-step) * 3);
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
:where(.iris-nav-menu-item[data-depth='4']) {
|
|
911
|
+
--iris-nav-item-padding-inline-start: calc(12px + var(--iris-nav-indent-step) * 4);
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
:where(.iris-nav-menu-item[data-depth='5']) {
|
|
915
|
+
--iris-nav-item-padding-inline-start: calc(12px + var(--iris-nav-indent-step) * 5);
|
|
916
|
+
}
|
|
917
|
+
|
|
918
|
+
:where(.iris-nav-menu-item[data-depth='6']) {
|
|
919
|
+
--iris-nav-item-padding-inline-start: calc(12px + var(--iris-nav-indent-step) * 6);
|
|
920
|
+
}
|
|
921
|
+
|
|
922
|
+
:where(.iris-nav-menu-item[data-depth='7']) {
|
|
923
|
+
--iris-nav-item-padding-inline-start: calc(12px + var(--iris-nav-indent-step) * 7);
|
|
924
|
+
}
|
|
925
|
+
|
|
926
|
+
:where(.iris-nav-menu-item[data-depth='8']) {
|
|
927
|
+
--iris-nav-item-padding-inline-start: calc(12px + var(--iris-nav-indent-step) * 8);
|
|
928
|
+
}
|
|
929
|
+
|
|
930
|
+
:where(.iris-nav-menu-item[data-depth='9']) {
|
|
931
|
+
--iris-nav-item-padding-inline-start: calc(12px + var(--iris-nav-indent-step) * 9);
|
|
932
|
+
}
|
|
933
|
+
|
|
934
|
+
:where(.iris-nav-menu--vertical .iris-nav-menu-item[data-depth]) {
|
|
935
|
+
padding-inline-start: var(--iris-nav-item-padding-inline-start);
|
|
936
|
+
}
|
|
937
|
+
|
|
938
|
+
:where(.iris-nav-menu-item:hover),
|
|
939
|
+
:where(.iris-nav-menu-item.is-hovered):not([disabled], .is-disabled) {
|
|
940
|
+
background: var(--iris-nav-item-hover);
|
|
941
|
+
}
|
|
942
|
+
|
|
943
|
+
:where(.iris-nav-menu-item[data-active='true']) {
|
|
944
|
+
background: var(--iris-primary);
|
|
945
|
+
color: var(--iris-primary-foreground, #fff);
|
|
946
|
+
font-weight: 600;
|
|
947
|
+
}
|
|
948
|
+
|
|
949
|
+
:where(.iris-nav-menu-item[data-active-trail='true']) {
|
|
950
|
+
color: var(--iris-primary);
|
|
951
|
+
font-weight: 600;
|
|
952
|
+
}
|
|
953
|
+
|
|
954
|
+
:where(.iris-nav-menu-item[disabled], .iris-nav-menu-item.is-disabled) {
|
|
955
|
+
cursor: not-allowed;
|
|
956
|
+
opacity: 0.5;
|
|
957
|
+
}
|
|
958
|
+
|
|
959
|
+
:where(.iris-nav-menu-item:focus-visible) {
|
|
960
|
+
outline: 2px solid var(--iris-ring, var(--iris-primary));
|
|
961
|
+
outline-offset: 1px;
|
|
962
|
+
}
|
|
963
|
+
|
|
964
|
+
:where(.iris-nav-menu-label) {
|
|
965
|
+
flex: 0 1 auto;
|
|
966
|
+
min-width: 0;
|
|
967
|
+
overflow: hidden;
|
|
968
|
+
text-overflow: ellipsis;
|
|
969
|
+
}
|
|
970
|
+
|
|
971
|
+
:where(.iris-nav-menu-badge) {
|
|
972
|
+
margin-inline-start: 6px;
|
|
973
|
+
font-size: 11px;
|
|
974
|
+
line-height: 1;
|
|
975
|
+
padding: 2px 6px;
|
|
976
|
+
border-radius: 999px;
|
|
977
|
+
background: var(--iris-danger, #e5484d);
|
|
978
|
+
color: #fff;
|
|
979
|
+
flex: 0 0 auto;
|
|
980
|
+
}
|
|
981
|
+
|
|
982
|
+
:where(.iris-nav-menu-arrow) {
|
|
983
|
+
flex: 0 0 auto;
|
|
984
|
+
opacity: 0.6;
|
|
985
|
+
transform: rotate(0deg);
|
|
986
|
+
transform-origin: center;
|
|
987
|
+
transition: transform 160ms ease;
|
|
988
|
+
margin-inline-start: auto;
|
|
989
|
+
}
|
|
990
|
+
|
|
991
|
+
:where(.iris-nav-menu-arrow[data-reversed='true']) {
|
|
992
|
+
transform: rotate(180deg);
|
|
993
|
+
}
|
|
994
|
+
|
|
995
|
+
:where(.iris-nav-menu-fallback-icon) {
|
|
996
|
+
display: inline-flex;
|
|
997
|
+
width: 20px;
|
|
998
|
+
height: 20px;
|
|
999
|
+
align-items: center;
|
|
1000
|
+
justify-content: center;
|
|
1001
|
+
font-weight: 700;
|
|
1002
|
+
}
|
|
1003
|
+
|
|
1004
|
+
:where(.iris-nav-menu-item.is-disabled) .iris-nav-menu-label {
|
|
1005
|
+
opacity: 0.75;
|
|
1006
|
+
}
|
|
1007
|
+
|
|
1008
|
+
:where(.iris-nav-menu-group--depth-0 > .iris-nav-menu-children) {
|
|
1009
|
+
display: none;
|
|
1010
|
+
}
|
|
1011
|
+
|
|
1012
|
+
:where(.iris-nav-menu-group--depth-1 > .iris-nav-menu-children),
|
|
1013
|
+
:where(.iris-nav-menu-group--depth-2 > .iris-nav-menu-children),
|
|
1014
|
+
:where(.iris-nav-menu-group--depth-3 > .iris-nav-menu-children),
|
|
1015
|
+
:where(.iris-nav-menu-group--depth-4 > .iris-nav-menu-children),
|
|
1016
|
+
:where(.iris-nav-menu-group--depth-5 > .iris-nav-menu-children),
|
|
1017
|
+
:where(.iris-nav-menu-group--depth-6 > .iris-nav-menu-children),
|
|
1018
|
+
:where(.iris-nav-menu-group--depth-7 > .iris-nav-menu-children),
|
|
1019
|
+
:where(.iris-nav-menu-group--depth-8 > .iris-nav-menu-children),
|
|
1020
|
+
:where(.iris-nav-menu-group--depth-9 > .iris-nav-menu-children),
|
|
1021
|
+
:where(.iris-nav-menu-group > .iris-nav-menu-children) {
|
|
1022
|
+
display: none;
|
|
1023
|
+
}
|
|
1024
|
+
|
|
1025
|
+
:where(.iris-nav-menu-group[data-open='true'] > .iris-nav-menu-children) {
|
|
1026
|
+
display: block;
|
|
1027
|
+
}
|
|
1028
|
+
|
|
1029
|
+
:where(.iris-nav-menu--horizontal .iris-nav-menu-group > .iris-nav-menu-children) {
|
|
1030
|
+
position: absolute;
|
|
1031
|
+
min-width: 220px;
|
|
1032
|
+
padding: 6px;
|
|
1033
|
+
border: 1px solid var(--iris-border);
|
|
1034
|
+
border-radius: var(--iris-radius-md, 6px);
|
|
1035
|
+
background: var(--iris-surface);
|
|
1036
|
+
box-shadow: var(--iris-shadow-md);
|
|
1037
|
+
}
|
|
1038
|
+
|
|
1039
|
+
:where(.iris-nav-menu--horizontal .iris-nav-menu-group[data-depth='0'] > .iris-nav-menu-children) {
|
|
1040
|
+
inset-block-start: 100%;
|
|
1041
|
+
inset-inline-start: 0;
|
|
1042
|
+
z-index: 60;
|
|
1043
|
+
}
|
|
1044
|
+
|
|
1045
|
+
:where(.iris-nav-menu--horizontal .iris-nav-menu-group[data-depth]:not([data-depth='0']) > .iris-nav-menu-children) {
|
|
1046
|
+
inset-block-start: 0;
|
|
1047
|
+
inset-inline-start: 100%;
|
|
1048
|
+
z-index: 61;
|
|
1049
|
+
}
|
|
1050
|
+
|
|
1051
|
+
:where(.iris-nav-menu--collapsed .iris-nav-menu-item) {
|
|
1052
|
+
justify-content: center;
|
|
1053
|
+
padding-inline-start: var(--iris-nav-item-padding-inline);
|
|
1054
|
+
}
|
|
1055
|
+
|
|
1056
|
+
:where(.iris-nav-menu-item.is-collapsed) {
|
|
1057
|
+
justify-content: center;
|
|
1058
|
+
padding-inline: var(--iris-nav-item-padding-inline);
|
|
1059
|
+
}
|
|
1060
|
+
|
|
1061
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1062
|
+
:where(.iris-nav-menu-arrow) {
|
|
1063
|
+
transition: none;
|
|
1064
|
+
}
|
|
1065
|
+
}
|
|
1066
|
+
`.trim();
|
|
1067
|
+
var installed2 = false;
|
|
1068
|
+
function installNavMenuStyles() {
|
|
1069
|
+
if (installed2) return;
|
|
1070
|
+
if (typeof document === "undefined") return;
|
|
1071
|
+
if (document.getElementById(__NAV_MENU_STYLE_ID)) {
|
|
1072
|
+
installed2 = true;
|
|
1073
|
+
return;
|
|
1074
|
+
}
|
|
1075
|
+
const style = document.createElement("style");
|
|
1076
|
+
style.id = __NAV_MENU_STYLE_ID;
|
|
1077
|
+
style.textContent = CSS2;
|
|
1078
|
+
document.head.appendChild(style);
|
|
1079
|
+
installed2 = true;
|
|
1080
|
+
}
|
|
1081
|
+
|
|
835
1082
|
// src/admin/NavMenu.ts
|
|
836
1083
|
var IrisNavMenu = vue.defineComponent({
|
|
837
1084
|
name: "IrisNavMenu",
|
|
@@ -858,6 +1105,7 @@ var IrisNavMenu = vue.defineComponent({
|
|
|
858
1105
|
"update:expandedKeys": (_keys) => true
|
|
859
1106
|
},
|
|
860
1107
|
setup(props, { emit, attrs }) {
|
|
1108
|
+
installNavMenuStyles();
|
|
861
1109
|
const { t } = useI18n();
|
|
862
1110
|
const tree = vue.computed(() => core.visibleNav(props.items));
|
|
863
1111
|
const activePath = vue.computed(
|
|
@@ -923,49 +1171,25 @@ var IrisNavMenu = vue.defineComponent({
|
|
|
923
1171
|
if (hoveredAtDepth) return hoveredAtDepth === key;
|
|
924
1172
|
return interactionKeyAtDepth(focusedBranches.value, depth) === key;
|
|
925
1173
|
};
|
|
926
|
-
const
|
|
927
|
-
const
|
|
928
|
-
return
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
font: "inherit",
|
|
939
|
-
fontSize: "14px",
|
|
940
|
-
fontWeight: opts.active || opts.trail ? "600" : "400",
|
|
941
|
-
textAlign: "start",
|
|
942
|
-
cursor: opts.disabled ? "not-allowed" : "pointer",
|
|
943
|
-
opacity: opts.disabled ? "0.5" : "1",
|
|
944
|
-
padding: props.collapsed ? "10px" : "8px 10px",
|
|
945
|
-
paddingInlineStart: props.collapsed || props.orientation === "horizontal" ? "10px" : `${12 + opts.depth * 16}px`,
|
|
946
|
-
justifyContent: props.collapsed ? "center" : "flex-start"
|
|
947
|
-
};
|
|
1174
|
+
const itemClass = (opts) => {
|
|
1175
|
+
const depth = Math.min(9, opts.depth);
|
|
1176
|
+
return [
|
|
1177
|
+
"iris-nav-menu-item",
|
|
1178
|
+
`iris-nav-menu-item--depth-${depth}`,
|
|
1179
|
+
`iris-nav-menu-item--${opts.branch ? "branch" : "leaf"}`,
|
|
1180
|
+
opts.active ? "is-active" : void 0,
|
|
1181
|
+
opts.trail ? "is-trail" : void 0,
|
|
1182
|
+
opts.hovered ? "is-hovered" : void 0,
|
|
1183
|
+
opts.open ? "is-open" : void 0,
|
|
1184
|
+
opts.disabled ? "is-disabled" : void 0
|
|
1185
|
+
].filter(Boolean);
|
|
948
1186
|
};
|
|
949
|
-
const hoverHandlers = (key) => ({
|
|
950
|
-
onMouseenter: () => hovered.value = key,
|
|
951
|
-
onMouseleave: () => {
|
|
952
|
-
if (hovered.value === key) hovered.value = null;
|
|
953
|
-
}
|
|
954
|
-
});
|
|
955
1187
|
const iconNode = (node, size = 18) => node.icon ? vue.h(IrisIcon, { name: node.icon, size }) : null;
|
|
956
1188
|
const badgeNode = (node) => node.badge !== void 0 && node.badge !== "" && !props.collapsed ? vue.h(
|
|
957
1189
|
"span",
|
|
958
1190
|
{
|
|
959
|
-
"
|
|
960
|
-
|
|
961
|
-
marginInlineStart: "auto",
|
|
962
|
-
fontSize: "11px",
|
|
963
|
-
lineHeight: "1",
|
|
964
|
-
padding: "2px 6px",
|
|
965
|
-
borderRadius: "999px",
|
|
966
|
-
background: "var(--iris-danger, #e5484d)",
|
|
967
|
-
color: "#fff"
|
|
968
|
-
}
|
|
1191
|
+
class: "iris-nav-menu-badge",
|
|
1192
|
+
"data-iris-nav-badge": ""
|
|
969
1193
|
},
|
|
970
1194
|
String(node.badge)
|
|
971
1195
|
) : null;
|
|
@@ -977,25 +1201,38 @@ var IrisNavMenu = vue.defineComponent({
|
|
|
977
1201
|
{
|
|
978
1202
|
key: node.key,
|
|
979
1203
|
type: "button",
|
|
1204
|
+
class: [
|
|
1205
|
+
...itemClass({
|
|
1206
|
+
depth: 0,
|
|
1207
|
+
active,
|
|
1208
|
+
trail: false,
|
|
1209
|
+
hovered: hovered.value === node.key,
|
|
1210
|
+
open: false,
|
|
1211
|
+
disabled: !!node.disabled,
|
|
1212
|
+
branch
|
|
1213
|
+
}),
|
|
1214
|
+
"is-collapsed"
|
|
1215
|
+
],
|
|
980
1216
|
"data-iris-nav-item": "",
|
|
981
1217
|
"data-key": node.key,
|
|
982
1218
|
"data-active": active ? "true" : void 0,
|
|
983
1219
|
"data-branch": branch ? "true" : void 0,
|
|
1220
|
+
"data-hovered": hovered.value === node.key ? "true" : void 0,
|
|
984
1221
|
disabled: node.disabled,
|
|
985
1222
|
title: node.title,
|
|
986
1223
|
"aria-label": branch ? `${node.title} (section)` : node.title,
|
|
987
1224
|
"aria-current": active && !branch ? "page" : void 0,
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
}),
|
|
995
|
-
...hoverHandlers(node.key),
|
|
1225
|
+
onMouseenter: () => {
|
|
1226
|
+
if (!node.disabled) hovered.value = node.key;
|
|
1227
|
+
},
|
|
1228
|
+
onMouseleave: () => {
|
|
1229
|
+
if (hovered.value === node.key) hovered.value = null;
|
|
1230
|
+
},
|
|
996
1231
|
onClick: () => select(branch ? core.firstLeaf(node) : node)
|
|
997
1232
|
},
|
|
998
|
-
[
|
|
1233
|
+
[
|
|
1234
|
+
iconNode(node, 20) ?? vue.h("span", { class: "iris-nav-menu-fallback-icon" }, node.title.charAt(0))
|
|
1235
|
+
]
|
|
999
1236
|
);
|
|
1000
1237
|
});
|
|
1001
1238
|
const renderItem = (node, depth) => {
|
|
@@ -1005,28 +1242,38 @@ var IrisNavMenu = vue.defineComponent({
|
|
|
1005
1242
|
const shown = horizontal ? horizontalBranchVisible(node.key, depth) : open;
|
|
1006
1243
|
const active = node.key === props.activeKey;
|
|
1007
1244
|
const trail = branch && !active && activePath.value.includes(node.key);
|
|
1245
|
+
const arrowReversed = branch && !node.disabled && (active || trail || shown || hovered.value === node.key);
|
|
1008
1246
|
const row = vue.h(
|
|
1009
1247
|
"button",
|
|
1010
1248
|
{
|
|
1011
1249
|
type: "button",
|
|
1250
|
+
class: itemClass({
|
|
1251
|
+
depth,
|
|
1252
|
+
active,
|
|
1253
|
+
trail,
|
|
1254
|
+
hovered: hovered.value === node.key,
|
|
1255
|
+
open: branch ? shown : false,
|
|
1256
|
+
disabled: !!node.disabled,
|
|
1257
|
+
branch
|
|
1258
|
+
}),
|
|
1012
1259
|
"data-iris-nav-item": "",
|
|
1013
1260
|
"data-key": node.key,
|
|
1014
1261
|
"data-branch": branch ? "true" : void 0,
|
|
1015
1262
|
"data-active": active ? "true" : void 0,
|
|
1016
1263
|
"data-active-trail": trail ? "true" : void 0,
|
|
1017
1264
|
"data-open": branch && shown ? "true" : void 0,
|
|
1265
|
+
"data-hovered": hovered.value === node.key ? "true" : void 0,
|
|
1018
1266
|
"data-depth": String(depth),
|
|
1267
|
+
"data-orientation": props.orientation,
|
|
1019
1268
|
disabled: node.disabled,
|
|
1020
1269
|
"aria-expanded": branch ? shown ? "true" : "false" : void 0,
|
|
1021
1270
|
"aria-current": active ? "page" : void 0,
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
}),
|
|
1029
|
-
...hoverHandlers(node.key),
|
|
1271
|
+
onMouseenter: () => {
|
|
1272
|
+
if (!node.disabled) hovered.value = node.key;
|
|
1273
|
+
},
|
|
1274
|
+
onMouseleave: () => {
|
|
1275
|
+
if (hovered.value === node.key) hovered.value = null;
|
|
1276
|
+
},
|
|
1030
1277
|
onClick: () => branch ? toggle(node.key) : select(node)
|
|
1031
1278
|
},
|
|
1032
1279
|
[
|
|
@@ -1034,12 +1281,7 @@ var IrisNavMenu = vue.defineComponent({
|
|
|
1034
1281
|
vue.h(
|
|
1035
1282
|
"span",
|
|
1036
1283
|
{
|
|
1037
|
-
|
|
1038
|
-
flex: branch ? "1" : "0 1 auto",
|
|
1039
|
-
overflow: "hidden",
|
|
1040
|
-
textOverflow: "ellipsis",
|
|
1041
|
-
whiteSpace: "nowrap"
|
|
1042
|
-
}
|
|
1284
|
+
class: "iris-nav-menu-label"
|
|
1043
1285
|
},
|
|
1044
1286
|
node.title
|
|
1045
1287
|
),
|
|
@@ -1047,15 +1289,19 @@ var IrisNavMenu = vue.defineComponent({
|
|
|
1047
1289
|
branch ? vue.h(IrisIcon, {
|
|
1048
1290
|
name: horizontal && depth === 0 ? "chevron-down" : "chevron-right",
|
|
1049
1291
|
size: 16,
|
|
1050
|
-
|
|
1292
|
+
class: "iris-nav-menu-arrow",
|
|
1293
|
+
"data-reversed": arrowReversed ? "true" : void 0
|
|
1051
1294
|
}) : null
|
|
1052
1295
|
]
|
|
1053
1296
|
);
|
|
1054
|
-
const groupStyle = horizontal && branch ? { position: "relative" } : void 0;
|
|
1055
1297
|
if (!branch || !horizontal && !open)
|
|
1056
1298
|
return vue.h(
|
|
1057
1299
|
"div",
|
|
1058
|
-
{
|
|
1300
|
+
{
|
|
1301
|
+
key: node.key,
|
|
1302
|
+
"data-iris-nav-group": branch ? "" : void 0,
|
|
1303
|
+
class: ["iris-nav-menu-group", `iris-nav-menu-group--depth-${Math.min(9, depth)}`]
|
|
1304
|
+
},
|
|
1059
1305
|
[row]
|
|
1060
1306
|
);
|
|
1061
1307
|
return vue.h(
|
|
@@ -1064,7 +1310,11 @@ var IrisNavMenu = vue.defineComponent({
|
|
|
1064
1310
|
key: node.key,
|
|
1065
1311
|
"data-iris-nav-group": "",
|
|
1066
1312
|
"data-open": shown ? "true" : void 0,
|
|
1067
|
-
|
|
1313
|
+
"data-depth": String(depth),
|
|
1314
|
+
class: [
|
|
1315
|
+
"iris-nav-menu-group",
|
|
1316
|
+
`iris-nav-menu-group--depth-${Math.min(9, depth)}`
|
|
1317
|
+
],
|
|
1068
1318
|
...horizontal ? {
|
|
1069
1319
|
onMouseenter: () => setBranchInteraction(hoveredBranches, node.key, true),
|
|
1070
1320
|
onMouseleave: () => setBranchInteraction(hoveredBranches, node.key, false),
|
|
@@ -1083,22 +1333,10 @@ var IrisNavMenu = vue.defineComponent({
|
|
|
1083
1333
|
vue.h(
|
|
1084
1334
|
"div",
|
|
1085
1335
|
{
|
|
1336
|
+
class: "iris-nav-menu-children",
|
|
1086
1337
|
"data-iris-nav-children": "",
|
|
1087
1338
|
role: "group",
|
|
1088
|
-
"aria-hidden": horizontal && !shown ? "true" : void 0
|
|
1089
|
-
style: horizontal ? {
|
|
1090
|
-
display: shown ? "block" : "none",
|
|
1091
|
-
position: "absolute",
|
|
1092
|
-
insetBlockStart: depth === 0 ? "100%" : "0",
|
|
1093
|
-
insetInlineStart: depth === 0 ? "0" : "100%",
|
|
1094
|
-
zIndex: depth === 0 ? "60" : "61",
|
|
1095
|
-
minWidth: "220px",
|
|
1096
|
-
padding: "6px",
|
|
1097
|
-
border: "1px solid var(--iris-border)",
|
|
1098
|
-
borderRadius: "var(--iris-radius-md, 6px)",
|
|
1099
|
-
background: "var(--iris-surface)",
|
|
1100
|
-
boxShadow: "var(--iris-shadow-md)"
|
|
1101
|
-
} : void 0
|
|
1339
|
+
"aria-hidden": horizontal && !shown ? "true" : void 0
|
|
1102
1340
|
},
|
|
1103
1341
|
(node.children ?? []).map((child) => renderItem(child, depth + 1))
|
|
1104
1342
|
)
|
|
@@ -1152,22 +1390,22 @@ var IrisNavMenu = vue.defineComponent({
|
|
|
1152
1390
|
}
|
|
1153
1391
|
}
|
|
1154
1392
|
};
|
|
1393
|
+
const menuClass = [
|
|
1394
|
+
"iris-nav-menu",
|
|
1395
|
+
`iris-nav-menu--${props.orientation}`,
|
|
1396
|
+
props.collapsed ? "iris-nav-menu--collapsed" : "iris-nav-menu--expanded"
|
|
1397
|
+
];
|
|
1155
1398
|
return () => vue.h(
|
|
1156
1399
|
"nav",
|
|
1157
1400
|
{
|
|
1158
1401
|
...attrs,
|
|
1402
|
+
class: [...menuClass, attrs.class],
|
|
1159
1403
|
"data-iris-nav-menu": "",
|
|
1160
1404
|
"data-collapsed": props.collapsed ? "true" : void 0,
|
|
1161
1405
|
"data-orientation": props.orientation,
|
|
1162
1406
|
"aria-label": props.ariaLabel ?? t("admin.nav"),
|
|
1163
1407
|
onKeydown,
|
|
1164
|
-
style:
|
|
1165
|
-
display: "flex",
|
|
1166
|
-
flexDirection: props.orientation === "horizontal" ? "row" : "column",
|
|
1167
|
-
alignItems: props.orientation === "horizontal" ? "center" : void 0,
|
|
1168
|
-
gap: "2px",
|
|
1169
|
-
...attrs.style ?? {}
|
|
1170
|
-
}
|
|
1408
|
+
style: attrs.style
|
|
1171
1409
|
},
|
|
1172
1410
|
props.collapsed ? renderCollapsed() : tree.value.map((node) => renderItem(node, 0))
|
|
1173
1411
|
);
|
|
@@ -2915,7 +3153,7 @@ var IrisErrorBoundary = vue.defineComponent({
|
|
|
2915
3153
|
|
|
2916
3154
|
// src/primitives/button/styles.ts
|
|
2917
3155
|
var STYLE_ID = "iris-button-styles";
|
|
2918
|
-
var
|
|
3156
|
+
var CSS3 = `
|
|
2919
3157
|
.iris-button {
|
|
2920
3158
|
cursor: pointer;
|
|
2921
3159
|
display: inline-flex;
|
|
@@ -2968,19 +3206,19 @@ var CSS2 = `
|
|
|
2968
3206
|
to { transform: rotate(360deg); }
|
|
2969
3207
|
}
|
|
2970
3208
|
`;
|
|
2971
|
-
var
|
|
3209
|
+
var installed3 = false;
|
|
2972
3210
|
function installButtonStyles() {
|
|
2973
|
-
if (
|
|
3211
|
+
if (installed3) return;
|
|
2974
3212
|
if (typeof document === "undefined") return;
|
|
2975
3213
|
if (document.getElementById(STYLE_ID)) {
|
|
2976
|
-
|
|
3214
|
+
installed3 = true;
|
|
2977
3215
|
return;
|
|
2978
3216
|
}
|
|
2979
3217
|
const style = document.createElement("style");
|
|
2980
3218
|
style.id = STYLE_ID;
|
|
2981
|
-
style.textContent =
|
|
3219
|
+
style.textContent = CSS3;
|
|
2982
3220
|
document.head.appendChild(style);
|
|
2983
|
-
|
|
3221
|
+
installed3 = true;
|
|
2984
3222
|
}
|
|
2985
3223
|
|
|
2986
3224
|
// src/primitives/button/Button.ts
|
|
@@ -6489,7 +6727,7 @@ var IrisAvatar = vue.defineComponent({
|
|
|
6489
6727
|
|
|
6490
6728
|
// src/primitives/spinner/styles.ts
|
|
6491
6729
|
var __SPINNER_STYLE_ID = "iris-spinner-styles";
|
|
6492
|
-
var
|
|
6730
|
+
var CSS4 = `
|
|
6493
6731
|
@keyframes iris-spinner-rotate {
|
|
6494
6732
|
to { transform: rotate(360deg); }
|
|
6495
6733
|
}
|
|
@@ -6512,22 +6750,22 @@ var CSS3 = `
|
|
|
6512
6750
|
}
|
|
6513
6751
|
}
|
|
6514
6752
|
`.trim();
|
|
6515
|
-
var
|
|
6753
|
+
var installed4 = false;
|
|
6516
6754
|
function installSpinnerStyles() {
|
|
6517
|
-
if (
|
|
6755
|
+
if (installed4) return;
|
|
6518
6756
|
if (typeof document === "undefined") return;
|
|
6519
6757
|
if (document.getElementById(__SPINNER_STYLE_ID)) {
|
|
6520
|
-
|
|
6758
|
+
installed4 = true;
|
|
6521
6759
|
return;
|
|
6522
6760
|
}
|
|
6523
6761
|
const el = document.createElement("style");
|
|
6524
6762
|
el.id = __SPINNER_STYLE_ID;
|
|
6525
|
-
el.textContent =
|
|
6763
|
+
el.textContent = CSS4;
|
|
6526
6764
|
document.head.appendChild(el);
|
|
6527
|
-
|
|
6765
|
+
installed4 = true;
|
|
6528
6766
|
}
|
|
6529
6767
|
function __resetSpinnerStyles() {
|
|
6530
|
-
|
|
6768
|
+
installed4 = false;
|
|
6531
6769
|
if (typeof document !== "undefined") {
|
|
6532
6770
|
document.getElementById(__SPINNER_STYLE_ID)?.remove();
|
|
6533
6771
|
}
|
|
@@ -6619,7 +6857,7 @@ var IrisSpinner = vue.defineComponent({
|
|
|
6619
6857
|
|
|
6620
6858
|
// src/primitives/skeleton/styles.ts
|
|
6621
6859
|
var __SKELETON_STYLE_ID = "iris-skeleton-styles";
|
|
6622
|
-
var
|
|
6860
|
+
var CSS5 = `
|
|
6623
6861
|
@keyframes iris-skeleton-shimmer {
|
|
6624
6862
|
0% { background-position: -200% 0; }
|
|
6625
6863
|
100% { background-position: 200% 0; }
|
|
@@ -6659,22 +6897,22 @@ var CSS4 = `
|
|
|
6659
6897
|
}
|
|
6660
6898
|
}
|
|
6661
6899
|
`.trim();
|
|
6662
|
-
var
|
|
6900
|
+
var installed5 = false;
|
|
6663
6901
|
function installSkeletonStyles() {
|
|
6664
|
-
if (
|
|
6902
|
+
if (installed5) return;
|
|
6665
6903
|
if (typeof document === "undefined") return;
|
|
6666
6904
|
if (document.getElementById(__SKELETON_STYLE_ID)) {
|
|
6667
|
-
|
|
6905
|
+
installed5 = true;
|
|
6668
6906
|
return;
|
|
6669
6907
|
}
|
|
6670
6908
|
const el = document.createElement("style");
|
|
6671
6909
|
el.id = __SKELETON_STYLE_ID;
|
|
6672
|
-
el.textContent =
|
|
6910
|
+
el.textContent = CSS5;
|
|
6673
6911
|
document.head.appendChild(el);
|
|
6674
|
-
|
|
6912
|
+
installed5 = true;
|
|
6675
6913
|
}
|
|
6676
6914
|
function __resetSkeletonStyles() {
|
|
6677
|
-
|
|
6915
|
+
installed5 = false;
|
|
6678
6916
|
if (typeof document !== "undefined") {
|
|
6679
6917
|
document.getElementById(__SKELETON_STYLE_ID)?.remove();
|
|
6680
6918
|
}
|
|
@@ -6726,7 +6964,7 @@ var IrisSkeleton = vue.defineComponent({
|
|
|
6726
6964
|
|
|
6727
6965
|
// src/primitives/progress/styles.ts
|
|
6728
6966
|
var __PROGRESS_STYLE_ID = "iris-progress-styles";
|
|
6729
|
-
var
|
|
6967
|
+
var CSS6 = `
|
|
6730
6968
|
@keyframes iris-progress-indeterminate {
|
|
6731
6969
|
0% { left: -40%; right: 100%; }
|
|
6732
6970
|
60% { left: 100%; right: -20%; }
|
|
@@ -6759,22 +6997,22 @@ var CSS5 = `
|
|
|
6759
6997
|
}
|
|
6760
6998
|
}
|
|
6761
6999
|
`.trim();
|
|
6762
|
-
var
|
|
7000
|
+
var installed6 = false;
|
|
6763
7001
|
function installProgressStyles() {
|
|
6764
|
-
if (
|
|
7002
|
+
if (installed6) return;
|
|
6765
7003
|
if (typeof document === "undefined") return;
|
|
6766
7004
|
if (document.getElementById(__PROGRESS_STYLE_ID)) {
|
|
6767
|
-
|
|
7005
|
+
installed6 = true;
|
|
6768
7006
|
return;
|
|
6769
7007
|
}
|
|
6770
7008
|
const el = document.createElement("style");
|
|
6771
7009
|
el.id = __PROGRESS_STYLE_ID;
|
|
6772
|
-
el.textContent =
|
|
7010
|
+
el.textContent = CSS6;
|
|
6773
7011
|
document.head.appendChild(el);
|
|
6774
|
-
|
|
7012
|
+
installed6 = true;
|
|
6775
7013
|
}
|
|
6776
7014
|
function __resetProgressStyles() {
|
|
6777
|
-
|
|
7015
|
+
installed6 = false;
|
|
6778
7016
|
if (typeof document !== "undefined") {
|
|
6779
7017
|
document.getElementById(__PROGRESS_STYLE_ID)?.remove();
|
|
6780
7018
|
}
|
|
@@ -10611,7 +10849,7 @@ var IrisTabs = vue.defineComponent({
|
|
|
10611
10849
|
|
|
10612
10850
|
// src/primitives/tabs/styles.ts
|
|
10613
10851
|
var STYLE_ID2 = "iris-tabs-styles";
|
|
10614
|
-
var
|
|
10852
|
+
var CSS7 = `
|
|
10615
10853
|
:where(.iris-tabs-list) {
|
|
10616
10854
|
display: flex;
|
|
10617
10855
|
gap: 2px;
|
|
@@ -10663,19 +10901,19 @@ var CSS6 = `
|
|
|
10663
10901
|
outline-offset: 2px;
|
|
10664
10902
|
}
|
|
10665
10903
|
`.trim();
|
|
10666
|
-
var
|
|
10904
|
+
var installed7 = false;
|
|
10667
10905
|
function installTabsStyles() {
|
|
10668
|
-
if (
|
|
10906
|
+
if (installed7) return;
|
|
10669
10907
|
if (typeof document === "undefined") return;
|
|
10670
10908
|
if (document.getElementById(STYLE_ID2)) {
|
|
10671
|
-
|
|
10909
|
+
installed7 = true;
|
|
10672
10910
|
return;
|
|
10673
10911
|
}
|
|
10674
10912
|
const style = document.createElement("style");
|
|
10675
10913
|
style.id = STYLE_ID2;
|
|
10676
|
-
style.textContent =
|
|
10914
|
+
style.textContent = CSS7;
|
|
10677
10915
|
document.head.appendChild(style);
|
|
10678
|
-
|
|
10916
|
+
installed7 = true;
|
|
10679
10917
|
}
|
|
10680
10918
|
|
|
10681
10919
|
// src/primitives/tabs/TabsList.ts
|