@atlaskit/jql-editor 5.6.4 → 5.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/CHANGELOG.md +16 -0
- package/dist/cjs/analytics/util.js +1 -1
- package/dist/cjs/plugins/autocomplete/view.js +4 -0
- package/dist/cjs/plugins/rich-inline-nodes/nodes/index.js +3 -1
- package/dist/cjs/plugins/rich-inline-nodes/nodes/team/index.js +41 -0
- package/dist/cjs/plugins/rich-inline-nodes/nodes/team/styled.js +99 -0
- package/dist/cjs/plugins/rich-inline-nodes/nodes/user/styled.js +7 -0
- package/dist/cjs/plugins/rich-inline-nodes/util/replace-nodes-transaction.js +9 -1
- package/dist/cjs/state/index.js +40 -31
- package/dist/es2019/analytics/util.js +1 -1
- package/dist/es2019/plugins/autocomplete/view.js +4 -0
- package/dist/es2019/plugins/rich-inline-nodes/nodes/index.js +3 -1
- package/dist/es2019/plugins/rich-inline-nodes/nodes/team/index.js +32 -0
- package/dist/es2019/plugins/rich-inline-nodes/nodes/team/styled.js +91 -0
- package/dist/es2019/plugins/rich-inline-nodes/nodes/user/styled.js +7 -0
- package/dist/es2019/plugins/rich-inline-nodes/util/replace-nodes-transaction.js +10 -1
- package/dist/es2019/state/index.js +12 -2
- package/dist/esm/analytics/util.js +1 -1
- package/dist/esm/plugins/autocomplete/view.js +4 -0
- package/dist/esm/plugins/rich-inline-nodes/nodes/index.js +3 -1
- package/dist/esm/plugins/rich-inline-nodes/nodes/team/index.js +34 -0
- package/dist/esm/plugins/rich-inline-nodes/nodes/team/styled.js +90 -0
- package/dist/esm/plugins/rich-inline-nodes/nodes/user/styled.js +7 -0
- package/dist/esm/plugins/rich-inline-nodes/util/replace-nodes-transaction.js +9 -1
- package/dist/esm/state/index.js +39 -30
- package/dist/types/index.d.ts +1 -1
- package/dist/types/plugins/rich-inline-nodes/nodes/index.d.ts +1 -0
- package/dist/types/plugins/rich-inline-nodes/nodes/team/index.d.ts +7 -0
- package/dist/types/plugins/rich-inline-nodes/nodes/team/styled.d.ts +15 -0
- package/dist/types/state/index.d.ts +36 -1
- package/dist/types/types.d.ts +1 -1
- package/dist/types/ui/jql-editor/types.d.ts +7 -1
- package/dist/types/ui/types.d.ts +1 -1
- package/dist/types-ts4.5/index.d.ts +1 -1
- package/dist/types-ts4.5/plugins/rich-inline-nodes/nodes/index.d.ts +1 -0
- package/dist/types-ts4.5/plugins/rich-inline-nodes/nodes/team/index.d.ts +7 -0
- package/dist/types-ts4.5/plugins/rich-inline-nodes/nodes/team/styled.d.ts +15 -0
- package/dist/types-ts4.5/state/index.d.ts +36 -1
- package/dist/types-ts4.5/types.d.ts +1 -1
- package/dist/types-ts4.5/ui/jql-editor/types.d.ts +7 -1
- package/dist/types-ts4.5/ui/types.d.ts +1 -1
- package/package.json +7 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @atlaskit/jql-editor
|
|
2
2
|
|
|
3
|
+
## 5.7.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`8e600a4218a79`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/8e600a4218a79) -
|
|
8
|
+
[ux] Fixed offset of anonymous user icon in jqlEditor and edited user example to showcase the
|
|
9
|
+
anonymous user icon
|
|
10
|
+
|
|
11
|
+
## 5.6.5
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- [`6cf4b64a5d781`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/6cf4b64a5d781) -
|
|
16
|
+
Update team JQl to show rich text node (and hydrate)
|
|
17
|
+
- Updated dependencies
|
|
18
|
+
|
|
3
19
|
## 5.6.4
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
|
@@ -6,5 +6,5 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.useJqlEditorAnalytics = void 0;
|
|
7
7
|
var _jqlEditorCommon = require("@atlaskit/jql-editor-common");
|
|
8
8
|
var useJqlEditorAnalytics = exports.useJqlEditorAnalytics = function useJqlEditorAnalytics(analyticsSource) {
|
|
9
|
-
return (0, _jqlEditorCommon.useJqlPackageAnalytics)(analyticsSource, "@atlaskit/jql-editor", "
|
|
9
|
+
return (0, _jqlEditorCommon.useJqlPackageAnalytics)(analyticsSource, "@atlaskit/jql-editor", "0.0.0-development", _jqlEditorCommon.ANALYTICS_CHANNEL);
|
|
10
10
|
};
|
|
@@ -15,6 +15,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
15
15
|
var _model = require("@atlaskit/editor-prosemirror/model");
|
|
16
16
|
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
17
17
|
var _jqlAst = require("@atlaskit/jql-ast");
|
|
18
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
18
19
|
var _getDocumentPosition = _interopRequireDefault(require("../common/get-document-position"));
|
|
19
20
|
var _reactPluginView = _interopRequireDefault(require("../common/react-plugin-view"));
|
|
20
21
|
var _autocomplete = _interopRequireDefault(require("./components/autocomplete"));
|
|
@@ -61,6 +62,9 @@ var AutocompletePluginView = exports.default = /*#__PURE__*/function (_ReactPlug
|
|
|
61
62
|
if (_this.enableRichInlineNodes && option.type === 'value' && option.valueType === 'user') {
|
|
62
63
|
transaction.setMeta('hydrate', true);
|
|
63
64
|
}
|
|
65
|
+
if (_this.enableRichInlineNodes && option.type === 'value' && option.valueType === 'team' && (0, _platformFeatureFlags.fg)('jira_update_jql_teams')) {
|
|
66
|
+
transaction.setMeta('hydrate', true);
|
|
67
|
+
}
|
|
64
68
|
var documentFrom = (0, _getDocumentPosition.default)(transaction.doc, from);
|
|
65
69
|
var documentTo = (0, _getDocumentPosition.default)(transaction.doc, to);
|
|
66
70
|
|
|
@@ -4,7 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.richInlineNodes = void 0;
|
|
7
|
+
var _team = require("./team");
|
|
7
8
|
var _user = require("./user");
|
|
8
9
|
var richInlineNodes = exports.richInlineNodes = {
|
|
9
|
-
user: _user.user
|
|
10
|
+
user: _user.user,
|
|
11
|
+
team: _team.team
|
|
10
12
|
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.team = void 0;
|
|
8
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
var _avatar = _interopRequireDefault(require("@atlaskit/avatar"));
|
|
11
|
+
var _state = require("../../../../state");
|
|
12
|
+
var _styled = require("./styled");
|
|
13
|
+
var Team = function Team(_ref) {
|
|
14
|
+
var id = _ref.id,
|
|
15
|
+
name = _ref.name,
|
|
16
|
+
fieldName = _ref.fieldName,
|
|
17
|
+
selected = _ref.selected,
|
|
18
|
+
error = _ref.error;
|
|
19
|
+
var _useHydratedTeam = (0, _state.useHydratedTeam)({
|
|
20
|
+
id: id,
|
|
21
|
+
fieldName: fieldName
|
|
22
|
+
}),
|
|
23
|
+
_useHydratedTeam2 = (0, _slicedToArray2.default)(_useHydratedTeam, 1),
|
|
24
|
+
team = _useHydratedTeam2[0];
|
|
25
|
+
return /*#__PURE__*/_react.default.createElement(_styled.TeamContainer, {
|
|
26
|
+
selected: selected,
|
|
27
|
+
error: error
|
|
28
|
+
}, /*#__PURE__*/_react.default.createElement(_styled.AvatarWrapper, null, /*#__PURE__*/_react.default.createElement(_avatar.default, {
|
|
29
|
+
src: team === null || team === void 0 ? void 0 : team.avatarUrl,
|
|
30
|
+
borderColor: "transparent",
|
|
31
|
+
size: "xsmall"
|
|
32
|
+
})), /*#__PURE__*/_react.default.createElement(_styled.NameContainer, null, name));
|
|
33
|
+
};
|
|
34
|
+
var team = exports.team = {
|
|
35
|
+
component: Team,
|
|
36
|
+
attrs: {
|
|
37
|
+
id: {},
|
|
38
|
+
name: {},
|
|
39
|
+
fieldName: {}
|
|
40
|
+
}
|
|
41
|
+
};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.TeamContainer = exports.NameContainer = exports.AvatarWrapper = void 0;
|
|
8
|
+
var _react = require("@emotion/react");
|
|
9
|
+
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
10
|
+
var _colors = require("@atlaskit/theme/colors");
|
|
11
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
12
|
+
|
|
13
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
14
|
+
|
|
15
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-styled, @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766
|
|
16
|
+
var TeamContainer = exports.TeamContainer = _styled.default.span({
|
|
17
|
+
display: 'inline-flex',
|
|
18
|
+
alignItems: 'baseline',
|
|
19
|
+
paddingLeft: "var(--ds-space-025, 2px)",
|
|
20
|
+
borderRadius: "var(--ds-radius-xlarge, 12px)",
|
|
21
|
+
cursor: 'pointer',
|
|
22
|
+
userSelect: 'none'
|
|
23
|
+
},
|
|
24
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-dynamic-styles -- Ignored via go/DSP-18766
|
|
25
|
+
function (_ref) {
|
|
26
|
+
var selected = _ref.selected,
|
|
27
|
+
error = _ref.error;
|
|
28
|
+
if (selected) {
|
|
29
|
+
if (error) {
|
|
30
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
|
|
31
|
+
return (0, _react.css)({
|
|
32
|
+
color: "var(--ds-text-inverse, ".concat(_colors.N0, ")"),
|
|
33
|
+
backgroundColor: "var(--ds-background-danger-bold, ".concat(_colors.R400, ")"),
|
|
34
|
+
textDecoration: 'wavy underline',
|
|
35
|
+
textDecorationThickness: '1px',
|
|
36
|
+
textDecorationSkipInk: 'none',
|
|
37
|
+
textDecorationColor: "var(--ds-text-inverse, ".concat(_colors.N0, ")")
|
|
38
|
+
});
|
|
39
|
+
} else {
|
|
40
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
|
|
41
|
+
return (0, _react.css)({
|
|
42
|
+
color: "var(--ds-text, ".concat(_colors.N0, ")"),
|
|
43
|
+
backgroundColor: "var(--ds-background-selected, ".concat(_colors.N500, ")"),
|
|
44
|
+
boxShadow: "0 0 0 1px ".concat("var(--ds-border-selected, transparent)")
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
} else {
|
|
48
|
+
if (error) {
|
|
49
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
|
|
50
|
+
return (0, _react.css)({
|
|
51
|
+
color: "var(--ds-text-subtle, ".concat(_colors.N500, ")"),
|
|
52
|
+
backgroundColor: "var(--ds-background-neutral, ".concat(_colors.N40, ")"),
|
|
53
|
+
textDecoration: 'wavy underline',
|
|
54
|
+
textDecorationThickness: '1px',
|
|
55
|
+
textDecorationSkipInk: 'none',
|
|
56
|
+
textDecorationColor: "var(--ds-text-danger, ".concat(_colors.R400, ")"),
|
|
57
|
+
'&:hover': {
|
|
58
|
+
backgroundColor: "var(--ds-background-neutral-hovered, ".concat(_colors.N50, ")")
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
} else {
|
|
62
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
|
|
63
|
+
return (0, _react.css)({
|
|
64
|
+
color: "var(--ds-text-subtle, ".concat(_colors.N500, ")"),
|
|
65
|
+
backgroundColor: "var(--ds-background-neutral, ".concat(_colors.N40, ")"),
|
|
66
|
+
'&:hover': {
|
|
67
|
+
backgroundColor: "var(--ds-background-neutral-hovered, ".concat(_colors.N50, ")")
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-styled, @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766
|
|
75
|
+
var NameContainer = exports.NameContainer = _styled.default.span({
|
|
76
|
+
marginLeft: "var(--ds-space-075, 6px)",
|
|
77
|
+
marginRight: "var(--ds-space-100, 8px)",
|
|
78
|
+
// eslint-disable-next-line -- Ignored via go/DSP-18766
|
|
79
|
+
lineHeight: "var(--ds-space-250, 20px)"
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
/* Override Avatar styles to match design spec */
|
|
83
|
+
// eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage, @atlaskit/ui-styling-standard/no-styled, @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766
|
|
84
|
+
var AvatarWrapper = exports.AvatarWrapper = _styled.default.div({
|
|
85
|
+
height: "var(--ds-space-200, 16px)",
|
|
86
|
+
width: "var(--ds-space-200, 16px)",
|
|
87
|
+
alignSelf: 'center',
|
|
88
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
|
|
89
|
+
'> div span': {
|
|
90
|
+
margin: "var(--ds-space-0, 0px)"
|
|
91
|
+
},
|
|
92
|
+
// Fix fallback icon alignment by targeting the outer AvatarContent span
|
|
93
|
+
// This contains the icon background and needs to move as a unit
|
|
94
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-selectors -- Ignored via go/DSP-18766
|
|
95
|
+
'> div > span:has(> span)': {
|
|
96
|
+
position: 'relative',
|
|
97
|
+
top: '-2px'
|
|
98
|
+
}
|
|
99
|
+
});
|
|
@@ -88,5 +88,12 @@ var AvatarWrapper = exports.AvatarWrapper = _styled.default.div({
|
|
|
88
88
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
|
|
89
89
|
'> div span': {
|
|
90
90
|
margin: "var(--ds-space-0, 0px)"
|
|
91
|
+
},
|
|
92
|
+
// Fix fallback icon alignment by targeting the outer AvatarContent span
|
|
93
|
+
// This contains the icon background and needs to move as a unit
|
|
94
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-selectors -- Ignored via go/DSP-18766
|
|
95
|
+
'> div > span:has(> span)': {
|
|
96
|
+
position: 'relative',
|
|
97
|
+
top: '-2px'
|
|
91
98
|
}
|
|
92
99
|
});
|
|
@@ -14,6 +14,7 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits
|
|
|
14
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
15
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
16
16
|
var _jqlAst = require("@atlaskit/jql-ast");
|
|
17
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
17
18
|
var _schema = require("../../../schema");
|
|
18
19
|
var _getDocumentPosition = _interopRequireDefault(require("../../common/get-document-position"));
|
|
19
20
|
var _jqlAst2 = require("../../jql-ast");
|
|
@@ -32,7 +33,7 @@ var replaceRichInlineNodes = exports.replaceRichInlineNodes = function replaceRi
|
|
|
32
33
|
fieldName = _ref2[0],
|
|
33
34
|
values = _ref2[1];
|
|
34
35
|
values.forEach(function (value) {
|
|
35
|
-
if (value.type === 'user') {
|
|
36
|
+
if (value.type === 'user' || value.type === 'team' && (0, _platformFeatureFlags.fg)('jira_update_jql_teams')) {
|
|
36
37
|
var astNodes = getValueNodes(ast, fieldName, value.id);
|
|
37
38
|
astNodes.forEach(function (astNode) {
|
|
38
39
|
if (astNode.position) {
|
|
@@ -61,6 +62,13 @@ var getRichInlineNode = function getRichInlineNode(fieldName, value, text) {
|
|
|
61
62
|
fieldName: fieldName
|
|
62
63
|
}), textContent);
|
|
63
64
|
}
|
|
65
|
+
case 'team':
|
|
66
|
+
{
|
|
67
|
+
var _textContent = _schema.JQLEditorSchema.text(text);
|
|
68
|
+
return _schema.JQLEditorSchema.nodes.team.create(_objectSpread(_objectSpread({}, value), {}, {
|
|
69
|
+
fieldName: fieldName
|
|
70
|
+
}), _textContent);
|
|
71
|
+
}
|
|
64
72
|
default:
|
|
65
73
|
{
|
|
66
74
|
throw new Error("Unsupported hydrated value type ".concat(value.type));
|
package/dist/cjs/state/index.js
CHANGED
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.useStoreActions = exports.useScopedId = exports.useRichInlineNodesEnabled = exports.useOnSyntaxHelp = exports.useLineNumbersVisible = exports.useJqlError = exports.useIsSearching = exports.useIntl = exports.useIdPrefix = exports.useHydratedValue = exports.useHydratedUser = exports.useHydratedDeprecations = exports.useExternalMessages = exports.useEditorViewHasFocus = exports.useEditorView = exports.useEditorStateHasJqlError = exports.useEditorState = exports.useCustomErrorComponent = exports.useAutocompleteProvider = exports.useAutocompletePosition = exports.useAutocompleteOptions = exports.useAutocompleteLoading = exports.useAutocompleteIsOpen = exports.useAutocomplete = exports.initialState = exports.actions = exports.EditorStateContainer = void 0;
|
|
7
|
+
exports.useStoreActions = exports.useScopedId = exports.useRichInlineNodesEnabled = exports.useOnSyntaxHelp = exports.useLineNumbersVisible = exports.useJqlError = exports.useIsSearching = exports.useIntl = exports.useIdPrefix = exports.useHydratedValue = exports.useHydratedUser = exports.useHydratedTeam = exports.useHydratedDeprecations = exports.useExternalMessages = exports.useEditorViewHasFocus = exports.useEditorView = exports.useEditorStateHasJqlError = exports.useEditorState = exports.useCustomErrorComponent = exports.useAutocompleteProvider = exports.useAutocompletePosition = exports.useAutocompleteOptions = exports.useAutocompleteLoading = exports.useAutocompleteIsOpen = exports.useAutocomplete = exports.initialState = exports.actions = exports.EditorStateContainer = void 0;
|
|
8
8
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
9
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
@@ -909,16 +909,25 @@ var useHydratedUser = exports.useHydratedUser = (0, _reactSweetState.createHook)
|
|
|
909
909
|
return user && user.type === 'user' ? user : undefined;
|
|
910
910
|
}
|
|
911
911
|
});
|
|
912
|
+
var useHydratedTeam = exports.useHydratedTeam = (0, _reactSweetState.createHook)(Store, {
|
|
913
|
+
selector: function selector(state, _ref40) {
|
|
914
|
+
var _state$hydratedValues3;
|
|
915
|
+
var id = _ref40.id,
|
|
916
|
+
fieldName = _ref40.fieldName;
|
|
917
|
+
var team = (_state$hydratedValues3 = state.hydratedValues[fieldName]) === null || _state$hydratedValues3 === void 0 ? void 0 : _state$hydratedValues3.get(id);
|
|
918
|
+
return team && team.type === 'team' ? team : undefined;
|
|
919
|
+
}
|
|
920
|
+
});
|
|
912
921
|
var useHydratedDeprecations = exports.useHydratedDeprecations = (0, _reactSweetState.createHook)(Store, {
|
|
913
922
|
selector: function selector(state) {
|
|
914
923
|
var ast = (0, _jqlAst2.getJastFromState)(state.editorState);
|
|
915
924
|
var fieldsInQuery = (0, _util.getFieldNodes)(ast);
|
|
916
925
|
var toReturn = [];
|
|
917
|
-
Object.entries(state.hydratedValues).forEach(function (
|
|
918
|
-
var _state$
|
|
919
|
-
var
|
|
920
|
-
fieldName =
|
|
921
|
-
(_state$
|
|
926
|
+
Object.entries(state.hydratedValues).forEach(function (_ref41) {
|
|
927
|
+
var _state$hydratedValues4;
|
|
928
|
+
var _ref42 = (0, _slicedToArray2.default)(_ref41, 1),
|
|
929
|
+
fieldName = _ref42[0];
|
|
930
|
+
(_state$hydratedValues4 = state.hydratedValues[fieldName]) === null || _state$hydratedValues4 === void 0 || _state$hydratedValues4.forEach(function (value) {
|
|
922
931
|
if (value.type === 'deprecated-field') {
|
|
923
932
|
if (fieldsInQuery.has(value.id.toLowerCase())) {
|
|
924
933
|
toReturn.push(value);
|
|
@@ -941,19 +950,19 @@ var useOnSyntaxHelp = exports.useOnSyntaxHelp = (0, _reactSweetState.createHook)
|
|
|
941
950
|
});
|
|
942
951
|
var EditorStateContainer = exports.EditorStateContainer = (0, _reactSweetState.createContainer)(Store, {
|
|
943
952
|
onInit: function onInit() {
|
|
944
|
-
return function (
|
|
945
|
-
var getState =
|
|
946
|
-
setState =
|
|
947
|
-
dispatch =
|
|
948
|
-
var intlRef =
|
|
949
|
-
query =
|
|
950
|
-
isSearching =
|
|
951
|
-
autocompleteProvider =
|
|
952
|
-
externalMessages =
|
|
953
|
-
enableRichInlineNodes =
|
|
954
|
-
onDebugUnsafeMessage =
|
|
955
|
-
onSyntaxHelp =
|
|
956
|
-
customComponents =
|
|
953
|
+
return function (_ref43, _ref44) {
|
|
954
|
+
var getState = _ref43.getState,
|
|
955
|
+
setState = _ref43.setState,
|
|
956
|
+
dispatch = _ref43.dispatch;
|
|
957
|
+
var intlRef = _ref44.intlRef,
|
|
958
|
+
query = _ref44.query,
|
|
959
|
+
isSearching = _ref44.isSearching,
|
|
960
|
+
autocompleteProvider = _ref44.autocompleteProvider,
|
|
961
|
+
externalMessages = _ref44.externalMessages,
|
|
962
|
+
enableRichInlineNodes = _ref44.enableRichInlineNodes,
|
|
963
|
+
onDebugUnsafeMessage = _ref44.onDebugUnsafeMessage,
|
|
964
|
+
onSyntaxHelp = _ref44.onSyntaxHelp,
|
|
965
|
+
customComponents = _ref44.customComponents;
|
|
957
966
|
setState({
|
|
958
967
|
controlledQuery: query,
|
|
959
968
|
query: query,
|
|
@@ -981,18 +990,18 @@ var EditorStateContainer = exports.EditorStateContainer = (0, _reactSweetState.c
|
|
|
981
990
|
};
|
|
982
991
|
},
|
|
983
992
|
onUpdate: function onUpdate() {
|
|
984
|
-
return function (
|
|
985
|
-
var getState =
|
|
986
|
-
setState =
|
|
987
|
-
dispatch =
|
|
988
|
-
var controlledQueryProp =
|
|
989
|
-
isSearching =
|
|
990
|
-
autocompleteProvider =
|
|
991
|
-
externalMessages =
|
|
992
|
-
enableRichInlineNodes =
|
|
993
|
-
onDebugUnsafeMessage =
|
|
994
|
-
onSyntaxHelp =
|
|
995
|
-
customComponents =
|
|
993
|
+
return function (_ref45, _ref46) {
|
|
994
|
+
var getState = _ref45.getState,
|
|
995
|
+
setState = _ref45.setState,
|
|
996
|
+
dispatch = _ref45.dispatch;
|
|
997
|
+
var controlledQueryProp = _ref46.query,
|
|
998
|
+
isSearching = _ref46.isSearching,
|
|
999
|
+
autocompleteProvider = _ref46.autocompleteProvider,
|
|
1000
|
+
externalMessages = _ref46.externalMessages,
|
|
1001
|
+
enableRichInlineNodes = _ref46.enableRichInlineNodes,
|
|
1002
|
+
onDebugUnsafeMessage = _ref46.onDebugUnsafeMessage,
|
|
1003
|
+
onSyntaxHelp = _ref46.onSyntaxHelp,
|
|
1004
|
+
customComponents = _ref46.customComponents;
|
|
996
1005
|
var _getState12 = getState(),
|
|
997
1006
|
controlledQuery = _getState12.controlledQuery,
|
|
998
1007
|
query = _getState12.query;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ANALYTICS_CHANNEL, useJqlPackageAnalytics } from '@atlaskit/jql-editor-common';
|
|
2
2
|
export const useJqlEditorAnalytics = analyticsSource => {
|
|
3
|
-
return useJqlPackageAnalytics(analyticsSource, "@atlaskit/jql-editor", "
|
|
3
|
+
return useJqlPackageAnalytics(analyticsSource, "@atlaskit/jql-editor", "0.0.0-development", ANALYTICS_CHANNEL);
|
|
4
4
|
};
|
|
@@ -2,6 +2,7 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
|
2
2
|
import { Fragment, Slice } from '@atlaskit/editor-prosemirror/model';
|
|
3
3
|
import { TextSelection } from '@atlaskit/editor-prosemirror/state';
|
|
4
4
|
import { isListOperator } from '@atlaskit/jql-ast';
|
|
5
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
5
6
|
import getDocumentPosition from '../common/get-document-position';
|
|
6
7
|
import ReactPluginView from '../common/react-plugin-view';
|
|
7
8
|
import Autocomplete from './components/autocomplete';
|
|
@@ -44,6 +45,9 @@ export default class AutocompletePluginView extends ReactPluginView {
|
|
|
44
45
|
if (this.enableRichInlineNodes && option.type === 'value' && option.valueType === 'user') {
|
|
45
46
|
transaction.setMeta('hydrate', true);
|
|
46
47
|
}
|
|
48
|
+
if (this.enableRichInlineNodes && option.type === 'value' && option.valueType === 'team' && fg('jira_update_jql_teams')) {
|
|
49
|
+
transaction.setMeta('hydrate', true);
|
|
50
|
+
}
|
|
47
51
|
const documentFrom = getDocumentPosition(transaction.doc, from);
|
|
48
52
|
const documentTo = getDocumentPosition(transaction.doc, to);
|
|
49
53
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Avatar from '@atlaskit/avatar';
|
|
3
|
+
import { useHydratedTeam } from '../../../../state';
|
|
4
|
+
import { AvatarWrapper, NameContainer, TeamContainer } from './styled';
|
|
5
|
+
const Team = ({
|
|
6
|
+
id,
|
|
7
|
+
name,
|
|
8
|
+
fieldName,
|
|
9
|
+
selected,
|
|
10
|
+
error
|
|
11
|
+
}) => {
|
|
12
|
+
const [team] = useHydratedTeam({
|
|
13
|
+
id,
|
|
14
|
+
fieldName
|
|
15
|
+
});
|
|
16
|
+
return /*#__PURE__*/React.createElement(TeamContainer, {
|
|
17
|
+
selected: selected,
|
|
18
|
+
error: error
|
|
19
|
+
}, /*#__PURE__*/React.createElement(AvatarWrapper, null, /*#__PURE__*/React.createElement(Avatar, {
|
|
20
|
+
src: team === null || team === void 0 ? void 0 : team.avatarUrl,
|
|
21
|
+
borderColor: "transparent",
|
|
22
|
+
size: "xsmall"
|
|
23
|
+
})), /*#__PURE__*/React.createElement(NameContainer, null, name));
|
|
24
|
+
};
|
|
25
|
+
export const team = {
|
|
26
|
+
component: Team,
|
|
27
|
+
attrs: {
|
|
28
|
+
id: {},
|
|
29
|
+
name: {},
|
|
30
|
+
fieldName: {}
|
|
31
|
+
}
|
|
32
|
+
};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
2
|
+
import { css } from '@emotion/react';
|
|
3
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
4
|
+
import styled from '@emotion/styled';
|
|
5
|
+
import { N0, N40, N50, N500, R400 } from '@atlaskit/theme/colors';
|
|
6
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-styled, @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766
|
|
7
|
+
export const TeamContainer = styled.span({
|
|
8
|
+
display: 'inline-flex',
|
|
9
|
+
alignItems: 'baseline',
|
|
10
|
+
paddingLeft: `${"var(--ds-space-025, 2px)"}`,
|
|
11
|
+
borderRadius: "var(--ds-radius-xlarge, 12px)",
|
|
12
|
+
cursor: 'pointer',
|
|
13
|
+
userSelect: 'none'
|
|
14
|
+
},
|
|
15
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-dynamic-styles -- Ignored via go/DSP-18766
|
|
16
|
+
({
|
|
17
|
+
selected,
|
|
18
|
+
error
|
|
19
|
+
}) => {
|
|
20
|
+
if (selected) {
|
|
21
|
+
if (error) {
|
|
22
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
|
|
23
|
+
return css({
|
|
24
|
+
color: `var(--ds-text-inverse, ${N0})`,
|
|
25
|
+
backgroundColor: `var(--ds-background-danger-bold, ${R400})`,
|
|
26
|
+
textDecoration: 'wavy underline',
|
|
27
|
+
textDecorationThickness: '1px',
|
|
28
|
+
textDecorationSkipInk: 'none',
|
|
29
|
+
textDecorationColor: `var(--ds-text-inverse, ${N0})`
|
|
30
|
+
});
|
|
31
|
+
} else {
|
|
32
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
|
|
33
|
+
return css({
|
|
34
|
+
color: `var(--ds-text, ${N0})`,
|
|
35
|
+
backgroundColor: `var(--ds-background-selected, ${N500})`,
|
|
36
|
+
boxShadow: `0 0 0 1px ${"var(--ds-border-selected, transparent)"}`
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
} else {
|
|
40
|
+
if (error) {
|
|
41
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
|
|
42
|
+
return css({
|
|
43
|
+
color: `var(--ds-text-subtle, ${N500})`,
|
|
44
|
+
backgroundColor: `var(--ds-background-neutral, ${N40})`,
|
|
45
|
+
textDecoration: 'wavy underline',
|
|
46
|
+
textDecorationThickness: '1px',
|
|
47
|
+
textDecorationSkipInk: 'none',
|
|
48
|
+
textDecorationColor: `var(--ds-text-danger, ${R400})`,
|
|
49
|
+
'&:hover': {
|
|
50
|
+
backgroundColor: `var(--ds-background-neutral-hovered, ${N50})`
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
} else {
|
|
54
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
|
|
55
|
+
return css({
|
|
56
|
+
color: `var(--ds-text-subtle, ${N500})`,
|
|
57
|
+
backgroundColor: `var(--ds-background-neutral, ${N40})`,
|
|
58
|
+
'&:hover': {
|
|
59
|
+
backgroundColor: `var(--ds-background-neutral-hovered, ${N50})`
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-styled, @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766
|
|
67
|
+
export const NameContainer = styled.span({
|
|
68
|
+
marginLeft: "var(--ds-space-075, 6px)",
|
|
69
|
+
marginRight: "var(--ds-space-100, 8px)",
|
|
70
|
+
// eslint-disable-next-line -- Ignored via go/DSP-18766
|
|
71
|
+
lineHeight: "var(--ds-space-250, 20px)"
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
/* Override Avatar styles to match design spec */
|
|
75
|
+
// eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage, @atlaskit/ui-styling-standard/no-styled, @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766
|
|
76
|
+
export const AvatarWrapper = styled.div({
|
|
77
|
+
height: "var(--ds-space-200, 16px)",
|
|
78
|
+
width: "var(--ds-space-200, 16px)",
|
|
79
|
+
alignSelf: 'center',
|
|
80
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
|
|
81
|
+
'> div span': {
|
|
82
|
+
margin: "var(--ds-space-0, 0px)"
|
|
83
|
+
},
|
|
84
|
+
// Fix fallback icon alignment by targeting the outer AvatarContent span
|
|
85
|
+
// This contains the icon background and needs to move as a unit
|
|
86
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-selectors -- Ignored via go/DSP-18766
|
|
87
|
+
'> div > span:has(> span)': {
|
|
88
|
+
position: 'relative',
|
|
89
|
+
top: '-2px'
|
|
90
|
+
}
|
|
91
|
+
});
|
|
@@ -80,5 +80,12 @@ export const AvatarWrapper = styled.div({
|
|
|
80
80
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
|
|
81
81
|
'> div span': {
|
|
82
82
|
margin: "var(--ds-space-0, 0px)"
|
|
83
|
+
},
|
|
84
|
+
// Fix fallback icon alignment by targeting the outer AvatarContent span
|
|
85
|
+
// This contains the icon background and needs to move as a unit
|
|
86
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-selectors -- Ignored via go/DSP-18766
|
|
87
|
+
'> div > span:has(> span)': {
|
|
88
|
+
position: 'relative',
|
|
89
|
+
top: '-2px'
|
|
83
90
|
}
|
|
84
91
|
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
2
|
import { AbstractJastVisitor } from '@atlaskit/jql-ast';
|
|
3
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
3
4
|
import { JQLEditorSchema } from '../../../schema';
|
|
4
5
|
import getDocumentPosition from '../../common/get-document-position';
|
|
5
6
|
import { getJastFromState } from '../../jql-ast';
|
|
@@ -11,7 +12,7 @@ export const replaceRichInlineNodes = (editorState, hydratedValues) => {
|
|
|
11
12
|
transaction.setMeta('addToHistory', false);
|
|
12
13
|
Object.entries(hydratedValues).forEach(([fieldName, values]) => {
|
|
13
14
|
values.forEach(value => {
|
|
14
|
-
if (value.type === 'user') {
|
|
15
|
+
if (value.type === 'user' || value.type === 'team' && fg('jira_update_jql_teams')) {
|
|
15
16
|
const astNodes = getValueNodes(ast, fieldName, value.id);
|
|
16
17
|
astNodes.forEach(astNode => {
|
|
17
18
|
if (astNode.position) {
|
|
@@ -39,6 +40,14 @@ const getRichInlineNode = (fieldName, value, text) => {
|
|
|
39
40
|
fieldName
|
|
40
41
|
}, textContent);
|
|
41
42
|
}
|
|
43
|
+
case 'team':
|
|
44
|
+
{
|
|
45
|
+
const textContent = JQLEditorSchema.text(text);
|
|
46
|
+
return JQLEditorSchema.nodes.team.create({
|
|
47
|
+
...value,
|
|
48
|
+
fieldName
|
|
49
|
+
}, textContent);
|
|
50
|
+
}
|
|
42
51
|
default:
|
|
43
52
|
{
|
|
44
53
|
throw new Error(`Unsupported hydrated value type ${value.type}`);
|
|
@@ -882,14 +882,24 @@ export const useHydratedUser = createHook(Store, {
|
|
|
882
882
|
return user && user.type === 'user' ? user : undefined;
|
|
883
883
|
}
|
|
884
884
|
});
|
|
885
|
+
export const useHydratedTeam = createHook(Store, {
|
|
886
|
+
selector: (state, {
|
|
887
|
+
id,
|
|
888
|
+
fieldName
|
|
889
|
+
}) => {
|
|
890
|
+
var _state$hydratedValues3;
|
|
891
|
+
const team = (_state$hydratedValues3 = state.hydratedValues[fieldName]) === null || _state$hydratedValues3 === void 0 ? void 0 : _state$hydratedValues3.get(id);
|
|
892
|
+
return team && team.type === 'team' ? team : undefined;
|
|
893
|
+
}
|
|
894
|
+
});
|
|
885
895
|
export const useHydratedDeprecations = createHook(Store, {
|
|
886
896
|
selector: state => {
|
|
887
897
|
const ast = getJastFromState(state.editorState);
|
|
888
898
|
const fieldsInQuery = getFieldNodes(ast);
|
|
889
899
|
const toReturn = [];
|
|
890
900
|
Object.entries(state.hydratedValues).forEach(([fieldName]) => {
|
|
891
|
-
var _state$
|
|
892
|
-
(_state$
|
|
901
|
+
var _state$hydratedValues4;
|
|
902
|
+
(_state$hydratedValues4 = state.hydratedValues[fieldName]) === null || _state$hydratedValues4 === void 0 ? void 0 : _state$hydratedValues4.forEach(value => {
|
|
893
903
|
if (value.type === 'deprecated-field') {
|
|
894
904
|
if (fieldsInQuery.has(value.id.toLowerCase())) {
|
|
895
905
|
toReturn.push(value);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ANALYTICS_CHANNEL, useJqlPackageAnalytics } from '@atlaskit/jql-editor-common';
|
|
2
2
|
export var useJqlEditorAnalytics = function useJqlEditorAnalytics(analyticsSource) {
|
|
3
|
-
return useJqlPackageAnalytics(analyticsSource, "@atlaskit/jql-editor", "
|
|
3
|
+
return useJqlPackageAnalytics(analyticsSource, "@atlaskit/jql-editor", "0.0.0-development", ANALYTICS_CHANNEL);
|
|
4
4
|
};
|
|
@@ -10,6 +10,7 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
|
|
|
10
10
|
import { Fragment, Slice } from '@atlaskit/editor-prosemirror/model';
|
|
11
11
|
import { TextSelection } from '@atlaskit/editor-prosemirror/state';
|
|
12
12
|
import { isListOperator } from '@atlaskit/jql-ast';
|
|
13
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
13
14
|
import getDocumentPosition from '../common/get-document-position';
|
|
14
15
|
import ReactPluginView from '../common/react-plugin-view';
|
|
15
16
|
import Autocomplete from './components/autocomplete';
|
|
@@ -55,6 +56,9 @@ var AutocompletePluginView = /*#__PURE__*/function (_ReactPluginView) {
|
|
|
55
56
|
if (_this.enableRichInlineNodes && option.type === 'value' && option.valueType === 'user') {
|
|
56
57
|
transaction.setMeta('hydrate', true);
|
|
57
58
|
}
|
|
59
|
+
if (_this.enableRichInlineNodes && option.type === 'value' && option.valueType === 'team' && fg('jira_update_jql_teams')) {
|
|
60
|
+
transaction.setMeta('hydrate', true);
|
|
61
|
+
}
|
|
58
62
|
var documentFrom = getDocumentPosition(transaction.doc, from);
|
|
59
63
|
var documentTo = getDocumentPosition(transaction.doc, to);
|
|
60
64
|
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import Avatar from '@atlaskit/avatar';
|
|
4
|
+
import { useHydratedTeam } from '../../../../state';
|
|
5
|
+
import { AvatarWrapper, NameContainer, TeamContainer } from './styled';
|
|
6
|
+
var Team = function Team(_ref) {
|
|
7
|
+
var id = _ref.id,
|
|
8
|
+
name = _ref.name,
|
|
9
|
+
fieldName = _ref.fieldName,
|
|
10
|
+
selected = _ref.selected,
|
|
11
|
+
error = _ref.error;
|
|
12
|
+
var _useHydratedTeam = useHydratedTeam({
|
|
13
|
+
id: id,
|
|
14
|
+
fieldName: fieldName
|
|
15
|
+
}),
|
|
16
|
+
_useHydratedTeam2 = _slicedToArray(_useHydratedTeam, 1),
|
|
17
|
+
team = _useHydratedTeam2[0];
|
|
18
|
+
return /*#__PURE__*/React.createElement(TeamContainer, {
|
|
19
|
+
selected: selected,
|
|
20
|
+
error: error
|
|
21
|
+
}, /*#__PURE__*/React.createElement(AvatarWrapper, null, /*#__PURE__*/React.createElement(Avatar, {
|
|
22
|
+
src: team === null || team === void 0 ? void 0 : team.avatarUrl,
|
|
23
|
+
borderColor: "transparent",
|
|
24
|
+
size: "xsmall"
|
|
25
|
+
})), /*#__PURE__*/React.createElement(NameContainer, null, name));
|
|
26
|
+
};
|
|
27
|
+
export var team = {
|
|
28
|
+
component: Team,
|
|
29
|
+
attrs: {
|
|
30
|
+
id: {},
|
|
31
|
+
name: {},
|
|
32
|
+
fieldName: {}
|
|
33
|
+
}
|
|
34
|
+
};
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
2
|
+
import { css } from '@emotion/react';
|
|
3
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
4
|
+
import styled from '@emotion/styled';
|
|
5
|
+
import { N0, N40, N50, N500, R400 } from '@atlaskit/theme/colors';
|
|
6
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-styled, @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766
|
|
7
|
+
export var TeamContainer = styled.span({
|
|
8
|
+
display: 'inline-flex',
|
|
9
|
+
alignItems: 'baseline',
|
|
10
|
+
paddingLeft: "var(--ds-space-025, 2px)",
|
|
11
|
+
borderRadius: "var(--ds-radius-xlarge, 12px)",
|
|
12
|
+
cursor: 'pointer',
|
|
13
|
+
userSelect: 'none'
|
|
14
|
+
},
|
|
15
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-dynamic-styles -- Ignored via go/DSP-18766
|
|
16
|
+
function (_ref) {
|
|
17
|
+
var selected = _ref.selected,
|
|
18
|
+
error = _ref.error;
|
|
19
|
+
if (selected) {
|
|
20
|
+
if (error) {
|
|
21
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
|
|
22
|
+
return css({
|
|
23
|
+
color: "var(--ds-text-inverse, ".concat(N0, ")"),
|
|
24
|
+
backgroundColor: "var(--ds-background-danger-bold, ".concat(R400, ")"),
|
|
25
|
+
textDecoration: 'wavy underline',
|
|
26
|
+
textDecorationThickness: '1px',
|
|
27
|
+
textDecorationSkipInk: 'none',
|
|
28
|
+
textDecorationColor: "var(--ds-text-inverse, ".concat(N0, ")")
|
|
29
|
+
});
|
|
30
|
+
} else {
|
|
31
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
|
|
32
|
+
return css({
|
|
33
|
+
color: "var(--ds-text, ".concat(N0, ")"),
|
|
34
|
+
backgroundColor: "var(--ds-background-selected, ".concat(N500, ")"),
|
|
35
|
+
boxShadow: "0 0 0 1px ".concat("var(--ds-border-selected, transparent)")
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
} else {
|
|
39
|
+
if (error) {
|
|
40
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
|
|
41
|
+
return css({
|
|
42
|
+
color: "var(--ds-text-subtle, ".concat(N500, ")"),
|
|
43
|
+
backgroundColor: "var(--ds-background-neutral, ".concat(N40, ")"),
|
|
44
|
+
textDecoration: 'wavy underline',
|
|
45
|
+
textDecorationThickness: '1px',
|
|
46
|
+
textDecorationSkipInk: 'none',
|
|
47
|
+
textDecorationColor: "var(--ds-text-danger, ".concat(R400, ")"),
|
|
48
|
+
'&:hover': {
|
|
49
|
+
backgroundColor: "var(--ds-background-neutral-hovered, ".concat(N50, ")")
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
} else {
|
|
53
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
|
|
54
|
+
return css({
|
|
55
|
+
color: "var(--ds-text-subtle, ".concat(N500, ")"),
|
|
56
|
+
backgroundColor: "var(--ds-background-neutral, ".concat(N40, ")"),
|
|
57
|
+
'&:hover': {
|
|
58
|
+
backgroundColor: "var(--ds-background-neutral-hovered, ".concat(N50, ")")
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-styled, @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766
|
|
66
|
+
export var NameContainer = styled.span({
|
|
67
|
+
marginLeft: "var(--ds-space-075, 6px)",
|
|
68
|
+
marginRight: "var(--ds-space-100, 8px)",
|
|
69
|
+
// eslint-disable-next-line -- Ignored via go/DSP-18766
|
|
70
|
+
lineHeight: "var(--ds-space-250, 20px)"
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
/* Override Avatar styles to match design spec */
|
|
74
|
+
// eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage, @atlaskit/ui-styling-standard/no-styled, @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766
|
|
75
|
+
export var AvatarWrapper = styled.div({
|
|
76
|
+
height: "var(--ds-space-200, 16px)",
|
|
77
|
+
width: "var(--ds-space-200, 16px)",
|
|
78
|
+
alignSelf: 'center',
|
|
79
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
|
|
80
|
+
'> div span': {
|
|
81
|
+
margin: "var(--ds-space-0, 0px)"
|
|
82
|
+
},
|
|
83
|
+
// Fix fallback icon alignment by targeting the outer AvatarContent span
|
|
84
|
+
// This contains the icon background and needs to move as a unit
|
|
85
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-selectors -- Ignored via go/DSP-18766
|
|
86
|
+
'> div > span:has(> span)': {
|
|
87
|
+
position: 'relative',
|
|
88
|
+
top: '-2px'
|
|
89
|
+
}
|
|
90
|
+
});
|
|
@@ -79,5 +79,12 @@ export var AvatarWrapper = styled.div({
|
|
|
79
79
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
|
|
80
80
|
'> div span': {
|
|
81
81
|
margin: "var(--ds-space-0, 0px)"
|
|
82
|
+
},
|
|
83
|
+
// Fix fallback icon alignment by targeting the outer AvatarContent span
|
|
84
|
+
// This contains the icon background and needs to move as a unit
|
|
85
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-selectors -- Ignored via go/DSP-18766
|
|
86
|
+
'> div > span:has(> span)': {
|
|
87
|
+
position: 'relative',
|
|
88
|
+
top: '-2px'
|
|
82
89
|
}
|
|
83
90
|
});
|
|
@@ -11,6 +11,7 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
|
|
|
11
11
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
12
12
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
13
13
|
import { AbstractJastVisitor } from '@atlaskit/jql-ast';
|
|
14
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
14
15
|
import { JQLEditorSchema } from '../../../schema';
|
|
15
16
|
import getDocumentPosition from '../../common/get-document-position';
|
|
16
17
|
import { getJastFromState } from '../../jql-ast';
|
|
@@ -25,7 +26,7 @@ export var replaceRichInlineNodes = function replaceRichInlineNodes(editorState,
|
|
|
25
26
|
fieldName = _ref2[0],
|
|
26
27
|
values = _ref2[1];
|
|
27
28
|
values.forEach(function (value) {
|
|
28
|
-
if (value.type === 'user') {
|
|
29
|
+
if (value.type === 'user' || value.type === 'team' && fg('jira_update_jql_teams')) {
|
|
29
30
|
var astNodes = getValueNodes(ast, fieldName, value.id);
|
|
30
31
|
astNodes.forEach(function (astNode) {
|
|
31
32
|
if (astNode.position) {
|
|
@@ -54,6 +55,13 @@ var getRichInlineNode = function getRichInlineNode(fieldName, value, text) {
|
|
|
54
55
|
fieldName: fieldName
|
|
55
56
|
}), textContent);
|
|
56
57
|
}
|
|
58
|
+
case 'team':
|
|
59
|
+
{
|
|
60
|
+
var _textContent = JQLEditorSchema.text(text);
|
|
61
|
+
return JQLEditorSchema.nodes.team.create(_objectSpread(_objectSpread({}, value), {}, {
|
|
62
|
+
fieldName: fieldName
|
|
63
|
+
}), _textContent);
|
|
64
|
+
}
|
|
57
65
|
default:
|
|
58
66
|
{
|
|
59
67
|
throw new Error("Unsupported hydrated value type ".concat(value.type));
|
package/dist/esm/state/index.js
CHANGED
|
@@ -902,16 +902,25 @@ export var useHydratedUser = createHook(Store, {
|
|
|
902
902
|
return user && user.type === 'user' ? user : undefined;
|
|
903
903
|
}
|
|
904
904
|
});
|
|
905
|
+
export var useHydratedTeam = createHook(Store, {
|
|
906
|
+
selector: function selector(state, _ref40) {
|
|
907
|
+
var _state$hydratedValues3;
|
|
908
|
+
var id = _ref40.id,
|
|
909
|
+
fieldName = _ref40.fieldName;
|
|
910
|
+
var team = (_state$hydratedValues3 = state.hydratedValues[fieldName]) === null || _state$hydratedValues3 === void 0 ? void 0 : _state$hydratedValues3.get(id);
|
|
911
|
+
return team && team.type === 'team' ? team : undefined;
|
|
912
|
+
}
|
|
913
|
+
});
|
|
905
914
|
export var useHydratedDeprecations = createHook(Store, {
|
|
906
915
|
selector: function selector(state) {
|
|
907
916
|
var ast = getJastFromState(state.editorState);
|
|
908
917
|
var fieldsInQuery = getFieldNodes(ast);
|
|
909
918
|
var toReturn = [];
|
|
910
|
-
Object.entries(state.hydratedValues).forEach(function (
|
|
911
|
-
var _state$
|
|
912
|
-
var
|
|
913
|
-
fieldName =
|
|
914
|
-
(_state$
|
|
919
|
+
Object.entries(state.hydratedValues).forEach(function (_ref41) {
|
|
920
|
+
var _state$hydratedValues4;
|
|
921
|
+
var _ref42 = _slicedToArray(_ref41, 1),
|
|
922
|
+
fieldName = _ref42[0];
|
|
923
|
+
(_state$hydratedValues4 = state.hydratedValues[fieldName]) === null || _state$hydratedValues4 === void 0 || _state$hydratedValues4.forEach(function (value) {
|
|
915
924
|
if (value.type === 'deprecated-field') {
|
|
916
925
|
if (fieldsInQuery.has(value.id.toLowerCase())) {
|
|
917
926
|
toReturn.push(value);
|
|
@@ -934,19 +943,19 @@ export var useOnSyntaxHelp = createHook(Store, {
|
|
|
934
943
|
});
|
|
935
944
|
export var EditorStateContainer = createContainer(Store, {
|
|
936
945
|
onInit: function onInit() {
|
|
937
|
-
return function (
|
|
938
|
-
var getState =
|
|
939
|
-
setState =
|
|
940
|
-
dispatch =
|
|
941
|
-
var intlRef =
|
|
942
|
-
query =
|
|
943
|
-
isSearching =
|
|
944
|
-
autocompleteProvider =
|
|
945
|
-
externalMessages =
|
|
946
|
-
enableRichInlineNodes =
|
|
947
|
-
onDebugUnsafeMessage =
|
|
948
|
-
onSyntaxHelp =
|
|
949
|
-
customComponents =
|
|
946
|
+
return function (_ref43, _ref44) {
|
|
947
|
+
var getState = _ref43.getState,
|
|
948
|
+
setState = _ref43.setState,
|
|
949
|
+
dispatch = _ref43.dispatch;
|
|
950
|
+
var intlRef = _ref44.intlRef,
|
|
951
|
+
query = _ref44.query,
|
|
952
|
+
isSearching = _ref44.isSearching,
|
|
953
|
+
autocompleteProvider = _ref44.autocompleteProvider,
|
|
954
|
+
externalMessages = _ref44.externalMessages,
|
|
955
|
+
enableRichInlineNodes = _ref44.enableRichInlineNodes,
|
|
956
|
+
onDebugUnsafeMessage = _ref44.onDebugUnsafeMessage,
|
|
957
|
+
onSyntaxHelp = _ref44.onSyntaxHelp,
|
|
958
|
+
customComponents = _ref44.customComponents;
|
|
950
959
|
setState({
|
|
951
960
|
controlledQuery: query,
|
|
952
961
|
query: query,
|
|
@@ -974,18 +983,18 @@ export var EditorStateContainer = createContainer(Store, {
|
|
|
974
983
|
};
|
|
975
984
|
},
|
|
976
985
|
onUpdate: function onUpdate() {
|
|
977
|
-
return function (
|
|
978
|
-
var getState =
|
|
979
|
-
setState =
|
|
980
|
-
dispatch =
|
|
981
|
-
var controlledQueryProp =
|
|
982
|
-
isSearching =
|
|
983
|
-
autocompleteProvider =
|
|
984
|
-
externalMessages =
|
|
985
|
-
enableRichInlineNodes =
|
|
986
|
-
onDebugUnsafeMessage =
|
|
987
|
-
onSyntaxHelp =
|
|
988
|
-
customComponents =
|
|
986
|
+
return function (_ref45, _ref46) {
|
|
987
|
+
var getState = _ref45.getState,
|
|
988
|
+
setState = _ref45.setState,
|
|
989
|
+
dispatch = _ref45.dispatch;
|
|
990
|
+
var controlledQueryProp = _ref46.query,
|
|
991
|
+
isSearching = _ref46.isSearching,
|
|
992
|
+
autocompleteProvider = _ref46.autocompleteProvider,
|
|
993
|
+
externalMessages = _ref46.externalMessages,
|
|
994
|
+
enableRichInlineNodes = _ref46.enableRichInlineNodes,
|
|
995
|
+
onDebugUnsafeMessage = _ref46.onDebugUnsafeMessage,
|
|
996
|
+
onSyntaxHelp = _ref46.onSyntaxHelp,
|
|
997
|
+
customComponents = _ref46.customComponents;
|
|
989
998
|
var _getState12 = getState(),
|
|
990
999
|
controlledQuery = _getState12.controlledQuery,
|
|
991
1000
|
query = _getState12.query;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -2,4 +2,4 @@ export { default as JQLEditor } from './ui';
|
|
|
2
2
|
export { JQLEditorAsync, preloadJQLEditor } from './async';
|
|
3
3
|
export { JQLEditorReadOnly } from './ui/jql-editor-layout';
|
|
4
4
|
export { JQLEditorAnalyticsListener, ANALYTICS_CHANNEL, useJqlPackageAnalytics, EventType, } from './analytics';
|
|
5
|
-
export type { ListenerProps, JqlAnalyticsEvent, JQLEditorUIProps, JQLEditorProps, HydratedValue, HydratedValues, HydratedUser, AutocompleteOption, AutocompleteValueType, AutocompleteOptions, AutocompleteProvider, JQLClause, ExternalMessage, ExternalError, ExternalWarning, ExternalInfo, CustomComponents, } from './types';
|
|
5
|
+
export type { ListenerProps, JqlAnalyticsEvent, JQLEditorUIProps, JQLEditorProps, HydratedValue, HydratedValues, HydratedUser, HydratedTeam, AutocompleteOption, AutocompleteValueType, AutocompleteOptions, AutocompleteProvider, JQLClause, ExternalMessage, ExternalError, ExternalWarning, ExternalInfo, CustomComponents, } from './types';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const TeamContainer: import("@emotion/styled").StyledComponent<{
|
|
2
|
+
theme?: import("@emotion/react").Theme;
|
|
3
|
+
as?: React.ElementType;
|
|
4
|
+
} & {
|
|
5
|
+
error: boolean;
|
|
6
|
+
selected: boolean;
|
|
7
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
8
|
+
export declare const NameContainer: import("@emotion/styled").StyledComponent<{
|
|
9
|
+
theme?: import("@emotion/react").Theme;
|
|
10
|
+
as?: React.ElementType;
|
|
11
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
12
|
+
export declare const AvatarWrapper: import("@emotion/styled").StyledComponent<{
|
|
13
|
+
theme?: import("@emotion/react").Theme;
|
|
14
|
+
as?: React.ElementType;
|
|
15
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
@@ -10,7 +10,7 @@ import { type JqlEditorAnalyticsEvent } from '../analytics';
|
|
|
10
10
|
import { type AutocompleteOptionGroup, type AutocompleteOptions, type AutocompleteOptionType, type SelectableAutocompleteOption } from '../plugins/autocomplete/components/types';
|
|
11
11
|
import { type AutocompleteProvider } from '../plugins/types';
|
|
12
12
|
import { type PortalActions } from '../ui/jql-editor-portal-provider/types';
|
|
13
|
-
import { type HydratedDeprecatedField, type HydratedUser, type HydratedValue } from '../ui/jql-editor/types';
|
|
13
|
+
import { type HydratedDeprecatedField, type HydratedTeam, type HydratedUser, type HydratedValue } from '../ui/jql-editor/types';
|
|
14
14
|
import { type AutocompletePosition, type AutocompleteState, type ContextAwareJQLSuggestions, type CustomErrorComponent, type ExternalMessagesNormalized, type OptionsKey, type Props, type State } from './types';
|
|
15
15
|
export declare const initialState: State;
|
|
16
16
|
export declare const actions: {
|
|
@@ -729,6 +729,41 @@ export declare const useHydratedUser: import("react-sweet-state").HookFunction<H
|
|
|
729
729
|
fieldName: string;
|
|
730
730
|
id: string;
|
|
731
731
|
}>;
|
|
732
|
+
export declare const useHydratedTeam: import("react-sweet-state").HookFunction<HydratedTeam | undefined, import("react-sweet-state").BoundActions<State, {
|
|
733
|
+
onEditorViewBlur: () => Action<State>;
|
|
734
|
+
onEditorViewFocus: (event: FocusEvent<HTMLElement>) => Action<State, Props>;
|
|
735
|
+
openAutocompleteOnNextUpdate: () => Action<State>;
|
|
736
|
+
closeAutocomplete: () => Action<State>;
|
|
737
|
+
setSelectedAutocompleteOptionId: (selectedOptionId: string | undefined) => Action<State>;
|
|
738
|
+
getAutocompleteSuggestions: (editorState: EditorState) => Action<State>;
|
|
739
|
+
getAutocompleteOptions: (suggestions: ContextAwareJQLSuggestions) => Action<State>;
|
|
740
|
+
appendOptionsForObservable: (key: OptionsKey, observable: Observable<AutocompleteOptions>, rule: JQLRuleSuggestion, type: AutocompleteOptionType) => Action<State, void, Observable<AutocompleteOptions>>;
|
|
741
|
+
cancelSubscription: () => Action<State>;
|
|
742
|
+
setLoading: (loading: boolean) => Action<State>;
|
|
743
|
+
setAutocompleteOptions: (options: AutocompleteOptionGroup) => Action<State>;
|
|
744
|
+
setAutocompleteContainer: (container: HTMLElement | null) => Action<State>;
|
|
745
|
+
callAutocompleteProviders: ({ rules, tokens }: ContextAwareJQLSuggestions) => Action<State>;
|
|
746
|
+
updateValidationState: () => Action<State>;
|
|
747
|
+
initialiseEditorState: () => Action<State, Props>;
|
|
748
|
+
configurePlugins: (portalActions: PortalActions | void) => Action<State, Props>;
|
|
749
|
+
onApplyEditorTransaction: (transaction: Transaction) => Action<State, Props>;
|
|
750
|
+
resetEditorState: (query: string, addToHistory?: boolean) => Action<State>;
|
|
751
|
+
initialiseEditorView: (editorViewNode: HTMLElement, attributes: {
|
|
752
|
+
[key: string]: string;
|
|
753
|
+
}, portalActions: PortalActions) => Action<State, Props>;
|
|
754
|
+
updateEditorView: (attributes: {
|
|
755
|
+
[key: string]: string;
|
|
756
|
+
}) => Action<State, Props>;
|
|
757
|
+
setEditorViewContainer: (editorViewContainer: HTMLElement) => Action<State>;
|
|
758
|
+
setEditorViewContainerScroll: (scroll: number) => Action<State>;
|
|
759
|
+
onSearch: () => Action<State>;
|
|
760
|
+
onSearchCommand: (pmState: EditorState, pmDispatch: ((tr: Transaction) => void) | undefined, pmView: EditorView | undefined, keyboardShortcut: boolean) => Action<State, Props, boolean>;
|
|
761
|
+
externalErrorMessageViewed: () => Action<State, Props>;
|
|
762
|
+
createAndFireAnalyticsEvent: (payload: JqlEditorAnalyticsEvent) => Action<State, Props>;
|
|
763
|
+
}>, {
|
|
764
|
+
fieldName: string;
|
|
765
|
+
id: string;
|
|
766
|
+
}>;
|
|
732
767
|
export declare const useHydratedDeprecations: import("react-sweet-state").HookFunction<HydratedDeprecatedField[], import("react-sweet-state").BoundActions<State, {
|
|
733
768
|
onEditorViewBlur: () => Action<State>;
|
|
734
769
|
onEditorViewFocus: (event: FocusEvent<HTMLElement>) => Action<State, Props>;
|
package/dist/types/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type { JQLClause } from '@atlaskit/jql-autocomplete';
|
|
2
|
-
export type { JQLEditorUIProps, JQLEditorProps, HydratedValues, HydratedValue, HydratedUser, } from './ui/types';
|
|
2
|
+
export type { JQLEditorUIProps, JQLEditorProps, HydratedValues, HydratedValue, HydratedUser, HydratedTeam, } from './ui/types';
|
|
3
3
|
export type { ExternalMessage, ExternalError, ExternalWarning, ExternalInfo, CustomComponents, } from './state/types';
|
|
4
4
|
export type { AutocompleteProvider, AutocompleteOptions, AutocompleteOption, AutocompleteValueType, } from './plugins/types';
|
|
5
5
|
export type { ListenerProps, JqlAnalyticsEvent } from './analytics';
|
|
@@ -8,6 +8,12 @@ export type HydratedUser = {
|
|
|
8
8
|
name: string;
|
|
9
9
|
type: 'user';
|
|
10
10
|
};
|
|
11
|
+
export type HydratedTeam = {
|
|
12
|
+
avatarUrl: string;
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
type: 'team';
|
|
16
|
+
};
|
|
11
17
|
export type HydratedDeprecatedField = {
|
|
12
18
|
deprecatedSearcherKey: string;
|
|
13
19
|
/**
|
|
@@ -16,7 +22,7 @@ export type HydratedDeprecatedField = {
|
|
|
16
22
|
id: string;
|
|
17
23
|
type: 'deprecated-field';
|
|
18
24
|
};
|
|
19
|
-
export type HydratedValue = HydratedUser | HydratedDeprecatedField;
|
|
25
|
+
export type HydratedValue = HydratedUser | HydratedTeam | HydratedDeprecatedField;
|
|
20
26
|
export type HydratedValues = {
|
|
21
27
|
[fieldName: string]: HydratedValue[];
|
|
22
28
|
};
|
package/dist/types/ui/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type JQLEditorUIProps } from './jql-editor/types';
|
|
2
|
-
export type { JQLEditorUIProps, HydratedValue, HydratedValues, HydratedUser, } from './jql-editor/types';
|
|
2
|
+
export type { JQLEditorUIProps, HydratedValue, HydratedValues, HydratedUser, HydratedTeam, } from './jql-editor/types';
|
|
3
3
|
export type JQLEditorProps = JQLEditorUIProps & {
|
|
4
4
|
/**
|
|
5
5
|
* React-intl locale. This should be set to "en" if alternate message sets are not being loaded higher in the React
|
|
@@ -2,4 +2,4 @@ export { default as JQLEditor } from './ui';
|
|
|
2
2
|
export { JQLEditorAsync, preloadJQLEditor } from './async';
|
|
3
3
|
export { JQLEditorReadOnly } from './ui/jql-editor-layout';
|
|
4
4
|
export { JQLEditorAnalyticsListener, ANALYTICS_CHANNEL, useJqlPackageAnalytics, EventType, } from './analytics';
|
|
5
|
-
export type { ListenerProps, JqlAnalyticsEvent, JQLEditorUIProps, JQLEditorProps, HydratedValue, HydratedValues, HydratedUser, AutocompleteOption, AutocompleteValueType, AutocompleteOptions, AutocompleteProvider, JQLClause, ExternalMessage, ExternalError, ExternalWarning, ExternalInfo, CustomComponents, } from './types';
|
|
5
|
+
export type { ListenerProps, JqlAnalyticsEvent, JQLEditorUIProps, JQLEditorProps, HydratedValue, HydratedValues, HydratedUser, HydratedTeam, AutocompleteOption, AutocompleteValueType, AutocompleteOptions, AutocompleteProvider, JQLClause, ExternalMessage, ExternalError, ExternalWarning, ExternalInfo, CustomComponents, } from './types';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const TeamContainer: import("@emotion/styled").StyledComponent<{
|
|
2
|
+
theme?: import("@emotion/react").Theme;
|
|
3
|
+
as?: React.ElementType;
|
|
4
|
+
} & {
|
|
5
|
+
error: boolean;
|
|
6
|
+
selected: boolean;
|
|
7
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
8
|
+
export declare const NameContainer: import("@emotion/styled").StyledComponent<{
|
|
9
|
+
theme?: import("@emotion/react").Theme;
|
|
10
|
+
as?: React.ElementType;
|
|
11
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
12
|
+
export declare const AvatarWrapper: import("@emotion/styled").StyledComponent<{
|
|
13
|
+
theme?: import("@emotion/react").Theme;
|
|
14
|
+
as?: React.ElementType;
|
|
15
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
@@ -10,7 +10,7 @@ import { type JqlEditorAnalyticsEvent } from '../analytics';
|
|
|
10
10
|
import { type AutocompleteOptionGroup, type AutocompleteOptions, type AutocompleteOptionType, type SelectableAutocompleteOption } from '../plugins/autocomplete/components/types';
|
|
11
11
|
import { type AutocompleteProvider } from '../plugins/types';
|
|
12
12
|
import { type PortalActions } from '../ui/jql-editor-portal-provider/types';
|
|
13
|
-
import { type HydratedDeprecatedField, type HydratedUser, type HydratedValue } from '../ui/jql-editor/types';
|
|
13
|
+
import { type HydratedDeprecatedField, type HydratedTeam, type HydratedUser, type HydratedValue } from '../ui/jql-editor/types';
|
|
14
14
|
import { type AutocompletePosition, type AutocompleteState, type ContextAwareJQLSuggestions, type CustomErrorComponent, type ExternalMessagesNormalized, type OptionsKey, type Props, type State } from './types';
|
|
15
15
|
export declare const initialState: State;
|
|
16
16
|
export declare const actions: {
|
|
@@ -729,6 +729,41 @@ export declare const useHydratedUser: import("react-sweet-state").HookFunction<H
|
|
|
729
729
|
fieldName: string;
|
|
730
730
|
id: string;
|
|
731
731
|
}>;
|
|
732
|
+
export declare const useHydratedTeam: import("react-sweet-state").HookFunction<HydratedTeam | undefined, import("react-sweet-state").BoundActions<State, {
|
|
733
|
+
onEditorViewBlur: () => Action<State>;
|
|
734
|
+
onEditorViewFocus: (event: FocusEvent<HTMLElement>) => Action<State, Props>;
|
|
735
|
+
openAutocompleteOnNextUpdate: () => Action<State>;
|
|
736
|
+
closeAutocomplete: () => Action<State>;
|
|
737
|
+
setSelectedAutocompleteOptionId: (selectedOptionId: string | undefined) => Action<State>;
|
|
738
|
+
getAutocompleteSuggestions: (editorState: EditorState) => Action<State>;
|
|
739
|
+
getAutocompleteOptions: (suggestions: ContextAwareJQLSuggestions) => Action<State>;
|
|
740
|
+
appendOptionsForObservable: (key: OptionsKey, observable: Observable<AutocompleteOptions>, rule: JQLRuleSuggestion, type: AutocompleteOptionType) => Action<State, void, Observable<AutocompleteOptions>>;
|
|
741
|
+
cancelSubscription: () => Action<State>;
|
|
742
|
+
setLoading: (loading: boolean) => Action<State>;
|
|
743
|
+
setAutocompleteOptions: (options: AutocompleteOptionGroup) => Action<State>;
|
|
744
|
+
setAutocompleteContainer: (container: HTMLElement | null) => Action<State>;
|
|
745
|
+
callAutocompleteProviders: ({ rules, tokens }: ContextAwareJQLSuggestions) => Action<State>;
|
|
746
|
+
updateValidationState: () => Action<State>;
|
|
747
|
+
initialiseEditorState: () => Action<State, Props>;
|
|
748
|
+
configurePlugins: (portalActions: PortalActions | void) => Action<State, Props>;
|
|
749
|
+
onApplyEditorTransaction: (transaction: Transaction) => Action<State, Props>;
|
|
750
|
+
resetEditorState: (query: string, addToHistory?: boolean) => Action<State>;
|
|
751
|
+
initialiseEditorView: (editorViewNode: HTMLElement, attributes: {
|
|
752
|
+
[key: string]: string;
|
|
753
|
+
}, portalActions: PortalActions) => Action<State, Props>;
|
|
754
|
+
updateEditorView: (attributes: {
|
|
755
|
+
[key: string]: string;
|
|
756
|
+
}) => Action<State, Props>;
|
|
757
|
+
setEditorViewContainer: (editorViewContainer: HTMLElement) => Action<State>;
|
|
758
|
+
setEditorViewContainerScroll: (scroll: number) => Action<State>;
|
|
759
|
+
onSearch: () => Action<State>;
|
|
760
|
+
onSearchCommand: (pmState: EditorState, pmDispatch: ((tr: Transaction) => void) | undefined, pmView: EditorView | undefined, keyboardShortcut: boolean) => Action<State, Props, boolean>;
|
|
761
|
+
externalErrorMessageViewed: () => Action<State, Props>;
|
|
762
|
+
createAndFireAnalyticsEvent: (payload: JqlEditorAnalyticsEvent) => Action<State, Props>;
|
|
763
|
+
}>, {
|
|
764
|
+
fieldName: string;
|
|
765
|
+
id: string;
|
|
766
|
+
}>;
|
|
732
767
|
export declare const useHydratedDeprecations: import("react-sweet-state").HookFunction<HydratedDeprecatedField[], import("react-sweet-state").BoundActions<State, {
|
|
733
768
|
onEditorViewBlur: () => Action<State>;
|
|
734
769
|
onEditorViewFocus: (event: FocusEvent<HTMLElement>) => Action<State, Props>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type { JQLClause } from '@atlaskit/jql-autocomplete';
|
|
2
|
-
export type { JQLEditorUIProps, JQLEditorProps, HydratedValues, HydratedValue, HydratedUser, } from './ui/types';
|
|
2
|
+
export type { JQLEditorUIProps, JQLEditorProps, HydratedValues, HydratedValue, HydratedUser, HydratedTeam, } from './ui/types';
|
|
3
3
|
export type { ExternalMessage, ExternalError, ExternalWarning, ExternalInfo, CustomComponents, } from './state/types';
|
|
4
4
|
export type { AutocompleteProvider, AutocompleteOptions, AutocompleteOption, AutocompleteValueType, } from './plugins/types';
|
|
5
5
|
export type { ListenerProps, JqlAnalyticsEvent } from './analytics';
|
|
@@ -8,6 +8,12 @@ export type HydratedUser = {
|
|
|
8
8
|
name: string;
|
|
9
9
|
type: 'user';
|
|
10
10
|
};
|
|
11
|
+
export type HydratedTeam = {
|
|
12
|
+
avatarUrl: string;
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
type: 'team';
|
|
16
|
+
};
|
|
11
17
|
export type HydratedDeprecatedField = {
|
|
12
18
|
deprecatedSearcherKey: string;
|
|
13
19
|
/**
|
|
@@ -16,7 +22,7 @@ export type HydratedDeprecatedField = {
|
|
|
16
22
|
id: string;
|
|
17
23
|
type: 'deprecated-field';
|
|
18
24
|
};
|
|
19
|
-
export type HydratedValue = HydratedUser | HydratedDeprecatedField;
|
|
25
|
+
export type HydratedValue = HydratedUser | HydratedTeam | HydratedDeprecatedField;
|
|
20
26
|
export type HydratedValues = {
|
|
21
27
|
[fieldName: string]: HydratedValue[];
|
|
22
28
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type JQLEditorUIProps } from './jql-editor/types';
|
|
2
|
-
export type { JQLEditorUIProps, HydratedValue, HydratedValues, HydratedUser, } from './jql-editor/types';
|
|
2
|
+
export type { JQLEditorUIProps, HydratedValue, HydratedValues, HydratedUser, HydratedTeam, } from './jql-editor/types';
|
|
3
3
|
export type JQLEditorProps = JQLEditorUIProps & {
|
|
4
4
|
/**
|
|
5
5
|
* React-intl locale. This should be set to "en" if alternate message sets are not being loaded higher in the React
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/jql-editor",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.7.0",
|
|
4
4
|
"description": "This package allows consumers to render an advanced JQL editor component to enable autocomplete-assisted authoring and validation of JQL queries.",
|
|
5
5
|
"author": "Atlassian Pty Ltd",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"@atlaskit/afm-i18n-platform-jql-jql-editor": "2.7.0",
|
|
36
36
|
"@atlaskit/analytics-gas-types": "^5.1.0",
|
|
37
37
|
"@atlaskit/analytics-next": "^11.1.0",
|
|
38
|
-
"@atlaskit/avatar": "^25.
|
|
38
|
+
"@atlaskit/avatar": "^25.5.0",
|
|
39
39
|
"@atlaskit/button": "^23.5.0",
|
|
40
40
|
"@atlaskit/editor-prosemirror": "7.0.0",
|
|
41
41
|
"@atlaskit/form": "^14.2.0",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"@atlaskit/spinner": "^19.0.0",
|
|
54
54
|
"@atlaskit/theme": "^21.0.0",
|
|
55
55
|
"@atlaskit/tokens": "^7.0.0",
|
|
56
|
-
"@atlaskit/tooltip": "^20.
|
|
56
|
+
"@atlaskit/tooltip": "^20.6.0",
|
|
57
57
|
"@babel/runtime": "^7.0.0",
|
|
58
58
|
"@emotion/react": "^11.7.1",
|
|
59
59
|
"@emotion/styled": "^11.0.0",
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
"@af/integration-testing": "workspace:^",
|
|
78
78
|
"@atlaskit/docs": "^11.2.0",
|
|
79
79
|
"@atlaskit/jql-editor-autocomplete-rest": "^3.0.0",
|
|
80
|
-
"@atlassian/feature-flags-test-utils": "^0.
|
|
80
|
+
"@atlassian/feature-flags-test-utils": "^1.0.0",
|
|
81
81
|
"@storybook/addon-actions": "^8.6.14",
|
|
82
82
|
"@storybook/addon-knobs": "^6.4.0",
|
|
83
83
|
"@testing-library/jest-dom": "^6.4.5",
|
|
@@ -139,6 +139,9 @@
|
|
|
139
139
|
},
|
|
140
140
|
"jql_editor_autocomplete_use_popper": {
|
|
141
141
|
"type": "boolean"
|
|
142
|
+
},
|
|
143
|
+
"jira_update_jql_teams": {
|
|
144
|
+
"type": "boolean"
|
|
142
145
|
}
|
|
143
146
|
}
|
|
144
147
|
}
|