@pingux/astro 2.121.1-alpha.3 → 2.122.0-alpha.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/lib/cjs/components/CodeEditor/CodeEditor.d.ts +4 -0
- package/lib/cjs/components/CodeEditor/CodeEditor.js +55 -0
- package/lib/cjs/components/CodeEditor/CodeEditor.mdx +35 -0
- package/lib/cjs/components/CodeEditor/CodeEditor.stories.d.ts +27 -0
- package/lib/cjs/components/CodeEditor/CodeEditor.stories.js +66 -0
- package/lib/cjs/components/CodeEditor/CodeEditor.styles.d.ts +10 -0
- package/lib/cjs/components/CodeEditor/CodeEditor.styles.js +30 -0
- package/lib/cjs/components/CodeEditor/CodeEditor.test.d.ts +1 -0
- package/lib/cjs/components/CodeEditor/CodeEditor.test.js +82 -0
- package/lib/cjs/components/CodeEditor/index.d.ts +1 -0
- package/lib/cjs/components/CodeEditor/index.js +14 -0
- package/lib/cjs/components/CodeView/CodeView.mdx +4 -1
- package/lib/cjs/index.d.ts +1 -0
- package/lib/cjs/index.js +8 -0
- package/lib/cjs/styles/variants/variants.js +2 -0
- package/lib/cjs/types/codeEditor.d.ts +15 -0
- package/lib/cjs/types/codeEditor.js +6 -0
- package/lib/cjs/types/index.d.ts +1 -0
- package/lib/cjs/types/index.js +60 -49
- package/lib/components/CodeEditor/CodeEditor.js +41 -0
- package/lib/components/CodeEditor/CodeEditor.mdx +35 -0
- package/lib/components/CodeEditor/CodeEditor.stories.js +54 -0
- package/lib/components/CodeEditor/CodeEditor.styles.js +22 -0
- package/lib/components/CodeEditor/CodeEditor.test.js +79 -0
- package/lib/components/CodeEditor/index.js +1 -0
- package/lib/components/CodeView/CodeView.mdx +4 -1
- package/lib/index.js +1 -0
- package/lib/styles/variants/variants.js +2 -0
- package/lib/types/codeEditor.js +1 -0
- package/lib/types/index.js +1 -0
- package/package.json +3 -1
@@ -0,0 +1,55 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
|
4
|
+
var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
|
5
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
6
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
7
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
8
|
+
_Object$defineProperty(exports, "__esModule", {
|
9
|
+
value: true
|
10
|
+
});
|
11
|
+
exports["default"] = void 0;
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
13
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
15
|
+
var _react2 = _interopRequireDefault(require("@monaco-editor/react"));
|
16
|
+
var _index = require("../../index");
|
17
|
+
var _react3 = require("@emotion/react");
|
18
|
+
var _excluded = ["value", "language", "onChange", "onValidate", "height"];
|
19
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
20
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
21
|
+
var CodeEditor = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
22
|
+
var value = props.value,
|
23
|
+
language = props.language,
|
24
|
+
onChange = props.onChange,
|
25
|
+
onValidate = props.onValidate,
|
26
|
+
height = props.height,
|
27
|
+
others = (0, _objectWithoutProperties2["default"])(props, _excluded);
|
28
|
+
var editorRef = (0, _react.useRef)(null);
|
29
|
+
return (0, _react3.jsx)(_index.Box, (0, _extends2["default"])({}, others, {
|
30
|
+
ref: ref
|
31
|
+
}), (0, _react3.jsx)(_index.Box, {
|
32
|
+
variant: "codeEditor.wrapper",
|
33
|
+
ref: editorRef,
|
34
|
+
height: height
|
35
|
+
}, (0, _react3.jsx)(_react2["default"], {
|
36
|
+
height: "100%",
|
37
|
+
language: language,
|
38
|
+
value: value,
|
39
|
+
theme: "vs-light",
|
40
|
+
onChange: onChange,
|
41
|
+
onValidate: onValidate,
|
42
|
+
options: {
|
43
|
+
fontSize: 14,
|
44
|
+
automaticLayout: true,
|
45
|
+
minimap: {
|
46
|
+
enabled: true
|
47
|
+
},
|
48
|
+
stickyScroll: {
|
49
|
+
enabled: false
|
50
|
+
}
|
51
|
+
}
|
52
|
+
})));
|
53
|
+
});
|
54
|
+
var _default = CodeEditor;
|
55
|
+
exports["default"] = _default;
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import { Meta } from '@storybook/addon-docs';
|
2
|
+
|
3
|
+
<Meta title="Components/CodeEditor/CodeEditor" />
|
4
|
+
|
5
|
+
# CodeEditor
|
6
|
+
|
7
|
+
The Code Editor component is a tool for editing and displaying code snippets in an application.
|
8
|
+
It provides syntax highlighting, shows line numbers, and validates errors in the code.
|
9
|
+
In addition, it supports standard IDE keyboard interactions like tab-to-indent.
|
10
|
+
|
11
|
+
The CodeEditor component should be used for complex use cases that require an interactive environment, support for various programming languages, functionalities like linting, keyboard interactions, and real-time updates.
|
12
|
+
When code snippets need to be presented in a read-only format, use [CodeView](./?path=/docs/components-codeview--docs).
|
13
|
+
|
14
|
+
Languages
|
15
|
+
supported languages are categorized into two groups: those with rich IntelliSense and validation capabilities, and those that provide only basic syntax highlighting. Check the list at [monaco-editor](https://github.com/suren-atoyan/monaco-react#:~:text=It%27s%20important%20to%20mention%20that%20according%20to%20monaco%2Deditor%2C%20the%20whole%20supported%20languages%20are%20divided%20into%20two%20groups%3A)
|
16
|
+
|
17
|
+
### Required Components
|
18
|
+
|
19
|
+
This component can be used independently and does not require additional components.
|
20
|
+
|
21
|
+
### Accessibility
|
22
|
+
|
23
|
+
#### Keyboard Navigation
|
24
|
+
|
25
|
+
These keys provide additional functionality to the component.
|
26
|
+
|
27
|
+
| Keys | Functions |
|
28
|
+
| ---- | --------- |
|
29
|
+
| Enter | Inserts a new line of code |
|
30
|
+
| Arrow keys | Move the cursor within the code in the set direction |
|
31
|
+
|
32
|
+
#### Screen Readers
|
33
|
+
|
34
|
+
The **`aria-live`** attribute is used to announce content changes in a live region.
|
35
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { StoryFn } from '@storybook/react';
|
3
|
+
import { CodeEditorProps } from '../../types';
|
4
|
+
declare const _default: {
|
5
|
+
title: string;
|
6
|
+
component: React.ForwardRefExoticComponent<CodeEditorProps & React.RefAttributes<HTMLElement>>;
|
7
|
+
parameters: {
|
8
|
+
docs: {
|
9
|
+
page: () => React.JSX.Element;
|
10
|
+
source: {
|
11
|
+
type: string;
|
12
|
+
};
|
13
|
+
};
|
14
|
+
a11y: {
|
15
|
+
config: {
|
16
|
+
rules: {
|
17
|
+
id: string;
|
18
|
+
enabled: boolean;
|
19
|
+
}[];
|
20
|
+
};
|
21
|
+
};
|
22
|
+
};
|
23
|
+
};
|
24
|
+
export default _default;
|
25
|
+
export declare const TypescriptEditor: StoryFn<CodeEditorProps>;
|
26
|
+
export declare const JavascriptEditor: StoryFn<CodeEditorProps>;
|
27
|
+
export declare const JsonEditor: StoryFn<CodeEditorProps>;
|
@@ -0,0 +1,66 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
4
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
5
|
+
_Object$defineProperty(exports, "__esModule", {
|
6
|
+
value: true
|
7
|
+
});
|
8
|
+
exports["default"] = exports.TypescriptEditor = exports.JsonEditor = exports.JavascriptEditor = void 0;
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
10
|
+
var _storybookDocsLayout = _interopRequireDefault(require("../../../.storybook/storybookDocsLayout"));
|
11
|
+
var _index = require("../../index");
|
12
|
+
var _CodeEditor = _interopRequireDefault(require("./CodeEditor.mdx"));
|
13
|
+
var _react2 = require("@emotion/react");
|
14
|
+
var _default = {
|
15
|
+
title: 'Experimental/CodeEditor',
|
16
|
+
component: _index.CodeEditor,
|
17
|
+
parameters: {
|
18
|
+
docs: {
|
19
|
+
page: function page() {
|
20
|
+
return (0, _react2.jsx)(_react["default"].Fragment, null, (0, _react2.jsx)(_CodeEditor["default"], null), (0, _react2.jsx)(_storybookDocsLayout["default"], null));
|
21
|
+
},
|
22
|
+
source: {
|
23
|
+
type: 'code'
|
24
|
+
}
|
25
|
+
},
|
26
|
+
a11y: {
|
27
|
+
config: {
|
28
|
+
rules: [{
|
29
|
+
id: 'color-contrast',
|
30
|
+
enabled: false
|
31
|
+
}, {
|
32
|
+
id: 'aria-roledescription',
|
33
|
+
enabled: false
|
34
|
+
}]
|
35
|
+
}
|
36
|
+
}
|
37
|
+
}
|
38
|
+
};
|
39
|
+
exports["default"] = _default;
|
40
|
+
var jsonCode = "{\n \"name\": \"Luke Skywalker\", \n \"height\": \"172\", \n \"mass\": \"77\", \n \"hair_color\": \"blond\", \n \"skin_color\": \"fair\", \n \"eye_color\": \"blue\", \n \"birth_year\": \"19BBY\", \n \"gender\": \"male\", \n \"homeworld\": \"https://swapi.dev/api/planets/1/\", \n \"films\": [\n \"https://swapi.dev/api/films/1/\", \n \"https://swapi.dev/api/films/2/\", \n \"https://swapi.dev/api/films/3/\", \n \"https://swapi.dev/api/films/6/\"\n ],\n \"starships\": [\n \"https://swapi.dev/api/starships/12/\", \n \"https://swapi.dev/api/starships/22/\"\n ]\n}";
|
41
|
+
var tsCode = "const stringValue: string = 15;\n\nfunction addOne(integer: number) {\n return integer + 1;\n}\n\naddOne('I am a string');\n";
|
42
|
+
var jsCode = "\nfunction factorial(n) {\n if (n === 0 || n === 1) {\n return 1;\n } else {\n return n * factorial(n - 1);\n }\n}\n\nconsole.log(factorial(5));\n\n(a) => {};\n";
|
43
|
+
var TypescriptEditor = function TypescriptEditor() {
|
44
|
+
return (0, _react2.jsx)(_index.CodeEditor, {
|
45
|
+
value: tsCode,
|
46
|
+
language: "typescript",
|
47
|
+
height: "200px"
|
48
|
+
});
|
49
|
+
};
|
50
|
+
exports.TypescriptEditor = TypescriptEditor;
|
51
|
+
var JavascriptEditor = function JavascriptEditor() {
|
52
|
+
return (0, _react2.jsx)(_index.CodeEditor, {
|
53
|
+
value: jsCode,
|
54
|
+
language: "javascript",
|
55
|
+
height: "200px"
|
56
|
+
});
|
57
|
+
};
|
58
|
+
exports.JavascriptEditor = JavascriptEditor;
|
59
|
+
var JsonEditor = function JsonEditor() {
|
60
|
+
return (0, _react2.jsx)(_index.CodeEditor, {
|
61
|
+
value: jsonCode,
|
62
|
+
language: "json",
|
63
|
+
height: "200px"
|
64
|
+
});
|
65
|
+
};
|
66
|
+
exports.JsonEditor = JsonEditor;
|
@@ -0,0 +1,30 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
|
4
|
+
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
|
5
|
+
var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
|
6
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
7
|
+
var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
|
8
|
+
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
|
9
|
+
var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
|
10
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
11
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
12
|
+
_Object$defineProperty(exports, "__esModule", {
|
13
|
+
value: true
|
14
|
+
});
|
15
|
+
exports["default"] = void 0;
|
16
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
17
|
+
var _Input = require("../Input/Input.styles");
|
18
|
+
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
19
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
20
|
+
var wrapper = _objectSpread(_objectSpread({}, _Input.input.fieldControlWrapper), {}, {
|
21
|
+
borderColor: 'neutral.80',
|
22
|
+
borderRadius: '3px 4px 4px 3px',
|
23
|
+
borderStyle: 'solid',
|
24
|
+
borderWidth: '1px 1px 1px 0px',
|
25
|
+
width: '100%'
|
26
|
+
});
|
27
|
+
var _default = {
|
28
|
+
wrapper: wrapper
|
29
|
+
};
|
30
|
+
exports["default"] = _default;
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,82 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
4
|
+
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
5
|
+
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/json/stringify"));
|
6
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
8
|
+
var _index = require("../../index");
|
9
|
+
var _testWrapper = require("../../utils/testUtils/testWrapper");
|
10
|
+
var _universalComponentTest = require("../../utils/testUtils/universalComponentTest");
|
11
|
+
var _react2 = require("@emotion/react");
|
12
|
+
var testId = 'test-code-sample';
|
13
|
+
var defaultProps = {
|
14
|
+
'data-testid': testId
|
15
|
+
};
|
16
|
+
var jsCode = "\n function helloWorld() {\n console.log(\"Hello, World!\");\n }\n";
|
17
|
+
|
18
|
+
// Needs to be added to each components test file
|
19
|
+
(0, _universalComponentTest.universalComponentTests)({
|
20
|
+
rules: {
|
21
|
+
'color-contrast': {
|
22
|
+
enabled: false
|
23
|
+
}
|
24
|
+
},
|
25
|
+
renderComponent: function renderComponent(props) {
|
26
|
+
return (0, _react2.jsx)(_index.CodeEditor, (0, _extends2["default"])({}, defaultProps, props, {
|
27
|
+
value: jsCode,
|
28
|
+
language: "javascript"
|
29
|
+
}));
|
30
|
+
}
|
31
|
+
});
|
32
|
+
jest.mock('@monaco-editor/react', function () {
|
33
|
+
return {
|
34
|
+
__esModule: true,
|
35
|
+
"default": function _default(_ref) {
|
36
|
+
var _context;
|
37
|
+
var language = _ref.language,
|
38
|
+
value = _ref.value,
|
39
|
+
_onChange = _ref.onChange;
|
40
|
+
return (0, _react2.jsx)("textarea", {
|
41
|
+
"data-testid": "mock-monaco-editor",
|
42
|
+
onChange: function onChange(e) {
|
43
|
+
return _onChange(e.target.value);
|
44
|
+
},
|
45
|
+
value: (0, _concat["default"])(_context = "Editor Language: ".concat(language, ", Code:")).call(_context, value),
|
46
|
+
"aria-label": "Code editor"
|
47
|
+
});
|
48
|
+
}
|
49
|
+
};
|
50
|
+
});
|
51
|
+
describe('CodeEditor', function () {
|
52
|
+
it('renders with initial value', function () {
|
53
|
+
var value = 'console.log("Hello, World!");';
|
54
|
+
(0, _testWrapper.render)((0, _react2.jsx)(_index.CodeEditor, {
|
55
|
+
language: "javascript",
|
56
|
+
value: value
|
57
|
+
}));
|
58
|
+
expect(_testWrapper.screen.getByTestId('mock-monaco-editor')).toBeInTheDocument();
|
59
|
+
expect(_testWrapper.screen.getByText('Editor Language: javascript, Code:console.log("Hello, World!");')).toBeInTheDocument();
|
60
|
+
});
|
61
|
+
it('calls onChange when code changes', function () {
|
62
|
+
var value = 'console.log("Hello, World!");';
|
63
|
+
var mockOnChange = jest.fn();
|
64
|
+
(0, _testWrapper.render)((0, _react2.jsx)(_index.CodeEditor, {
|
65
|
+
language: "javascript",
|
66
|
+
value: value,
|
67
|
+
onChange: mockOnChange
|
68
|
+
}));
|
69
|
+
var editor = _testWrapper.screen.getByTestId('mock-monaco-editor');
|
70
|
+
var newValue = (0, _stringify["default"])([{
|
71
|
+
key: false
|
72
|
+
}]);
|
73
|
+
(0, _testWrapper.act)(function () {
|
74
|
+
_testWrapper.fireEvent.change(editor, {
|
75
|
+
target: {
|
76
|
+
value: newValue
|
77
|
+
}
|
78
|
+
});
|
79
|
+
});
|
80
|
+
expect(mockOnChange).toHaveBeenCalled();
|
81
|
+
});
|
82
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
export { default } from './CodeEditor';
|
@@ -0,0 +1,14 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
4
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
5
|
+
_Object$defineProperty(exports, "__esModule", {
|
6
|
+
value: true
|
7
|
+
});
|
8
|
+
_Object$defineProperty(exports, "default", {
|
9
|
+
enumerable: true,
|
10
|
+
get: function get() {
|
11
|
+
return _CodeEditor["default"];
|
12
|
+
}
|
13
|
+
});
|
14
|
+
var _CodeEditor = _interopRequireDefault(require("./CodeEditor"));
|
@@ -5,7 +5,10 @@ import { Meta } from '@storybook/addon-docs';
|
|
5
5
|
# CodeView
|
6
6
|
|
7
7
|
This component is used for code syntax highlighting and is built on [prism-react-renderer](https://github.com/FormidableLabs/prism-react-renderer).
|
8
|
-
It should contain the language title and be formatted with indentations, line breaks, and comments, and should not contain complex code snippets.
|
8
|
+
It should contain the language title and be formatted with indentations, line breaks, and comments, and should not contain complex code snippets.
|
9
|
+
|
10
|
+
The CodeView component should be used for code snippets that need to be presented in a read-only format.
|
11
|
+
For more complex use cases that require an interactive environment, support for various programming languages, functionalities like linting, keyboard interactions, and real-time updates, use [CodeEditor](./?path=/docs/experimental-codeeditor--docs).
|
9
12
|
|
10
13
|
### Required Components
|
11
14
|
|
package/lib/cjs/index.d.ts
CHANGED
@@ -59,6 +59,7 @@ export { default as Checkbox } from './components/Checkbox';
|
|
59
59
|
export * from './components/Checkbox';
|
60
60
|
export { default as CheckboxField } from './components/CheckboxField';
|
61
61
|
export * from './components/CheckboxField';
|
62
|
+
export { default as CodeEditor } from './components/CodeEditor';
|
62
63
|
export { default as CodeView } from './components/CodeView';
|
63
64
|
export { default as CollapsiblePanel } from './components/CollapsiblePanel';
|
64
65
|
export * from './components/CollapsiblePanel';
|
package/lib/cjs/index.js
CHANGED
@@ -54,6 +54,7 @@ var _exportNames = {
|
|
54
54
|
Card: true,
|
55
55
|
Checkbox: true,
|
56
56
|
CheckboxField: true,
|
57
|
+
CodeEditor: true,
|
57
58
|
CodeView: true,
|
58
59
|
CollapsiblePanel: true,
|
59
60
|
CollapsiblePanelContainer: true,
|
@@ -313,6 +314,12 @@ _Object$defineProperty(exports, "CheckboxField", {
|
|
313
314
|
return _CheckboxField["default"];
|
314
315
|
}
|
315
316
|
});
|
317
|
+
_Object$defineProperty(exports, "CodeEditor", {
|
318
|
+
enumerable: true,
|
319
|
+
get: function get() {
|
320
|
+
return _CodeEditor["default"];
|
321
|
+
}
|
322
|
+
});
|
316
323
|
_Object$defineProperty(exports, "CodeView", {
|
317
324
|
enumerable: true,
|
318
325
|
get: function get() {
|
@@ -1312,6 +1319,7 @@ _forEachInstanceProperty(_context19 = _Object$keys(_CheckboxField)).call(_contex
|
|
1312
1319
|
}
|
1313
1320
|
});
|
1314
1321
|
});
|
1322
|
+
var _CodeEditor = _interopRequireDefault(require("./components/CodeEditor"));
|
1315
1323
|
var _CodeView = _interopRequireDefault(require("./components/CodeView"));
|
1316
1324
|
var _CollapsiblePanel = _interopRequireWildcard(require("./components/CollapsiblePanel"));
|
1317
1325
|
_forEachInstanceProperty(_context20 = _Object$keys(_CollapsiblePanel)).call(_context20, function (key) {
|
@@ -24,6 +24,7 @@ var _Breadcrumb = _interopRequireDefault(require("../../components/Breadcrumbs/B
|
|
24
24
|
var _ButtonBar = _interopRequireDefault(require("../../components/ButtonBar/ButtonBar.styles"));
|
25
25
|
var _Calendar = _interopRequireDefault(require("../../components/Calendar/Calendar.styles"));
|
26
26
|
var _Callout = _interopRequireDefault(require("../../components/Callout/Callout.styles"));
|
27
|
+
var _CodeEditor = _interopRequireDefault(require("../../components/CodeEditor/CodeEditor.styles"));
|
27
28
|
var _CodeView = _interopRequireDefault(require("../../components/CodeView/CodeView.styles"));
|
28
29
|
var _CollapsiblePanel = _interopRequireDefault(require("../../components/CollapsiblePanel/CollapsiblePanel.styles"));
|
29
30
|
var _CopyText = _interopRequireDefault(require("../../components/CopyText/CopyText.styles"));
|
@@ -77,6 +78,7 @@ var _default = _objectSpread({
|
|
77
78
|
calendar: _Calendar["default"],
|
78
79
|
rangeCalendar: _RangeCalendar["default"],
|
79
80
|
callout: _Callout["default"],
|
81
|
+
codeEditor: _CodeEditor["default"],
|
80
82
|
codeView: _CodeView["default"],
|
81
83
|
collapsiblePanel: _CollapsiblePanel["default"],
|
82
84
|
copyText: _CopyText["default"],
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import { type editor } from 'monaco-editor';
|
2
|
+
import * as monaco from 'monaco-editor';
|
3
|
+
import { DOMAttributes, StyleProps } from './shared';
|
4
|
+
import { FocusableElement } from '.';
|
5
|
+
export interface CodeEditorProps extends Omit<DOMAttributes<FocusableElement>, 'onChange'>, StyleProps {
|
6
|
+
value?: string;
|
7
|
+
language?: string;
|
8
|
+
onChange?: (value: string | undefined) => void;
|
9
|
+
onValidate?: (markers: editor.IMarker[]) => void;
|
10
|
+
}
|
11
|
+
export interface CustomEditorOptions extends monaco.editor.IStandaloneEditorConstructionOptions {
|
12
|
+
stickyScroll?: {
|
13
|
+
enabled: boolean;
|
14
|
+
};
|
15
|
+
}
|
package/lib/cjs/types/index.d.ts
CHANGED
package/lib/cjs/types/index.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
-
var _context, _context2, _context3, _context4, _context5, _context6, _context7, _context8, _context9, _context10, _context11, _context12, _context13, _context14, _context15, _context16, _context17, _context18, _context19, _context20, _context21, _context22, _context23, _context24, _context25, _context26, _context27, _context28, _context29, _context30, _context31, _context32, _context33, _context34, _context35, _context36, _context37, _context38, _context39, _context40, _context41, _context42, _context43, _context44, _context45, _context46, _context47, _context48, _context49, _context50, _context51, _context52, _context53, _context54, _context55, _context56, _context57, _context58, _context59;
|
3
|
+
var _context, _context2, _context3, _context4, _context5, _context6, _context7, _context8, _context9, _context10, _context11, _context12, _context13, _context14, _context15, _context16, _context17, _context18, _context19, _context20, _context21, _context22, _context23, _context24, _context25, _context26, _context27, _context28, _context29, _context30, _context31, _context32, _context33, _context34, _context35, _context36, _context37, _context38, _context39, _context40, _context41, _context42, _context43, _context44, _context45, _context46, _context47, _context48, _context49, _context50, _context51, _context52, _context53, _context54, _context55, _context56, _context57, _context58, _context59, _context60;
|
4
4
|
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
5
5
|
var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
|
6
6
|
var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
|
@@ -128,8 +128,19 @@ _forEachInstanceProperty(_context11 = _Object$keys(_checkboxField)).call(_contex
|
|
128
128
|
}
|
129
129
|
});
|
130
130
|
});
|
131
|
+
var _codeEditor = require("./codeEditor");
|
132
|
+
_forEachInstanceProperty(_context12 = _Object$keys(_codeEditor)).call(_context12, function (key) {
|
133
|
+
if (key === "default" || key === "__esModule") return;
|
134
|
+
if (key in exports && exports[key] === _codeEditor[key]) return;
|
135
|
+
_Object$defineProperty(exports, key, {
|
136
|
+
enumerable: true,
|
137
|
+
get: function get() {
|
138
|
+
return _codeEditor[key];
|
139
|
+
}
|
140
|
+
});
|
141
|
+
});
|
131
142
|
var _collapsiblePanel = require("./collapsiblePanel");
|
132
|
-
_forEachInstanceProperty(
|
143
|
+
_forEachInstanceProperty(_context13 = _Object$keys(_collapsiblePanel)).call(_context13, function (key) {
|
133
144
|
if (key === "default" || key === "__esModule") return;
|
134
145
|
if (key in exports && exports[key] === _collapsiblePanel[key]) return;
|
135
146
|
_Object$defineProperty(exports, key, {
|
@@ -140,7 +151,7 @@ _forEachInstanceProperty(_context12 = _Object$keys(_collapsiblePanel)).call(_con
|
|
140
151
|
});
|
141
152
|
});
|
142
153
|
var _colorField = require("./colorField");
|
143
|
-
_forEachInstanceProperty(
|
154
|
+
_forEachInstanceProperty(_context14 = _Object$keys(_colorField)).call(_context14, function (key) {
|
144
155
|
if (key === "default" || key === "__esModule") return;
|
145
156
|
if (key in exports && exports[key] === _colorField[key]) return;
|
146
157
|
_Object$defineProperty(exports, key, {
|
@@ -151,7 +162,7 @@ _forEachInstanceProperty(_context13 = _Object$keys(_colorField)).call(_context13
|
|
151
162
|
});
|
152
163
|
});
|
153
164
|
var _copyText = require("./copyText");
|
154
|
-
_forEachInstanceProperty(
|
165
|
+
_forEachInstanceProperty(_context15 = _Object$keys(_copyText)).call(_context15, function (key) {
|
155
166
|
if (key === "default" || key === "__esModule") return;
|
156
167
|
if (key in exports && exports[key] === _copyText[key]) return;
|
157
168
|
_Object$defineProperty(exports, key, {
|
@@ -162,7 +173,7 @@ _forEachInstanceProperty(_context14 = _Object$keys(_copyText)).call(_context14,
|
|
162
173
|
});
|
163
174
|
});
|
164
175
|
var _dataTable = require("./dataTable");
|
165
|
-
_forEachInstanceProperty(
|
176
|
+
_forEachInstanceProperty(_context16 = _Object$keys(_dataTable)).call(_context16, function (key) {
|
166
177
|
if (key === "default" || key === "__esModule") return;
|
167
178
|
if (key in exports && exports[key] === _dataTable[key]) return;
|
168
179
|
_Object$defineProperty(exports, key, {
|
@@ -173,7 +184,7 @@ _forEachInstanceProperty(_context15 = _Object$keys(_dataTable)).call(_context15,
|
|
173
184
|
});
|
174
185
|
});
|
175
186
|
var _environmentBreadcrumb = require("./environmentBreadcrumb");
|
176
|
-
_forEachInstanceProperty(
|
187
|
+
_forEachInstanceProperty(_context17 = _Object$keys(_environmentBreadcrumb)).call(_context17, function (key) {
|
177
188
|
if (key === "default" || key === "__esModule") return;
|
178
189
|
if (key in exports && exports[key] === _environmentBreadcrumb[key]) return;
|
179
190
|
_Object$defineProperty(exports, key, {
|
@@ -184,7 +195,7 @@ _forEachInstanceProperty(_context16 = _Object$keys(_environmentBreadcrumb)).call
|
|
184
195
|
});
|
185
196
|
});
|
186
197
|
var _fieldHelperText = require("./fieldHelperText");
|
187
|
-
_forEachInstanceProperty(
|
198
|
+
_forEachInstanceProperty(_context18 = _Object$keys(_fieldHelperText)).call(_context18, function (key) {
|
188
199
|
if (key === "default" || key === "__esModule") return;
|
189
200
|
if (key in exports && exports[key] === _fieldHelperText[key]) return;
|
190
201
|
_Object$defineProperty(exports, key, {
|
@@ -195,7 +206,7 @@ _forEachInstanceProperty(_context17 = _Object$keys(_fieldHelperText)).call(_cont
|
|
195
206
|
});
|
196
207
|
});
|
197
208
|
var _footer = require("./footer");
|
198
|
-
_forEachInstanceProperty(
|
209
|
+
_forEachInstanceProperty(_context19 = _Object$keys(_footer)).call(_context19, function (key) {
|
199
210
|
if (key === "default" || key === "__esModule") return;
|
200
211
|
if (key in exports && exports[key] === _footer[key]) return;
|
201
212
|
_Object$defineProperty(exports, key, {
|
@@ -206,7 +217,7 @@ _forEachInstanceProperty(_context18 = _Object$keys(_footer)).call(_context18, fu
|
|
206
217
|
});
|
207
218
|
});
|
208
219
|
var _grid = require("./grid");
|
209
|
-
_forEachInstanceProperty(
|
220
|
+
_forEachInstanceProperty(_context20 = _Object$keys(_grid)).call(_context20, function (key) {
|
210
221
|
if (key === "default" || key === "__esModule") return;
|
211
222
|
if (key in exports && exports[key] === _grid[key]) return;
|
212
223
|
_Object$defineProperty(exports, key, {
|
@@ -217,7 +228,7 @@ _forEachInstanceProperty(_context19 = _Object$keys(_grid)).call(_context19, func
|
|
217
228
|
});
|
218
229
|
});
|
219
230
|
var _helpHint = require("./helpHint");
|
220
|
-
_forEachInstanceProperty(
|
231
|
+
_forEachInstanceProperty(_context21 = _Object$keys(_helpHint)).call(_context21, function (key) {
|
221
232
|
if (key === "default" || key === "__esModule") return;
|
222
233
|
if (key in exports && exports[key] === _helpHint[key]) return;
|
223
234
|
_Object$defineProperty(exports, key, {
|
@@ -228,7 +239,7 @@ _forEachInstanceProperty(_context20 = _Object$keys(_helpHint)).call(_context20,
|
|
228
239
|
});
|
229
240
|
});
|
230
241
|
var _icon = require("./icon");
|
231
|
-
_forEachInstanceProperty(
|
242
|
+
_forEachInstanceProperty(_context22 = _Object$keys(_icon)).call(_context22, function (key) {
|
232
243
|
if (key === "default" || key === "__esModule") return;
|
233
244
|
if (key in exports && exports[key] === _icon[key]) return;
|
234
245
|
_Object$defineProperty(exports, key, {
|
@@ -239,7 +250,7 @@ _forEachInstanceProperty(_context21 = _Object$keys(_icon)).call(_context21, func
|
|
239
250
|
});
|
240
251
|
});
|
241
252
|
var _iconBadge = require("./iconBadge");
|
242
|
-
_forEachInstanceProperty(
|
253
|
+
_forEachInstanceProperty(_context23 = _Object$keys(_iconBadge)).call(_context23, function (key) {
|
243
254
|
if (key === "default" || key === "__esModule") return;
|
244
255
|
if (key in exports && exports[key] === _iconBadge[key]) return;
|
245
256
|
_Object$defineProperty(exports, key, {
|
@@ -250,7 +261,7 @@ _forEachInstanceProperty(_context22 = _Object$keys(_iconBadge)).call(_context22,
|
|
250
261
|
});
|
251
262
|
});
|
252
263
|
var _iconButton = require("./iconButton");
|
253
|
-
_forEachInstanceProperty(
|
264
|
+
_forEachInstanceProperty(_context24 = _Object$keys(_iconButton)).call(_context24, function (key) {
|
254
265
|
if (key === "default" || key === "__esModule") return;
|
255
266
|
if (key in exports && exports[key] === _iconButton[key]) return;
|
256
267
|
_Object$defineProperty(exports, key, {
|
@@ -261,7 +272,7 @@ _forEachInstanceProperty(_context23 = _Object$keys(_iconButton)).call(_context23
|
|
261
272
|
});
|
262
273
|
});
|
263
274
|
var _iconButtonToggle = require("./iconButtonToggle");
|
264
|
-
_forEachInstanceProperty(
|
275
|
+
_forEachInstanceProperty(_context25 = _Object$keys(_iconButtonToggle)).call(_context25, function (key) {
|
265
276
|
if (key === "default" || key === "__esModule") return;
|
266
277
|
if (key in exports && exports[key] === _iconButtonToggle[key]) return;
|
267
278
|
_Object$defineProperty(exports, key, {
|
@@ -272,7 +283,7 @@ _forEachInstanceProperty(_context24 = _Object$keys(_iconButtonToggle)).call(_con
|
|
272
283
|
});
|
273
284
|
});
|
274
285
|
var _iconWrapper = require("./iconWrapper");
|
275
|
-
_forEachInstanceProperty(
|
286
|
+
_forEachInstanceProperty(_context26 = _Object$keys(_iconWrapper)).call(_context26, function (key) {
|
276
287
|
if (key === "default" || key === "__esModule") return;
|
277
288
|
if (key in exports && exports[key] === _iconWrapper[key]) return;
|
278
289
|
_Object$defineProperty(exports, key, {
|
@@ -283,7 +294,7 @@ _forEachInstanceProperty(_context25 = _Object$keys(_iconWrapper)).call(_context2
|
|
283
294
|
});
|
284
295
|
});
|
285
296
|
var _input = require("./input");
|
286
|
-
_forEachInstanceProperty(
|
297
|
+
_forEachInstanceProperty(_context27 = _Object$keys(_input)).call(_context27, function (key) {
|
287
298
|
if (key === "default" || key === "__esModule") return;
|
288
299
|
if (key in exports && exports[key] === _input[key]) return;
|
289
300
|
_Object$defineProperty(exports, key, {
|
@@ -294,7 +305,7 @@ _forEachInstanceProperty(_context26 = _Object$keys(_input)).call(_context26, fun
|
|
294
305
|
});
|
295
306
|
});
|
296
307
|
var _item = require("./item");
|
297
|
-
_forEachInstanceProperty(
|
308
|
+
_forEachInstanceProperty(_context28 = _Object$keys(_item)).call(_context28, function (key) {
|
298
309
|
if (key === "default" || key === "__esModule") return;
|
299
310
|
if (key in exports && exports[key] === _item[key]) return;
|
300
311
|
_Object$defineProperty(exports, key, {
|
@@ -305,7 +316,7 @@ _forEachInstanceProperty(_context27 = _Object$keys(_item)).call(_context27, func
|
|
305
316
|
});
|
306
317
|
});
|
307
318
|
var _label = require("./label");
|
308
|
-
_forEachInstanceProperty(
|
319
|
+
_forEachInstanceProperty(_context29 = _Object$keys(_label)).call(_context29, function (key) {
|
309
320
|
if (key === "default" || key === "__esModule") return;
|
310
321
|
if (key in exports && exports[key] === _label[key]) return;
|
311
322
|
_Object$defineProperty(exports, key, {
|
@@ -316,7 +327,7 @@ _forEachInstanceProperty(_context28 = _Object$keys(_label)).call(_context28, fun
|
|
316
327
|
});
|
317
328
|
});
|
318
329
|
var _link = require("./link");
|
319
|
-
_forEachInstanceProperty(
|
330
|
+
_forEachInstanceProperty(_context30 = _Object$keys(_link)).call(_context30, function (key) {
|
320
331
|
if (key === "default" || key === "__esModule") return;
|
321
332
|
if (key in exports && exports[key] === _link[key]) return;
|
322
333
|
_Object$defineProperty(exports, key, {
|
@@ -327,7 +338,7 @@ _forEachInstanceProperty(_context29 = _Object$keys(_link)).call(_context29, func
|
|
327
338
|
});
|
328
339
|
});
|
329
340
|
var _listBox = require("./listBox");
|
330
|
-
_forEachInstanceProperty(
|
341
|
+
_forEachInstanceProperty(_context31 = _Object$keys(_listBox)).call(_context31, function (key) {
|
331
342
|
if (key === "default" || key === "__esModule") return;
|
332
343
|
if (key in exports && exports[key] === _listBox[key]) return;
|
333
344
|
_Object$defineProperty(exports, key, {
|
@@ -338,7 +349,7 @@ _forEachInstanceProperty(_context30 = _Object$keys(_listBox)).call(_context30, f
|
|
338
349
|
});
|
339
350
|
});
|
340
351
|
var _listItem = require("./listItem");
|
341
|
-
_forEachInstanceProperty(
|
352
|
+
_forEachInstanceProperty(_context32 = _Object$keys(_listItem)).call(_context32, function (key) {
|
342
353
|
if (key === "default" || key === "__esModule") return;
|
343
354
|
if (key in exports && exports[key] === _listItem[key]) return;
|
344
355
|
_Object$defineProperty(exports, key, {
|
@@ -349,7 +360,7 @@ _forEachInstanceProperty(_context31 = _Object$keys(_listItem)).call(_context31,
|
|
349
360
|
});
|
350
361
|
});
|
351
362
|
var _loader = require("./loader");
|
352
|
-
_forEachInstanceProperty(
|
363
|
+
_forEachInstanceProperty(_context33 = _Object$keys(_loader)).call(_context33, function (key) {
|
353
364
|
if (key === "default" || key === "__esModule") return;
|
354
365
|
if (key in exports && exports[key] === _loader[key]) return;
|
355
366
|
_Object$defineProperty(exports, key, {
|
@@ -360,7 +371,7 @@ _forEachInstanceProperty(_context32 = _Object$keys(_loader)).call(_context32, fu
|
|
360
371
|
});
|
361
372
|
});
|
362
373
|
var _menu = require("./menu");
|
363
|
-
_forEachInstanceProperty(
|
374
|
+
_forEachInstanceProperty(_context34 = _Object$keys(_menu)).call(_context34, function (key) {
|
364
375
|
if (key === "default" || key === "__esModule") return;
|
365
376
|
if (key in exports && exports[key] === _menu[key]) return;
|
366
377
|
_Object$defineProperty(exports, key, {
|
@@ -371,7 +382,7 @@ _forEachInstanceProperty(_context33 = _Object$keys(_menu)).call(_context33, func
|
|
371
382
|
});
|
372
383
|
});
|
373
384
|
var _menuItem = require("./menuItem");
|
374
|
-
_forEachInstanceProperty(
|
385
|
+
_forEachInstanceProperty(_context35 = _Object$keys(_menuItem)).call(_context35, function (key) {
|
375
386
|
if (key === "default" || key === "__esModule") return;
|
376
387
|
if (key in exports && exports[key] === _menuItem[key]) return;
|
377
388
|
_Object$defineProperty(exports, key, {
|
@@ -382,7 +393,7 @@ _forEachInstanceProperty(_context34 = _Object$keys(_menuItem)).call(_context34,
|
|
382
393
|
});
|
383
394
|
});
|
384
395
|
var _menuSection = require("./menuSection");
|
385
|
-
_forEachInstanceProperty(
|
396
|
+
_forEachInstanceProperty(_context36 = _Object$keys(_menuSection)).call(_context36, function (key) {
|
386
397
|
if (key === "default" || key === "__esModule") return;
|
387
398
|
if (key in exports && exports[key] === _menuSection[key]) return;
|
388
399
|
_Object$defineProperty(exports, key, {
|
@@ -393,7 +404,7 @@ _forEachInstanceProperty(_context35 = _Object$keys(_menuSection)).call(_context3
|
|
393
404
|
});
|
394
405
|
});
|
395
406
|
var _messages = require("./messages");
|
396
|
-
_forEachInstanceProperty(
|
407
|
+
_forEachInstanceProperty(_context37 = _Object$keys(_messages)).call(_context37, function (key) {
|
397
408
|
if (key === "default" || key === "__esModule") return;
|
398
409
|
if (key in exports && exports[key] === _messages[key]) return;
|
399
410
|
_Object$defineProperty(exports, key, {
|
@@ -404,7 +415,7 @@ _forEachInstanceProperty(_context36 = _Object$keys(_messages)).call(_context36,
|
|
404
415
|
});
|
405
416
|
});
|
406
417
|
var _Modal = require("./Modal");
|
407
|
-
_forEachInstanceProperty(
|
418
|
+
_forEachInstanceProperty(_context38 = _Object$keys(_Modal)).call(_context38, function (key) {
|
408
419
|
if (key === "default" || key === "__esModule") return;
|
409
420
|
if (key in exports && exports[key] === _Modal[key]) return;
|
410
421
|
_Object$defineProperty(exports, key, {
|
@@ -415,7 +426,7 @@ _forEachInstanceProperty(_context37 = _Object$keys(_Modal)).call(_context37, fun
|
|
415
426
|
});
|
416
427
|
});
|
417
428
|
var _navBar = require("./navBar");
|
418
|
-
_forEachInstanceProperty(
|
429
|
+
_forEachInstanceProperty(_context39 = _Object$keys(_navBar)).call(_context39, function (key) {
|
419
430
|
if (key === "default" || key === "__esModule") return;
|
420
431
|
if (key in exports && exports[key] === _navBar[key]) return;
|
421
432
|
_Object$defineProperty(exports, key, {
|
@@ -426,7 +437,7 @@ _forEachInstanceProperty(_context38 = _Object$keys(_navBar)).call(_context38, fu
|
|
426
437
|
});
|
427
438
|
});
|
428
439
|
var _navSideBar = require("./navSideBar");
|
429
|
-
_forEachInstanceProperty(
|
440
|
+
_forEachInstanceProperty(_context40 = _Object$keys(_navSideBar)).call(_context40, function (key) {
|
430
441
|
if (key === "default" || key === "__esModule") return;
|
431
442
|
if (key in exports && exports[key] === _navSideBar[key]) return;
|
432
443
|
_Object$defineProperty(exports, key, {
|
@@ -437,7 +448,7 @@ _forEachInstanceProperty(_context39 = _Object$keys(_navSideBar)).call(_context39
|
|
437
448
|
});
|
438
449
|
});
|
439
450
|
var _overlayPanel = require("./overlayPanel");
|
440
|
-
_forEachInstanceProperty(
|
451
|
+
_forEachInstanceProperty(_context41 = _Object$keys(_overlayPanel)).call(_context41, function (key) {
|
441
452
|
if (key === "default" || key === "__esModule") return;
|
442
453
|
if (key in exports && exports[key] === _overlayPanel[key]) return;
|
443
454
|
_Object$defineProperty(exports, key, {
|
@@ -448,7 +459,7 @@ _forEachInstanceProperty(_context40 = _Object$keys(_overlayPanel)).call(_context
|
|
448
459
|
});
|
449
460
|
});
|
450
461
|
var _passwordField = require("./passwordField");
|
451
|
-
_forEachInstanceProperty(
|
462
|
+
_forEachInstanceProperty(_context42 = _Object$keys(_passwordField)).call(_context42, function (key) {
|
452
463
|
if (key === "default" || key === "__esModule") return;
|
453
464
|
if (key in exports && exports[key] === _passwordField[key]) return;
|
454
465
|
_Object$defineProperty(exports, key, {
|
@@ -459,7 +470,7 @@ _forEachInstanceProperty(_context41 = _Object$keys(_passwordField)).call(_contex
|
|
459
470
|
});
|
460
471
|
});
|
461
472
|
var _popoverContainer = require("./popoverContainer");
|
462
|
-
_forEachInstanceProperty(
|
473
|
+
_forEachInstanceProperty(_context43 = _Object$keys(_popoverContainer)).call(_context43, function (key) {
|
463
474
|
if (key === "default" || key === "__esModule") return;
|
464
475
|
if (key in exports && exports[key] === _popoverContainer[key]) return;
|
465
476
|
_Object$defineProperty(exports, key, {
|
@@ -470,7 +481,7 @@ _forEachInstanceProperty(_context42 = _Object$keys(_popoverContainer)).call(_con
|
|
470
481
|
});
|
471
482
|
});
|
472
483
|
var _popoverMenu = require("./popoverMenu");
|
473
|
-
_forEachInstanceProperty(
|
484
|
+
_forEachInstanceProperty(_context44 = _Object$keys(_popoverMenu)).call(_context44, function (key) {
|
474
485
|
if (key === "default" || key === "__esModule") return;
|
475
486
|
if (key in exports && exports[key] === _popoverMenu[key]) return;
|
476
487
|
_Object$defineProperty(exports, key, {
|
@@ -481,7 +492,7 @@ _forEachInstanceProperty(_context43 = _Object$keys(_popoverMenu)).call(_context4
|
|
481
492
|
});
|
482
493
|
});
|
483
494
|
var _progressBar = require("./progressBar");
|
484
|
-
_forEachInstanceProperty(
|
495
|
+
_forEachInstanceProperty(_context45 = _Object$keys(_progressBar)).call(_context45, function (key) {
|
485
496
|
if (key === "default" || key === "__esModule") return;
|
486
497
|
if (key in exports && exports[key] === _progressBar[key]) return;
|
487
498
|
_Object$defineProperty(exports, key, {
|
@@ -492,7 +503,7 @@ _forEachInstanceProperty(_context44 = _Object$keys(_progressBar)).call(_context4
|
|
492
503
|
});
|
493
504
|
});
|
494
505
|
var _requirementsList = require("./requirementsList");
|
495
|
-
_forEachInstanceProperty(
|
506
|
+
_forEachInstanceProperty(_context46 = _Object$keys(_requirementsList)).call(_context46, function (key) {
|
496
507
|
if (key === "default" || key === "__esModule") return;
|
497
508
|
if (key in exports && exports[key] === _requirementsList[key]) return;
|
498
509
|
_Object$defineProperty(exports, key, {
|
@@ -503,7 +514,7 @@ _forEachInstanceProperty(_context45 = _Object$keys(_requirementsList)).call(_con
|
|
503
514
|
});
|
504
515
|
});
|
505
516
|
var _rockerButtonGroup = require("./rockerButtonGroup");
|
506
|
-
_forEachInstanceProperty(
|
517
|
+
_forEachInstanceProperty(_context47 = _Object$keys(_rockerButtonGroup)).call(_context47, function (key) {
|
507
518
|
if (key === "default" || key === "__esModule") return;
|
508
519
|
if (key in exports && exports[key] === _rockerButtonGroup[key]) return;
|
509
520
|
_Object$defineProperty(exports, key, {
|
@@ -514,7 +525,7 @@ _forEachInstanceProperty(_context46 = _Object$keys(_rockerButtonGroup)).call(_co
|
|
514
525
|
});
|
515
526
|
});
|
516
527
|
var _scrollBox = require("./scrollBox");
|
517
|
-
_forEachInstanceProperty(
|
528
|
+
_forEachInstanceProperty(_context48 = _Object$keys(_scrollBox)).call(_context48, function (key) {
|
518
529
|
if (key === "default" || key === "__esModule") return;
|
519
530
|
if (key in exports && exports[key] === _scrollBox[key]) return;
|
520
531
|
_Object$defineProperty(exports, key, {
|
@@ -525,7 +536,7 @@ _forEachInstanceProperty(_context47 = _Object$keys(_scrollBox)).call(_context47,
|
|
525
536
|
});
|
526
537
|
});
|
527
538
|
var _searchField = require("./searchField");
|
528
|
-
_forEachInstanceProperty(
|
539
|
+
_forEachInstanceProperty(_context49 = _Object$keys(_searchField)).call(_context49, function (key) {
|
529
540
|
if (key === "default" || key === "__esModule") return;
|
530
541
|
if (key in exports && exports[key] === _searchField[key]) return;
|
531
542
|
_Object$defineProperty(exports, key, {
|
@@ -536,7 +547,7 @@ _forEachInstanceProperty(_context48 = _Object$keys(_searchField)).call(_context4
|
|
536
547
|
});
|
537
548
|
});
|
538
549
|
var _separator = require("./separator");
|
539
|
-
_forEachInstanceProperty(
|
550
|
+
_forEachInstanceProperty(_context50 = _Object$keys(_separator)).call(_context50, function (key) {
|
540
551
|
if (key === "default" || key === "__esModule") return;
|
541
552
|
if (key in exports && exports[key] === _separator[key]) return;
|
542
553
|
_Object$defineProperty(exports, key, {
|
@@ -547,7 +558,7 @@ _forEachInstanceProperty(_context49 = _Object$keys(_separator)).call(_context49,
|
|
547
558
|
});
|
548
559
|
});
|
549
560
|
var _shared = require("./shared");
|
550
|
-
_forEachInstanceProperty(
|
561
|
+
_forEachInstanceProperty(_context51 = _Object$keys(_shared)).call(_context51, function (key) {
|
551
562
|
if (key === "default" || key === "__esModule") return;
|
552
563
|
if (key in exports && exports[key] === _shared[key]) return;
|
553
564
|
_Object$defineProperty(exports, key, {
|
@@ -558,7 +569,7 @@ _forEachInstanceProperty(_context50 = _Object$keys(_shared)).call(_context50, fu
|
|
558
569
|
});
|
559
570
|
});
|
560
571
|
var _skeleton = require("./skeleton");
|
561
|
-
_forEachInstanceProperty(
|
572
|
+
_forEachInstanceProperty(_context52 = _Object$keys(_skeleton)).call(_context52, function (key) {
|
562
573
|
if (key === "default" || key === "__esModule") return;
|
563
574
|
if (key in exports && exports[key] === _skeleton[key]) return;
|
564
575
|
_Object$defineProperty(exports, key, {
|
@@ -569,7 +580,7 @@ _forEachInstanceProperty(_context51 = _Object$keys(_skeleton)).call(_context51,
|
|
569
580
|
});
|
570
581
|
});
|
571
582
|
var _switchField = require("./switchField");
|
572
|
-
_forEachInstanceProperty(
|
583
|
+
_forEachInstanceProperty(_context53 = _Object$keys(_switchField)).call(_context53, function (key) {
|
573
584
|
if (key === "default" || key === "__esModule") return;
|
574
585
|
if (key in exports && exports[key] === _switchField[key]) return;
|
575
586
|
_Object$defineProperty(exports, key, {
|
@@ -580,7 +591,7 @@ _forEachInstanceProperty(_context52 = _Object$keys(_switchField)).call(_context5
|
|
580
591
|
});
|
581
592
|
});
|
582
593
|
var _tab = require("./tab");
|
583
|
-
_forEachInstanceProperty(
|
594
|
+
_forEachInstanceProperty(_context54 = _Object$keys(_tab)).call(_context54, function (key) {
|
584
595
|
if (key === "default" || key === "__esModule") return;
|
585
596
|
if (key in exports && exports[key] === _tab[key]) return;
|
586
597
|
_Object$defineProperty(exports, key, {
|
@@ -591,7 +602,7 @@ _forEachInstanceProperty(_context53 = _Object$keys(_tab)).call(_context53, funct
|
|
591
602
|
});
|
592
603
|
});
|
593
604
|
var _table = require("./table");
|
594
|
-
_forEachInstanceProperty(
|
605
|
+
_forEachInstanceProperty(_context55 = _Object$keys(_table)).call(_context55, function (key) {
|
595
606
|
if (key === "default" || key === "__esModule") return;
|
596
607
|
if (key in exports && exports[key] === _table[key]) return;
|
597
608
|
_Object$defineProperty(exports, key, {
|
@@ -602,7 +613,7 @@ _forEachInstanceProperty(_context54 = _Object$keys(_table)).call(_context54, fun
|
|
602
613
|
});
|
603
614
|
});
|
604
615
|
var _tabs = require("./tabs");
|
605
|
-
_forEachInstanceProperty(
|
616
|
+
_forEachInstanceProperty(_context56 = _Object$keys(_tabs)).call(_context56, function (key) {
|
606
617
|
if (key === "default" || key === "__esModule") return;
|
607
618
|
if (key in exports && exports[key] === _tabs[key]) return;
|
608
619
|
_Object$defineProperty(exports, key, {
|
@@ -613,7 +624,7 @@ _forEachInstanceProperty(_context55 = _Object$keys(_tabs)).call(_context55, func
|
|
613
624
|
});
|
614
625
|
});
|
615
626
|
var _text = require("./text");
|
616
|
-
_forEachInstanceProperty(
|
627
|
+
_forEachInstanceProperty(_context57 = _Object$keys(_text)).call(_context57, function (key) {
|
617
628
|
if (key === "default" || key === "__esModule") return;
|
618
629
|
if (key in exports && exports[key] === _text[key]) return;
|
619
630
|
_Object$defineProperty(exports, key, {
|
@@ -624,7 +635,7 @@ _forEachInstanceProperty(_context56 = _Object$keys(_text)).call(_context56, func
|
|
624
635
|
});
|
625
636
|
});
|
626
637
|
var _textField = require("./textField");
|
627
|
-
_forEachInstanceProperty(
|
638
|
+
_forEachInstanceProperty(_context58 = _Object$keys(_textField)).call(_context58, function (key) {
|
628
639
|
if (key === "default" || key === "__esModule") return;
|
629
640
|
if (key in exports && exports[key] === _textField[key]) return;
|
630
641
|
_Object$defineProperty(exports, key, {
|
@@ -635,7 +646,7 @@ _forEachInstanceProperty(_context57 = _Object$keys(_textField)).call(_context57,
|
|
635
646
|
});
|
636
647
|
});
|
637
648
|
var _timefield = require("./timefield");
|
638
|
-
_forEachInstanceProperty(
|
649
|
+
_forEachInstanceProperty(_context59 = _Object$keys(_timefield)).call(_context59, function (key) {
|
639
650
|
if (key === "default" || key === "__esModule") return;
|
640
651
|
if (key in exports && exports[key] === _timefield[key]) return;
|
641
652
|
_Object$defineProperty(exports, key, {
|
@@ -646,7 +657,7 @@ _forEachInstanceProperty(_context58 = _Object$keys(_timefield)).call(_context58,
|
|
646
657
|
});
|
647
658
|
});
|
648
659
|
var _tooltipTrigger = require("./tooltipTrigger");
|
649
|
-
_forEachInstanceProperty(
|
660
|
+
_forEachInstanceProperty(_context60 = _Object$keys(_tooltipTrigger)).call(_context60, function (key) {
|
650
661
|
if (key === "default" || key === "__esModule") return;
|
651
662
|
if (key in exports && exports[key] === _tooltipTrigger[key]) return;
|
652
663
|
_Object$defineProperty(exports, key, {
|
@@ -0,0 +1,41 @@
|
|
1
|
+
import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
|
2
|
+
import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
|
3
|
+
var _excluded = ["value", "language", "onChange", "onValidate", "height"];
|
4
|
+
import React, { forwardRef, useRef } from 'react';
|
5
|
+
import Editor from '@monaco-editor/react';
|
6
|
+
import { Box } from '../../index';
|
7
|
+
import { jsx as ___EmotionJSX } from "@emotion/react";
|
8
|
+
var CodeEditor = /*#__PURE__*/forwardRef(function (props, ref) {
|
9
|
+
var value = props.value,
|
10
|
+
language = props.language,
|
11
|
+
onChange = props.onChange,
|
12
|
+
onValidate = props.onValidate,
|
13
|
+
height = props.height,
|
14
|
+
others = _objectWithoutProperties(props, _excluded);
|
15
|
+
var editorRef = useRef(null);
|
16
|
+
return ___EmotionJSX(Box, _extends({}, others, {
|
17
|
+
ref: ref
|
18
|
+
}), ___EmotionJSX(Box, {
|
19
|
+
variant: "codeEditor.wrapper",
|
20
|
+
ref: editorRef,
|
21
|
+
height: height
|
22
|
+
}, ___EmotionJSX(Editor, {
|
23
|
+
height: "100%",
|
24
|
+
language: language,
|
25
|
+
value: value,
|
26
|
+
theme: "vs-light",
|
27
|
+
onChange: onChange,
|
28
|
+
onValidate: onValidate,
|
29
|
+
options: {
|
30
|
+
fontSize: 14,
|
31
|
+
automaticLayout: true,
|
32
|
+
minimap: {
|
33
|
+
enabled: true
|
34
|
+
},
|
35
|
+
stickyScroll: {
|
36
|
+
enabled: false
|
37
|
+
}
|
38
|
+
}
|
39
|
+
})));
|
40
|
+
});
|
41
|
+
export default CodeEditor;
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import { Meta } from '@storybook/addon-docs';
|
2
|
+
|
3
|
+
<Meta title="Components/CodeEditor/CodeEditor" />
|
4
|
+
|
5
|
+
# CodeEditor
|
6
|
+
|
7
|
+
The Code Editor component is a tool for editing and displaying code snippets in an application.
|
8
|
+
It provides syntax highlighting, shows line numbers, and validates errors in the code.
|
9
|
+
In addition, it supports standard IDE keyboard interactions like tab-to-indent.
|
10
|
+
|
11
|
+
The CodeEditor component should be used for complex use cases that require an interactive environment, support for various programming languages, functionalities like linting, keyboard interactions, and real-time updates.
|
12
|
+
When code snippets need to be presented in a read-only format, use [CodeView](./?path=/docs/components-codeview--docs).
|
13
|
+
|
14
|
+
Languages
|
15
|
+
supported languages are categorized into two groups: those with rich IntelliSense and validation capabilities, and those that provide only basic syntax highlighting. Check the list at [monaco-editor](https://github.com/suren-atoyan/monaco-react#:~:text=It%27s%20important%20to%20mention%20that%20according%20to%20monaco%2Deditor%2C%20the%20whole%20supported%20languages%20are%20divided%20into%20two%20groups%3A)
|
16
|
+
|
17
|
+
### Required Components
|
18
|
+
|
19
|
+
This component can be used independently and does not require additional components.
|
20
|
+
|
21
|
+
### Accessibility
|
22
|
+
|
23
|
+
#### Keyboard Navigation
|
24
|
+
|
25
|
+
These keys provide additional functionality to the component.
|
26
|
+
|
27
|
+
| Keys | Functions |
|
28
|
+
| ---- | --------- |
|
29
|
+
| Enter | Inserts a new line of code |
|
30
|
+
| Arrow keys | Move the cursor within the code in the set direction |
|
31
|
+
|
32
|
+
#### Screen Readers
|
33
|
+
|
34
|
+
The **`aria-live`** attribute is used to announce content changes in a live region.
|
35
|
+
|
@@ -0,0 +1,54 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import DocsLayout from '../../../.storybook/storybookDocsLayout';
|
3
|
+
import { CodeEditor } from '../../index';
|
4
|
+
import CodeEditorReadme from './CodeEditor.mdx';
|
5
|
+
import { jsx as ___EmotionJSX } from "@emotion/react";
|
6
|
+
export default {
|
7
|
+
title: 'Experimental/CodeEditor',
|
8
|
+
component: CodeEditor,
|
9
|
+
parameters: {
|
10
|
+
docs: {
|
11
|
+
page: function page() {
|
12
|
+
return ___EmotionJSX(React.Fragment, null, ___EmotionJSX(CodeEditorReadme, null), ___EmotionJSX(DocsLayout, null));
|
13
|
+
},
|
14
|
+
source: {
|
15
|
+
type: 'code'
|
16
|
+
}
|
17
|
+
},
|
18
|
+
a11y: {
|
19
|
+
config: {
|
20
|
+
rules: [{
|
21
|
+
id: 'color-contrast',
|
22
|
+
enabled: false
|
23
|
+
}, {
|
24
|
+
id: 'aria-roledescription',
|
25
|
+
enabled: false
|
26
|
+
}]
|
27
|
+
}
|
28
|
+
}
|
29
|
+
}
|
30
|
+
};
|
31
|
+
var jsonCode = "{\n \"name\": \"Luke Skywalker\", \n \"height\": \"172\", \n \"mass\": \"77\", \n \"hair_color\": \"blond\", \n \"skin_color\": \"fair\", \n \"eye_color\": \"blue\", \n \"birth_year\": \"19BBY\", \n \"gender\": \"male\", \n \"homeworld\": \"https://swapi.dev/api/planets/1/\", \n \"films\": [\n \"https://swapi.dev/api/films/1/\", \n \"https://swapi.dev/api/films/2/\", \n \"https://swapi.dev/api/films/3/\", \n \"https://swapi.dev/api/films/6/\"\n ],\n \"starships\": [\n \"https://swapi.dev/api/starships/12/\", \n \"https://swapi.dev/api/starships/22/\"\n ]\n}";
|
32
|
+
var tsCode = "const stringValue: string = 15;\n\nfunction addOne(integer: number) {\n return integer + 1;\n}\n\naddOne('I am a string');\n";
|
33
|
+
var jsCode = "\nfunction factorial(n) {\n if (n === 0 || n === 1) {\n return 1;\n } else {\n return n * factorial(n - 1);\n }\n}\n\nconsole.log(factorial(5));\n\n(a) => {};\n";
|
34
|
+
export var TypescriptEditor = function TypescriptEditor() {
|
35
|
+
return ___EmotionJSX(CodeEditor, {
|
36
|
+
value: tsCode,
|
37
|
+
language: "typescript",
|
38
|
+
height: "200px"
|
39
|
+
});
|
40
|
+
};
|
41
|
+
export var JavascriptEditor = function JavascriptEditor() {
|
42
|
+
return ___EmotionJSX(CodeEditor, {
|
43
|
+
value: jsCode,
|
44
|
+
language: "javascript",
|
45
|
+
height: "200px"
|
46
|
+
});
|
47
|
+
};
|
48
|
+
export var JsonEditor = function JsonEditor() {
|
49
|
+
return ___EmotionJSX(CodeEditor, {
|
50
|
+
value: jsonCode,
|
51
|
+
language: "json",
|
52
|
+
height: "200px"
|
53
|
+
});
|
54
|
+
};
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
|
2
|
+
import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
|
3
|
+
import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
|
4
|
+
import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
|
5
|
+
import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
|
6
|
+
import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
|
7
|
+
import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
|
8
|
+
import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
|
9
|
+
import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
|
10
|
+
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
11
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
12
|
+
import { input } from '../Input/Input.styles';
|
13
|
+
var wrapper = _objectSpread(_objectSpread({}, input.fieldControlWrapper), {}, {
|
14
|
+
borderColor: 'neutral.80',
|
15
|
+
borderRadius: '3px 4px 4px 3px',
|
16
|
+
borderStyle: 'solid',
|
17
|
+
borderWidth: '1px 1px 1px 0px',
|
18
|
+
width: '100%'
|
19
|
+
});
|
20
|
+
export default {
|
21
|
+
wrapper: wrapper
|
22
|
+
};
|
@@ -0,0 +1,79 @@
|
|
1
|
+
import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
|
2
|
+
import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
|
3
|
+
import _JSON$stringify from "@babel/runtime-corejs3/core-js-stable/json/stringify";
|
4
|
+
import React from 'react';
|
5
|
+
import { CodeEditor } from '../../index';
|
6
|
+
import { act, fireEvent, render, screen } from '../../utils/testUtils/testWrapper';
|
7
|
+
import { universalComponentTests } from '../../utils/testUtils/universalComponentTest';
|
8
|
+
import { jsx as ___EmotionJSX } from "@emotion/react";
|
9
|
+
var testId = 'test-code-sample';
|
10
|
+
var defaultProps = {
|
11
|
+
'data-testid': testId
|
12
|
+
};
|
13
|
+
var jsCode = "\n function helloWorld() {\n console.log(\"Hello, World!\");\n }\n";
|
14
|
+
|
15
|
+
// Needs to be added to each components test file
|
16
|
+
universalComponentTests({
|
17
|
+
rules: {
|
18
|
+
'color-contrast': {
|
19
|
+
enabled: false
|
20
|
+
}
|
21
|
+
},
|
22
|
+
renderComponent: function renderComponent(props) {
|
23
|
+
return ___EmotionJSX(CodeEditor, _extends({}, defaultProps, props, {
|
24
|
+
value: jsCode,
|
25
|
+
language: "javascript"
|
26
|
+
}));
|
27
|
+
}
|
28
|
+
});
|
29
|
+
jest.mock('@monaco-editor/react', function () {
|
30
|
+
return {
|
31
|
+
__esModule: true,
|
32
|
+
"default": function _default(_ref) {
|
33
|
+
var _context;
|
34
|
+
var language = _ref.language,
|
35
|
+
value = _ref.value,
|
36
|
+
_onChange = _ref.onChange;
|
37
|
+
return ___EmotionJSX("textarea", {
|
38
|
+
"data-testid": "mock-monaco-editor",
|
39
|
+
onChange: function onChange(e) {
|
40
|
+
return _onChange(e.target.value);
|
41
|
+
},
|
42
|
+
value: _concatInstanceProperty(_context = "Editor Language: ".concat(language, ", Code:")).call(_context, value),
|
43
|
+
"aria-label": "Code editor"
|
44
|
+
});
|
45
|
+
}
|
46
|
+
};
|
47
|
+
});
|
48
|
+
describe('CodeEditor', function () {
|
49
|
+
it('renders with initial value', function () {
|
50
|
+
var value = 'console.log("Hello, World!");';
|
51
|
+
render(___EmotionJSX(CodeEditor, {
|
52
|
+
language: "javascript",
|
53
|
+
value: value
|
54
|
+
}));
|
55
|
+
expect(screen.getByTestId('mock-monaco-editor')).toBeInTheDocument();
|
56
|
+
expect(screen.getByText('Editor Language: javascript, Code:console.log("Hello, World!");')).toBeInTheDocument();
|
57
|
+
});
|
58
|
+
it('calls onChange when code changes', function () {
|
59
|
+
var value = 'console.log("Hello, World!");';
|
60
|
+
var mockOnChange = jest.fn();
|
61
|
+
render(___EmotionJSX(CodeEditor, {
|
62
|
+
language: "javascript",
|
63
|
+
value: value,
|
64
|
+
onChange: mockOnChange
|
65
|
+
}));
|
66
|
+
var editor = screen.getByTestId('mock-monaco-editor');
|
67
|
+
var newValue = _JSON$stringify([{
|
68
|
+
key: false
|
69
|
+
}]);
|
70
|
+
act(function () {
|
71
|
+
fireEvent.change(editor, {
|
72
|
+
target: {
|
73
|
+
value: newValue
|
74
|
+
}
|
75
|
+
});
|
76
|
+
});
|
77
|
+
expect(mockOnChange).toHaveBeenCalled();
|
78
|
+
});
|
79
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
export { default } from './CodeEditor';
|
@@ -5,7 +5,10 @@ import { Meta } from '@storybook/addon-docs';
|
|
5
5
|
# CodeView
|
6
6
|
|
7
7
|
This component is used for code syntax highlighting and is built on [prism-react-renderer](https://github.com/FormidableLabs/prism-react-renderer).
|
8
|
-
It should contain the language title and be formatted with indentations, line breaks, and comments, and should not contain complex code snippets.
|
8
|
+
It should contain the language title and be formatted with indentations, line breaks, and comments, and should not contain complex code snippets.
|
9
|
+
|
10
|
+
The CodeView component should be used for code snippets that need to be presented in a read-only format.
|
11
|
+
For more complex use cases that require an interactive environment, support for various programming languages, functionalities like linting, keyboard interactions, and real-time updates, use [CodeEditor](./?path=/docs/experimental-codeeditor--docs).
|
9
12
|
|
10
13
|
### Required Components
|
11
14
|
|
package/lib/index.js
CHANGED
@@ -63,6 +63,7 @@ export { default as Checkbox } from './components/Checkbox';
|
|
63
63
|
export * from './components/Checkbox';
|
64
64
|
export { default as CheckboxField } from './components/CheckboxField';
|
65
65
|
export * from './components/CheckboxField';
|
66
|
+
export { default as CodeEditor } from './components/CodeEditor';
|
66
67
|
export { default as CodeView } from './components/CodeView';
|
67
68
|
export { default as CollapsiblePanel } from './components/CollapsiblePanel';
|
68
69
|
export * from './components/CollapsiblePanel';
|
@@ -17,6 +17,7 @@ import breadcrumb from '../../components/Breadcrumbs/Breadcrumb.styles';
|
|
17
17
|
import buttonBar from '../../components/ButtonBar/ButtonBar.styles';
|
18
18
|
import calendar from '../../components/Calendar/Calendar.styles';
|
19
19
|
import callout from '../../components/Callout/Callout.styles';
|
20
|
+
import codeEditor from '../../components/CodeEditor/CodeEditor.styles';
|
20
21
|
import codeView from '../../components/CodeView/CodeView.styles';
|
21
22
|
import collapsiblePanel from '../../components/CollapsiblePanel/CollapsiblePanel.styles';
|
22
23
|
import copyText from '../../components/CopyText/CopyText.styles';
|
@@ -66,6 +67,7 @@ export default _objectSpread({
|
|
66
67
|
calendar: calendar,
|
67
68
|
rangeCalendar: rangeCalendar,
|
68
69
|
callout: callout,
|
70
|
+
codeEditor: codeEditor,
|
69
71
|
codeView: codeView,
|
70
72
|
collapsiblePanel: collapsiblePanel,
|
71
73
|
copyText: copyText,
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
package/lib/types/index.js
CHANGED
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@pingux/astro",
|
3
|
-
"version": "2.
|
3
|
+
"version": "2.122.0-alpha.0",
|
4
4
|
"description": "React component library for Ping Identity's design system",
|
5
5
|
"repository": {
|
6
6
|
"type": "git",
|
@@ -49,6 +49,7 @@
|
|
49
49
|
"@internationalized/date": "^3.5.3",
|
50
50
|
"@internationalized/number": "^3.6.0",
|
51
51
|
"@mdx-js/react": "^1.6.22",
|
52
|
+
"@monaco-editor/react": "4.4.0",
|
52
53
|
"@pingux/mdi-react": "^1.2.0",
|
53
54
|
"@react-aria/accordion": "~3.0.0-alpha.11",
|
54
55
|
"@react-aria/breadcrumbs": "^3.1.4",
|
@@ -116,6 +117,7 @@
|
|
116
117
|
"lodash": "^4.17.21",
|
117
118
|
"markdown-to-jsx": "^7.7.4",
|
118
119
|
"moment": "^2.29.4",
|
120
|
+
"monaco-editor": "0.34.1",
|
119
121
|
"pluralize": "^8.0.0",
|
120
122
|
"prism-react-renderer": "1.2.1",
|
121
123
|
"prismjs": "^1.27.0",
|