@loomhq/lens 12.12.3 → 12.12.5
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/cjs/index.js +100 -43
- package/dist/cjs/index.js.map +4 -4
- package/dist/esm/index.js +129 -72
- package/dist/esm/index.js.map +4 -4
- package/dist/types/src/components/icon-button/icon-button.d.ts.map +1 -1
- package/dist/types/src/components/menu/menu.d.ts +2 -1
- package/dist/types/src/components/menu/menu.d.ts.map +1 -1
- package/dist/types/src/components/modal/modal.d.ts +3 -1
- package/dist/types/src/components/modal/modal.d.ts.map +1 -1
- package/dist/types/src/components/select/select.d.ts +14 -1
- package/dist/types/src/components/select/select.d.ts.map +1 -1
- package/dist/types/src/components/text/text.d.ts +6 -1
- package/dist/types/src/components/text/text.d.ts.map +1 -1
- package/dist/types/src/components/tooltip/tooltip.d.ts.map +1 -1
- package/package.json +5 -5
package/dist/cjs/index.js
CHANGED
|
@@ -1107,6 +1107,11 @@ var layoutDeprecatedWarning = `Lens: Layout component is deprecated. Use Arrange
|
|
|
1107
1107
|
|
|
1108
1108
|
// src/components/text/text.tsx
|
|
1109
1109
|
var dimAmount = 0.6;
|
|
1110
|
+
var FontFamily = /* @__PURE__ */ ((FontFamily2) => {
|
|
1111
|
+
FontFamily2["sans-serif"] = "inherit";
|
|
1112
|
+
FontFamily2["mono"] = "Atlassian Mono";
|
|
1113
|
+
return FontFamily2;
|
|
1114
|
+
})(FontFamily || {});
|
|
1110
1115
|
var variants = {
|
|
1111
1116
|
body: {
|
|
1112
1117
|
size: "body-md",
|
|
@@ -1149,6 +1154,7 @@ var TextWrapper = import_styled.default.span`
|
|
|
1149
1154
|
-webkit-line-clamp: ${props.ellipsisLines};
|
|
1150
1155
|
`};
|
|
1151
1156
|
${(props) => !props.hasEllipsis && props.noWrap && "white-space: nowrap; overflow: hidden;"};
|
|
1157
|
+
${(props) => props.fontFamily && `font-family: ${FontFamily[props.fontFamily]};`};
|
|
1152
1158
|
${(props) => props.sizeMinMax && `
|
|
1153
1159
|
min-height: 0vw;
|
|
1154
1160
|
font-size: clamp(
|
|
@@ -1181,6 +1187,7 @@ var Text = (_a) => {
|
|
|
1181
1187
|
color,
|
|
1182
1188
|
isInline,
|
|
1183
1189
|
isDimmed,
|
|
1190
|
+
fontFamily = "sans-serif",
|
|
1184
1191
|
fontWeight = "regular",
|
|
1185
1192
|
hasEllipsis,
|
|
1186
1193
|
ellipsisLines,
|
|
@@ -1196,6 +1203,7 @@ var Text = (_a) => {
|
|
|
1196
1203
|
"color",
|
|
1197
1204
|
"isInline",
|
|
1198
1205
|
"isDimmed",
|
|
1206
|
+
"fontFamily",
|
|
1199
1207
|
"fontWeight",
|
|
1200
1208
|
"hasEllipsis",
|
|
1201
1209
|
"ellipsisLines",
|
|
@@ -1220,6 +1228,7 @@ var Text = (_a) => {
|
|
|
1220
1228
|
isInline,
|
|
1221
1229
|
isDimmed,
|
|
1222
1230
|
fontWeight: variant ? variants[variant].fontWeight : fontWeight,
|
|
1231
|
+
fontFamily,
|
|
1223
1232
|
hasEllipsis,
|
|
1224
1233
|
ellipsisLines,
|
|
1225
1234
|
noWrap,
|
|
@@ -3379,8 +3388,7 @@ var IconButtonBox = import_styled14.default.button`
|
|
|
3379
3388
|
border-radius: ${(props) => sizeStyles[props.size].radius};
|
|
3380
3389
|
}
|
|
3381
3390
|
|
|
3382
|
-
&:focus-visible:before
|
|
3383
|
-
&:focus:before {
|
|
3391
|
+
&:focus-visible:before {
|
|
3384
3392
|
${getFocusRing()};
|
|
3385
3393
|
}
|
|
3386
3394
|
|
|
@@ -3776,6 +3784,13 @@ function SvgCheck() {
|
|
|
3776
3784
|
return /* @__PURE__ */ React22.createElement(import_check_mark.default, { label: "", testId: "ads-refreshed-icon" });
|
|
3777
3785
|
}
|
|
3778
3786
|
|
|
3787
|
+
// src/components/icon/available-icons/close.tsx
|
|
3788
|
+
var import_close = __toESM(require("@atlaskit/icon/core/close"));
|
|
3789
|
+
var React23 = __toESM(require("react"));
|
|
3790
|
+
function SvgClose() {
|
|
3791
|
+
return /* @__PURE__ */ React23.createElement(import_close.default, { label: "", testId: "ads-refreshed-icon" });
|
|
3792
|
+
}
|
|
3793
|
+
|
|
3779
3794
|
// src/components/menu/menu.tsx
|
|
3780
3795
|
var menuPositions = {
|
|
3781
3796
|
left: "bottom-start",
|
|
@@ -3837,6 +3852,25 @@ var MenuItemWrapper = import_styled17.default.li`
|
|
|
3837
3852
|
width: calc(100% + ${u(3)});
|
|
3838
3853
|
}
|
|
3839
3854
|
`};
|
|
3855
|
+
|
|
3856
|
+
/* Default state: show checkmark for selected items */
|
|
3857
|
+
.check-icon {
|
|
3858
|
+
display: block;
|
|
3859
|
+
}
|
|
3860
|
+
|
|
3861
|
+
.deselect-icon {
|
|
3862
|
+
display: none;
|
|
3863
|
+
}
|
|
3864
|
+
|
|
3865
|
+
/* When highlighted (mouse hover OR keyboard navigation) and allowsDeselect: swap to X */
|
|
3866
|
+
${(props) => props.showDeselectIcon && props.isHighlighted ? `
|
|
3867
|
+
.check-icon {
|
|
3868
|
+
display: none;
|
|
3869
|
+
}
|
|
3870
|
+
.deselect-icon {
|
|
3871
|
+
display: block;
|
|
3872
|
+
}
|
|
3873
|
+
` : ""}
|
|
3840
3874
|
`;
|
|
3841
3875
|
var Image2 = import_styled17.default.img`
|
|
3842
3876
|
height: 100%;
|
|
@@ -3855,7 +3889,8 @@ var MenuItem = (_a) => {
|
|
|
3855
3889
|
hasDivider,
|
|
3856
3890
|
children,
|
|
3857
3891
|
menuItemRole,
|
|
3858
|
-
keyboardMove
|
|
3892
|
+
keyboardMove,
|
|
3893
|
+
showDeselectIcon = false
|
|
3859
3894
|
} = _b, props = __objRest(_b, [
|
|
3860
3895
|
"isDisabled",
|
|
3861
3896
|
"isHighlighted",
|
|
@@ -3864,7 +3899,8 @@ var MenuItem = (_a) => {
|
|
|
3864
3899
|
"hasDivider",
|
|
3865
3900
|
"children",
|
|
3866
3901
|
"menuItemRole",
|
|
3867
|
-
"keyboardMove"
|
|
3902
|
+
"keyboardMove",
|
|
3903
|
+
"showDeselectIcon"
|
|
3868
3904
|
]);
|
|
3869
3905
|
const checkColumn = isSelected ? "auto" : "";
|
|
3870
3906
|
const iconColumn = icon ? "auto" : "";
|
|
@@ -3882,11 +3918,12 @@ var MenuItem = (_a) => {
|
|
|
3882
3918
|
columns,
|
|
3883
3919
|
hasDivider,
|
|
3884
3920
|
tabIndex: isDisabled ? -1 : 0,
|
|
3885
|
-
"data-highlighted": isHighlighted || void 0
|
|
3921
|
+
"data-highlighted": isHighlighted || void 0,
|
|
3922
|
+
showDeselectIcon
|
|
3886
3923
|
}, updatedProps),
|
|
3887
3924
|
icon && (typeof icon === "string" ? /* @__PURE__ */ import_react23.default.createElement(container_default, { radius: "50", width: 3, height: 3, overflow: "hidden" }, /* @__PURE__ */ import_react23.default.createElement(align_default, { alignment: "center" }, /* @__PURE__ */ import_react23.default.createElement(Image2, { src: icon, alt: "", isDisabled }))) : /* @__PURE__ */ import_react23.default.createElement(icon_default, { icon, color })),
|
|
3888
3925
|
/* @__PURE__ */ import_react23.default.createElement(text_default, { color, hasEllipsis: true }, children),
|
|
3889
|
-
isSelected && /* @__PURE__ */ import_react23.default.createElement(icon_default, { icon: /* @__PURE__ */ import_react23.default.createElement(SvgCheck, null), color })
|
|
3926
|
+
isSelected && /* @__PURE__ */ import_react23.default.createElement(import_react23.default.Fragment, null, /* @__PURE__ */ import_react23.default.createElement("span", { className: "check-icon", "aria-hidden": "true" }, /* @__PURE__ */ import_react23.default.createElement(icon_default, { icon: /* @__PURE__ */ import_react23.default.createElement(SvgCheck, null), color })), /* @__PURE__ */ import_react23.default.createElement("span", { className: "deselect-icon", "aria-hidden": "true" }, /* @__PURE__ */ import_react23.default.createElement(icon_default, { icon: /* @__PURE__ */ import_react23.default.createElement(SvgClose, null), color })))
|
|
3890
3927
|
);
|
|
3891
3928
|
};
|
|
3892
3929
|
var Menu = (_a) => {
|
|
@@ -3935,9 +3972,9 @@ var import_react24 = __toESM(require("react"));
|
|
|
3935
3972
|
|
|
3936
3973
|
// src/components/icon/available-icons/search.tsx
|
|
3937
3974
|
var import_search = __toESM(require("@atlaskit/icon/core/search"));
|
|
3938
|
-
var
|
|
3975
|
+
var React25 = __toESM(require("react"));
|
|
3939
3976
|
function SvgSearch() {
|
|
3940
|
-
return /* @__PURE__ */
|
|
3977
|
+
return /* @__PURE__ */ React25.createElement(import_search.default, { label: "", testId: "ads-refreshed-icon" });
|
|
3941
3978
|
}
|
|
3942
3979
|
|
|
3943
3980
|
// src/components/search-bar/search-bar.tsx
|
|
@@ -4195,7 +4232,7 @@ var getSelectedOption = (value, options) => {
|
|
|
4195
4232
|
return options.find((item) => item.value === value);
|
|
4196
4233
|
}
|
|
4197
4234
|
};
|
|
4198
|
-
var renderOption = (item, index, selectedItem, selectedOptionValue, highlightedIndex, getItemProps, keyboardMove, setKeyboardMove) => {
|
|
4235
|
+
var renderOption = (item, index, selectedItem, selectedOptionValue, highlightedIndex, getItemProps, keyboardMove, setKeyboardMove, allowsDeselect = false) => {
|
|
4199
4236
|
const isSelected = !selectedItem && item.value === selectedOptionValue || selectedItem && selectedItem.value === item.value;
|
|
4200
4237
|
return /* @__PURE__ */ import_react25.default.createElement(
|
|
4201
4238
|
MenuItem,
|
|
@@ -4220,7 +4257,8 @@ var renderOption = (item, index, selectedItem, selectedOptionValue, highlightedI
|
|
|
4220
4257
|
hasDivider: item.hasDivider,
|
|
4221
4258
|
isHighlighted: highlightedIndex === index,
|
|
4222
4259
|
keyboardMove: keyboardMove && highlightedIndex === index,
|
|
4223
|
-
isSelected
|
|
4260
|
+
isSelected,
|
|
4261
|
+
showDeselectIcon: allowsDeselect && isSelected
|
|
4224
4262
|
}),
|
|
4225
4263
|
item.title
|
|
4226
4264
|
);
|
|
@@ -4234,7 +4272,8 @@ var SelectMenu = (_a) => {
|
|
|
4234
4272
|
getItemProps,
|
|
4235
4273
|
search,
|
|
4236
4274
|
keyboardMove,
|
|
4237
|
-
setKeyboardMove
|
|
4275
|
+
setKeyboardMove,
|
|
4276
|
+
allowsDeselect
|
|
4238
4277
|
} = _b, menuProps = __objRest(_b, [
|
|
4239
4278
|
"options",
|
|
4240
4279
|
"selectedItem",
|
|
@@ -4243,7 +4282,8 @@ var SelectMenu = (_a) => {
|
|
|
4243
4282
|
"getItemProps",
|
|
4244
4283
|
"search",
|
|
4245
4284
|
"keyboardMove",
|
|
4246
|
-
"setKeyboardMove"
|
|
4285
|
+
"setKeyboardMove",
|
|
4286
|
+
"allowsDeselect"
|
|
4247
4287
|
]);
|
|
4248
4288
|
if (!isGrouped(options)) {
|
|
4249
4289
|
return /* @__PURE__ */ import_react25.default.createElement(menu_default, __spreadValues({ search }, menuProps), options.map(
|
|
@@ -4255,7 +4295,8 @@ var SelectMenu = (_a) => {
|
|
|
4255
4295
|
highlightedIndex,
|
|
4256
4296
|
getItemProps,
|
|
4257
4297
|
keyboardMove,
|
|
4258
|
-
setKeyboardMove
|
|
4298
|
+
setKeyboardMove,
|
|
4299
|
+
allowsDeselect
|
|
4259
4300
|
)
|
|
4260
4301
|
));
|
|
4261
4302
|
}
|
|
@@ -4271,7 +4312,8 @@ var SelectMenu = (_a) => {
|
|
|
4271
4312
|
highlightedIndex,
|
|
4272
4313
|
getItemProps,
|
|
4273
4314
|
keyboardMove,
|
|
4274
|
-
setKeyboardMove
|
|
4315
|
+
setKeyboardMove,
|
|
4316
|
+
allowsDeselect
|
|
4275
4317
|
);
|
|
4276
4318
|
})));
|
|
4277
4319
|
}));
|
|
@@ -4296,7 +4338,8 @@ var Select = (_a) => {
|
|
|
4296
4338
|
trigger,
|
|
4297
4339
|
hasError,
|
|
4298
4340
|
errorMessage = "Oops, that didn't work.",
|
|
4299
|
-
search
|
|
4341
|
+
search,
|
|
4342
|
+
allowsDeselect = false
|
|
4300
4343
|
} = _b, props = __objRest(_b, [
|
|
4301
4344
|
"container",
|
|
4302
4345
|
"onChange",
|
|
@@ -4316,8 +4359,10 @@ var Select = (_a) => {
|
|
|
4316
4359
|
"trigger",
|
|
4317
4360
|
"hasError",
|
|
4318
4361
|
"errorMessage",
|
|
4319
|
-
"search"
|
|
4362
|
+
"search",
|
|
4363
|
+
"allowsDeselect"
|
|
4320
4364
|
]);
|
|
4365
|
+
var _a2;
|
|
4321
4366
|
const environment = getDownshiftEnvironment(container);
|
|
4322
4367
|
const [downshiftIsOpen, setDownshiftIsOpen] = (0, import_react25.useState)(false);
|
|
4323
4368
|
const [keyboardMove, setKeyboardMove] = (0, import_react25.useState)(false);
|
|
@@ -4327,15 +4372,32 @@ var Select = (_a) => {
|
|
|
4327
4372
|
setSearchValue(value);
|
|
4328
4373
|
};
|
|
4329
4374
|
const [selectedItem, setSelectedItem] = (0, import_react25.useState)(
|
|
4330
|
-
getSelectedOption(selectedOptionValue, options)
|
|
4375
|
+
(_a2 = getSelectedOption(selectedOptionValue, options)) != null ? _a2 : null
|
|
4331
4376
|
);
|
|
4332
4377
|
const onDownshiftChange = (item) => {
|
|
4333
|
-
|
|
4334
|
-
|
|
4378
|
+
const isCurrentlySelected = selectedItem && item && item.value === selectedItem.value || !selectedItem && item && item.value === selectedOptionValue;
|
|
4379
|
+
if (allowsDeselect && isCurrentlySelected) {
|
|
4380
|
+
setSelectedItem(null);
|
|
4381
|
+
setDownshiftIsOpen(false);
|
|
4382
|
+
onChange && onChange(null);
|
|
4383
|
+
} else {
|
|
4384
|
+
setSelectedItem(item != null ? item : null);
|
|
4385
|
+
if (item) {
|
|
4386
|
+
onChange && onChange(item);
|
|
4387
|
+
} else if (allowsDeselect) {
|
|
4388
|
+
onChange && onChange(null);
|
|
4389
|
+
}
|
|
4390
|
+
}
|
|
4391
|
+
};
|
|
4392
|
+
const onStateChange = (changes) => {
|
|
4393
|
+
if (changes.isOpen !== void 0) {
|
|
4394
|
+
setDownshiftIsOpen(changes.isOpen);
|
|
4395
|
+
}
|
|
4335
4396
|
};
|
|
4336
4397
|
const downshiftProps = {
|
|
4337
4398
|
itemToString: (item) => item ? item.value : "",
|
|
4338
4399
|
onChange: onDownshiftChange,
|
|
4400
|
+
onStateChange,
|
|
4339
4401
|
onOuterClick,
|
|
4340
4402
|
environment,
|
|
4341
4403
|
selectedItem,
|
|
@@ -4354,10 +4416,8 @@ var Select = (_a) => {
|
|
|
4354
4416
|
triggerOffset
|
|
4355
4417
|
});
|
|
4356
4418
|
(0, import_react25.useEffect)(() => {
|
|
4357
|
-
|
|
4358
|
-
|
|
4359
|
-
options
|
|
4360
|
-
);
|
|
4419
|
+
var _a3;
|
|
4420
|
+
const expectedSelectedItem = (_a3 = getSelectedOption(selectedOptionValue, options)) != null ? _a3 : null;
|
|
4361
4421
|
if ((expectedSelectedItem == null ? void 0 : expectedSelectedItem.value) !== (selectedItem == null ? void 0 : selectedItem.value)) {
|
|
4362
4422
|
setSelectedItem(expectedSelectedItem);
|
|
4363
4423
|
}
|
|
@@ -4366,12 +4426,14 @@ var Select = (_a) => {
|
|
|
4366
4426
|
onOpenChange && onOpenChange(downshiftIsOpen);
|
|
4367
4427
|
}, [downshiftIsOpen, onOpenChange]);
|
|
4368
4428
|
const stateReducer = (state, changes) => {
|
|
4369
|
-
if (changes.
|
|
4370
|
-
|
|
4371
|
-
|
|
4372
|
-
return { isOpen: false };
|
|
4429
|
+
if (allowsDeselect && changes.type === import_downshift.default.stateChangeTypes.clickItem && changes.selectedItem) {
|
|
4430
|
+
const isCurrentlySelected = state.selectedItem && changes.selectedItem.value === state.selectedItem.value || !state.selectedItem && changes.selectedItem.value === selectedOptionValue;
|
|
4431
|
+
if (isCurrentlySelected) {
|
|
4432
|
+
return __spreadProps(__spreadValues({}, changes), { selectedItem: null, isOpen: false });
|
|
4373
4433
|
}
|
|
4374
|
-
|
|
4434
|
+
}
|
|
4435
|
+
if (changes.type === import_downshift.default.stateChangeTypes.keyDownEscape) {
|
|
4436
|
+
return { isOpen: false };
|
|
4375
4437
|
}
|
|
4376
4438
|
return changes;
|
|
4377
4439
|
};
|
|
@@ -4502,7 +4564,8 @@ var Select = (_a) => {
|
|
|
4502
4564
|
}
|
|
4503
4565
|
),
|
|
4504
4566
|
keyboardMove,
|
|
4505
|
-
setKeyboardMove
|
|
4567
|
+
setKeyboardMove,
|
|
4568
|
+
allowsDeselect
|
|
4506
4569
|
}
|
|
4507
4570
|
)
|
|
4508
4571
|
)
|
|
@@ -4633,15 +4696,6 @@ var backdrop_default = Backdrop;
|
|
|
4633
4696
|
var import_styled21 = __toESM(require("@emotion/styled"));
|
|
4634
4697
|
var import_focus_trap_react = __toESM(require("focus-trap-react"));
|
|
4635
4698
|
var import_react28 = __toESM(require("react"));
|
|
4636
|
-
|
|
4637
|
-
// src/components/icon/available-icons/close.tsx
|
|
4638
|
-
var import_close = __toESM(require("@atlaskit/icon/core/close"));
|
|
4639
|
-
var React28 = __toESM(require("react"));
|
|
4640
|
-
function SvgClose() {
|
|
4641
|
-
return /* @__PURE__ */ React28.createElement(import_close.default, { label: "", testId: "ads-refreshed-icon" });
|
|
4642
|
-
}
|
|
4643
|
-
|
|
4644
|
-
// src/components/modal/modal.tsx
|
|
4645
4699
|
var DEFAULT_MODAL_CARD_HEIGHT = "70vh";
|
|
4646
4700
|
var ContentWrapper = import_styled21.default.div`
|
|
4647
4701
|
display: grid;
|
|
@@ -4741,7 +4795,8 @@ var ModalCard = (_a) => {
|
|
|
4741
4795
|
ariaLabelledBy,
|
|
4742
4796
|
ref,
|
|
4743
4797
|
removeClose,
|
|
4744
|
-
initialFocus
|
|
4798
|
+
initialFocus,
|
|
4799
|
+
closeOnEscape = true
|
|
4745
4800
|
} = _b, props = __objRest(_b, [
|
|
4746
4801
|
"children",
|
|
4747
4802
|
"onCloseClick",
|
|
@@ -4754,10 +4809,11 @@ var ModalCard = (_a) => {
|
|
|
4754
4809
|
"ariaLabelledBy",
|
|
4755
4810
|
"ref",
|
|
4756
4811
|
"removeClose",
|
|
4757
|
-
"initialFocus"
|
|
4812
|
+
"initialFocus",
|
|
4813
|
+
"closeOnEscape"
|
|
4758
4814
|
]);
|
|
4759
4815
|
const keyListener = (e) => {
|
|
4760
|
-
if (e.key === "Escape") {
|
|
4816
|
+
if (e.key === "Escape" && closeOnEscape) {
|
|
4761
4817
|
e.preventDefault();
|
|
4762
4818
|
if (!removeClose) {
|
|
4763
4819
|
onCloseClick(e);
|
|
@@ -6746,12 +6802,13 @@ var Tooltip = (_a) => {
|
|
|
6746
6802
|
const keyListener = (e) => {
|
|
6747
6803
|
if (e.key === "Escape") {
|
|
6748
6804
|
e.preventDefault();
|
|
6805
|
+
e.stopPropagation();
|
|
6749
6806
|
handleBlur();
|
|
6750
6807
|
}
|
|
6751
6808
|
};
|
|
6752
|
-
window.addEventListener("keydown", keyListener);
|
|
6809
|
+
window.addEventListener("keydown", keyListener, true);
|
|
6753
6810
|
return () => {
|
|
6754
|
-
window.removeEventListener("keydown", keyListener);
|
|
6811
|
+
window.removeEventListener("keydown", keyListener, true);
|
|
6755
6812
|
};
|
|
6756
6813
|
}, [isOpen, setIsOpen]);
|
|
6757
6814
|
const { layerProps, triggerProps, renderLayer } = (0, import_react_laag4.useLayer)({
|