@datarobot/design-system 28.6.1 → 28.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/icon-sidebar/icon-sidebar.d.ts +4 -2
- package/cjs/icon-sidebar/icon-sidebar.js +7 -5
- package/cjs/icon-sidebar/types.d.ts +25 -0
- package/cjs/icon-sidebar/types.js +5 -0
- package/cjs/icon-sidebar/with-icon-sidebar-item.d.ts +3 -0
- package/cjs/icon-sidebar/with-icon-sidebar-item.js +106 -0
- package/cjs/key-value-pairs/key-value-pairs.js +1 -1
- package/cjs/smooth-transition-loader/smooth-transition-loader.js +6 -2
- package/esm/icon-sidebar/icon-sidebar.d.ts +4 -2
- package/esm/icon-sidebar/icon-sidebar.js +7 -5
- package/esm/icon-sidebar/types.d.ts +25 -0
- package/esm/icon-sidebar/types.js +1 -0
- package/esm/icon-sidebar/with-icon-sidebar-item.d.ts +3 -0
- package/esm/icon-sidebar/with-icon-sidebar-item.js +98 -0
- package/esm/key-value-pairs/key-value-pairs.js +1 -1
- package/esm/smooth-transition-loader/smooth-transition-loader.js +6 -2
- package/js/139/139.min.js +1 -1
- package/js/244/244.min.js +1 -1
- package/js/633/633.min.js +1 -1
- package/js/784/784.min.js +1 -1
- package/js/86/86.min.js +1 -1
- package/js/bundle/bundle.js +128 -88
- package/js/bundle/bundle.min.js +1 -1
- package/js/bundle/index.d.ts +27 -2
- package/js/src_locales_es_419_translation_json/src_locales_es_419_translation_json.js +1 -1
- package/js/src_locales_fr_translation_json/src_locales_fr_translation_json.js +1 -1
- package/js/src_locales_ja_translation_json/src_locales_ja_translation_json.js +1 -1
- package/js/src_locales_ko_translation_json/src_locales_ko_translation_json.js +1 -1
- package/js/src_locales_pt_BR_translation_json/src_locales_pt_BR_translation_json.js +1 -1
- package/locales/es_419/translation.json +2 -1
- package/locales/fr/translation.json +2 -1
- package/locales/ja/translation.json +2 -1
- package/locales/ko/translation.json +2 -1
- package/locales/pt_BR/translation.json +2 -1
- package/package.json +1 -1
- package/styles/index.css +1 -0
- package/styles/index.min.css +1 -1
- package/cjs/icon-sidebar/icon-sidebar-button.d.ts +0 -14
- package/cjs/icon-sidebar/icon-sidebar-button.js +0 -66
- package/esm/icon-sidebar/icon-sidebar-button.d.ts +0 -14
- package/esm/icon-sidebar/icon-sidebar-button.js +0 -59
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DropdownMenuOption } from '../dropdown-menu';
|
|
2
|
+
import { IconSidebarLinkType } from './types';
|
|
2
3
|
import './icon-sidebar.less';
|
|
3
4
|
export declare enum ICON_SIDEBAR_POSITION {
|
|
4
5
|
LEFT = "left",
|
|
@@ -8,15 +9,16 @@ export type IconSidebarProps = {
|
|
|
8
9
|
className?: string;
|
|
9
10
|
options: DropdownMenuOption[];
|
|
10
11
|
selected?: string | number;
|
|
11
|
-
onSelect
|
|
12
|
+
onSelect?: (option: DropdownMenuOption) => void;
|
|
12
13
|
footerOption?: DropdownMenuOption;
|
|
13
14
|
moreButtonText?: string;
|
|
14
15
|
position?: ICON_SIDEBAR_POSITION;
|
|
16
|
+
LinkComponent?: IconSidebarLinkType;
|
|
15
17
|
};
|
|
16
18
|
/**
|
|
17
19
|
* @midnight-gray-supported
|
|
18
20
|
* @uxr-only-supported
|
|
19
21
|
* @alpine-light-supported
|
|
20
22
|
*/
|
|
21
|
-
declare function IconSidebar({ className, options, selected, onSelect, footerOption, position, moreButtonText, }: IconSidebarProps): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
declare function IconSidebar({ className, options, selected, onSelect, footerOption, position, moreButtonText, LinkComponent, }: IconSidebarProps): import("react/jsx-runtime").JSX.Element;
|
|
22
24
|
export default IconSidebar;
|
|
@@ -8,9 +8,9 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
8
8
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
9
9
|
var _faEllipsisVertical = require("@fortawesome/free-solid-svg-icons/faEllipsisVertical");
|
|
10
10
|
var _dropdownMenu = require("../dropdown-menu");
|
|
11
|
-
var _iconSidebarButton = require("./icon-sidebar-button");
|
|
12
11
|
var _adaptiveList = require("../adaptive-list");
|
|
13
12
|
var _useTranslation = require("../hooks/use-translation");
|
|
13
|
+
var _withIconSidebarItem = require("./with-icon-sidebar-item");
|
|
14
14
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
15
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
16
|
let ICON_SIDEBAR_POSITION = exports.ICON_SIDEBAR_POSITION = /*#__PURE__*/function (ICON_SIDEBAR_POSITION) {
|
|
@@ -30,11 +30,13 @@ function IconSidebar({
|
|
|
30
30
|
onSelect,
|
|
31
31
|
footerOption,
|
|
32
32
|
position = ICON_SIDEBAR_POSITION.LEFT,
|
|
33
|
-
moreButtonText
|
|
33
|
+
moreButtonText,
|
|
34
|
+
LinkComponent
|
|
34
35
|
}) {
|
|
35
36
|
const {
|
|
36
37
|
t
|
|
37
38
|
} = (0, _useTranslation.useTranslation)();
|
|
39
|
+
const ItemComponent = (0, _withIconSidebarItem.withIconSidebarItem)(LinkComponent);
|
|
38
40
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
39
41
|
className: (0, _classnames.default)('icon-sidebar-container', className, position),
|
|
40
42
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
@@ -42,7 +44,7 @@ function IconSidebar({
|
|
|
42
44
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_adaptiveList.AdaptiveList, {
|
|
43
45
|
selected: selected,
|
|
44
46
|
onSelect: onSelect,
|
|
45
|
-
Component:
|
|
47
|
+
Component: ItemComponent,
|
|
46
48
|
target: "offsetHeight",
|
|
47
49
|
triggerOffset: 62,
|
|
48
50
|
options: options,
|
|
@@ -51,7 +53,7 @@ function IconSidebar({
|
|
|
51
53
|
placement: position === ICON_SIDEBAR_POSITION.LEFT ? _dropdownMenu.DROPDOWN_MENU_PLACEMENT_TYPES.RIGHT_START : _dropdownMenu.DROPDOWN_MENU_PLACEMENT_TYPES.LEFT_START,
|
|
52
54
|
triggerDynamicContent: ({
|
|
53
55
|
isOpen
|
|
54
|
-
}) => /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
56
|
+
}) => /*#__PURE__*/(0, _jsxRuntime.jsx)(ItemComponent, {
|
|
55
57
|
option: {
|
|
56
58
|
key: 'more-trigger',
|
|
57
59
|
title: moreButtonText ?? t('More'),
|
|
@@ -63,7 +65,7 @@ function IconSidebar({
|
|
|
63
65
|
})
|
|
64
66
|
}), footerOption && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
65
67
|
className: "icon-sidebar-footer-container",
|
|
66
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
68
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ItemComponent, {
|
|
67
69
|
option: footerOption,
|
|
68
70
|
onSelect: onSelect,
|
|
69
71
|
selected: selected
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ComponentType, ReactNode, MouseEvent, AnchorHTMLAttributes } from 'react';
|
|
2
|
+
import { IconProp } from '@fortawesome/fontawesome-svg-core';
|
|
3
|
+
import { DropdownMenuOption } from '../dropdown-menu';
|
|
4
|
+
export type IconSidebarItemProps = {
|
|
5
|
+
option: DropdownMenuOption & {
|
|
6
|
+
selectedIcon?: IconProp;
|
|
7
|
+
divider?: boolean;
|
|
8
|
+
ariaLabel?: string;
|
|
9
|
+
};
|
|
10
|
+
onSelect?: (option: DropdownMenuOption) => void;
|
|
11
|
+
selected?: number | string | (number | string)[];
|
|
12
|
+
isLimited?: boolean;
|
|
13
|
+
children?: ReactNode;
|
|
14
|
+
};
|
|
15
|
+
export type IconSidebarLinkProps = {
|
|
16
|
+
className: string;
|
|
17
|
+
href: string;
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
tabIndex?: number;
|
|
20
|
+
onClick: (e: MouseEvent) => void;
|
|
21
|
+
};
|
|
22
|
+
export type IconSidebarLinkType = ComponentType<IconSidebarLinkProps>;
|
|
23
|
+
export type DefaultLinkProps = {
|
|
24
|
+
children: ReactNode;
|
|
25
|
+
} & AnchorHTMLAttributes<HTMLAnchorElement>;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import './icon-sidebar.less';
|
|
2
|
+
import { IconSidebarItemProps, IconSidebarLinkType } from './types';
|
|
3
|
+
export declare const withIconSidebarItem: (LinkComponent?: IconSidebarLinkType) => ({ option, selected, isLimited, onSelect, }: IconSidebarItemProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.withIconSidebarItem = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
9
|
+
var _tooltip = require("../tooltip");
|
|
10
|
+
var _fontAwesomeIcon = require("../font-awesome-icon");
|
|
11
|
+
var _truncateWithTooltip = require("../truncate-with-tooltip");
|
|
12
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
+
const DefaultLink = ({
|
|
15
|
+
children,
|
|
16
|
+
...props
|
|
17
|
+
}) => /*#__PURE__*/(0, _jsxRuntime.jsx)("a", {
|
|
18
|
+
rel: "noopener noreferrer",
|
|
19
|
+
...props,
|
|
20
|
+
children: children
|
|
21
|
+
});
|
|
22
|
+
const withIconSidebarItem = (LinkComponent = DefaultLink) => {
|
|
23
|
+
const IconSidebarItem = ({
|
|
24
|
+
option,
|
|
25
|
+
selected,
|
|
26
|
+
isLimited,
|
|
27
|
+
onSelect
|
|
28
|
+
}) => {
|
|
29
|
+
const isSelected = option.key === selected;
|
|
30
|
+
const icon = isSelected && option.selectedIcon ? option.selectedIcon : option.icon;
|
|
31
|
+
const getTitle = () => {
|
|
32
|
+
if (option.title) {
|
|
33
|
+
if (option.tooltipText) {
|
|
34
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
35
|
+
className: "icon-sidebar-text",
|
|
36
|
+
children: option.title
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_truncateWithTooltip.TruncateWithTooltip, {
|
|
40
|
+
className: "icon-sidebar-text",
|
|
41
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
42
|
+
children: option.title
|
|
43
|
+
})
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
const onClick = e => {
|
|
48
|
+
if (option.disabled) {
|
|
49
|
+
e.preventDefault();
|
|
50
|
+
e.stopPropagation();
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Prevent calling onSelect when link is opened in a new tab
|
|
55
|
+
if (e.metaKey || e.ctrlKey) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
onSelect?.(option);
|
|
59
|
+
};
|
|
60
|
+
const content = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
61
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
62
|
+
className: "icon-sidebar-button-icon-container",
|
|
63
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_fontAwesomeIcon.FontAwesomeIcon, {
|
|
64
|
+
icon: icon
|
|
65
|
+
})
|
|
66
|
+
}), getTitle(), option.divider && !isLimited && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
67
|
+
className: "icon-sidebar-divider"
|
|
68
|
+
})]
|
|
69
|
+
});
|
|
70
|
+
const props = {
|
|
71
|
+
className: (0, _classnames.default)('icon-sidebar-button-container', option.className, option.disabled && 'disabled', isSelected && 'selected'),
|
|
72
|
+
'test-id': option.testId,
|
|
73
|
+
'aria-label': option.title && typeof option.title === 'string' ? option.title : option.ariaLabel
|
|
74
|
+
};
|
|
75
|
+
if (option.link) {
|
|
76
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_tooltip.Tooltip, {
|
|
77
|
+
content: option.tooltipText,
|
|
78
|
+
placement: option.tooltipPlacement,
|
|
79
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
80
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(LinkComponent, {
|
|
81
|
+
...props,
|
|
82
|
+
tabIndex: option.disabled ? -1 : 0,
|
|
83
|
+
href: option.link,
|
|
84
|
+
onClick: onClick,
|
|
85
|
+
children: content
|
|
86
|
+
})
|
|
87
|
+
})
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_tooltip.Tooltip, {
|
|
91
|
+
content: option.tooltipText,
|
|
92
|
+
placement: option.tooltipPlacement,
|
|
93
|
+
children: onSelect ? /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
|
|
94
|
+
...props,
|
|
95
|
+
onClick: onClick,
|
|
96
|
+
disabled: option.disabled,
|
|
97
|
+
children: content
|
|
98
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
99
|
+
...props,
|
|
100
|
+
children: content
|
|
101
|
+
})
|
|
102
|
+
});
|
|
103
|
+
};
|
|
104
|
+
return IconSidebarItem;
|
|
105
|
+
};
|
|
106
|
+
exports.withIconSidebarItem = withIconSidebarItem;
|
|
@@ -89,7 +89,7 @@ const KeyValuePairs = ({
|
|
|
89
89
|
const placeholder = placeholderParams ?? t('No items found');
|
|
90
90
|
const buttonText = buttonTextParams ?? t('Add item');
|
|
91
91
|
const maxItemsTooltipText = maxItemsTooltipTextParams ?? t('Max number of key-value pairs reached');
|
|
92
|
-
const emptyItemErrorText = emptyItemErrorTextParams ?? t('Above field(s) should not be empty
|
|
92
|
+
const emptyItemErrorText = emptyItemErrorTextParams ?? t('Above field(s) should not be empty');
|
|
93
93
|
const deleteKeyValueText = deleteKeyValueTextParams ?? t('Delete');
|
|
94
94
|
const keyInputAriaLabel = keyInputAriaLabelParams ?? t('Key input');
|
|
95
95
|
const valueInputAriaLabel = valueInputAriaLabelParams ?? t('Value input');
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.SmoothTransitionLoader = SmoothTransitionLoader;
|
|
7
7
|
exports.wrapperClassName = exports.hiddenWrapperClassName = void 0;
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _useTranslation = require("../hooks/use-translation");
|
|
9
10
|
var _message = require("../message");
|
|
10
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -18,17 +19,20 @@ const hiddenWrapperClassName = exports.hiddenWrapperClassName = 'smooth-transiti
|
|
|
18
19
|
function SmoothTransitionLoader({
|
|
19
20
|
children,
|
|
20
21
|
isLoading,
|
|
21
|
-
loadingMessage
|
|
22
|
+
loadingMessage,
|
|
22
23
|
loaderTestId = 'smooth-transition-prerender-loader',
|
|
23
24
|
wrapperTestId = 'smooth-transition-prerender-wrapper'
|
|
24
25
|
}) {
|
|
26
|
+
const {
|
|
27
|
+
t
|
|
28
|
+
} = (0, _useTranslation.useTranslation)();
|
|
25
29
|
const loader = /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
26
30
|
className: "smooth-transition-prerender-loader",
|
|
27
31
|
"test-id": loaderTestId,
|
|
28
32
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_message.Message, {
|
|
29
33
|
type: _message.MESSAGE_TYPES.IN_PROGRESS,
|
|
30
34
|
isCentered: true,
|
|
31
|
-
children: loadingMessage
|
|
35
|
+
children: loadingMessage ?? t('Initializing Data')
|
|
32
36
|
})
|
|
33
37
|
});
|
|
34
38
|
if (!children) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DropdownMenuOption } from '../dropdown-menu';
|
|
2
|
+
import { IconSidebarLinkType } from './types';
|
|
2
3
|
import './icon-sidebar.less';
|
|
3
4
|
export declare enum ICON_SIDEBAR_POSITION {
|
|
4
5
|
LEFT = "left",
|
|
@@ -8,15 +9,16 @@ export type IconSidebarProps = {
|
|
|
8
9
|
className?: string;
|
|
9
10
|
options: DropdownMenuOption[];
|
|
10
11
|
selected?: string | number;
|
|
11
|
-
onSelect
|
|
12
|
+
onSelect?: (option: DropdownMenuOption) => void;
|
|
12
13
|
footerOption?: DropdownMenuOption;
|
|
13
14
|
moreButtonText?: string;
|
|
14
15
|
position?: ICON_SIDEBAR_POSITION;
|
|
16
|
+
LinkComponent?: IconSidebarLinkType;
|
|
15
17
|
};
|
|
16
18
|
/**
|
|
17
19
|
* @midnight-gray-supported
|
|
18
20
|
* @uxr-only-supported
|
|
19
21
|
* @alpine-light-supported
|
|
20
22
|
*/
|
|
21
|
-
declare function IconSidebar({ className, options, selected, onSelect, footerOption, position, moreButtonText, }: IconSidebarProps): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
declare function IconSidebar({ className, options, selected, onSelect, footerOption, position, moreButtonText, LinkComponent, }: IconSidebarProps): import("react/jsx-runtime").JSX.Element;
|
|
22
24
|
export default IconSidebar;
|
|
@@ -2,9 +2,9 @@ import React from 'react';
|
|
|
2
2
|
import classNames from 'classnames';
|
|
3
3
|
import { faEllipsisVertical } from '@fortawesome/free-solid-svg-icons/faEllipsisVertical';
|
|
4
4
|
import { DROPDOWN_MENU_PLACEMENT_TYPES } from '../dropdown-menu';
|
|
5
|
-
import { IconSidebarButton } from './icon-sidebar-button';
|
|
6
5
|
import { AdaptiveList } from '../adaptive-list';
|
|
7
6
|
import { useTranslation } from '../hooks/use-translation';
|
|
7
|
+
import { withIconSidebarItem } from './with-icon-sidebar-item';
|
|
8
8
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
9
|
export let ICON_SIDEBAR_POSITION = /*#__PURE__*/function (ICON_SIDEBAR_POSITION) {
|
|
10
10
|
ICON_SIDEBAR_POSITION["LEFT"] = "left";
|
|
@@ -23,11 +23,13 @@ function IconSidebar({
|
|
|
23
23
|
onSelect,
|
|
24
24
|
footerOption,
|
|
25
25
|
position = ICON_SIDEBAR_POSITION.LEFT,
|
|
26
|
-
moreButtonText
|
|
26
|
+
moreButtonText,
|
|
27
|
+
LinkComponent
|
|
27
28
|
}) {
|
|
28
29
|
const {
|
|
29
30
|
t
|
|
30
31
|
} = useTranslation();
|
|
32
|
+
const ItemComponent = withIconSidebarItem(LinkComponent);
|
|
31
33
|
return /*#__PURE__*/_jsxs("div", {
|
|
32
34
|
className: classNames('icon-sidebar-container', className, position),
|
|
33
35
|
children: [/*#__PURE__*/_jsx("div", {
|
|
@@ -35,7 +37,7 @@ function IconSidebar({
|
|
|
35
37
|
children: /*#__PURE__*/_jsx(AdaptiveList, {
|
|
36
38
|
selected: selected,
|
|
37
39
|
onSelect: onSelect,
|
|
38
|
-
Component:
|
|
40
|
+
Component: ItemComponent,
|
|
39
41
|
target: "offsetHeight",
|
|
40
42
|
triggerOffset: 62,
|
|
41
43
|
options: options,
|
|
@@ -44,7 +46,7 @@ function IconSidebar({
|
|
|
44
46
|
placement: position === ICON_SIDEBAR_POSITION.LEFT ? DROPDOWN_MENU_PLACEMENT_TYPES.RIGHT_START : DROPDOWN_MENU_PLACEMENT_TYPES.LEFT_START,
|
|
45
47
|
triggerDynamicContent: ({
|
|
46
48
|
isOpen
|
|
47
|
-
}) => /*#__PURE__*/_jsx(
|
|
49
|
+
}) => /*#__PURE__*/_jsx(ItemComponent, {
|
|
48
50
|
option: {
|
|
49
51
|
key: 'more-trigger',
|
|
50
52
|
title: moreButtonText ?? t('More'),
|
|
@@ -56,7 +58,7 @@ function IconSidebar({
|
|
|
56
58
|
})
|
|
57
59
|
}), footerOption && /*#__PURE__*/_jsx("div", {
|
|
58
60
|
className: "icon-sidebar-footer-container",
|
|
59
|
-
children: /*#__PURE__*/_jsx(
|
|
61
|
+
children: /*#__PURE__*/_jsx(ItemComponent, {
|
|
60
62
|
option: footerOption,
|
|
61
63
|
onSelect: onSelect,
|
|
62
64
|
selected: selected
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ComponentType, ReactNode, MouseEvent, AnchorHTMLAttributes } from 'react';
|
|
2
|
+
import { IconProp } from '@fortawesome/fontawesome-svg-core';
|
|
3
|
+
import { DropdownMenuOption } from '../dropdown-menu';
|
|
4
|
+
export type IconSidebarItemProps = {
|
|
5
|
+
option: DropdownMenuOption & {
|
|
6
|
+
selectedIcon?: IconProp;
|
|
7
|
+
divider?: boolean;
|
|
8
|
+
ariaLabel?: string;
|
|
9
|
+
};
|
|
10
|
+
onSelect?: (option: DropdownMenuOption) => void;
|
|
11
|
+
selected?: number | string | (number | string)[];
|
|
12
|
+
isLimited?: boolean;
|
|
13
|
+
children?: ReactNode;
|
|
14
|
+
};
|
|
15
|
+
export type IconSidebarLinkProps = {
|
|
16
|
+
className: string;
|
|
17
|
+
href: string;
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
tabIndex?: number;
|
|
20
|
+
onClick: (e: MouseEvent) => void;
|
|
21
|
+
};
|
|
22
|
+
export type IconSidebarLinkType = ComponentType<IconSidebarLinkProps>;
|
|
23
|
+
export type DefaultLinkProps = {
|
|
24
|
+
children: ReactNode;
|
|
25
|
+
} & AnchorHTMLAttributes<HTMLAnchorElement>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import './icon-sidebar.less';
|
|
2
|
+
import { IconSidebarItemProps, IconSidebarLinkType } from './types';
|
|
3
|
+
export declare const withIconSidebarItem: (LinkComponent?: IconSidebarLinkType) => ({ option, selected, isLimited, onSelect, }: IconSidebarItemProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import { Tooltip } from '../tooltip';
|
|
4
|
+
import { FontAwesomeIcon } from '../font-awesome-icon';
|
|
5
|
+
import { TruncateWithTooltip } from '../truncate-with-tooltip';
|
|
6
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
const DefaultLink = ({
|
|
8
|
+
children,
|
|
9
|
+
...props
|
|
10
|
+
}) => /*#__PURE__*/_jsx("a", {
|
|
11
|
+
rel: "noopener noreferrer",
|
|
12
|
+
...props,
|
|
13
|
+
children: children
|
|
14
|
+
});
|
|
15
|
+
export const withIconSidebarItem = (LinkComponent = DefaultLink) => {
|
|
16
|
+
const IconSidebarItem = ({
|
|
17
|
+
option,
|
|
18
|
+
selected,
|
|
19
|
+
isLimited,
|
|
20
|
+
onSelect
|
|
21
|
+
}) => {
|
|
22
|
+
const isSelected = option.key === selected;
|
|
23
|
+
const icon = isSelected && option.selectedIcon ? option.selectedIcon : option.icon;
|
|
24
|
+
const getTitle = () => {
|
|
25
|
+
if (option.title) {
|
|
26
|
+
if (option.tooltipText) {
|
|
27
|
+
return /*#__PURE__*/_jsx("span", {
|
|
28
|
+
className: "icon-sidebar-text",
|
|
29
|
+
children: option.title
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
return /*#__PURE__*/_jsx(TruncateWithTooltip, {
|
|
33
|
+
className: "icon-sidebar-text",
|
|
34
|
+
children: /*#__PURE__*/_jsx("span", {
|
|
35
|
+
children: option.title
|
|
36
|
+
})
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const onClick = e => {
|
|
41
|
+
if (option.disabled) {
|
|
42
|
+
e.preventDefault();
|
|
43
|
+
e.stopPropagation();
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Prevent calling onSelect when link is opened in a new tab
|
|
48
|
+
if (e.metaKey || e.ctrlKey) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
onSelect?.(option);
|
|
52
|
+
};
|
|
53
|
+
const content = /*#__PURE__*/_jsxs(_Fragment, {
|
|
54
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
55
|
+
className: "icon-sidebar-button-icon-container",
|
|
56
|
+
children: /*#__PURE__*/_jsx(FontAwesomeIcon, {
|
|
57
|
+
icon: icon
|
|
58
|
+
})
|
|
59
|
+
}), getTitle(), option.divider && !isLimited && /*#__PURE__*/_jsx("div", {
|
|
60
|
+
className: "icon-sidebar-divider"
|
|
61
|
+
})]
|
|
62
|
+
});
|
|
63
|
+
const props = {
|
|
64
|
+
className: classNames('icon-sidebar-button-container', option.className, option.disabled && 'disabled', isSelected && 'selected'),
|
|
65
|
+
'test-id': option.testId,
|
|
66
|
+
'aria-label': option.title && typeof option.title === 'string' ? option.title : option.ariaLabel
|
|
67
|
+
};
|
|
68
|
+
if (option.link) {
|
|
69
|
+
return /*#__PURE__*/_jsx(Tooltip, {
|
|
70
|
+
content: option.tooltipText,
|
|
71
|
+
placement: option.tooltipPlacement,
|
|
72
|
+
children: /*#__PURE__*/_jsx("span", {
|
|
73
|
+
children: /*#__PURE__*/_jsx(LinkComponent, {
|
|
74
|
+
...props,
|
|
75
|
+
tabIndex: option.disabled ? -1 : 0,
|
|
76
|
+
href: option.link,
|
|
77
|
+
onClick: onClick,
|
|
78
|
+
children: content
|
|
79
|
+
})
|
|
80
|
+
})
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
return /*#__PURE__*/_jsx(Tooltip, {
|
|
84
|
+
content: option.tooltipText,
|
|
85
|
+
placement: option.tooltipPlacement,
|
|
86
|
+
children: onSelect ? /*#__PURE__*/_jsx("button", {
|
|
87
|
+
...props,
|
|
88
|
+
onClick: onClick,
|
|
89
|
+
disabled: option.disabled,
|
|
90
|
+
children: content
|
|
91
|
+
}) : /*#__PURE__*/_jsx("div", {
|
|
92
|
+
...props,
|
|
93
|
+
children: content
|
|
94
|
+
})
|
|
95
|
+
});
|
|
96
|
+
};
|
|
97
|
+
return IconSidebarItem;
|
|
98
|
+
};
|
|
@@ -81,7 +81,7 @@ export const KeyValuePairs = ({
|
|
|
81
81
|
const placeholder = placeholderParams ?? t('No items found');
|
|
82
82
|
const buttonText = buttonTextParams ?? t('Add item');
|
|
83
83
|
const maxItemsTooltipText = maxItemsTooltipTextParams ?? t('Max number of key-value pairs reached');
|
|
84
|
-
const emptyItemErrorText = emptyItemErrorTextParams ?? t('Above field(s) should not be empty
|
|
84
|
+
const emptyItemErrorText = emptyItemErrorTextParams ?? t('Above field(s) should not be empty');
|
|
85
85
|
const deleteKeyValueText = deleteKeyValueTextParams ?? t('Delete');
|
|
86
86
|
const keyInputAriaLabel = keyInputAriaLabelParams ?? t('Key input');
|
|
87
87
|
const valueInputAriaLabel = valueInputAriaLabelParams ?? t('Value input');
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { useTranslation } from '../hooks/use-translation';
|
|
2
3
|
import { Message, MESSAGE_TYPES } from '../message';
|
|
3
4
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
5
|
export const wrapperClassName = 'smooth-transition-content';
|
|
@@ -10,17 +11,20 @@ export const hiddenWrapperClassName = 'smooth-transition-content-hidden';
|
|
|
10
11
|
export function SmoothTransitionLoader({
|
|
11
12
|
children,
|
|
12
13
|
isLoading,
|
|
13
|
-
loadingMessage
|
|
14
|
+
loadingMessage,
|
|
14
15
|
loaderTestId = 'smooth-transition-prerender-loader',
|
|
15
16
|
wrapperTestId = 'smooth-transition-prerender-wrapper'
|
|
16
17
|
}) {
|
|
18
|
+
const {
|
|
19
|
+
t
|
|
20
|
+
} = useTranslation();
|
|
17
21
|
const loader = /*#__PURE__*/_jsx("div", {
|
|
18
22
|
className: "smooth-transition-prerender-loader",
|
|
19
23
|
"test-id": loaderTestId,
|
|
20
24
|
children: /*#__PURE__*/_jsx(Message, {
|
|
21
25
|
type: MESSAGE_TYPES.IN_PROGRESS,
|
|
22
26
|
isCentered: true,
|
|
23
|
-
children: loadingMessage
|
|
27
|
+
children: loadingMessage ?? t('Initializing Data')
|
|
24
28
|
})
|
|
25
29
|
});
|
|
26
30
|
if (!children) {
|
package/js/139/139.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(this.webpackChunkDataRobot=this.webpackChunkDataRobot||[]).push([[139],{9139:e=>{e.exports=JSON.parse('{"Minute":"분","Hour":"시간","Month":"월","Accepted formats: {{supportedFileTypes}}":"지원 가능 파일 종류 {{supportedFileTypes}}","Search":"검색","Search input":"검색 입력","Filter By":"필터링 기준","Delete filter item":"필터 항목 삭제","Clear all":"모두 지우기","Trigger another item":"다른 항목 트리거","Show message":"메시지 표시","Dismiss":"해제","Hide message":"메시지 숨기기","avatar image":"아바타 이미지","Remove badge button":"배지 버튼 제거","loading":"로딩 중","Cross":"십자","Circle":"원","Disc":"디스크","Vertical line":"수직선","Horizontal line":"수평선","Square":"정사각형","Start typing to see a list of users":"사용자 목록을 보려면 입력을 시작하십시오.","Options":"옵션","Chat message":"채팅 메시지","New chat message":"새 채팅 메시지","close tab":"탭 닫기","create tab":"탭 생성","Code editor":"코드 편집기","click to open":"클릭하여 열기","click to close":"클릭하여 닫기","drag to resize":"드래그하여 크기 조정","Sidebar":"사이드바","Copy to clipboard":"클립보드에 복사","Copy text":"텍스트 복사","Copied to clipboard":"클립보드에 복사됨","UTC":"UTC","Start date":"시작일","End date":"종료 날짜","Update window":"창 업데이트","Reset to initial value":"초기 값으로 재설정","Cancel":"취소","Previous":"이전","Next":"다음","Optional":"선택 사항","No search results found.":"검색 결과가 없음.","Menu":"메뉴","Dropdown content":"드롭다운 콘텐츠","Edit":"편집","Empty state":"빈 상태","We encountered an unexpected error and cannot proceed. Try again or contact Support for assistance.":"DataRobot에 예상치 못한 오류가 발생하여 계속 계속 진행할 수 없습니다. 다시 시도하거나 지원팀에 도움을 요청하십시오.","Export":"내보내기","Download information related to this visualization":"이 시각화와 관련된 정보 다운로드","Drag and drop a new dataset or select an option from the right":"새 데이터셋을 끌어다 놓거나 오른쪽에서 옵션을 선택합니다.","Drag and drop a file here or browse":"파일을 여기로 끌어다 놓거나 탐색합니다.","Uploading file...":"파일 업로딩 중…","Upload failed":"업로드에 실패했습니다","Invalid file type, ":"잘못된 파일 유형, ","Invalid file, ":"유효하지 않은 파일, ","Accepted formats: {{formats}}":"수락되는 형식: {{formats}}","Import from":"다음에서 가져오기","Clear selection":"선택 지우기","Local File":"로컬 파일","Browse":"찾아보기","and {{items}} more...":"기타 {{items}}개 등등…","Failed to upload the file":"파일 업로드에 실패했습니다","The file type is not allowed":"허용되지 않는 파일 유형입니다","You can only drop one file.":"하나의 파일만 삭제할 수 있습니다.","File is required.":"파일이 필요합니다.","Uploading...":"업로드 중…","Drop file(s) here to upload or":"업로드하려면 여기에 파일을 끌어 놓거나,","Delete":"삭제","Choose file":"파일 선택","Filters":"필터","Apply filters":"필터 적용","Clear filters":"필터 지우기","Invalid field":"잘못된 필드","Validated":"검정 완료","Extra information in a tooltip":"툴팁에 표시되는 추가 정보","Show password":"비밀번호 표시","Hide password":"암호 숨기기","Submit":"제출","Retry":"재시도","Clear":"지우기","Toggle":"토글","Full-screen drawer":"전체 화면 서랍","Close":"닫기","Continue setup":"설정 계속","Exit without saving":"저장하지 않고 종료","Something went wrong, try again":"문제가 발생했습니다. 다시 시도하십시오.","More":"더 많이","Info-icon with extra information in a tooltip":"추가 정보를 포함한 정보 아이콘 (툴팁 제공)","Click to edit text":"텍스트를 편집하려면 클릭하십시오","Updating text":"텍스트 업데이트 중","No items found":"항목 없음","Add item":"항목 추가","Max number of key-value pairs reached":"쌍으로 도달하는 키값의 최대 수","Above field(s) should not be empty
|
|
1
|
+
"use strict";(this.webpackChunkDataRobot=this.webpackChunkDataRobot||[]).push([[139],{9139:e=>{e.exports=JSON.parse('{"Minute":"분","Hour":"시간","Month":"월","Accepted formats: {{supportedFileTypes}}":"지원 가능 파일 종류 {{supportedFileTypes}}","Search":"검색","Search input":"검색 입력","Filter By":"필터링 기준","Delete filter item":"필터 항목 삭제","Clear all":"모두 지우기","Trigger another item":"다른 항목 트리거","Show message":"메시지 표시","Dismiss":"해제","Hide message":"메시지 숨기기","avatar image":"아바타 이미지","Remove badge button":"배지 버튼 제거","loading":"로딩 중","Cross":"십자","Circle":"원","Disc":"디스크","Vertical line":"수직선","Horizontal line":"수평선","Square":"정사각형","Start typing to see a list of users":"사용자 목록을 보려면 입력을 시작하십시오.","Options":"옵션","Chat message":"채팅 메시지","New chat message":"새 채팅 메시지","close tab":"탭 닫기","create tab":"탭 생성","Code editor":"코드 편집기","click to open":"클릭하여 열기","click to close":"클릭하여 닫기","drag to resize":"드래그하여 크기 조정","Sidebar":"사이드바","Initializing Data":"데이터 초기화 중","Copy to clipboard":"클립보드에 복사","Copy text":"텍스트 복사","Copied to clipboard":"클립보드에 복사됨","UTC":"UTC","Start date":"시작일","End date":"종료 날짜","Update window":"창 업데이트","Reset to initial value":"초기 값으로 재설정","Cancel":"취소","Previous":"이전","Next":"다음","Optional":"선택 사항","No search results found.":"검색 결과가 없음.","Menu":"메뉴","Dropdown content":"드롭다운 콘텐츠","Edit":"편집","Empty state":"빈 상태","We encountered an unexpected error and cannot proceed. Try again or contact Support for assistance.":"DataRobot에 예상치 못한 오류가 발생하여 계속 계속 진행할 수 없습니다. 다시 시도하거나 지원팀에 도움을 요청하십시오.","Export":"내보내기","Download information related to this visualization":"이 시각화와 관련된 정보 다운로드","Drag and drop a new dataset or select an option from the right":"새 데이터셋을 끌어다 놓거나 오른쪽에서 옵션을 선택합니다.","Drag and drop a file here or browse":"파일을 여기로 끌어다 놓거나 탐색합니다.","Uploading file...":"파일 업로딩 중…","Upload failed":"업로드에 실패했습니다","Invalid file type, ":"잘못된 파일 유형, ","Invalid file, ":"유효하지 않은 파일, ","Accepted formats: {{formats}}":"수락되는 형식: {{formats}}","Import from":"다음에서 가져오기","Clear selection":"선택 지우기","Local File":"로컬 파일","Browse":"찾아보기","and {{items}} more...":"기타 {{items}}개 등등…","Failed to upload the file":"파일 업로드에 실패했습니다","The file type is not allowed":"허용되지 않는 파일 유형입니다","You can only drop one file.":"하나의 파일만 삭제할 수 있습니다.","File is required.":"파일이 필요합니다.","Uploading...":"업로드 중…","Drop file(s) here to upload or":"업로드하려면 여기에 파일을 끌어 놓거나,","Delete":"삭제","Choose file":"파일 선택","Filters":"필터","Apply filters":"필터 적용","Clear filters":"필터 지우기","Invalid field":"잘못된 필드","Validated":"검정 완료","Extra information in a tooltip":"툴팁에 표시되는 추가 정보","Show password":"비밀번호 표시","Hide password":"암호 숨기기","Submit":"제출","Retry":"재시도","Clear":"지우기","Toggle":"토글","Full-screen drawer":"전체 화면 서랍","Close":"닫기","Continue setup":"설정 계속","Exit without saving":"저장하지 않고 종료","Something went wrong, try again":"문제가 발생했습니다. 다시 시도하십시오.","More":"더 많이","Info-icon with extra information in a tooltip":"추가 정보를 포함한 정보 아이콘 (툴팁 제공)","Click to edit text":"텍스트를 편집하려면 클릭하십시오","Updating text":"텍스트 업데이트 중","No items found":"항목 없음","Add item":"항목 추가","Max number of key-value pairs reached":"쌍으로 도달하는 키값의 최대 수","Above field(s) should not be empty":"위 필드를 입력해야 합니다","Key input":"키 입력","Value input":"값 입력","Double-check this value":"이 값을 다시 확인하십시오.","Duplicated keys ({{name}}) are not allowed.":"중복 키({{name}})는 허용되지 않습니다.","recommended":"추천된","suggested":"제안됨","failed":"실패함","info":"정보","Loading":"로드 중","Loading...":"로드 중…","Something went wrong processing response from the model. Try reloading the page.":"모델의 응답을 처리하는 데 문제가 발생했습니다. 페이지를 새로 고쳐보십시오.","OK":"확인","Modal":"모달","Remove":"제거","Select":"선택","Page {{number}}":"페이지 {{number}}","Next page":"다음 페이지","Previous page":"이전 페이지","{{start}}-{{endLimited}} of {{totalLimit}}+ items":"{{start}}-{{endLimited}}/{{totalLimit}}+項目","{{start}}-{{end}} of {{total}} items":"{{start}}-{{end}}/{{total}}項目","Pagination":"페이지 매김","{{pages}} per page":"페이지당 {{pages}}개","0-0 of 0":"0 중에 0-0","{{startOfPage}} of {{totalLimit}}":"{{startOfPage}}/{{totalLimit}}","{{startOfPage}} of {{total}}":"{{startOfPage}}/{{total}}","{{startOfPage}}-{{endOfPage}} of {{totalLimit}}+":"{{startOfPage}}-{{endOfPage}}/{{totalLimit}}+","{{startOfPage}}-{{endOfPage}} of {{total}}":"{{startOfPage}}-{{endOfPage}}/{{total}}","No available page sizes":"사용 가능한 페이지 크기 없음","Slider handle":"슬라이더 핸들","Refresh":"새로고침","Sunday":"일요일","Monday":"월요일","Tuesday":"화요일","Wednesday":"수요일","Thursday":"목요일","Friday":"금요일","Saturday":"토요일","January":"1월","February":"2월","March":"3월","April":"4월","May":"5월","June":"6월","July":"7월","August":"8월","September":"9월","October":"10월","November":"11월","December":"12월","Every hour":"매시간","Every day":"매일","Every week":"매주","Every month":"매달","Every quarter":"매사분기","Every year":"매년","Use simple scheduler":"단순 스케줄러 사용","Use advanced scheduler":"고급 스케줄러 사용","Use simple scheduler?":"단순 스케줄러를 사용하시겠습니까?","Switch to simple scheduler":"단순 스케줄러로 전환","Stay with advanced scheduler":"고급 스케줄러 계속 유지","Switching to the simple scheduler form will clear any schedule you set so far.":"간단한 스케줄러 형태로 전환하면 지금까지 설정된 모든 일정이 삭제됩니다.","Day of month":"월의 일","Day of week":"주의 일","Minutes past the hour":"해당 시간 후 분","Time":"시간","Days":"일","Months":"개월","Frequency":"빈도","Accepts values from 1 to 31. Invalid values for a given month will be ignored.":"1부터 31까지의 값을 허용합니다. 지정된 월에 대해 잘못된 값은 무시됩니다.","Accepts values between 1 (January) and 12 (December).":"1(1월)과 12(12월) 사이의 값을 허용합니다.","Accepts values between 0 (Sunday) and 6 (Saturday).":"0(일요일)과 6(토요일) 사이의 값을 허용합니다.","Value must have both hours and minutes specified":"값에는 시간과 분이 모두 지정되어야 합니다","Value must be a number between 0 and 59":"값은 0에서 59 사이의 숫자여야 합니다","Simple schedule":"간단한 일정","Advanced schedule":"고급 스케줄","Switching to the simple scheduler will clear any schedule you\'ve set so far":"간단한 스케줄러 형태로 전환하면 지금까지 설정한 모든 일정이 삭제됩니다","Value must be a comma-separated list of numbers between {{min}} and {{max}} or * for all":"값은 쉼표로 구분된 {{min}}에서 {{max}} 사이의 숫자 목록이거나 모두 *여야 합니다","Value must be a comma-separated list of numbers between {{min}} and {{max}}":"값은 쉼표로 구분된 {{min}}에서 {{max}} 사이의 숫자 목록이어야 합니다","Clear Input":"입력 삭제","No items to list":"나열할 항목 없음","Updating list results...":"목록 결과 업데이트 중…","Section has errors":"섹션에 오류가 있습니다","Enter item value":"항목 값 입력","Sidebar modal":"사이드바 모달","Addition actions":"추가 작업","Select all rows":"모든 행 선택","Select row {{index}}":"{{index}}행 선택","Expand Row":"행 확장","Table row actions dropdown":"표 행 작업 드롭다운","No records found":"기록을 찾을 수 없음","No Records":"기록 없음","Consider adjusting your filters or search":"필터 또는 검색 조정 고려","N/A":"해당 없음","Disabled row":"비활성화된 행","Click to select the row":"행을 선택하려면 클릭하십시오","Filters applied:":"적용된 필터:","Sort ascending":"오름차순 정렬","Sort descending":"내림차순 정렬","Pin column":"열 고정","Unpin column":"열 고정 해제","Pinned columns will take too much space with current column pinned":"고정된 열이 현재 열이 고정된 상태에서 너무 많은 공간을 차지합니다.","Column header actions dropdown":"열 헤더 작업 드롭다운","Column Header: {{headerLabel}}. To focus on the header column actions press Tab key":"열 헤더: {{headerLabel}}. 헤더 열 작업에 초점을 맞추려면 탭 키를 누르십시오","Apply":"적용","Reset to default":"기본설정으로 복귀","Columns management":"열 관리","Settings":"설정","Pinned columns":"고정된 열","Unpinned columns":"고정되지 않은 열","Sort column":"열 정렬","Use arrow keys to reorder columns. Use Tab key to navigate to inner controls":"화살표 키를 사용하여 열을 재정렬합니다. 탭 키를 사용하여 내부 컨트롤로 이동","Settings search":"설정 검색","Click to select all rows in the table":"테이블의 모든 행을 선택하려면 클릭하십시오","Click to open row actions dropdown":"행 작업 드롭다운을 열려면 클릭하십시오","Click to expand the row":"행을 확장하려면 클릭하십시오","Select {{val}}":"{{val}} 선택","Delete Editor Content":"편집기 콘텐츠 삭제","Bold":"굵은 글씨","Italic":"기울임꼴","Underline":"밑줄","Superscript":"위 첨자","Link":"링크","Remove link":"링크 제거","Bulleted list":"불릿 기호가 붙은 목록","Numbered list":"번호가 매겨진 목록","Clear formatting":"형식 지우기","Code":"코드","URL is required":"URL이 필요합니다.","Enter a valid URL":"유효한 URL 입력","Save":"저장","Heading large":"라지로 이동","Heading medium":"미디엄으로 이동","Heading small":"스몰로 이동","Regular text":"일반 텍스트","Text URL":"텍스트 URL","Minimize":"사이드바를","Skip tour":"가이드 건너뛰기","previous":"이전","next":"다음","Advanced tour anchor button":"고급 투어 앵커 버튼","Next tour page":"다음 투어 페이지","Previous tour page":"이전 투어 페이지","Zoom In":"확대","Zoom Out":"축소","Reset Zoom":"줌 재설정","{{count}} characters remaining_other":"{{count}}자 남음","{{count}}+ item found_other":"{{count}}+ 항목 찾음","{{count}} item found_other":"{{count}} 항목 찾음"}')}}]);
|