@cakemail-org/ui-components-v2 2.2.115 → 2.2.116
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/components/scopePicker/index.d.ts +3 -0
- package/dist/cjs/components/scopePicker/scopeGroups.d.ts +9 -2
- package/dist/cjs/components/sideMenu/types.d.ts +1 -0
- package/dist/cjs/index.js +233 -102
- package/dist/cjs/utils/service.d.ts +1 -0
- package/dist/esm/components/scopePicker/index.d.ts +3 -0
- package/dist/esm/components/scopePicker/scopeGroups.d.ts +9 -2
- package/dist/esm/components/sideMenu/types.d.ts +1 -0
- package/dist/esm/index.js +232 -103
- package/dist/esm/utils/service.d.ts +1 -0
- package/package.json +5 -2
package/dist/cjs/index.js
CHANGED
|
@@ -529,8 +529,37 @@ function fetchRetry(_a) {
|
|
|
529
529
|
});
|
|
530
530
|
}
|
|
531
531
|
}).catch(function (e) {
|
|
532
|
-
onError
|
|
533
|
-
|
|
532
|
+
// Return the result of onError: on a retry it resolves to the recursive
|
|
533
|
+
// fetchRetry promise, so the caller receives the retried response. Without
|
|
534
|
+
// the return the chain would resolve to undefined and silently swallow it.
|
|
535
|
+
return onError(e);
|
|
536
|
+
});
|
|
537
|
+
}
|
|
538
|
+
// Single-resource API responses may be flat (the object itself) or enveloped as
|
|
539
|
+
// `{ data }`. Returns the inner payload in both cases; a flat object (no `data`
|
|
540
|
+
// key) is returned as-is. Centralizes the unwrap used by single-resource factories.
|
|
541
|
+
function unwrapResponse(data) {
|
|
542
|
+
// Reject null/undefined/empty-string/non-object bodies (e.g. a 204) loudly
|
|
543
|
+
// instead of building a model with undefined fields.
|
|
544
|
+
if (data == null || typeof data !== "object") {
|
|
545
|
+
throw new Error("API returned an empty or non-object response");
|
|
546
|
+
}
|
|
547
|
+
// Enveloped responses wrap the resource in a `data` field; flat responses are
|
|
548
|
+
// the resource object itself. When the envelope is present, its payload MUST
|
|
549
|
+
// be a non-array object — a null/array/scalar `data` is a malformed response
|
|
550
|
+
// and throws, rather than silently yielding the envelope as the resource.
|
|
551
|
+
if ("data" in data) {
|
|
552
|
+
var inner = data.data;
|
|
553
|
+
if (inner == null || typeof inner !== "object" || Array.isArray(inner)) {
|
|
554
|
+
throw new Error("API returned a null, array, or non-object payload");
|
|
555
|
+
}
|
|
556
|
+
return inner;
|
|
557
|
+
}
|
|
558
|
+
// Flat response: the object itself is the payload (but never an array).
|
|
559
|
+
if (Array.isArray(data)) {
|
|
560
|
+
throw new Error("API returned an array where a single resource was expected");
|
|
561
|
+
}
|
|
562
|
+
return data;
|
|
534
563
|
}
|
|
535
564
|
|
|
536
565
|
function getStorage(_a) {
|
|
@@ -6477,8 +6506,8 @@ function styleInject(css, ref) {
|
|
|
6477
6506
|
}
|
|
6478
6507
|
}
|
|
6479
6508
|
|
|
6480
|
-
var css_248z$
|
|
6481
|
-
styleInject(css_248z$
|
|
6509
|
+
var css_248z$z = ".actionBarContainer-component-v2 {\n left: 0;\n position: fixed;\n z-index: 8999;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: 100%;\n pointer-events: none;\n}\n.actionBarContainer-component-v2:not(.open) {\n display: none;\n}\n.actionBarContainer-component-v2.open {\n display: flex;\n}\n.actionBarContainer-component-v2.bottom {\n bottom: 2rem;\n}\n.actionBarContainer-component-v2.bottom .barsContainer > * {\n margin-top: 1rem;\n}\n.actionBarContainer-component-v2.top {\n top: 2rem;\n}\n.actionBarContainer-component-v2.top .barsContainer > * {\n margin-bottom: 1rem;\n}\n.actionBarContainer-component-v2 .barsContainer {\n pointer-events: all;\n min-width: -moz-max-content;\n min-width: max-content;\n}\n.actionBarContainer-component-v2 .barsContainer > * {\n max-width: unset;\n}\n.actionBarContainer-component-v2 .barsContainer > *:not(.manualContent) {\n border-radius: 8px;\n background-color: var(--white, #FFFFFF);\n box-shadow: 0 0 15px 0 rgba(0, 0, 0, 0.15);\n padding: 1.5rem;\n min-width: 29rem;\n box-sizing: border-box;\n}\n.actionBarContainer-component-v2 .barsContainer > * .fullBar-component > .left > div:not(:first-child) {\n margin-left: 1rem;\n}\n.actionBarContainer-component-v2 .barsContainer > * .fullBar-component > .middle,\n.actionBarContainer-component-v2 .barsContainer > * .fullBar-component > .right {\n margin-left: 3rem;\n}\n.actionBarContainer-component-v2 .barsContainer > * .fullBar-component > .middle > div:first-child,\n.actionBarContainer-component-v2 .barsContainer > * .fullBar-component > .right > div:first-child {\n margin-right: 0;\n}\n.actionBarContainer-component-v2 .barsContainer > * .fullBar-component > .middle > div:not(:first-child),\n.actionBarContainer-component-v2 .barsContainer > * .fullBar-component > .right > div:not(:first-child) {\n margin-left: 0.75rem;\n}\n.actionBarContainer-component-v2 .barsContainer > * p,\n.actionBarContainer-component-v2 .barsContainer > * button {\n white-space: nowrap;\n}";
|
|
6510
|
+
styleInject(css_248z$z);
|
|
6482
6511
|
|
|
6483
6512
|
var ActionBarContainer = React.forwardRef(function (props, ref) {
|
|
6484
6513
|
var refState = React.useRef({ open: false });
|
|
@@ -7674,8 +7703,8 @@ function Icon(_a) {
|
|
|
7674
7703
|
return React.createElement(React.Fragment, null, Component ? React.createElement(SvgIcon, __assign({ fontSize: fontSize, sx: __assign(__assign({}, sx), csx) }, iconProps, { component: Component })) : "");
|
|
7675
7704
|
}
|
|
7676
7705
|
|
|
7677
|
-
var css_248z$
|
|
7678
|
-
styleInject(css_248z$
|
|
7706
|
+
var css_248z$y = ".circulatProgress-component-v2.content {\n flex: 1;\n}\n.circulatProgress-component-v2.container {\n position: absolute;\n}\n.circulatProgress-component-v2.page {\n position: fixed;\n}\n.circulatProgress-component-v2.page, .circulatProgress-component-v2.container {\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n.circulatProgress-component-v2.content, .circulatProgress-component-v2.container, .circulatProgress-component-v2.page {\n display: flex;\n align-items: center;\n justify-content: center;\n}";
|
|
7707
|
+
styleInject(css_248z$y);
|
|
7679
7708
|
|
|
7680
7709
|
function CircularProgress(_a) {
|
|
7681
7710
|
var color = _a.color, _b = _a.location, location = _b === void 0 ? "default" : _b, props = __rest(_a, ["color", "location"]);
|
|
@@ -7689,8 +7718,8 @@ function LinearProgress(_a) {
|
|
|
7689
7718
|
return React.createElement(material.LinearProgress, __assign({}, props, { color: color, className: classes }));
|
|
7690
7719
|
}
|
|
7691
7720
|
|
|
7692
|
-
var css_248z$
|
|
7693
|
-
styleInject(css_248z$
|
|
7721
|
+
var css_248z$x = ".loadingContainer-component-v2.keepChildren {\n position: relative;\n}\n.loadingContainer-component-v2.keepChildren .hiddenChildren {\n visibility: hidden;\n}\n.loadingContainer-component-v2.keepChildren .circulatProgress-component-v2,\n.loadingContainer-component-v2.keepChildren .MuiLinearProgress-root {\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n}";
|
|
7722
|
+
styleInject(css_248z$x);
|
|
7694
7723
|
|
|
7695
7724
|
function LoadingContainer(_a) {
|
|
7696
7725
|
var _b = _a.loading, loading = _b === void 0 ? false : _b, children = _a.children, _c = _a.variant, variant = _c === void 0 ? "circular" : _c, width = _a.width, _d = _a.className, className = _d === void 0 ? "" : _d, keepChildren = _a.keepChildren, // Works with contenet not in iframes
|
|
@@ -7713,8 +7742,8 @@ function LoadingContainer(_a) {
|
|
|
7713
7742
|
React.createElement(Container, { className: "loadingContainer-component-v2 ".concat(className), sx: { display: "flex", alignItems: "center", justifyContent: "center", width: "100%" } }, loader)));
|
|
7714
7743
|
}
|
|
7715
7744
|
|
|
7716
|
-
var css_248z$
|
|
7717
|
-
styleInject(css_248z$
|
|
7745
|
+
var css_248z$w = ".textfield-component-v2 {\n position: relative;\n}\n.textfield-component-v2.small .MuiSvgIcon-root {\n top: 1.4rem !important;\n}\n.textfield-component-v2.disabled {\n opacity: 0.65;\n pointer-events: none;\n}\n.textfield-component-v2 .MuiSvgIcon-root ~ .MuiFormControl-root .MuiInputBase-input {\n padding-left: 42px;\n}\n.textfield-component-v2 .MuiSvgIcon-root {\n position: absolute;\n left: 1rem;\n top: 1.65rem;\n transform: translateY(-50%);\n z-index: 1;\n}\n\n.locationTextField-component-v2 {\n position: relative;\n}\n.locationTextField-component-v2 .autocomplete-dropdown-container {\n position: absolute;\n width: 100%;\n z-index: 10000;\n}\n\n.phoneTextField-component-v2 .MuiInputAdornment-root .MuiSelect-select {\n padding-right: 1.75rem !important;\n}\n.phoneTextField-component-v2 .MuiInputAdornment-root .MuiSelect-icon {\n display: inline-block;\n right: 0.5rem;\n}\n\n.react-international-phone-flag-emoji {\n width: 1.5rem;\n height: 1.5rem;\n}\n\n.colorTextField-component-v2 {\n position: relative;\n}\n.colorTextField-component-v2 .boxedColor {\n position: absolute;\n width: 20px;\n height: 20px;\n border-radius: 20px;\n left: 1rem;\n top: 1.65rem;\n transform: translateY(-50%);\n z-index: 1;\n}\n.colorTextField-component-v2 .boxedColor .MuiSvgIcon-root {\n width: unset;\n height: unset;\n}\n.colorTextField-component-v2 .boxedColor::after {\n position: absolute;\n width: 6px;\n height: 6px;\n content: \"\";\n background-color: var(--white, #FFFFFF);\n border-radius: 20px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n}\n.colorTextField-component-v2 .boxedColor ~ .textfield-component-v2 .MuiInputBase-input {\n padding-left: 44px;\n}\n.colorTextField-component-v2.bottom .react-colorful {\n top: 3.5rem;\n}\n.colorTextField-component-v2.top .react-colorful {\n bottom: 4rem;\n}\n.colorTextField-component-v2 .react-colorful {\n width: 100%;\n position: absolute;\n}";
|
|
7746
|
+
styleInject(css_248z$w);
|
|
7718
7747
|
|
|
7719
7748
|
var TextField = React.forwardRef(function (_a, ref) {
|
|
7720
7749
|
var _b = _a.className, className = _b === void 0 ? "" : _b, label = _a.label, timeout = _a.timeout, labelTooltipText = _a.labelTooltipText, disabled = _a.disabled, useBareBoneInput = _a.useBareBoneInput, onChange = _a.onChange, multiline = _a.multiline, inputProps = _a.inputProps, iconName = _a.iconName, onKeyDown = _a.onKeyDown, size = _a.size, props = __rest(_a, ["className", "label", "timeout", "labelTooltipText", "disabled", "useBareBoneInput", "onChange", "multiline", "inputProps", "iconName", "onKeyDown", "size"]);
|
|
@@ -7769,8 +7798,8 @@ var TextField = React.forwardRef(function (_a, ref) {
|
|
|
7769
7798
|
React.createElement(MUITextField, __assign({}, props, { inputProps: inputProps, onChange: useBareBoneInput ? onChange : onChangeHandler, label: cLabel, disabled: disabled, onKeyDown: handleKeyDown, multiline: multiline, inputRef: ref, size: size })));
|
|
7770
7799
|
});
|
|
7771
7800
|
|
|
7772
|
-
var css_248z$
|
|
7773
|
-
styleInject(css_248z$
|
|
7801
|
+
var css_248z$v = ".assetmanager-component-v2 {\n box-shadow: 0 0 15px 0 rgba(0, 0, 0, 0.15);\n background: var(--background-color-1, var(--white, #FFFFFF));\n min-width: 25rem;\n width: 100%;\n}\n.assetmanager-component-v2 .loadingContainer-component-v2 {\n padding: 3rem;\n}\n.assetmanager-component-v2 .container {\n padding: 0.75rem;\n}\n.assetmanager-component-v2 .container > div.textInputContainer {\n display: flex;\n border: solid 1px var(--wild-sand, #dddddd);\n border-radius: 6px;\n justify-content: flex-start;\n align-items: center;\n}\n.assetmanager-component-v2 .container > div.textInputContainer > div .MuiSvgIcon-root {\n display: block;\n cursor: pointer;\n}\n.assetmanager-component-v2 .container > div.textInputContainer > div:first-child {\n padding: 0 0.75rem 0 0.75rem;\n height: 100%;\n}\n.assetmanager-component-v2 .container > div.textInputContainer > div:last-child:not(.textfield-component-v2) {\n padding: 0 0.875rem;\n height: 100%;\n}\n.assetmanager-component-v2 .container > div.textInputContainer .textfield-component-v2 {\n width: 100%;\n}\n.assetmanager-component-v2 .container > div.textInputContainer .textfield-component-v2 fieldset {\n outline: none !important;\n border: none !important;\n}\n.assetmanager-component-v2 .container > div.textInputContainer .textfield-component-v2 input {\n padding: 0.5rem 0 !important;\n}\n.assetmanager-component-v2 .container .optionsListingContainer {\n padding: 0 1.25rem 0.5rem 1.25rem;\n margin: 1.25rem 0 0.5rem 0;\n max-height: 20rem;\n overflow-y: auto;\n}\n.assetmanager-component-v2 .container .optionsListingContainer button {\n text-transform: capitalize;\n}\n.assetmanager-component-v2 .container .optionsListingContainer::-webkit-scrollbar {\n display: block;\n}\n.assetmanager-component-v2 .container .optionsListingContainer::-webkit-scrollbar-track:horizontal {\n position: absolute;\n bottom: -20px;\n}\n.assetmanager-component-v2 .container .optionsListingContainer::-webkit-scrollbar-track:vertical {\n border-bottom-left-radius: 0 !important;\n border-bottom-right-radius: 8px !important;\n border-top-right-radius: 8px !important;\n}\n.assetmanager-component-v2 .container .optionsListingContainer::-webkit-scrollbar-track {\n height: 2.5rem;\n width: 2.5rem;\n padding: 2rem;\n background-clip: content-box;\n border-bottom-left-radius: 8px;\n}\n.assetmanager-component-v2 .container .optionsListingContainer::-webkit-scrollbar-thumb {\n background: var(--body-font-color-2, var(--silver, #9B9B9B));\n border-radius: 24px;\n border-top: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n border-bottom: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n border-right: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n border-left: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n}\n.assetmanager-component-v2 .container .optionsListingContainer > div:first-child:not(.listItem) {\n padding-bottom: 0.75rem;\n text-transform: uppercase;\n font-weight: 700;\n color: var(--body-font-color, var(--dark-matter, #2B2B2B));\n}\n.assetmanager-component-v2 .container .optionsListingContainer > p.h8 {\n margin-bottom: 1rem;\n color: var(--body-font-color, var(--dark-matter, #2B2B2B));\n}\n.assetmanager-component-v2 .container .optionsListingContainer p.h8 {\n flex: 1;\n font-family: proxima-nova, Lucida Grande, Lucida Sans Unicode, Lucida Sans, Geneva, Verdana, sans-serif;\n text-transform: uppercase;\n font-weight: 700;\n line-height: 1rem;\n font-size: 0.75rem;\n}\n.assetmanager-component-v2 .container .optionsListingContainer .listItem {\n display: flex;\n justify-content: space-between;\n align-items: center;\n min-height: 2rem;\n}\n.assetmanager-component-v2 .container .optionsListingContainer .listItem p.h8 {\n color: var(--body-font-color-2, var(--silver, #9B9B9B));\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n}\n.assetmanager-component-v2 .container .optionsListingContainer .listItem > .MuiSvgIcon-root {\n margin-right: 1rem;\n}\n.assetmanager-component-v2 .container .optionsListingContainer .listItem.selected p.h8 {\n color: var(--secondary-brand-color, var(--teal, #0ABDAE));\n padding-right: 1rem;\n max-width: 100%;\n}\n.assetmanager-component-v2 .container .optionsListingContainer .listItem.selected .MuiSvgIcon-root span svg path {\n fill: var(--secondary-brand-color, var(--teal, #0ABDAE));\n}\n.assetmanager-component-v2 .container .optionsListingContainer .listItem .buttonContainer {\n margin-left: 1rem;\n visibility: hidden;\n}\n.assetmanager-component-v2 .container .optionsListingContainer .listItem .buttonContainer button:nth-child(2) {\n margin-left: 0.5rem;\n}\n.assetmanager-component-v2 .container .optionsListingContainer .listItem:hover .buttonContainer {\n visibility: visible;\n}\n.assetmanager-component-v2 > button:last-child {\n width: 100%;\n text-transform: uppercase;\n font-family: proxima-nova, Lucida Grande, Lucida Sans Unicode, Lucida Sans, Geneva, Verdana, sans-serif;\n height: 3rem;\n border-top: 1px solid var(--wild-sand, #dddddd) !important;\n outline: none;\n border-radius: 0;\n font-weight: 700;\n}";
|
|
7802
|
+
styleInject(css_248z$v);
|
|
7774
7803
|
|
|
7775
7804
|
exports.EAssetManagerMatchType = void 0;
|
|
7776
7805
|
(function (EAssetManagerMatchType) {
|
|
@@ -8248,8 +8277,8 @@ function DialogTitle(_a) {
|
|
|
8248
8277
|
React.createElement(Typography, { className: className, variant: variant }, children));
|
|
8249
8278
|
}
|
|
8250
8279
|
|
|
8251
|
-
var css_248z$
|
|
8252
|
-
styleInject(css_248z$
|
|
8280
|
+
var css_248z$u = ".dialog-component-v2 {\n box-sizing: border-box;\n z-index: 9000 !important;\n}\n.dialog-component-v2.alert {\n pointer-events: none;\n}\n.dialog-component-v2.alert .MuiBackdrop-root {\n display: none;\n}\n.dialog-component-v2.alert > .MuiDialog-container > .MuiPaper-root {\n border-radius: 8px;\n pointer-events: all;\n width: -moz-max-content;\n width: max-content;\n padding: 1rem;\n}\n.dialog-component-v2.alert > .MuiDialog-container > .MuiPaper-root .MuiDialogContent-root {\n text-align: left;\n padding: 0.25rem 0 0;\n}\n.dialog-component-v2:not(.alert) > .MuiDialog-container > .MuiPaper-root {\n border-radius: 16px;\n max-width: 500px;\n width: 100%;\n max-height: calc(100vh - 2rem);\n padding: 2rem;\n}\n.dialog-component-v2:not(.alert) > .MuiDialog-container > .MuiPaper-root::-webkit-scrollbar {\n display: block;\n}\n.dialog-component-v2:not(.alert) > .MuiDialog-container > .MuiPaper-root::-webkit-scrollbar-track:horizontal {\n position: absolute;\n bottom: -20px;\n}\n.dialog-component-v2:not(.alert) > .MuiDialog-container > .MuiPaper-root::-webkit-scrollbar-track:vertical {\n border-bottom-left-radius: 0 !important;\n border-bottom-right-radius: 8px !important;\n border-top-right-radius: 8px !important;\n}\n.dialog-component-v2:not(.alert) > .MuiDialog-container > .MuiPaper-root::-webkit-scrollbar-track {\n height: 2.5rem;\n width: 2.5rem;\n padding: 2rem;\n background-clip: content-box;\n border-bottom-left-radius: 8px;\n}\n.dialog-component-v2:not(.alert) > .MuiDialog-container > .MuiPaper-root::-webkit-scrollbar-thumb {\n background: var(--body-font-color-2, var(--silver, #9B9B9B));\n border-radius: 24px;\n border-top: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n border-bottom: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n border-right: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n border-left: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n}\n.dialog-component-v2 .dialogTitle .MuiSvgIcon-root {\n margin-right: 0.75rem;\n}\n.dialog-component-v2 .dialogTitle.warning .MuiSvgIcon-root path {\n fill: var(--warning-brand-color, var(--orange, #FF9E0E));\n}\n.dialog-component-v2 .dialogTitle.error .MuiSvgIcon-root path {\n fill: var(--error-brand-color, var(--rad-red, #FF4835));\n}\n.dialog-component-v2 .dialogTitle.success .MuiSvgIcon-root path {\n fill: var(--secondary-brand-color, var(--teal, #0ABDAE));\n}";
|
|
8281
|
+
styleInject(css_248z$u);
|
|
8253
8282
|
|
|
8254
8283
|
var Dialog = React.forwardRef(function (props, ref) {
|
|
8255
8284
|
var refState = React.useRef({ open: false });
|
|
@@ -8339,8 +8368,8 @@ var Dialog = React.forwardRef(function (props, ref) {
|
|
|
8339
8368
|
!state.managedByContent && props.children);
|
|
8340
8369
|
});
|
|
8341
8370
|
|
|
8342
|
-
var css_248z$
|
|
8343
|
-
styleInject(css_248z$
|
|
8371
|
+
var css_248z$t = "";
|
|
8372
|
+
styleInject(css_248z$t);
|
|
8344
8373
|
|
|
8345
8374
|
var Drawer = React.forwardRef(function (props, ref) {
|
|
8346
8375
|
var _a = React.useState(props.open || false), isOpen = _a[0], setIsOpen = _a[1];
|
|
@@ -8387,16 +8416,16 @@ var Drawer = React.forwardRef(function (props, ref) {
|
|
|
8387
8416
|
return React.createElement(MuiDrawer, { open: isOpen, variant: state.variant, onClose: handleClose, className: "drawer-component-v2 ".concat(state.className), anchor: state.position, transitionDuration: state.transitionDuration }, props.children || state.children);
|
|
8388
8417
|
});
|
|
8389
8418
|
|
|
8390
|
-
var css_248z$
|
|
8391
|
-
styleInject(css_248z$
|
|
8419
|
+
var css_248z$s = ".contentSectionContainer {\n padding: 2rem;\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n overflow: auto;\n}\n.contentSectionContainer > *:not(:first-child) {\n margin-top: 2rem;\n}\n.contentSectionContainer > *:not(:last-child) {\n flex: 0;\n}\n.contentSectionContainer > *:last-child {\n flex: 1;\n}";
|
|
8420
|
+
styleInject(css_248z$s);
|
|
8392
8421
|
|
|
8393
8422
|
function ContentSectionContainer(_a) {
|
|
8394
8423
|
var _b = _a.className, className = _b === void 0 ? "" : _b, children = _a.children;
|
|
8395
8424
|
return React.createElement(material.Box, { className: "contentSectionContainer ".concat(className) }, children);
|
|
8396
8425
|
}
|
|
8397
8426
|
|
|
8398
|
-
var css_248z$
|
|
8399
|
-
styleInject(css_248z$
|
|
8427
|
+
var css_248z$r = ".fullBar-component-v2 {\n position: relative;\n flex-wrap: wrap;\n}\n.fullBar-component-v2 > div {\n position: unset;\n}\n.fullBar-component-v2 .left > *:nth-child(n+2),\n.fullBar-component-v2 .center > *:nth-child(n+2),\n.fullBar-component-v2 .right > *:nth-child(n+2) {\n margin-left: 0.75rem;\n}";
|
|
8428
|
+
styleInject(css_248z$r);
|
|
8400
8429
|
|
|
8401
8430
|
function FullBar(props) {
|
|
8402
8431
|
if (props === void 0) { props = {}; }
|
|
@@ -8410,8 +8439,8 @@ function FullBar(props) {
|
|
|
8410
8439
|
React.createElement(material.Stack, __assign({ direction: "row" }, rightProps, { sx: __assign({ alignItems: "center", justifyContent: "right", fex: 1 }, rightSX), className: "right" }), right));
|
|
8411
8440
|
}
|
|
8412
8441
|
|
|
8413
|
-
var css_248z$
|
|
8414
|
-
styleInject(css_248z$
|
|
8442
|
+
var css_248z$q = ".logo-component-v2 {\n line-height: 0;\n}";
|
|
8443
|
+
styleInject(css_248z$q);
|
|
8415
8444
|
|
|
8416
8445
|
function Logo(_a) {
|
|
8417
8446
|
var url = _a.url, _b = _a.className, className = _b === void 0 ? "" : _b, _c = _a.imgProps, imgProps = _c === void 0 ? {} : _c;
|
|
@@ -8421,8 +8450,8 @@ function Logo(_a) {
|
|
|
8421
8450
|
React.createElement("img", __assign({ src: url, style: __assign({ maxHeight: "45px", maxWidth: "200px" }, styles) }, imgProps)));
|
|
8422
8451
|
}
|
|
8423
8452
|
|
|
8424
|
-
var css_248z$
|
|
8425
|
-
styleInject(css_248z$
|
|
8453
|
+
var css_248z$p = ".modal-component-v2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background: var(--white, #FFFFFF);\n z-index: 8500;\n flex-direction: column;\n}\n.modal-component-v2.spacedHeader .fullBar-component-v2 {\n padding: 2rem 2rem 0 2rem;\n}\n.modal-component-v2.open {\n display: flex;\n}\n.modal-component-v2:not(.open) {\n display: none;\n}\n.modal-component-v2 .vSeperator {\n width: 1px;\n height: 50%;\n background: var(--wild-sand, #dddddd);\n}\n.modal-component-v2:not(.spacedHeader) > .fullBar-component-v2 {\n background: var(--shade100, #F3F2F2);\n}\n.modal-component-v2 > .fullBar-component-v2 {\n flex: 0;\n padding: 0.75rem 1.5rem;\n}\n.modal-component-v2 > .fullBar-component-v2 .subNav-component-v2 button {\n padding-top: 0;\n padding-bottom: 0;\n}\n.modal-component-v2 > .fullBar-component-v2 .left > *:nth-child(n+2) {\n margin-left: 1rem;\n}\n.modal-component-v2 > div:not(.fullBar-component-v2) {\n flex: 1;\n}\n.modal-component-v2 .contentSectionContainer {\n display: flex;\n align-items: center;\n overflow-y: auto;\n}";
|
|
8454
|
+
styleInject(css_248z$p);
|
|
8426
8455
|
|
|
8427
8456
|
function ModalHeading(props) {
|
|
8428
8457
|
if (props === void 0) { props = {}; }
|
|
@@ -8512,8 +8541,8 @@ var Modal = React.forwardRef(function (props, ref) {
|
|
|
8512
8541
|
React.createElement(ContentSectionContainer, null, state.content))));
|
|
8513
8542
|
});
|
|
8514
8543
|
|
|
8515
|
-
var css_248z$
|
|
8516
|
-
styleInject(css_248z$
|
|
8544
|
+
var css_248z$o = ".overlay-component-v2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background: rgba(0, 0, 0, 0.5);\n z-index: 9000;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.overlay-component-v2 .container {\n background: var(--white, #FFFFFF);\n border-radius: 16px;\n width: 80%;\n height: 80%;\n}\n.overlay-component-v2 .container .contentSectionContainer > div {\n width: 100%;\n}\n.overlay-component-v2 .container .vSeperator {\n width: 1px;\n height: 50%;\n background: var(--wild-sand, #dddddd);\n}\n.overlay-component-v2 .container > .fullBar-component-v2 {\n flex: 0;\n padding: 0.75rem 0.75rem;\n border-bottom: 1px solid var(--wild-sand, #dddddd);\n}\n.overlay-component-v2 .container > .fullBar-component-v2 .subNav-component-v2 button {\n padding-top: 0;\n padding-bottom: 0;\n}\n.overlay-component-v2 .container > .fullBar-component-v2 .left > *:nth-child(n+2) {\n margin-left: 1rem;\n}\n.overlay-component-v2 .container > div:not(.fullBar-component-v2) {\n flex: 1;\n}\n.overlay-component-v2 .container .contentSectionContainer {\n display: flex;\n align-items: center;\n overflow-y: auto;\n}\n.overlay-component-v2.open {\n display: flex;\n}\n.overlay-component-v2:not(.open) {\n display: none;\n}";
|
|
8545
|
+
styleInject(css_248z$o);
|
|
8517
8546
|
|
|
8518
8547
|
function OverlayHeading(props) {
|
|
8519
8548
|
if (props === void 0) { props = {}; }
|
|
@@ -8602,8 +8631,8 @@ var Overlay = React.forwardRef(function (props, ref) {
|
|
|
8602
8631
|
React.createElement(ContentSectionContainer, null, state.content)))));
|
|
8603
8632
|
});
|
|
8604
8633
|
|
|
8605
|
-
var css_248z$
|
|
8606
|
-
styleInject(css_248z$
|
|
8634
|
+
var css_248z$n = ".ui-kit-v2-wrapper {\n width: 100%;\n flex: 1;\n display: flex;\n flex-direction: column;\n}";
|
|
8635
|
+
styleInject(css_248z$n);
|
|
8607
8636
|
|
|
8608
8637
|
function BrandWrapper(_a) {
|
|
8609
8638
|
_a.onInit; var _b = _a.onBrandSuccess, onBrandSuccess = _b === void 0 ? function () { } : _b, _c = _a.onBrandError, onBrandError = _c === void 0 ? function () { } : _c, MUITheme = _a.MUITheme, brandId = _a.brandId, brandHost = _a.brandHost, children = _a.children, _d = _a.noFetch, noFetch = _d === void 0 ? false : _d, _e = _a.setPageHead, setPageHead = _e === void 0 ? true : _e, _f = _a.includeHandlers, includeHandlers = _f === void 0 ? true : _f, brandThemeContext = _a.brandThemeContext, styleOverride = _a.styleOverride;
|
|
@@ -8703,8 +8732,8 @@ function MenuOption(_a) {
|
|
|
8703
8732
|
React.createElement(Icon, { name: "Checkmark10" }))));
|
|
8704
8733
|
}
|
|
8705
8734
|
|
|
8706
|
-
var css_248z$
|
|
8707
|
-
styleInject(css_248z$
|
|
8735
|
+
var css_248z$m = ".dropMenu-component-v2.inlineMenu {\n position: relative;\n overflow-y: auto;\n margin-top: 0.75rem;\n max-height: 35vh;\n box-shadow: 0px 0px 15px 0px rgba(0, 0, 0, 0.1490196078);\n padding: 0.75rem;\n border-radius: 16px;\n min-width: 300;\n background: var(--background-color-1, var(--white, #FFFFFF));\n box-sizing: border-box;\n}\n.dropMenu-component-v2.inlineMenu::-webkit-scrollbar {\n display: block;\n}\n.dropMenu-component-v2.inlineMenu::-webkit-scrollbar-track:horizontal {\n position: absolute;\n bottom: -20px;\n}\n.dropMenu-component-v2.inlineMenu::-webkit-scrollbar-track:vertical {\n border-bottom-left-radius: 0 !important;\n border-bottom-right-radius: 8px !important;\n border-top-right-radius: 8px !important;\n}\n.dropMenu-component-v2.inlineMenu::-webkit-scrollbar-track {\n height: 2.5rem;\n width: 2.5rem;\n padding: 2rem;\n background-clip: content-box;\n border-bottom-left-radius: 8px;\n}\n.dropMenu-component-v2.inlineMenu::-webkit-scrollbar-thumb {\n background: var(--body-font-color-2, var(--silver, #9B9B9B));\n border-radius: 24px;\n border-top: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n border-bottom: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n border-right: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n border-left: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n}";
|
|
8736
|
+
styleInject(css_248z$m);
|
|
8708
8737
|
|
|
8709
8738
|
function DropMenu(_a) {
|
|
8710
8739
|
var _b = _a.options, options = _b === void 0 ? [] : _b, _c = _a.popoverProps, popoverProps = _c === void 0 ? {
|
|
@@ -8729,8 +8758,8 @@ function DropMenu(_a) {
|
|
|
8729
8758
|
}
|
|
8730
8759
|
}
|
|
8731
8760
|
|
|
8732
|
-
var css_248z$
|
|
8733
|
-
styleInject(css_248z$
|
|
8761
|
+
var css_248z$l = ".buttonMenu-component-v2.MuiButton-sizeSmall {\n min-height: 2rem;\n}\n.buttonMenu-component-v2.MuiButton-sizeMedium {\n min-height: 3.125rem;\n}\n.buttonMenu-component-v2.MuiButton-sizeLarge {\n min-height: 3.75rem;\n}";
|
|
8762
|
+
styleInject(css_248z$l);
|
|
8734
8763
|
|
|
8735
8764
|
function ButtonMenu(_a) {
|
|
8736
8765
|
var children = _a.children, _b = _a.buttonProps, buttonProps = _b === void 0 ? {
|
|
@@ -8773,8 +8802,8 @@ function Chip(_a) {
|
|
|
8773
8802
|
return React.createElement(material.Chip, __assign({}, props, { className: classes, color: color }));
|
|
8774
8803
|
}
|
|
8775
8804
|
|
|
8776
|
-
var css_248z$
|
|
8777
|
-
styleInject(css_248z$
|
|
8805
|
+
var css_248z$k = ".codeInput-component > div {\n justify-content: center;\n align-items: center;\n}\n.codeInput-component > div input {\n box-sizing: border-box;\n width: 48px;\n height: 48px;\n padding: 1rem;\n border-radius: 8px;\n outline: none;\n color: var(--primary-brand-color, var(--grape, #69006E));\n font-size: 1rem;\n line-height: 1.25rem;\n text-align: center;\n margin: 0 0.5rem;\n}\n.codeInput-component > div input[type=number]::-webkit-inner-spin-button, .codeInput-component > div input[type=number]::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n.codeInput-component > div input:-moz-placeholder {\n border: 1px solid var(--wild-sand, #dddddd);\n color: var(--body-font-color-2, var(--silver, #9B9B9B));\n}\n.codeInput-component > div input:placeholder-shown {\n border: 1px solid var(--wild-sand, #dddddd);\n color: var(--body-font-color-2, var(--silver, #9B9B9B));\n}\n.codeInput-component > div input:not(:-moz-placeholder) {\n border: 1px solid var(--secondary-brand-color, var(--teal, #0ABDAE));\n}\n.codeInput-component > div input:not(:placeholder-shown) {\n border: 1px solid var(--secondary-brand-color, var(--teal, #0ABDAE));\n}\n.codeInput-component > div input:first-child {\n margin-left: 0;\n}\n.codeInput-component > div input:last-child {\n margin-right: 0;\n}";
|
|
8806
|
+
styleInject(css_248z$k);
|
|
8778
8807
|
|
|
8779
8808
|
function CodeInput(_a) {
|
|
8780
8809
|
var className = _a.className, initValue = _a.initValue, value = _a.value, _b = _a.numInputs, numInputs = _b === void 0 ? 6 : _b, _c = _a.shouldAutoFocus, shouldAutoFocus = _c === void 0 ? true : _c, placeholder = _a.placeholder, renderSeparator = _a.renderSeparator, _d = _a.inputType, inputType = _d === void 0 ? "text" : _d, onChange = _a.onChange, onPaste = _a.onPaste;
|
|
@@ -8827,8 +8856,8 @@ function CustomPaginationActions(_a) {
|
|
|
8827
8856
|
React.createElement(Button, { onClick: handleLastPageButtonClick, disabled: page >= Math.ceil(count / rowsPerPage) - 1, "aria-label": "last page", variant: "outlined", color: "body1" }, "Last")));
|
|
8828
8857
|
}
|
|
8829
8858
|
|
|
8830
|
-
var css_248z$
|
|
8831
|
-
styleInject(css_248z$
|
|
8859
|
+
var css_248z$j = ".dataTable-component-v2 {\n position: relative;\n height: 100%;\n}\n.dataTable-component-v2 .MuiTableContainer-root {\n margin-bottom: 5rem;\n}\n.dataTable-component-v2 .MuiTableContainer-root::-webkit-scrollbar {\n display: block;\n}\n.dataTable-component-v2 .MuiTableContainer-root::-webkit-scrollbar-track:horizontal {\n position: absolute;\n bottom: -20px;\n}\n.dataTable-component-v2 .MuiTableContainer-root::-webkit-scrollbar-track:vertical {\n border-bottom-left-radius: 0 !important;\n border-bottom-right-radius: 8px !important;\n border-top-right-radius: 8px !important;\n}\n.dataTable-component-v2 .MuiTableContainer-root::-webkit-scrollbar-track {\n height: 2.5rem;\n width: 2.5rem;\n padding: 2rem;\n background-clip: content-box;\n border-bottom-left-radius: 8px;\n}\n.dataTable-component-v2 .MuiTableContainer-root::-webkit-scrollbar-thumb {\n background: var(--body-font-color-2, var(--silver, #9B9B9B));\n border-radius: 24px;\n border-top: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n border-bottom: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n border-right: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n border-left: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n}\n.dataTable-component-v2 .MuiTableContainer-root > table thead {\n border-bottom: 1px solid transparent;\n}\n.dataTable-component-v2 .MuiTableContainer-root > table th {\n vertical-align: middle;\n}\n.dataTable-component-v2 .MuiTableContainer-root > table th.sortable {\n cursor: pointer;\n}\n.dataTable-component-v2 .MuiTableContainer-root > table th.sortable .MuiTableSortLabel-root .MuiTableSortLabel-icon path {\n color: var(--body-font-color, var(--dark-matter, #2B2B2B));\n}\n.dataTable-component-v2 .MuiTableContainer-root > table th.sortable:hover .MuiTableSortLabel-root .MuiTableSortLabel-icon {\n opacity: 0.5;\n}\n.dataTable-component-v2 .MuiTableContainer-root > table th,\n.dataTable-component-v2 .MuiTableContainer-root > table td {\n white-space: nowrap;\n}\n.dataTable-component-v2 .MuiTableContainer-root > table th > .cellContainer,\n.dataTable-component-v2 .MuiTableContainer-root > table td > .cellContainer {\n width: -moz-max-content;\n width: max-content;\n}\n.dataTable-component-v2 .MuiTableContainer-root > table th.stickyLastCol::before,\n.dataTable-component-v2 .MuiTableContainer-root > table td.stickyLastCol::before {\n content: \"\";\n width: 19px;\n height: -webkit-fill-available;\n display: block;\n position: absolute;\n top: 0;\n}\n.dataTable-component-v2 .MuiTableContainer-root > table th.stickyFirstCol::after,\n.dataTable-component-v2 .MuiTableContainer-root > table td.stickyFirstCol::after {\n content: \"\";\n width: 19px;\n height: -webkit-fill-available;\n display: block;\n position: absolute;\n top: 0;\n}\n.dataTable-component-v2 .MuiTableContainer-root > table th.leftStickyEffect::before, .dataTable-component-v2 .MuiTableContainer-root > table th.rightStickyEffect::before,\n.dataTable-component-v2 .MuiTableContainer-root > table td.leftStickyEffect::before,\n.dataTable-component-v2 .MuiTableContainer-root > table td.rightStickyEffect::before {\n content: \"\";\n}\n.dataTable-component-v2 .MuiTableContainer-root > table th.leftStickyEffect::after, .dataTable-component-v2 .MuiTableContainer-root > table th.rightStickyEffect::after,\n.dataTable-component-v2 .MuiTableContainer-root > table td.leftStickyEffect::after,\n.dataTable-component-v2 .MuiTableContainer-root > table td.rightStickyEffect::after {\n content: \"\";\n background-size: 16px 16px, 16px 16px;\n background-repeat: no-repeat, no-repeat;\n}\n.dataTable-component-v2 .MuiTableContainer-root > table th.leftStickyEffect,\n.dataTable-component-v2 .MuiTableContainer-root > table td.leftStickyEffect {\n left: 0;\n}\n.dataTable-component-v2 .MuiTableContainer-root > table th.leftStickyEffect::after,\n.dataTable-component-v2 .MuiTableContainer-root > table td.leftStickyEffect::after {\n background-position: top left, bottom left;\n}\n.dataTable-component-v2 .MuiTableContainer-root > table th.rightStickyEffect,\n.dataTable-component-v2 .MuiTableContainer-root > table td.rightStickyEffect {\n right: 0;\n}\n.dataTable-component-v2 .MuiTableContainer-root > table th.rightStickyEffect::after,\n.dataTable-component-v2 .MuiTableContainer-root > table td.rightStickyEffect::after {\n right: 0;\n background-position: top right, bottom right;\n}\n.dataTable-component-v2 .MuiTableContainer-root > table tr {\n position: relative;\n}\n.dataTable-component-v2 .MuiTableContainer-root > table tr td .cellContainer {\n display: flex;\n justify-content: left;\n width: -moz-max-content;\n width: max-content;\n min-width: 100%;\n}\n.dataTable-component-v2 .MuiTableContainer-root > table tr td.centered .cellContainer {\n justify-content: center;\n}\n.dataTable-component-v2 .MuiTablePagination-root {\n overflow: visible;\n}\n.dataTable-component-v2 .MuiTablePagination-root .MuiTablePagination-selectLabel,\n.dataTable-component-v2 .MuiTablePagination-root .MuiInputBase-root {\n display: none;\n}\n.dataTable-component-v2 .MuiTablePagination-root .MuiTablePagination-toolbar {\n padding-right: 1.25rem;\n}\n.dataTable-component-v2 .MuiTablePagination-root .MuiTablePagination-actions {\n margin-right: 0.75rem;\n}\n\n.colManagerMenu .MuiListItemText-root .MuiCheckbox-root {\n margin-right: 0.75rem;\n}";
|
|
8860
|
+
styleInject(css_248z$j);
|
|
8832
8861
|
|
|
8833
8862
|
var bottomLeftCorner = "data:image/svg+xml,%3Csvg%20width%3D%228%22%20height%3D%228%22%20viewBox%3D%220%200%208%208%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fillRule%3D%22evenodd%22%20clipRule%3D%22evenodd%22%20d%3D%22M8%208C3.58172%208%20-1.56562e-07%204.41828%20-3.49691e-07%200L0%208L8%208Z%22%20fill%3D%22white%22%2F%3E%3C%2Fsvg%3E";
|
|
8834
8863
|
|
|
@@ -8989,8 +9018,8 @@ function DataTableRow(_a) {
|
|
|
8989
9018
|
React.createElement(TableCell, { className: "rightStickyEffect stickyEffect" })));
|
|
8990
9019
|
}
|
|
8991
9020
|
|
|
8992
|
-
var css_248z$
|
|
8993
|
-
styleInject(css_248z$
|
|
9021
|
+
var css_248z$i = ".search-component-v2 {\n width: 100%;\n}\n.search-component-v2 .inputContainer {\n width: 100%;\n padding: 1.25rem 1.5rem;\n background-color: var(--background-color-1, var(--white, #FFFFFF));\n border-radius: 16px;\n box-shadow: 0px 0px 15px 0px rgba(0, 0, 0, 0.15);\n box-sizing: border-box;\n}\n.search-component-v2 .inputContainer > *:not(:first-child) {\n margin-left: 1rem;\n}\n.search-component-v2 .inputContainer input {\n flex: 1;\n font-family: proxima-nova, Lucida Grande, Lucida Sans Unicode, Lucida Sans, Geneva, Verdana, sans-serif;\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.25rem;\n border: none;\n outline: none;\n color: var(--primary-brand-color, var(--grape, #69006E));\n background: none;\n}\n.search-component-v2 .inputContainer input::-moz-placeholder {\n color: var(--silver, #9B9B9B);\n}\n.search-component-v2 .inputContainer input::placeholder {\n color: var(--silver, #9B9B9B);\n}";
|
|
9022
|
+
styleInject(css_248z$i);
|
|
8994
9023
|
|
|
8995
9024
|
function Search(_a) {
|
|
8996
9025
|
var _b = _a.initValue, initValue = _b === void 0 ? "" : _b, name = _a.name, onChange = _a.onChange, _c = _a.intervalTime, intervalTime = _c === void 0 ? 800 : _c, placeholder = _a.placeholder, onClose = _a.onClose, _d = _a.className, className = _d === void 0 ? "" : _d, useClickAway = _a.useClickAway, onEnter = _a.onEnter, _e = _a.useKeyDownForChange, useKeyDownForChange = _e === void 0 ? false : _e;
|
|
@@ -9063,8 +9092,8 @@ function Search(_a) {
|
|
|
9063
9092
|
React.createElement(Icon, { actionIcon: true, className: "close", name: "X18", onClick: onClose }))));
|
|
9064
9093
|
}
|
|
9065
9094
|
|
|
9066
|
-
var css_248z$
|
|
9067
|
-
styleInject(css_248z$
|
|
9095
|
+
var css_248z$h = ".dropdown-component-v2 .prefixIcon {\n margin-right: 0.5rem;\n}\n.dropdown-component-v2 .MuiFormLabel-root,\n.dropdown-component-v2 .MuiFormLabel-root.Mui-focused {\n font-family: proxima-nova, Lucida Grande, Lucida Sans Unicode, Lucida Sans, Geneva, Verdana, sans-serif;\n font-weight: 700;\n font-size: 0.875rem;\n line-height: 1.125rem;\n max-width: 52rem;\n color: var(--body-font-color, var(--dark-matter, #2B2B2B));\n transform: translate(14px, -9px) !important;\n}\n.dropdown-component-v2 .MuiFormLabel-root > div,\n.dropdown-component-v2 .MuiFormLabel-root.Mui-focused > div {\n display: flex;\n align-items: \"center\";\n}\n.dropdown-component-v2 .MuiFormLabel-root > div .MuiSvgIcon-root,\n.dropdown-component-v2 .MuiFormLabel-root.Mui-focused > div .MuiSvgIcon-root {\n margin-left: 0.5rem;\n}\n.dropdown-component-v2 .filled fieldset {\n border-color: var(--secondary-brand-color, var(--teal, #0ABDAE)) !important;\n}\n.dropdown-component-v2 fieldset legend span {\n font-weight: 700;\n font-size: 0.875rem;\n line-height: 1.125rem;\n max-width: 52rem;\n}";
|
|
9096
|
+
styleInject(css_248z$h);
|
|
9068
9097
|
|
|
9069
9098
|
function Dropdown(_a) {
|
|
9070
9099
|
var placeholder = _a.placeholder, label = _a.label, keepOpenOnClick = _a.keepOpenOnClick, name = _a.name, _b = _a.className, className = _b === void 0 ? "" : _b, extraSelectProps = _a.extraSelectProps, variant = _a.variant, labelIconColor = _a.labelIconColor, onChange = _a.onChange, defaultValue = _a.defaultValue, _c = _a.menuPlacement, menuPlacement = _c === void 0 ? "bottom-right" : _c, _d = _a.iconOnly, iconOnly = _d === void 0 ? false : _d, chevronIconOverride = _a.chevronIconOverride, renderValue = _a.renderValue, _e = _a.options, options = _e === void 0 ? [] : _e, _f = _a.typographyVariant, typographyVariant = _f === void 0 ? "button" : _f, _g = _a.size, size = _g === void 0 ? "medium" : _g, _h = _a.disabled, disabled = _h === void 0 ? false : _h, _j = _a.color, color = _j === void 0 ? "primary" : _j, _k = _a.value, value = _k === void 0 ? undefined : _k, _l = _a.multiSelect, multiSelect = _l === void 0 ? false : _l, searchProps = _a.searchProps, stickyActions = _a.stickyActions, prefixIcon = _a.prefixIcon, onOpen = _a.onOpen, onClose = _a.onClose;
|
|
@@ -9289,8 +9318,8 @@ function DataTable(_a) {
|
|
|
9289
9318
|
ActionsComponent: CustomPaginationActions }))));
|
|
9290
9319
|
}
|
|
9291
9320
|
|
|
9292
|
-
var css_248z$
|
|
9293
|
-
styleInject(css_248z$
|
|
9321
|
+
var css_248z$g = ".dateTimeSelector.dateTimeCalendar {\n background: var(--white, #FFFFFF);\n}\n.dateTimeSelector .MuiMultiSectionDigitalClock-root,\n.dateTimeSelector .MuiMultiSectionDigitalClockSection-root {\n flex: 1;\n}\n.dateTimeSelector .MuiMultiSectionDigitalClock-root .MuiMultiSectionDigitalClockSection-item.Mui-selected,\n.dateTimeSelector .MuiMultiSectionDigitalClockSection-root .MuiMultiSectionDigitalClockSection-item.Mui-selected {\n background-color: var(--primary-brand-color, var(--grape, #69006E)) !important;\n}";
|
|
9322
|
+
styleInject(css_248z$g);
|
|
9294
9323
|
|
|
9295
9324
|
function DatePicker(_a) {
|
|
9296
9325
|
var className = _a.className, props = __rest(_a, ["className"]);
|
|
@@ -9350,8 +9379,8 @@ function DateTimeCalendar(_a) {
|
|
|
9350
9379
|
} })));
|
|
9351
9380
|
}
|
|
9352
9381
|
|
|
9353
|
-
var css_248z$
|
|
9354
|
-
styleInject(css_248z$
|
|
9382
|
+
var css_248z$f = ".divider-component-v2 {\n width: 100%;\n}";
|
|
9383
|
+
styleInject(css_248z$f);
|
|
9355
9384
|
|
|
9356
9385
|
function Divider(_a) {
|
|
9357
9386
|
var _b = _a.height, height = _b === void 0 ? 1 : _b, _c = _a.color, color = _c === void 0 ? "wildSand" : _c;
|
|
@@ -9378,8 +9407,8 @@ function CountryDropdown(_a) {
|
|
|
9378
9407
|
return React.createElement(Dropdown, __assign({}, args, { value: value, defaultValue: defaultValue, options: options, onChange: onChange }));
|
|
9379
9408
|
}
|
|
9380
9409
|
|
|
9381
|
-
var css_248z$
|
|
9382
|
-
styleInject(css_248z$
|
|
9410
|
+
var css_248z$e = ".emptyContent-component-v2 {\n display: flex;\n justify-content: center;\n align-items: center;\n flex: 1;\n width: 100%;\n height: 100%;\n padding: 2rem;\n box-sizing: border-box;\n background: var(--cloud, #F4F4F4);\n align-self: stretch;\n justify-self: stretch;\n border-radius: 32px;\n}\n.emptyContent-component-v2 > .MuiStack-root {\n width: 32rem;\n text-align: center;\n}\n.emptyContent-component-v2 > .MuiStack-root .MuiTypography-h3 {\n margin-top: 1rem;\n}\n.emptyContent-component-v2 > .MuiStack-root .MuiTypography-body1L {\n display: block;\n margin-top: 0.5rem;\n}\n.emptyContent-component-v2 > .MuiStack-root button {\n margin-top: 1rem;\n}";
|
|
9411
|
+
styleInject(css_248z$e);
|
|
9383
9412
|
|
|
9384
9413
|
function EmptyContent(_a) {
|
|
9385
9414
|
var title = _a.title, desc = _a.desc, _b = _a.iconName, iconName = _b === void 0 ? "EmptyFolder44" : _b, _c = _a.className, className = _c === void 0 ? "" : _c, button = _a.button;
|
|
@@ -9393,8 +9422,8 @@ function EmptyContent(_a) {
|
|
|
9393
9422
|
button && button));
|
|
9394
9423
|
}
|
|
9395
9424
|
|
|
9396
|
-
var css_248z$
|
|
9397
|
-
styleInject(css_248z$
|
|
9425
|
+
var css_248z$d = ".fileUpload-component-v2 {\n position: relative;\n width: 100%;\n}\n.fileUpload-component-v2 > .fileUploadContainer {\n box-sizing: border-box;\n text-align: center;\n cursor: pointer;\n width: 100%;\n padding: 3rem 2rem;\n display: flex;\n position: relative;\n}\n.fileUpload-component-v2 > .fileUploadContainer fieldset {\n position: absolute;\n margin: 0;\n padding: 0 0 0 1rem !important;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n border-radius: 8px;\n border: 1px dashed var(--pebble, #EAEAEA);\n text-align: left;\n position: absolute;\n padding-inline: 0.75em;\n margin-inline: unset;\n}\n.fileUpload-component-v2 > .fileUploadContainer img {\n max-width: 100%;\n}\n.fileUpload-component-v2 > .fileUploadContainer.hasDropdown fieldset {\n border-bottom-right-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n}\n.fileUpload-component-v2 .dropdown-component-v2 {\n flex: 1;\n margin-top: 0;\n position: relative;\n left: 1px;\n width: calc(100% - 2px);\n}\n.fileUpload-component-v2 .dropdown-component-v2 > .MuiInputBase-root:not(:focus):not(:hover):not(:active) {\n outline-color: var(--secondary-brand-color, var(--teal, #0ABDAE));\n}\n.fileUpload-component-v2 .dropdown-component-v2 > .MuiInputBase-root {\n max-width: unset;\n border-top-right-radius: 0 !important;\n border-top-left-radius: 0 !important;\n}";
|
|
9426
|
+
styleInject(css_248z$d);
|
|
9398
9427
|
|
|
9399
9428
|
function FileUpload(_a) {
|
|
9400
9429
|
var label = _a.label, onChange = _a.onChange, _b = _a.defaultIconName, defaultIconName = _b === void 0 ? "Upload44" : _b, placeholder = _a.placeholder, support = _a.support, dropdown = _a.dropdown;
|
|
@@ -9497,8 +9526,8 @@ function Link(_a) {
|
|
|
9497
9526
|
return React.createElement(material.Link, __assign({}, props, { variant: variant, color: color, className: classes }), children);
|
|
9498
9527
|
}
|
|
9499
9528
|
|
|
9500
|
-
var css_248z$
|
|
9501
|
-
styleInject(css_248z$
|
|
9529
|
+
var css_248z$c = ".subNav-component-v2 {\n flex-wrap: wrap;\n}\n.subNav-component-v2.dir-row button:not(:last-child) {\n margin-right: 2px;\n}\n.subNav-component-v2.dir-column button:not(:first-child) {\n margin-top: 1.25rem;\n}\n.subNav-component-v2 button.selected {\n pointer-events: none;\n}\n.subNav-component-v2 button.default, .subNav-component-v2 button.text {\n color: var(--body-font-color, var(--dark-matter, #2B2B2B));\n outline: none;\n}\n.subNav-component-v2 button.default span, .subNav-component-v2 button.text span {\n color: var(--body-font-color, var(--dark-matter, #2B2B2B));\n}\n.subNav-component-v2 button.default:not(:hover), .subNav-component-v2 button.text:not(:hover) {\n background: none;\n}\n.subNav-component-v2 button.default:hover, .subNav-component-v2 button.text:hover {\n outline: none;\n}\n.subNav-component-v2 button.default:active, .subNav-component-v2 button.text:active {\n outline: none !important;\n}\n.subNav-component-v2 button.default {\n text-transform: none;\n}\n.subNav-component-v2 button.default span {\n text-transform: none;\n}\n.subNav-component-v2 button.default.selected {\n background-color: var(--cloud, #F4F4F4);\n}\n.subNav-component-v2 button.text span {\n color: var(--silver, #9B9B9B);\n}\n.subNav-component-v2 button.text:hover, .subNav-component-v2 button.text.selected {\n background: none;\n color: var(--body-font-color, var(--dark-matter, #2B2B2B));\n}\n.subNav-component-v2 button.text:hover span, .subNav-component-v2 button.text.selected span {\n color: var(--body-font-color, var(--dark-matter, #2B2B2B));\n}";
|
|
9530
|
+
styleInject(css_248z$c);
|
|
9502
9531
|
|
|
9503
9532
|
function SubNav(_a) {
|
|
9504
9533
|
var _b = _a.items, items = _b === void 0 ? [] : _b, _c = _a.direction, direction = _c === void 0 ? "row" : _c, initialSelected = _a.initialSelected, selected = _a.selected, onClick = _a.onClick, className = _a.className, _d = _a.menuVariant, menuVariant = _d === void 0 ? "default" : _d, btnOverride = _a.btnOverride;
|
|
@@ -9530,8 +9559,8 @@ function SubNav(_a) {
|
|
|
9530
9559
|
}));
|
|
9531
9560
|
}
|
|
9532
9561
|
|
|
9533
|
-
var css_248z$
|
|
9534
|
-
styleInject(css_248z$
|
|
9562
|
+
var css_248z$b = ".filter-bar-component-v2 {\n background: var(--shade100, #F3F2F2);\n width: 100%;\n box-sizing: border-box;\n}\n.filter-bar-component-v2 .DDItem {\n padding-left: 2rem;\n}\n.filter-bar-component-v2 .DDItem .MuiInputBase-input {\n padding-right: 0 !important;\n}\n.filter-bar-component-v2 .addFilterBox {\n padding: 0 1.5rem;\n position: relative;\n cursor: pointer;\n}\n.filter-bar-component-v2 .addFilterBox .MuiLink-root {\n text-decoration: none;\n}\n.filter-bar-component-v2 .addFilterBox .search-component-v2 .inputContainer {\n padding: 0;\n background: unset;\n box-shadow: none;\n}\n.filter-bar-component-v2 .addFilterBox .dropMenuContainer {\n position: absolute;\n top: 4rem;\n width: -moz-max-content;\n width: max-content;\n min-width: 100%;\n box-shadow: 0px 0px 15px 0px rgba(0, 0, 0, 0.1490196078);\n border-radius: 16px;\n min-width: 300;\n background: var(--background-color-1, var(--white, #FFFFFF));\n box-sizing: border-box;\n z-index: 1000;\n}\n.filter-bar-component-v2 .addFilterBox .dropMenuContainer .subNav-component-v2 {\n justify-content: space-between;\n margin: 0;\n}\n.filter-bar-component-v2 .addFilterBox .dropMenuContainer .subNav-component-v2 button {\n flex: 1;\n border-radius: 0;\n background: var(--cloud, #F4F4F4);\n}\n.filter-bar-component-v2 .addFilterBox .dropMenuContainer .subNav-component-v2 button.selected {\n background: var(--white, #FFFFFF);\n}\n.filter-bar-component-v2 .addFilterBox .dropMenuContainer .subNav-component-v2 button:first-child, .filter-bar-component-v2 .addFilterBox .dropMenuContainer .subNav-component-v2 button:first-child:hover {\n border-top-left-radius: 4px;\n}\n.filter-bar-component-v2 .addFilterBox .dropMenuContainer .subNav-component-v2 button:last-child, .filter-bar-component-v2 .addFilterBox .dropMenuContainer .subNav-component-v2 button:last-child:hover {\n border-top-right-radius: 4px;\n}\n.filter-bar-component-v2 .addFilterBox .dropMenuContainer .dropMenu-component-v2 {\n box-shadow: none;\n margin-top: 0;\n padding: 1.5rem;\n}\n.filter-bar-component-v2 .addFilterBox .dropMenuContainer .dropMenu-component-v2 .MuiMenuItem-root {\n padding: 0.5rem;\n}\n.filter-bar-component-v2 .addFilterBox .dropMenuContainer .dropMenu-component-v2 .MuiMenuItem-root.isTitle {\n padding-top: 0;\n}\n.filter-bar-component-v2 .addFilterBox .dropMenuContainer .dropMenu-component-v2 .MuiTypography-body1L {\n font-size: 0.875rem;\n}\n.filter-bar-component-v2 .addFilterBox .dropMenuContainer > button {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n padding: 0.75rem;\n}\n.filter-bar-component-v2 .pillContainer {\n padding: 0.75rem;\n min-height: 2rem;\n overflow-x: auto;\n}\n.filter-bar-component-v2 .pillContainer .MuiSvgIcon-root {\n padding-right: 0;\n padding-left: 0.5rem;\n}\n.filter-bar-component-v2 .pillContainer .MuiChip-root {\n flex-direction: row-reverse;\n}\n.filter-bar-component-v2 .pillContainer .MuiChip-root.disabled {\n pointer-events: all !important;\n}\n.filter-bar-component-v2 .pillContainer .MuiChip-root .MuiChip-label {\n display: flex;\n align-items: center;\n}\n.filter-bar-component-v2 .pillContainer .MuiChip-root .MuiChip-label .MuiSvgIcon-root {\n margin-right: 0.5rem;\n}\n.filter-bar-component-v2 .pillContainer .MuiChip-root .MuiChip-label .MuiSvgIcon-root path {\n fill: var(--white, #FFFFFF);\n}\n.filter-bar-component-v2 .pillContainer:not(.empty) {\n border-left: 1px solid var(--wild-sand, #dddddd);\n}\n.filter-bar-component-v2 .actionContainer {\n border-left: 1px solid var(--wild-sand, #dddddd);\n padding: 0 2rem;\n padding-left: 2rem;\n}\n.filter-bar-component-v2 .actionContainer .MuiTypography-root {\n cursor: pointer;\n}";
|
|
9563
|
+
styleInject(css_248z$b);
|
|
9535
9564
|
|
|
9536
9565
|
function FilterBar(_a) {
|
|
9537
9566
|
var _b, _c, _d, _e, _f, _g, _h, _j;
|
|
@@ -11948,7 +11977,7 @@ function renderPage(_a) {
|
|
|
11948
11977
|
});
|
|
11949
11978
|
}
|
|
11950
11979
|
|
|
11951
|
-
var BASE_URL = function () { return uiKitConfig.GATEWAY_PROXY + "/pats"; };
|
|
11980
|
+
var BASE_URL = function () { return uiKitConfig.GATEWAY_PROXY + "/users/self/pats"; };
|
|
11952
11981
|
function listPats(_a) {
|
|
11953
11982
|
var page = _a.page, perPage = _a.perPage, status = _a.status;
|
|
11954
11983
|
return callApi({
|
|
@@ -13246,8 +13275,15 @@ var PersonalAccessTokenModel = /** @class */ (function () {
|
|
|
13246
13275
|
return __generator(this, function (_c) {
|
|
13247
13276
|
return [2 /*return*/, updatePat({ keyPrefix: this.key_prefix, name: name, scopes: scopes, allowedAccountIds: allowedAccountIds })
|
|
13248
13277
|
.then(function (data) {
|
|
13278
|
+
// Unlike revoke(), update() does NOT tolerate an empty/204 body: it
|
|
13279
|
+
// must return a model reflecting the new field values, so falling
|
|
13280
|
+
// back to `this` (the pre-update model) would be wrong. ng-api
|
|
13281
|
+
// returns the updated resource; a missing body is a real error.
|
|
13282
|
+
var updated = new PersonalAccessTokenModel(unwrapResponse(data));
|
|
13283
|
+
// Track only after a successful parse, so a malformed body (which
|
|
13284
|
+
// throws above) never misreports a successful update.
|
|
13249
13285
|
trackEvent(exports.EEvents.PAT_UPDATED, { key_prefix: _this.key_prefix });
|
|
13250
|
-
return
|
|
13286
|
+
return updated;
|
|
13251
13287
|
})];
|
|
13252
13288
|
});
|
|
13253
13289
|
});
|
|
@@ -13258,8 +13294,16 @@ var PersonalAccessTokenModel = /** @class */ (function () {
|
|
|
13258
13294
|
return __generator(this, function (_a) {
|
|
13259
13295
|
return [2 /*return*/, revokePat({ keyPrefix: this.key_prefix })
|
|
13260
13296
|
.then(function (data) {
|
|
13297
|
+
// ng-api returns the updated token. Tolerate an empty body (e.g. a
|
|
13298
|
+
// 204) — return a copy with status: "revoked" rather than the
|
|
13299
|
+
// unchanged model, so callers reading .status see the revocation.
|
|
13300
|
+
var revoked = (data != null && typeof data === "object")
|
|
13301
|
+
? new PersonalAccessTokenModel(unwrapResponse(data))
|
|
13302
|
+
: new PersonalAccessTokenModel(__assign(__assign({}, _this), { status: "revoked" }));
|
|
13303
|
+
// Track only after a successful parse, so a malformed body (which
|
|
13304
|
+
// throws above) never misreports a successful revoke.
|
|
13261
13305
|
trackEvent(exports.EEvents.PAT_REVOKED, { key_prefix: _this.key_prefix });
|
|
13262
|
-
return
|
|
13306
|
+
return revoked;
|
|
13263
13307
|
})];
|
|
13264
13308
|
});
|
|
13265
13309
|
});
|
|
@@ -13791,8 +13835,8 @@ function GenericWrapper(_a) {
|
|
|
13791
13835
|
content);
|
|
13792
13836
|
}
|
|
13793
13837
|
|
|
13794
|
-
var css_248z$
|
|
13795
|
-
styleInject(css_248z$
|
|
13838
|
+
var css_248z$a = ".groupedActions-component {\n display: flex;\n}\n.groupedActions-component > *:first-child, .groupedActions-component > *:first-child.dropdown-component-v2 .MuiInputBase-root {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.groupedActions-component > *:last-child, .groupedActions-component > *:last-child.dropdown-component-v2 .MuiInputBase-root {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.groupedActions-component > *:nth-child(n+2):not(:last-child), .groupedActions-component > *:nth-child(n+2):not(:last-child).dropdown-component-v2 .MuiInputBase-root {\n border-radius: 0;\n}\n.groupedActions-component.contained > *:nth-child(n+2):not(:last-child) {\n margin-left: 1px;\n}\n.groupedActions-component.contained > *:last-child {\n margin-left: 1px;\n}\n.groupedActions-component.outlined > *:nth-child(n+2):not(:last-child), .groupedActions-component.outlined > *:nth-child(n+2):not(:last-child).dropdown-component-v2 .MuiInputBase-root, .groupedActions-component.outlined > *:not(:first-child):active, .groupedActions-component.outlined > *:not(:first-child):active.dropdown-component-v2 .MuiInputBase-root, .groupedActions-component.outlined > *:last-child, .groupedActions-component.outlined > *:last-child.dropdown-component-v2 .MuiInputBase-root {\n border-left: none !important;\n}";
|
|
13839
|
+
styleInject(css_248z$a);
|
|
13796
13840
|
|
|
13797
13841
|
function GroupedActions(_a) {
|
|
13798
13842
|
var _b = _a.components, components = _b === void 0 ? [] : _b, classNames$1 = _a.classNames, _c = _a.variant, variant = _c === void 0 ? "contained" : _c;
|
|
@@ -13806,8 +13850,8 @@ function GroupedActions(_a) {
|
|
|
13806
13850
|
return React.createElement(Box, { className: classes }, components);
|
|
13807
13851
|
}
|
|
13808
13852
|
|
|
13809
|
-
var css_248z$
|
|
13810
|
-
styleInject(css_248z$
|
|
13853
|
+
var css_248z$9 = ".header-component-v2 {\n max-width: 31rem;\n width: 100%;\n}\n.header-component-v2 > * {\n width: -moz-fit-content;\n width: fit-content;\n}\n.header-component-v2 .header .headerText,\n.header-component-v2 .header .headerText span,\n.header-component-v2 .desc span,\n.header-component-v2 .support span {\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 31rem;\n display: block;\n text-wrap: nowrap;\n width: 100%;\n}\n.header-component-v2 .header,\n.header-component-v2 .desc,\n.header-component-v2 .support {\n width: -moz-fit-content;\n width: fit-content;\n}\n.header-component-v2 .header {\n flex: 1;\n margin-top: 0;\n}\n.header-component-v2 .header .postHeader,\n.header-component-v2 .header .preHeader {\n display: inline-block;\n width: -moz-fit-content;\n width: fit-content;\n text-wrap: nowrap;\n}\n.header-component-v2 .header .preHeader {\n margin-right: 1rem;\n}\n.header-component-v2 .header .postHeader {\n margin-left: 1.5rem;\n}\n.header-component-v2 .support {\n flex: 1;\n line-height: 0.75rem;\n display: block;\n margin-bottom: 1px;\n}\n.header-component-v2 .desc {\n flex: 1;\n margin-top: 1rem;\n border-color: var(--secondary-brand-color, var(--teal, #0ABDAE));\n}";
|
|
13854
|
+
styleInject(css_248z$9);
|
|
13811
13855
|
|
|
13812
13856
|
//TODO when bottom line is secondary color, it means it is in a editable state, clicking it would transform it into a text field with check and x
|
|
13813
13857
|
//https://www.figma.com/proto/OQkvkOI4CMyrcPbuza16e3/Analytics?type=design&node-id=232-14879&t=kNKIjcU4MImW1jef-0&scaling=min-zoom&page-id=0%3A1&starting-point-node-id=232%3A14512&show-proto-sidebar=1
|
|
@@ -13831,8 +13875,8 @@ function Header(_a) {
|
|
|
13831
13875
|
React.createElement(Typography$1, { variant: "body1L", className: "desc ".concat(descTooltip ? "showTooltip" : "") }, desc)));
|
|
13832
13876
|
}
|
|
13833
13877
|
|
|
13834
|
-
var css_248z$
|
|
13835
|
-
styleInject(css_248z$
|
|
13878
|
+
var css_248z$8 = ".iconPill-component-v2 {\n position: relative;\n}\n.iconPill-component-v2 span {\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n background: var(--background-color-1, var(--white, #FFFFFF));\n border: 1px solid var(--wild-sand, #dddddd);\n font-size: 0.625rem;\n border-radius: 20px;\n font-weight: bold;\n top: -0.625rem;\n right: -0.625rem;\n width: 1.25rem;\n height: 1.25rem;\n}\n.iconPill-component-v2.s10 span {\n top: -0.25rem;\n right: -0.75rem;\n width: 0.75rem;\n height: 0.75rem;\n font-size: 0.5rem;\n}\n.iconPill-component-v2.s14 span {\n top: -0.3rem;\n right: -0.7rem;\n width: 0.75rem;\n height: 0.75rem;\n font-size: 0.5rem;\n}\n.iconPill-component-v2.s18 span {\n top: -0.5rem;\n right: -0.5rem;\n width: 1rem;\n height: 1rem;\n}\n.iconPill-component-v2.s32 span {\n top: -0.75rem;\n right: -0.75rem;\n width: 1.5rem;\n height: 1.5rem;\n font-size: 0.85rem;\n}\n.iconPill-component-v2.s44 span {\n top: -0.75rem;\n right: -0.75rem;\n width: 1.5rem;\n height: 1.5rem;\n font-size: 1rem;\n}";
|
|
13879
|
+
styleInject(css_248z$8);
|
|
13836
13880
|
|
|
13837
13881
|
var IconPill = React.forwardRef(function (_a, ref) {
|
|
13838
13882
|
var _b = _a.count, count = _b === void 0 ? 0 : _b, _c = _a.iconName, iconName = _c === void 0 ? "Domainauthenticated24" : _c, color = _a.color;
|
|
@@ -13853,8 +13897,8 @@ var IconPill = React.forwardRef(function (_a, ref) {
|
|
|
13853
13897
|
React.createElement(Icon, { name: iconName, color: defaultColor }));
|
|
13854
13898
|
});
|
|
13855
13899
|
|
|
13856
|
-
var css_248z$
|
|
13857
|
-
styleInject(css_248z$
|
|
13900
|
+
var css_248z$7 = ".informationGroup-component-v2 {\n display: flex;\n}\n.informationGroup-component-v2:first-child {\n padding-bottom: 2rem;\n}\n.informationGroup-component-v2:last-child {\n padding-top: 2rem;\n}\n.informationGroup-component-v2:not(:first-child):not(:last-child) {\n padding: 2rem 0;\n}\n.informationGroup-component-v2:not(:last-child) {\n border-bottom: 1px solid var(--wild-sand, #dddddd);\n}\n.informationGroup-component-v2 > div {\n max-width: 31.25rem;\n width: 100%;\n}\n.informationGroup-component-v2 > div:first-child {\n margin-right: 3rem;\n}\n.informationGroup-component-v2 > div:last-child {\n margin-top: 0.5rem;\n display: flex;\n flex-direction: column;\n}\n.informationGroup-component-v2 > div:last-child > div:not(:first-child) {\n margin-top: 2.5rem;\n}\n.informationGroup-component-v2 > div:last-child .dropdown-component-v2 .MuiInputBase-root,\n.informationGroup-component-v2 > div:last-child .dropdown-component-v2 {\n width: 100%;\n}\n.informationGroup-component-v2 > div:last-child .autocomplete-dropdown-container {\n z-index: 10000000;\n}";
|
|
13901
|
+
styleInject(css_248z$7);
|
|
13858
13902
|
|
|
13859
13903
|
function InformationGroup(_a) {
|
|
13860
13904
|
var title = _a.title, desc = _a.desc, rightContent = _a.rightContent, children = _a.children;
|
|
@@ -13867,8 +13911,8 @@ function InformationGroup(_a) {
|
|
|
13867
13911
|
children));
|
|
13868
13912
|
}
|
|
13869
13913
|
|
|
13870
|
-
var css_248z$
|
|
13871
|
-
styleInject(css_248z$
|
|
13914
|
+
var css_248z$6 = ".inlineTextEdit-component-v2 {\n border-bottom: var(--secondary-brand-color, var(--teal, #0ABDAE));\n border-bottom-style: dashed;\n position: relative;\n}\n.inlineTextEdit-component-v2 .hasPlaceholder {\n opacity: 0.5;\n}\n.inlineTextEdit-component-v2.editing .actions {\n position: absolute;\n right: -4.875rem;\n top: -2px;\n}\n.inlineTextEdit-component-v2.editing .actions .confirm {\n margin-right: 0.25rem;\n}\n.inlineTextEdit-component-v2.editing .actions .cancel svg {\n width: 10px;\n}\n.inlineTextEdit-component-v2 input,\n.inlineTextEdit-component-v2 textarea,\n.inlineTextEdit-component-v2 .MuiInputBase-root {\n width: 100%;\n border: none;\n padding: 0 !important;\n outline: none;\n}\n.inlineTextEdit-component-v2 input:active, .inlineTextEdit-component-v2 input:focus,\n.inlineTextEdit-component-v2 textarea:active,\n.inlineTextEdit-component-v2 textarea:focus,\n.inlineTextEdit-component-v2 .MuiInputBase-root:active,\n.inlineTextEdit-component-v2 .MuiInputBase-root:focus {\n border: none;\n}\n.inlineTextEdit-component-v2 > span,\n.inlineTextEdit-component-v2 input,\n.inlineTextEdit-component-v2 textarea,\n.inlineTextEdit-component-v2 .MuiBox-root,\n.inlineTextEdit-component-v2 .MuiBox-root .textfield-component-v2,\n.inlineTextEdit-component-v2 .MuiBox-root .textfield-component-v2 .MuiTextField-root,\n.inlineTextEdit-component-v2 .MuiBox-root .textfield-component-v2 .MuiTextField-root .MuiInputBase-root,\n.inlineTextEdit-component-v2 .MuiBox-root .textfield-component-v2 .MuiTextField-root .MuiInputBase-root input {\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit;\n line-height: inherit;\n color: inherit;\n}\n.inlineTextEdit-component-v2 .MuiBox-root .textfield-component-v2 .MuiTextField-root .MuiInputBase-root::before {\n content: unset;\n}\n.inlineTextEdit-component-v2 .MuiBox-root .textfield-component-v2 .MuiTextField-root .MuiInputBase-root::after {\n content: unset !important;\n}\n.inlineTextEdit-component-v2 .MuiBox-root .textfield-component-v2 .MuiTextField-root .MuiInputBase-root input,\n.inlineTextEdit-component-v2 .MuiBox-root .textfield-component-v2 .MuiTextField-root .MuiInputBase-root textarea {\n border: none;\n padding-top: 0;\n height: unset;\n}";
|
|
13915
|
+
styleInject(css_248z$6);
|
|
13872
13916
|
|
|
13873
13917
|
function InlineTextEdit(_a) {
|
|
13874
13918
|
var _b, _c;
|
|
@@ -19280,8 +19324,8 @@ process.env.NODE_ENV !== "production" ? Stack.propTypes /* remove-proptypes */ =
|
|
|
19280
19324
|
useFlexGap: PropTypes.bool
|
|
19281
19325
|
} : void 0;
|
|
19282
19326
|
|
|
19283
|
-
var css_248z$
|
|
19284
|
-
styleInject(css_248z$
|
|
19327
|
+
var css_248z$5 = ".metricCard-component {\n min-width: 250px;\n width: 100%;\n max-width: 35.25rem;\n box-sizing: border-box;\n box-shadow: none !important;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n gap: 2rem;\n}\n.metricCard-component.card {\n padding: 2rem;\n background: var(--cloud, #F4F4F4);\n}\n.metricCard-component.plain {\n background: none !important;\n}\n.metricCard-component.withRightContent {\n max-width: 72rem;\n}\n.metricCard-component > .rightContent {\n flex: 1;\n align-items: flex-end;\n}\n.metricCard-component > .rightContent img {\n border-radius: 24px;\n border: 1px solid var(--wild-sand, #dddddd);\n width: 100%;\n min-width: 150px;\n max-width: 225px;\n max-height: 18rem;\n}\n.metricCard-component > div:not(.rightContent) {\n flex: 1;\n}\n.metricCard-component > div:not(.rightContent) > img + .heading,\n.metricCard-component > div:not(.rightContent) > img + .subHeading,\n.metricCard-component > div:not(.rightContent) > img + .metricRows {\n margin-top: 2rem;\n}\n.metricCard-component > div:not(.rightContent) > .heading ~ div,\n.metricCard-component > div:not(.rightContent) .subHeading ~ div {\n margin-top: 1.5rem;\n}\n.metricCard-component > div:not(.rightContent) > img {\n border-radius: 48px;\n max-width: 100%;\n max-height: 18.75rem;\n margin: 0 auto;\n}\n.metricCard-component > div:not(.rightContent) > .heading .MuiSvgIcon-root {\n margin-right: 1rem;\n}\n.metricCard-component > div:not(.rightContent) > .subHeading.withProgress {\n margin-top: 1rem;\n}\n.metricCard-component > div:not(.rightContent) > .subHeading > .MuiStack-root {\n flex: 1;\n}\n.metricCard-component > div:not(.rightContent) > .subHeading > .MuiStack-root > .desc {\n display: grid;\n}\n.metricCard-component > div:not(.rightContent) > .subHeading > .MuiStack-root > .progress {\n height: calc(1rem - 2px);\n background: var(--white, #FFFFFF);\n}\n.metricCard-component > div:not(.rightContent) > .subHeading > .MuiStack-root > .progress + .data {\n margin-left: 1rem;\n font-size: 4rem;\n position: relative;\n top: -12px;\n}\n.metricCard-component > div:not(.rightContent) > .subHeading > .MuiStack-root > .data + .desc {\n margin-left: 2rem;\n}\n.metricCard-component > div:not(.rightContent) > .subHeading .MuiChip-root {\n margin-left: 2rem;\n}\n.metricCard-component > div:not(.rightContent) > .subHeading .MuiChip-root .MuiSvgIcon-root {\n padding-right: 0.5rem;\n}\n.metricCard-component > div:not(.rightContent) > .metricRows .MuiStack-root .MuiTypography-root:first-child {\n margin-right: 1rem;\n}\n.metricCard-component > div:not(.rightContent) > .metricRows .MuiStack-root:not(:last-child) {\n padding-bottom: 1rem;\n border-bottom: 1px solid var(--wild-sand, #dddddd);\n}\n.metricCard-component > div:not(.rightContent) > .metricRows .MuiStack-root:not(:first-child) {\n margin-top: 1rem;\n}\n.metricCard-component > div:not(.rightContent) > .floatingRow {\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n}";
|
|
19328
|
+
styleInject(css_248z$5);
|
|
19285
19329
|
|
|
19286
19330
|
function MetricCard(_a) {
|
|
19287
19331
|
var _b, _c, _d, _e;
|
|
@@ -19338,8 +19382,8 @@ function Radio(_a) {
|
|
|
19338
19382
|
return React.createElement(material.Radio, __assign({}, props));
|
|
19339
19383
|
}
|
|
19340
19384
|
|
|
19341
|
-
var css_248z$
|
|
19342
|
-
styleInject(css_248z$
|
|
19385
|
+
var css_248z$4 = ".resourceEdit-component-v2 {\n width: 100%;\n padding-bottom: 1.5rem;\n}\n.resourceEdit-component-v2 .resource-heading {\n flex: 1;\n width: 100%;\n}\n.resourceEdit-component-v2 .resource-heading.editable {\n cursor: pointer;\n}\n.resourceEdit-component-v2 .resource-heading.editable:hover button.MuiButton-contained {\n background: var(--wild-sand, #dddddd);\n color: var(--body-font-color, var(--dark-matter, #2B2B2B));\n}\n.resourceEdit-component-v2 .resource-heading.editable:hover button.MuiButton-contained .MuiSvgIcon-root {\n color: var(--body-font-color, var(--dark-matter, #2B2B2B));\n}\n.resourceEdit-component-v2 .resource-heading.editable:hover button.MuiButton-outlined {\n outline: 1px solid var(--wild-sand, #dddddd);\n background: var(--wild-sand, #dddddd);\n color: var(--body-font-color, var(--dark-matter, #2B2B2B));\n}\n.resourceEdit-component-v2 .resource-heading.editable:hover button.MuiButton-outlined .MuiSvgIcon-root {\n color: var(--body-font-color, var(--dark-matter, #2B2B2B));\n}\n.resourceEdit-component-v2 .resource-heading.editable:hover button.MuiButton-text {\n background: var(--wild-sand, #dddddd);\n}\n.resourceEdit-component-v2 .resource-heading .resource-title {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-start;\n}\n.resourceEdit-component-v2 .resource-heading .statusCheckmark {\n width: 24px;\n height: 24px;\n border-radius: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-left: 0.5rem;\n}\n.resourceEdit-component-v2 .resource-heading .statusCheckmark.valid {\n background-color: var(--secondary-brand-color, var(--teal, #0ABDAE));\n}\n.resourceEdit-component-v2 .resource-heading .statusCheckmark.warning {\n background-color: var(--warning-brand-color, var(--orange, #FF9E0E));\n}\n.resourceEdit-component-v2 .resource-heading .statusCheckmark.error {\n background-color: var(--error-brand-color, var(--rad-red, #FF4835));\n}\n.resourceEdit-component-v2 .resource-heading .statusCheckmark.empty {\n background-color: var(--shade500, #939292);\n}";
|
|
19386
|
+
styleInject(css_248z$4);
|
|
19343
19387
|
|
|
19344
19388
|
function ResourceEdit(_a) {
|
|
19345
19389
|
var _b = _a.editable, editable = _b === void 0 ? false : _b, title = _a.title, desc = _a.desc, support = _a.support, status = _a.status, editableContent = _a.editableContent, className = _a.className, _c = _a.initOpen, initOpen = _c === void 0 ? false : _c;
|
|
@@ -19363,15 +19407,22 @@ function ResourceEdit(_a) {
|
|
|
19363
19407
|
support && React.createElement(material.Box, { className: "resource-support ".concat(!open ? "open" : "hidden") }, support));
|
|
19364
19408
|
}
|
|
19365
19409
|
|
|
19366
|
-
// Scope implication rules
|
|
19410
|
+
// Scope implication rules: selecting the key action also grants the listed actions.
|
|
19411
|
+
// Implied scopes are filtered against ALL_GRANULAR_SCOPES so we never emit a scope
|
|
19412
|
+
// the API doesn't define (e.g. a resource that has no `read`).
|
|
19367
19413
|
var SCOPE_IMPLICATIONS = {
|
|
19368
19414
|
"write": ["read"],
|
|
19369
19415
|
"delete": ["read"],
|
|
19370
19416
|
"send": ["read"],
|
|
19417
|
+
"send-test": ["read"],
|
|
19418
|
+
"share": ["read"],
|
|
19419
|
+
"publish": ["read"],
|
|
19371
19420
|
"import": ["read", "write"],
|
|
19372
19421
|
"export": ["read"],
|
|
19373
19422
|
"admin": ["read", "write", "delete"],
|
|
19374
19423
|
};
|
|
19424
|
+
// Catalog mirrors the ng-api ResourceScope enum exactly. Keep in sync with it —
|
|
19425
|
+
// the API rejects (422) any scope that is not a member of the enum.
|
|
19375
19426
|
var SCOPE_CATEGORIES = [
|
|
19376
19427
|
{
|
|
19377
19428
|
id: "audience",
|
|
@@ -19399,8 +19450,8 @@ var SCOPE_CATEGORIES = [
|
|
|
19399
19450
|
label: "Campaigns",
|
|
19400
19451
|
adminOnly: false,
|
|
19401
19452
|
resources: [
|
|
19402
|
-
{ resource: "campaigns", label: "Campaigns", actions: ["read", "write", "delete", "send"] },
|
|
19403
|
-
{ resource: "campaign_blueprints", label: "Campaign Blueprints", actions: ["read"
|
|
19453
|
+
{ resource: "campaigns", label: "Campaigns", actions: ["read", "write", "delete", "send", "send-test", "admin"] },
|
|
19454
|
+
{ resource: "campaign_blueprints", label: "Campaign Blueprints", actions: ["read"] },
|
|
19404
19455
|
]
|
|
19405
19456
|
},
|
|
19406
19457
|
{
|
|
@@ -19408,7 +19459,7 @@ var SCOPE_CATEGORIES = [
|
|
|
19408
19459
|
label: "Templates",
|
|
19409
19460
|
adminOnly: false,
|
|
19410
19461
|
resources: [
|
|
19411
|
-
{ resource: "templates", label: "Templates", actions: ["read", "write", "delete"] },
|
|
19462
|
+
{ resource: "templates", label: "Templates", actions: ["read", "write", "delete", "share"] },
|
|
19412
19463
|
]
|
|
19413
19464
|
},
|
|
19414
19465
|
{
|
|
@@ -19416,7 +19467,7 @@ var SCOPE_CATEGORIES = [
|
|
|
19416
19467
|
label: "Email API",
|
|
19417
19468
|
adminOnly: false,
|
|
19418
19469
|
resources: [
|
|
19419
|
-
{ resource: "
|
|
19470
|
+
{ resource: "emailapi", label: "Email API", actions: ["read", "send"] },
|
|
19420
19471
|
]
|
|
19421
19472
|
},
|
|
19422
19473
|
{
|
|
@@ -19424,8 +19475,8 @@ var SCOPE_CATEGORIES = [
|
|
|
19424
19475
|
label: "Forms",
|
|
19425
19476
|
adminOnly: false,
|
|
19426
19477
|
resources: [
|
|
19427
|
-
{ resource: "forms", label: "Forms", actions: ["read", "write", "delete"] },
|
|
19428
|
-
{ resource: "preference_centers", label: "Preference Centers", actions: ["read", "write"
|
|
19478
|
+
{ resource: "forms", label: "Forms", actions: ["read", "write", "delete", "publish"] },
|
|
19479
|
+
{ resource: "preference_centers", label: "Preference Centers", actions: ["read", "write"] },
|
|
19429
19480
|
]
|
|
19430
19481
|
},
|
|
19431
19482
|
{
|
|
@@ -19435,8 +19486,8 @@ var SCOPE_CATEGORIES = [
|
|
|
19435
19486
|
resources: [
|
|
19436
19487
|
{ resource: "senders", label: "Senders", actions: ["read", "write", "delete"] },
|
|
19437
19488
|
{ resource: "dkim", label: "DKIM", actions: ["read", "write", "delete"] },
|
|
19438
|
-
{ resource: "domains", label: "Domains", actions: ["read", "write"
|
|
19439
|
-
{ resource: "logos", label: "Logos", actions: ["
|
|
19489
|
+
{ resource: "domains", label: "Domains", actions: ["read", "write"] },
|
|
19490
|
+
{ resource: "logos", label: "Logos", actions: ["write", "delete"] },
|
|
19440
19491
|
]
|
|
19441
19492
|
},
|
|
19442
19493
|
{
|
|
@@ -19444,7 +19495,7 @@ var SCOPE_CATEGORIES = [
|
|
|
19444
19495
|
label: "Webhooks",
|
|
19445
19496
|
adminOnly: false,
|
|
19446
19497
|
resources: [
|
|
19447
|
-
{ resource: "webhooks", label: "Webhooks", actions: ["read", "write"
|
|
19498
|
+
{ resource: "webhooks", label: "Webhooks", actions: ["read", "write"] },
|
|
19448
19499
|
]
|
|
19449
19500
|
},
|
|
19450
19501
|
{
|
|
@@ -19452,10 +19503,10 @@ var SCOPE_CATEGORIES = [
|
|
|
19452
19503
|
label: "Analytics",
|
|
19453
19504
|
adminOnly: false,
|
|
19454
19505
|
resources: [
|
|
19455
|
-
{ resource: "reports", label: "Reports", actions: ["read"
|
|
19506
|
+
{ resource: "reports", label: "Reports", actions: ["read"] },
|
|
19456
19507
|
{ resource: "logs", label: "Logs", actions: ["read", "export"] },
|
|
19457
19508
|
{ resource: "links", label: "Links", actions: ["read"] },
|
|
19458
|
-
{ resource: "tasks", label: "Tasks", actions: ["read"] },
|
|
19509
|
+
{ resource: "tasks", label: "Tasks", actions: ["read", "delete"] },
|
|
19459
19510
|
]
|
|
19460
19511
|
},
|
|
19461
19512
|
{
|
|
@@ -19482,6 +19533,14 @@ var SCOPE_CATEGORIES = [
|
|
|
19482
19533
|
{ resource: "sub_accounts", label: "Sub-accounts", actions: ["read", "write", "admin"] },
|
|
19483
19534
|
]
|
|
19484
19535
|
},
|
|
19536
|
+
{
|
|
19537
|
+
id: "system_emails_admin",
|
|
19538
|
+
label: "System Emails (Admin)",
|
|
19539
|
+
adminOnly: true,
|
|
19540
|
+
resources: [
|
|
19541
|
+
{ resource: "system_emails", label: "System Emails", actions: ["read", "write"] },
|
|
19542
|
+
]
|
|
19543
|
+
},
|
|
19485
19544
|
{
|
|
19486
19545
|
id: "tokens_admin",
|
|
19487
19546
|
label: "Tokens (Admin)",
|
|
@@ -19491,6 +19550,9 @@ var SCOPE_CATEGORIES = [
|
|
|
19491
19550
|
]
|
|
19492
19551
|
},
|
|
19493
19552
|
];
|
|
19553
|
+
// Every valid granular scope, derived from the catalog. Used to filter out any
|
|
19554
|
+
// implied/preset scope that isn't a real API enum member.
|
|
19555
|
+
var ALL_GRANULAR_SCOPES = new Set(SCOPE_CATEGORIES.flatMap(function (c) { return c.resources.flatMap(function (r) { return r.actions.map(function (a) { return "".concat(r.resource, ":").concat(a); }); }); }));
|
|
19494
19556
|
// Helper to get all scopes for a category
|
|
19495
19557
|
function getCategoryScopes(categoryId) {
|
|
19496
19558
|
var cat = SCOPE_CATEGORIES.find(function (c) { return c.id === categoryId; });
|
|
@@ -19498,13 +19560,31 @@ function getCategoryScopes(categoryId) {
|
|
|
19498
19560
|
return [];
|
|
19499
19561
|
return cat.resources.flatMap(function (r) { return r.actions.map(function (a) { return "".concat(r.resource, ":").concat(a); }); });
|
|
19500
19562
|
}
|
|
19563
|
+
// Group a flat list of granular scopes by their category, for compact display
|
|
19564
|
+
// (e.g. listing pills). Categories with no matching scope are omitted.
|
|
19565
|
+
function groupScopesByCategory(scopes) {
|
|
19566
|
+
var selected = new Set(scopes);
|
|
19567
|
+
return SCOPE_CATEGORIES
|
|
19568
|
+
.map(function (cat) { return ({
|
|
19569
|
+
id: cat.id,
|
|
19570
|
+
label: cat.label,
|
|
19571
|
+
// `cat` is already in hand here — derive its scopes directly instead of
|
|
19572
|
+
// re-locating it with getCategoryScopes (which does a redundant find).
|
|
19573
|
+
scopes: cat.resources
|
|
19574
|
+
.flatMap(function (r) { return r.actions.map(function (a) { return "".concat(r.resource, ":").concat(a); }); })
|
|
19575
|
+
.filter(function (s) { return selected.has(s); }),
|
|
19576
|
+
}); })
|
|
19577
|
+
.filter(function (c) { return c.scopes.length > 0; });
|
|
19578
|
+
}
|
|
19501
19579
|
var SCOPE_PRESETS = [
|
|
19502
19580
|
{
|
|
19503
19581
|
id: "readonly",
|
|
19504
19582
|
label: "Read-only (all)",
|
|
19505
19583
|
scopes: SCOPE_CATEGORIES
|
|
19506
19584
|
.filter(function (c) { return !c.adminOnly; })
|
|
19507
|
-
.flatMap(function (c) { return c.resources
|
|
19585
|
+
.flatMap(function (c) { return c.resources
|
|
19586
|
+
.filter(function (r) { return r.actions.includes("read"); })
|
|
19587
|
+
.map(function (r) { return "".concat(r.resource, ":read"); }); })
|
|
19508
19588
|
},
|
|
19509
19589
|
{
|
|
19510
19590
|
id: "full",
|
|
@@ -19535,10 +19615,28 @@ var SCOPE_PRESETS = [
|
|
|
19535
19615
|
},
|
|
19536
19616
|
];
|
|
19537
19617
|
|
|
19618
|
+
var css_248z$3 = ".scopePicker {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n font-family: proxima-nova, Lucida Grande, Lucida Sans Unicode, Lucida Sans, Geneva, Verdana, sans-serif;\n color: var(--body-font-color, var(--dark-matter, #2B2B2B));\n}\n.scopePicker__presets {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.75rem;\n}\n.scopePicker__presetsLabel {\n font-size: 0.8125rem;\n font-weight: 600;\n color: var(--body-font-color-2, var(--silver, #9B9B9B));\n}\n.scopePicker__presetButtons {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n}\n.scopePicker__presetBtn {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n cursor: pointer;\n border: 1px solid var(--shade200, #DBDADA);\n background: var(--white, #FFFFFF);\n color: var(--body-font-color, var(--dark-matter, #2B2B2B));\n font: inherit;\n font-size: 0.8125rem;\n line-height: 1;\n padding: 0.5rem 0.75rem;\n border-radius: 100px;\n transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;\n}\n.scopePicker__presetBtn:hover:not(:disabled) {\n border-color: var(--primary-brand-color, var(--grape, #69006E));\n color: var(--primary-brand-color, var(--grape, #69006E));\n background: var(--shade100, #F3F2F2);\n}\n.scopePicker__presetBtn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.scopePicker__categories {\n display: flex;\n flex-direction: column;\n border: 1px solid var(--shade200, #DBDADA);\n border-radius: 8px;\n overflow: hidden;\n}\n.scopePicker__category {\n border-bottom: 1px solid var(--shade150, #E7E6E6);\n}\n.scopePicker__category:last-child {\n border-bottom: none;\n}\n.scopePicker__category--admin {\n background: var(--shade100, #F3F2F2);\n}\n.scopePicker__categoryHeader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 1rem;\n padding: 0.75rem 1rem;\n}\n.scopePicker__categorySelect {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n cursor: pointer;\n flex: 1;\n}\n.scopePicker__categorySelect input[type=checkbox] {\n width: 1rem;\n height: 1rem;\n accent-color: var(--primary-brand-color, var(--grape, #69006E));\n cursor: pointer;\n}\n.scopePicker__categoryLabel {\n font-size: 0.875rem;\n font-weight: 600;\n}\n.scopePicker__categoryToggle {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n border: none;\n background: none;\n cursor: pointer;\n color: var(--body-font-color-2, var(--silver, #9B9B9B));\n font-size: 0.625rem;\n padding: 0.5rem;\n line-height: 1;\n border-radius: 4px;\n}\n.scopePicker__categoryToggle:hover {\n color: var(--body-font-color, var(--dark-matter, #2B2B2B));\n background: var(--shade150, #E7E6E6);\n}\n.scopePicker__categoryBody {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n padding: 0 1rem 1rem calc(1rem + 1.75rem);\n}\n.scopePicker__resource {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.75rem;\n}\n.scopePicker__resourceLabel {\n font-size: 0.8125rem;\n color: var(--body-font-color-2, var(--silver, #9B9B9B));\n min-width: 9rem;\n}\n.scopePicker__actions {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n}\n.scopePicker__action {\n display: inline-flex;\n align-items: center;\n gap: 0.375rem;\n font-size: 0.8125rem;\n cursor: pointer;\n padding: 0.125rem 0.5rem;\n border-radius: 4px;\n border: 1px solid transparent;\n}\n.scopePicker__action input[type=checkbox] {\n width: 0.875rem;\n height: 0.875rem;\n accent-color: var(--primary-brand-color, var(--grape, #69006E));\n cursor: pointer;\n}\n.scopePicker__action:hover {\n background: var(--shade100, #F3F2F2);\n}\n.scopePicker__action--implied {\n color: var(--body-font-color-2, var(--silver, #9B9B9B));\n cursor: not-allowed;\n opacity: 0.7;\n}\n.scopePicker__action--implied input {\n cursor: not-allowed;\n}\n.scopePicker__summary {\n border: 1px dashed var(--shade200, #DBDADA);\n border-radius: 8px;\n padding: 0.75rem 1rem;\n font-size: 0.8125rem;\n}\n.scopePicker__summary summary {\n cursor: pointer;\n font-weight: 600;\n color: var(--body-font-color-2, var(--silver, #9B9B9B));\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.scopePicker__summaryList {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n margin-top: 0.75rem;\n}\n.scopePicker__summaryChip {\n font-family: monospace;\n font-size: 0.75rem;\n background: var(--shade100, #F3F2F2);\n border: 1px solid var(--shade200, #DBDADA);\n border-radius: 4px;\n padding: 0.125rem 0.375rem;\n color: var(--body-font-color, var(--dark-matter, #2B2B2B));\n}\n.scopePicker__summaryChip--unknown {\n border-color: var(--warning-brand-color, var(--orange, #FF9E0E));\n color: var(--warning-brand-color, var(--orange, #FF9E0E));\n}";
|
|
19619
|
+
styleInject(css_248z$3);
|
|
19620
|
+
|
|
19621
|
+
// `indeterminate` has no HTML attribute — it must be set imperatively on the DOM
|
|
19622
|
+
// node. A dedicated component scopes that write to a useEffect that runs only
|
|
19623
|
+
// when the flag changes, instead of an inline ref callback that React re-attaches
|
|
19624
|
+
// (null then element) on every parent render.
|
|
19625
|
+
function IndeterminateCheckbox(_a) {
|
|
19626
|
+
var checked = _a.checked, indeterminate = _a.indeterminate, onChange = _a.onChange, disabled = _a.disabled, ariaLabel = _a.ariaLabel;
|
|
19627
|
+
var ref = React.useRef(null);
|
|
19628
|
+
React.useEffect(function () {
|
|
19629
|
+
if (ref.current)
|
|
19630
|
+
ref.current.indeterminate = indeterminate;
|
|
19631
|
+
}, [indeterminate]);
|
|
19632
|
+
return (React.createElement("input", { ref: ref, type: "checkbox", checked: checked, onChange: function (e) { return onChange(e.target.checked); }, disabled: disabled, "aria-label": ariaLabel }));
|
|
19633
|
+
}
|
|
19538
19634
|
function getImpliedScopes(scope) {
|
|
19539
19635
|
var _a = scope.split(":"), resource = _a[0], action = _a[1];
|
|
19540
19636
|
var implied = SCOPE_IMPLICATIONS[action] || [];
|
|
19541
|
-
|
|
19637
|
+
// Only keep implied scopes that are real API enum members for this resource
|
|
19638
|
+
// (e.g. `logos` has no `read`, `users` has no `delete`).
|
|
19639
|
+
return implied.map(function (a) { return "".concat(resource, ":").concat(a); }).filter(function (s) { return ALL_GRANULAR_SCOPES.has(s); });
|
|
19542
19640
|
}
|
|
19543
19641
|
function ScopePicker(_a) {
|
|
19544
19642
|
var value = _a.value, onChange = _a.onChange, _b = _a.isPartner, isPartner = _b === void 0 ? false : _b, _c = _a.disabled, disabled = _c === void 0 ? false : _c;
|
|
@@ -19565,6 +19663,9 @@ function ScopePicker(_a) {
|
|
|
19565
19663
|
getImpliedScopes(scope).forEach(function (s) { return next.add(s); });
|
|
19566
19664
|
}
|
|
19567
19665
|
else {
|
|
19666
|
+
// Remove only the unchecked scope. We intentionally do NOT cascade-remove
|
|
19667
|
+
// its implied scopes: they are independent permissions the user may still
|
|
19668
|
+
// want, and cascading can silently drop scopes the user explicitly selected.
|
|
19568
19669
|
next.delete(scope);
|
|
19569
19670
|
}
|
|
19570
19671
|
onChange(Array.from(next));
|
|
@@ -19591,6 +19692,9 @@ function ScopePicker(_a) {
|
|
|
19591
19692
|
onChange(Array.from(next));
|
|
19592
19693
|
}, [selectedSet, onChange, disabled]);
|
|
19593
19694
|
var handlePreset = React.useCallback(function (presetId) {
|
|
19695
|
+
// Guard for symmetry with handleScopeToggle/handleCategorySelectAll: the
|
|
19696
|
+
// preset buttons are only rendered when !disabled, but keeping the check
|
|
19697
|
+
// makes all three value-mutators behave identically and stay safe to call.
|
|
19594
19698
|
if (disabled)
|
|
19595
19699
|
return;
|
|
19596
19700
|
var preset = SCOPE_PRESETS.find(function (p) { return p.id === presetId; });
|
|
@@ -19602,38 +19706,46 @@ function ScopePicker(_a) {
|
|
|
19602
19706
|
expanded.add(s);
|
|
19603
19707
|
getImpliedScopes(s).forEach(function (implied) { return expanded.add(implied); });
|
|
19604
19708
|
});
|
|
19709
|
+
// Preserve any already-selected scopes that aren't in the catalog (e.g.
|
|
19710
|
+
// server-side enum drift): applying a preset replaces the selection, but
|
|
19711
|
+
// it must never silently strip permissions the picker can't display.
|
|
19712
|
+
selectedSet.forEach(function (s) { if (!ALL_GRANULAR_SCOPES.has(s))
|
|
19713
|
+
expanded.add(s); });
|
|
19605
19714
|
onChange(Array.from(expanded));
|
|
19606
|
-
}, [onChange, disabled]);
|
|
19715
|
+
}, [selectedSet, onChange, disabled]);
|
|
19607
19716
|
var isCategoryAllSelected = React.useCallback(function (categoryId) {
|
|
19608
19717
|
var cat = SCOPE_CATEGORIES.find(function (c) { return c.id === categoryId; });
|
|
19609
19718
|
if (!cat)
|
|
19610
19719
|
return false;
|
|
19611
19720
|
return cat.resources.every(function (r) { return r.actions.every(function (a) { return selectedSet.has("".concat(r.resource, ":").concat(a)); }); });
|
|
19612
19721
|
}, [selectedSet]);
|
|
19722
|
+
var isCategorySomeSelected = React.useCallback(function (categoryId) {
|
|
19723
|
+
var cat = SCOPE_CATEGORIES.find(function (c) { return c.id === categoryId; });
|
|
19724
|
+
if (!cat)
|
|
19725
|
+
return false;
|
|
19726
|
+
return cat.resources.some(function (r) { return r.actions.some(function (a) { return selectedSet.has("".concat(r.resource, ":").concat(a)); }); });
|
|
19727
|
+
}, [selectedSet]);
|
|
19613
19728
|
var isImplied = React.useCallback(function (scope) {
|
|
19614
|
-
//
|
|
19615
|
-
|
|
19616
|
-
|
|
19617
|
-
|
|
19618
|
-
|
|
19619
|
-
|
|
19620
|
-
|
|
19621
|
-
if (r !== resource)
|
|
19622
|
-
return false;
|
|
19623
|
-
return (SCOPE_IMPLICATIONS[a] || []).includes(action);
|
|
19624
|
-
});
|
|
19729
|
+
// Only lock a scope as "implied" if it's actually selected — otherwise an
|
|
19730
|
+
// unselected-but-implied scope would render disabled+unchecked (a dead end).
|
|
19731
|
+
if (!selectedSet.has(scope))
|
|
19732
|
+
return false;
|
|
19733
|
+
// Implied if any other selected scope implies it. Uses getImpliedScopes so
|
|
19734
|
+
// the catalog filtering (ALL_GRANULAR_SCOPES) stays consistent across both.
|
|
19735
|
+
return Array.from(selectedSet).some(function (s) { return s !== scope && getImpliedScopes(s).includes(scope); });
|
|
19625
19736
|
}, [selectedSet]);
|
|
19626
19737
|
return (React.createElement("div", { className: "scopePicker", "aria-label": "Permission scope picker" },
|
|
19627
|
-
React.createElement("div", { className: "scopePicker__presets" },
|
|
19738
|
+
!disabled && (React.createElement("div", { className: "scopePicker__presets" },
|
|
19628
19739
|
React.createElement("span", { className: "scopePicker__presetsLabel" }, "Quick presets:"),
|
|
19629
|
-
React.createElement("div", { className: "scopePicker__presetButtons" }, SCOPE_PRESETS.map(function (preset) { return (React.createElement("button", { key: preset.id, type: "button", className: "scopePicker__presetBtn", onClick: function () { return handlePreset(preset.id); }
|
|
19740
|
+
React.createElement("div", { className: "scopePicker__presetButtons" }, SCOPE_PRESETS.map(function (preset) { return (React.createElement("button", { key: preset.id, type: "button", className: "scopePicker__presetBtn", onClick: function () { return handlePreset(preset.id); } }, preset.label)); })))),
|
|
19630
19741
|
React.createElement("div", { className: "scopePicker__categories" }, visibleCategories.map(function (category) {
|
|
19631
19742
|
var isExpanded = expandedCategories.has(category.id);
|
|
19632
19743
|
var allSelected = isCategoryAllSelected(category.id);
|
|
19744
|
+
var someSelected = isCategorySomeSelected(category.id);
|
|
19633
19745
|
return (React.createElement("div", { key: category.id, className: "scopePicker__category ".concat(category.adminOnly ? "scopePicker__category--admin" : "") },
|
|
19634
19746
|
React.createElement("div", { className: "scopePicker__categoryHeader" },
|
|
19635
19747
|
React.createElement("label", { className: "scopePicker__categorySelect" },
|
|
19636
|
-
React.createElement(
|
|
19748
|
+
React.createElement(IndeterminateCheckbox, { checked: allSelected, indeterminate: someSelected && !allSelected, onChange: function (checked) { return handleCategorySelectAll(category.id, checked); }, disabled: disabled, ariaLabel: "Select all ".concat(category.label, " scopes") }),
|
|
19637
19749
|
React.createElement("span", { className: "scopePicker__categoryLabel" }, category.label)),
|
|
19638
19750
|
React.createElement("button", { type: "button", className: "scopePicker__categoryToggle", onClick: function () { return toggleCategory(category.id); }, "aria-expanded": isExpanded, "aria-label": "".concat(isExpanded ? "Collapse" : "Expand", " ").concat(category.label) }, isExpanded ? "▲" : "▼")),
|
|
19639
19751
|
isExpanded && (React.createElement("div", { className: "scopePicker__categoryBody" }, category.resources.map(function (resource) { return (React.createElement("div", { key: resource.resource, className: "scopePicker__resource" },
|
|
@@ -19652,7 +19764,12 @@ function ScopePicker(_a) {
|
|
|
19652
19764
|
"Selected permissions (",
|
|
19653
19765
|
value.length,
|
|
19654
19766
|
")"),
|
|
19655
|
-
React.createElement("div", { className: "scopePicker__summaryList" }, value.sort().map(function (scope) {
|
|
19767
|
+
React.createElement("div", { className: "scopePicker__summaryList" }, __spreadArray([], value, true).sort().map(function (scope) {
|
|
19768
|
+
// Scopes not in the catalog (e.g. enum drift) get a
|
|
19769
|
+
// distinct style + tooltip so they're never invisible.
|
|
19770
|
+
var unrecognized = !ALL_GRANULAR_SCOPES.has(scope);
|
|
19771
|
+
return (React.createElement("span", { key: scope, className: "scopePicker__summaryChip ".concat(unrecognized ? "scopePicker__summaryChip--unknown" : ""), title: unrecognized ? "Not in the current permission catalog — kept as-is on save" : undefined }, scope));
|
|
19772
|
+
}))))));
|
|
19656
19773
|
}
|
|
19657
19774
|
|
|
19658
19775
|
var css_248z$2 = ".sideMenu-component-v2 {\n z-index: 8000;\n width: -moz-fit-content;\n width: fit-content;\n}\n.sideMenu-component-v2 .sideMenu-spacer {\n display: none;\n}\n.sideMenu-component-v2.minified:hover .sideMenu-spacer {\n display: block;\n}\n.sideMenu-component-v2 .sideMenu-wrapper {\n z-index: 8000;\n display: flex;\n height: 100%;\n flex-direction: column;\n width: 20rem;\n min-width: 20rem;\n max-width: 20rem;\n padding: 1rem;\n background: var(--shade100, #F3F2F2);\n position: relative;\n box-sizing: border-box;\n}\n.sideMenu-component-v2 .sideMenu-wrapper::-webkit-scrollbar {\n display: block;\n}\n.sideMenu-component-v2 .sideMenu-wrapper::-webkit-scrollbar-track:horizontal {\n position: absolute;\n bottom: -20px;\n}\n.sideMenu-component-v2 .sideMenu-wrapper::-webkit-scrollbar-track:vertical {\n border-bottom-left-radius: 0 !important;\n border-bottom-right-radius: 8px !important;\n border-top-right-radius: 8px !important;\n}\n.sideMenu-component-v2 .sideMenu-wrapper::-webkit-scrollbar-track {\n height: 2.5rem;\n width: 2.5rem;\n padding: 2rem;\n background-clip: content-box;\n border-bottom-left-radius: 8px;\n}\n.sideMenu-component-v2 .sideMenu-wrapper::-webkit-scrollbar-thumb {\n background: var(--body-font-color-2, var(--silver, #9B9B9B));\n border-radius: 24px;\n border-top: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n border-bottom: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n border-right: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n border-left: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n}\n.sideMenu-component-v2 .sideMenu-wrapper.minified:hover {\n box-shadow: 0px 0px 32px 0px rgba(0, 0, 0, 0.15);\n position: absolute !important;\n}\n.sideMenu-component-v2 .sideMenu-wrapper.minified:not(:hover) {\n gap: 1rem;\n max-width: 73px;\n min-width: 73px;\n}\n.sideMenu-component-v2 .sideMenu-wrapper.minified:not(:hover) .sideMenuHeader {\n display: none;\n}\n.sideMenu-component-v2 .sideMenu-wrapper.minified:not(:hover) .subNav-component-v2 button {\n padding: 0.75rem;\n margin-right: 0;\n}\n.sideMenu-component-v2 .sideMenu-wrapper.minified:not(:hover) .subNav-component-v2 button:not(.selected) {\n display: none;\n}\n.sideMenu-component-v2 .sideMenu-wrapper.minified:not(:hover) .sideMenuContainer-component-v2 .menuItemRow .sideMenuItem-component-v2.subItem,\n.sideMenu-component-v2 .sideMenu-wrapper.minified:not(:hover) .sideMenuContainer-component-v2 .menuItemRow .sideMenuItem-component-v2 .chevron {\n display: none;\n}\n.sideMenu-component-v2 .sideMenu-wrapper.minified:not(:hover) .sideMenuContainer-component-v2 .menuItemRow .sideMenuItem-component-v2 a {\n justify-content: center;\n}\n.sideMenu-component-v2 .sideMenu-wrapper.minified:not(:hover) .sideMenuContainer-component-v2 .menuItemRow .sideMenuItem-component-v2 a .MuiStack-root {\n display: none;\n}\n.sideMenu-component-v2 .sideMenu-wrapper.minified:not(:hover) .footer > .avatar-component-v2 {\n display: block;\n}\n.sideMenu-component-v2 .sideMenu-wrapper.minified:not(:hover) .footer button {\n display: none;\n}\n.sideMenu-component-v2 .sideMenu-wrapper .sideMenuHeader {\n margin-bottom: 1.5rem;\n}\n.sideMenu-component-v2 .sideMenu-wrapper .sideMenuHeader .minifyIcon {\n cursor: pointer;\n}\n.sideMenu-component-v2 .sideMenu-wrapper .search-component-v2 {\n margin-top: 1.5rem;\n position: relative;\n}\n.sideMenu-component-v2 .sideMenu-wrapper .search-component-v2 .inputContainer {\n padding: 0.75rem 1rem;\n box-shadow: unset;\n border-radius: 8px;\n border: 1px solid var(--shade200, #DBDADA);\n}\n.sideMenu-component-v2 .sideMenu-wrapper .search-component-v2:after {\n position: absolute;\n left: 0;\n bottom: -1.5rem;\n content: \"\";\n display: block;\n width: 100%;\n height: 1.5rem;\n background: linear-gradient(var(--shade100, #F3F2F2) 0%, transparent 100%);\n}\n.sideMenu-component-v2 .sideMenu-wrapper .subNav-component-v2 {\n width: 100%;\n position: relative;\n justify-content: space-between;\n}\n.sideMenu-component-v2 .sideMenu-wrapper .subNav-component-v2:after {\n position: absolute;\n left: 0;\n bottom: -1.5rem;\n content: \"\";\n display: block;\n width: 100%;\n height: 1.5rem;\n background: linear-gradient(var(--shade100, #F3F2F2) 0%, transparent 100%);\n}\n.sideMenu-component-v2 .sideMenu-wrapper .subNav-component-v2 button {\n flex: 1;\n}\n.sideMenu-component-v2 .sideMenu-wrapper .subNav-component-v2 button:not(.selected):not(:hover) {\n background: none;\n}\n.sideMenu-component-v2 .sideMenu-wrapper .subNav-component-v2 button:not(.selected):not(:hover) svg path:not(.noFill),\n.sideMenu-component-v2 .sideMenu-wrapper .subNav-component-v2 button:not(.selected):not(:hover) svg rect:not(.noFill) {\n fill: var(--secondary-brand-color, var(--teal, #0ABDAE));\n}\n.sideMenu-component-v2 .sideMenu-wrapper .subNav-component-v2 button:not(.selected):not(:hover) svg path.noFill,\n.sideMenu-component-v2 .sideMenu-wrapper .subNav-component-v2 button:not(.selected):not(:hover) svg rect.noFill {\n stroke: var(--secondary-brand-color, var(--teal, #0ABDAE));\n}\n.sideMenu-component-v2 .sideMenu-wrapper .sideMenuContainer-component-v2 {\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n}\n.sideMenu-component-v2 .sideMenu-wrapper .footer {\n position: relative;\n justify-self: flex-end;\n}\n.sideMenu-component-v2 .sideMenu-wrapper .footer:before {\n position: absolute;\n left: 0;\n top: -1.5rem;\n content: \"\";\n display: block;\n width: 100%;\n height: 1.5rem;\n background: linear-gradient(transparent 0, var(--shade100, #F3F2F2) 100%);\n}\n.sideMenu-component-v2 .sideMenu-wrapper .footer > .avatar-component-v2 {\n display: none;\n}\n\n.sideMenuContainer-component-v2 {\n flex: 1;\n overflow-y: auto;\n}\n.sideMenuContainer-component-v2 .menuItemsContainer > .menuItemRow.divider {\n margin-top: 1rem;\n margin-bottom: 1rem;\n}\n.sideMenuContainer-component-v2 .menuItemsContainer > .menuItemRow.withSubItems.openedSubMenu .sideMenuItem-component-v2:nth-child(2) {\n margin-top: calc(0.5rem - 1px);\n}\n.sideMenuContainer-component-v2 .menuItemsContainer > .menuItemRow.withSubItems.openedSubMenu .sideMenuItem-component-v2:last-child {\n margin-bottom: calc(0.5rem - 1px);\n}\n.sideMenuContainer-component-v2 .menuItemsContainer > .menuItemRow.subSection {\n margin-top: 1rem;\n}\n.sideMenuContainer-component-v2 .menuItemsContainer > .menuItemRow:first-child {\n margin-top: 0;\n}\n.sideMenuContainer-component-v2 .menuItemsContainer .sideMenuItem-component-v2.subItem {\n margin-left: 2.75rem;\n}\n.sideMenuContainer-component-v2 .menuItemsContainer .sideMenuItem-component-v2.subItem > a,\n.sideMenuContainer-component-v2 .menuItemsContainer .sideMenuItem-component-v2.subItem > a > div > span {\n font-size: 0.875rem;\n}\n.sideMenuContainer-component-v2 .menuItemsContainer .sideMenuItem-component-v2.rotate .chevron {\n rotate: 180deg;\n}\n.sideMenuContainer-component-v2 .menuItemsContainer .sideMenuItem-component-v2.hasLocationSelected:hover a {\n cursor: default;\n background: unset !important;\n}\n\n.sideMenuItem-component-v2 {\n box-sizing: border-box;\n}\n.sideMenuItem-component-v2:hover a, .sideMenuItem-component-v2.selected a {\n background: var(--shade200, #DBDADA);\n}\n.sideMenuItem-component-v2.hasSubItemSelected > .MuiTypography-root .chevron {\n rotate: -90deg;\n}\n.sideMenuItem-component-v2 .avatar-component-v2 .MuiAvatar-root {\n border-color: var(--shade200, #DBDADA);\n background: var(--white, #FFFFFF);\n}\n.sideMenuItem-component-v2 .chevron {\n margin-left: 1rem;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.sideMenuItem-component-v2 a {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0.75rem;\n border-radius: 8px;\n text-decoration: none !important;\n gap: 1rem;\n}\n.sideMenuItem-component-v2 a > .MuiStack-root {\n flex: 1;\n}\n.sideMenuItem-component-v2 a img {\n max-width: 80px;\n}\n.sideMenuItem-component-v2.soloItem a {\n border-radius: 16px;\n padding: 1.5rem;\n border: 1px solid var(--shade200, #DBDADA);\n}\n.sideMenuItem-component-v2.soloItem a:hover {\n border-color: var(--wild-sand, #dddddd);\n}\n.sideMenuItem-component-v2.soloItem .chevron {\n rotate: -90deg;\n}\n.sideMenuItem-component-v2.subSection {\n padding: 0.5rem 0.75rem 0.5rem 0.75rem;\n}";
|
|
@@ -19747,7 +19864,7 @@ function SideMenuContainer(_a) {
|
|
|
19747
19864
|
if (subSelected) {
|
|
19748
19865
|
hasSubItemSelected = true;
|
|
19749
19866
|
}
|
|
19750
|
-
return React.createElement(SideMenuItem, { item: s, defaultItemIcon: s.defaultItemIcon, menuItemClick: handleMenuItemClick, selected: subSelected, className: subClasses, key: "subItem-".concat(sIndex) });
|
|
19867
|
+
return React.createElement(SideMenuItem, { item: s, variant: s.variant, defaultItemIcon: s.defaultItemIcon, menuItemClick: handleMenuItemClick, selected: subSelected, className: subClasses, key: "subItem-".concat(sIndex) });
|
|
19751
19868
|
});
|
|
19752
19869
|
var openedSubMenu = (hasSubItemSelected || openedItems.includes(i.name || ""));
|
|
19753
19870
|
var classes = classNames({
|
|
@@ -20650,7 +20767,7 @@ var PersonalAccessTokensFactory = /** @class */ (function () {
|
|
|
20650
20767
|
var keyPrefix = _b.keyPrefix;
|
|
20651
20768
|
return __generator(this, function (_c) {
|
|
20652
20769
|
return [2 /*return*/, getPat({ keyPrefix: keyPrefix }).then(function (data) {
|
|
20653
|
-
return new PersonalAccessTokenModel(data
|
|
20770
|
+
return new PersonalAccessTokenModel(unwrapResponse(data));
|
|
20654
20771
|
})];
|
|
20655
20772
|
});
|
|
20656
20773
|
});
|
|
@@ -20660,7 +20777,19 @@ var PersonalAccessTokensFactory = /** @class */ (function () {
|
|
|
20660
20777
|
var name = _b.name, scopes = _b.scopes, expiresAt = _b.expiresAt, allowedAccountIds = _b.allowedAccountIds;
|
|
20661
20778
|
return __generator(this, function (_c) {
|
|
20662
20779
|
return [2 /*return*/, createPat({ name: name, scopes: scopes, expiresAt: expiresAt, allowedAccountIds: allowedAccountIds }).then(function (data) {
|
|
20663
|
-
|
|
20780
|
+
// Single-resource responses are returned flat (not wrapped in `{ data }`).
|
|
20781
|
+
var body = unwrapResponse(data);
|
|
20782
|
+
var plaintext = body.plaintext, patData = __rest(body
|
|
20783
|
+
// The plaintext token is shown to the user exactly once, at creation;
|
|
20784
|
+
// if the API omits it there is nothing to display, so fail loudly here
|
|
20785
|
+
// rather than handing back `undefined` as the token.
|
|
20786
|
+
, ["plaintext"]);
|
|
20787
|
+
// The plaintext token is shown to the user exactly once, at creation;
|
|
20788
|
+
// if the API omits it there is nothing to display, so fail loudly here
|
|
20789
|
+
// rather than handing back `undefined` as the token.
|
|
20790
|
+
if (typeof plaintext !== "string" || plaintext.length === 0) {
|
|
20791
|
+
throw new Error("API response did not include the plaintext token");
|
|
20792
|
+
}
|
|
20664
20793
|
trackEvent(exports.EEvents.PAT_CREATED, { name: name, scopes: scopes });
|
|
20665
20794
|
return { pat: new PersonalAccessTokenModel(patData), plaintext: plaintext };
|
|
20666
20795
|
})];
|
|
@@ -21317,6 +21446,7 @@ exports.getUrlQueryParam = getUrlQueryParam;
|
|
|
21317
21446
|
exports.getUser = getUser;
|
|
21318
21447
|
exports.getUtmCookies = getUtmCookies;
|
|
21319
21448
|
exports.googlePlacesMapper = googlePlacesMapper;
|
|
21449
|
+
exports.groupScopesByCategory = groupScopesByCategory;
|
|
21320
21450
|
exports.hasDecimal = hasDecimal;
|
|
21321
21451
|
exports.impersonateService = impersonateService;
|
|
21322
21452
|
exports.initFieldValidation = initFieldValidation;
|
|
@@ -21409,6 +21539,7 @@ exports.unshareTemplate = unshareTemplate;
|
|
|
21409
21539
|
exports.unsubscribeContact = unsubscribeContact;
|
|
21410
21540
|
exports.untagContact = untagContact;
|
|
21411
21541
|
exports.untagContactsOfList = untagContactsOfList;
|
|
21542
|
+
exports.unwrapResponse = unwrapResponse;
|
|
21412
21543
|
exports.updateAccount = updateAccount;
|
|
21413
21544
|
exports.updateAndClearUrlParams = updateAndClearUrlParams;
|
|
21414
21545
|
exports.updateAnyAutomation = updateAnyAutomation;
|