@atlaskit/link-datasource 1.29.4 → 1.30.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 +13 -0
- package/dist/cjs/ui/confluence-search-modal/basic-filters/filters/date-range-picker/index.js +126 -33
- package/dist/cjs/ui/confluence-search-modal/basic-filters/filters/date-range-picker/messages.js +50 -0
- package/dist/cjs/ui/confluence-search-modal/basic-filters/filters/date-range-picker/styled.js +6 -4
- package/dist/cjs/ui/confluence-search-modal/basic-filters/filters/date-range-picker/trigger.js +6 -6
- package/dist/cjs/ui/confluence-search-modal/basic-filters/filters/date-range-picker/utils.js +66 -0
- package/dist/cjs/ui/confluence-search-modal/basic-filters/index.js +12 -2
- package/dist/cjs/ui/confluence-search-modal/modal/index.js +36 -13
- package/dist/cjs/ui/table-footer/powered-by-jsm-assets/index.js +1 -1
- package/dist/es2019/ui/confluence-search-modal/basic-filters/filters/date-range-picker/index.js +116 -31
- package/dist/es2019/ui/confluence-search-modal/basic-filters/filters/date-range-picker/messages.js +50 -0
- package/dist/es2019/ui/confluence-search-modal/basic-filters/filters/date-range-picker/styled.js +6 -4
- package/dist/es2019/ui/confluence-search-modal/basic-filters/filters/date-range-picker/trigger.js +6 -6
- package/dist/es2019/ui/confluence-search-modal/basic-filters/filters/date-range-picker/utils.js +57 -0
- package/dist/es2019/ui/confluence-search-modal/basic-filters/index.js +8 -1
- package/dist/es2019/ui/confluence-search-modal/modal/index.js +32 -7
- package/dist/es2019/ui/table-footer/powered-by-jsm-assets/index.js +1 -1
- package/dist/esm/ui/confluence-search-modal/basic-filters/filters/date-range-picker/index.js +128 -35
- package/dist/esm/ui/confluence-search-modal/basic-filters/filters/date-range-picker/messages.js +50 -0
- package/dist/esm/ui/confluence-search-modal/basic-filters/filters/date-range-picker/styled.js +6 -4
- package/dist/esm/ui/confluence-search-modal/basic-filters/filters/date-range-picker/trigger.js +6 -6
- package/dist/esm/ui/confluence-search-modal/basic-filters/filters/date-range-picker/utils.js +59 -0
- package/dist/esm/ui/confluence-search-modal/basic-filters/index.js +12 -2
- package/dist/esm/ui/confluence-search-modal/modal/index.js +36 -13
- package/dist/esm/ui/table-footer/powered-by-jsm-assets/index.js +1 -1
- package/dist/types/ui/common/modal/popup-select/types.d.ts +3 -1
- package/dist/types/ui/confluence-search-modal/basic-filters/filters/date-range-picker/index.d.ts +4 -3
- package/dist/types/ui/confluence-search-modal/basic-filters/filters/date-range-picker/messages.d.ts +50 -0
- package/dist/types/ui/confluence-search-modal/basic-filters/filters/date-range-picker/trigger.d.ts +4 -4
- package/dist/types/ui/confluence-search-modal/basic-filters/filters/date-range-picker/utils.d.ts +6 -0
- package/dist/types/ui/confluence-search-modal/basic-filters/index.d.ts +2 -2
- package/dist/types/ui/confluence-search-modal/confluence-search-container/index.d.ts +1 -1
- package/dist/types/ui/confluence-search-modal/modal/index.d.ts +1 -1
- package/dist/types/ui/confluence-search-modal/types.d.ts +3 -3
- package/dist/types-ts4.5/ui/common/modal/popup-select/types.d.ts +3 -1
- package/dist/types-ts4.5/ui/confluence-search-modal/basic-filters/filters/date-range-picker/index.d.ts +4 -3
- package/dist/types-ts4.5/ui/confluence-search-modal/basic-filters/filters/date-range-picker/messages.d.ts +50 -0
- package/dist/types-ts4.5/ui/confluence-search-modal/basic-filters/filters/date-range-picker/trigger.d.ts +4 -4
- package/dist/types-ts4.5/ui/confluence-search-modal/basic-filters/filters/date-range-picker/utils.d.ts +6 -0
- package/dist/types-ts4.5/ui/confluence-search-modal/basic-filters/index.d.ts +2 -2
- package/dist/types-ts4.5/ui/confluence-search-modal/confluence-search-container/index.d.ts +1 -1
- package/dist/types-ts4.5/ui/confluence-search-modal/modal/index.d.ts +1 -1
- package/dist/types-ts4.5/ui/confluence-search-modal/types.d.ts +3 -3
- package/package.json +10 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @atlaskit/link-datasource
|
|
2
2
|
|
|
3
|
+
## 1.30.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#92396](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/92396) [`f13614517fe4`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/f13614517fe4) - [ux] Introduces a custom date range filter for confluence smart link list view modal
|
|
8
|
+
|
|
9
|
+
## 1.29.5
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [#94901](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/94901) [`da964fcdc828`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/da964fcdc828) - [ED-23097] Bump ADF schema to version 35.12.1
|
|
14
|
+
- [#95182](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/95182) [`3d3dd335b8e8`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/3d3dd335b8e8) - The internal composition of this component has changed. There is no expected change in behavior.
|
|
15
|
+
|
|
3
16
|
## 1.29.4
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
package/dist/cjs/ui/confluence-search-modal/basic-filters/filters/date-range-picker/index.js
CHANGED
|
@@ -6,43 +6,94 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.DateRangePicker = void 0;
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
10
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
12
|
var _reactIntlNext = require("react-intl-next");
|
|
13
|
+
var _datetimePicker = require("@atlaskit/datetime-picker");
|
|
14
|
+
var _error = _interopRequireDefault(require("@atlaskit/icon/glyph/error"));
|
|
12
15
|
var _popup = _interopRequireDefault(require("@atlaskit/popup"));
|
|
16
|
+
var _colors = require("@atlaskit/theme/colors");
|
|
13
17
|
var _constants = require("@atlaskit/theme/constants");
|
|
14
18
|
var _types = require("../../types");
|
|
15
19
|
var _messages = require("./messages");
|
|
16
20
|
var _PopupComponent = require("./PopupComponent");
|
|
17
21
|
var _styled = require("./styled");
|
|
18
22
|
var _trigger = require("./trigger");
|
|
23
|
+
var _utils = require("./utils");
|
|
19
24
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
20
25
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
26
|
+
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; }
|
|
27
|
+
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) { (0, _defineProperty2.default)(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; }
|
|
21
28
|
var lastModifiedValues = ['anyTime', 'today', 'yesterday', 'past7Days', 'past30Days', 'pastYear', 'custom'];
|
|
22
29
|
var defaultOptionValue = 'anyTime';
|
|
23
|
-
var filterName = _types.CLOLBasicFilters.lastModified;
|
|
24
30
|
var DateRangePicker = exports.DateRangePicker = function DateRangePicker(_ref) {
|
|
25
|
-
var onSelectionChange = _ref.onSelectionChange
|
|
26
|
-
|
|
31
|
+
var onSelectionChange = _ref.onSelectionChange,
|
|
32
|
+
selection = _ref.selection;
|
|
33
|
+
var _useState = (0, _react.useState)(selection === null || selection === void 0 ? void 0 : selection.value),
|
|
27
34
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
28
35
|
currentOption = _useState2[0],
|
|
29
36
|
setCurrentOption = _useState2[1];
|
|
30
|
-
var _useState3 = (0, _react.useState)(
|
|
37
|
+
var _useState3 = (0, _react.useState)((0, _utils.getInvalidDateRange)(selection === null || selection === void 0 ? void 0 : selection.from, selection === null || selection === void 0 ? void 0 : selection.to)),
|
|
31
38
|
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
32
|
-
|
|
33
|
-
|
|
39
|
+
invalidDateRange = _useState4[0],
|
|
40
|
+
setInvalidDateRange = _useState4[1];
|
|
41
|
+
var customFromDate = (0, _react.useRef)(selection === null || selection === void 0 ? void 0 : selection.from);
|
|
42
|
+
var customToDate = (0, _react.useRef)(selection === null || selection === void 0 ? void 0 : selection.to);
|
|
43
|
+
var _useState5 = (0, _react.useState)(false),
|
|
44
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
45
|
+
isPickerOpen = _useState6[0],
|
|
46
|
+
setIsPickerOpen = _useState6[1];
|
|
34
47
|
var _useIntl = (0, _reactIntlNext.useIntl)(),
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
48
|
+
locale = _useIntl.locale,
|
|
49
|
+
formatMessage = _useIntl.formatMessage,
|
|
50
|
+
formatDate = _useIntl.formatDate;
|
|
51
|
+
var isCustomSelected = currentOption === 'custom' || (selection === null || selection === void 0 ? void 0 : selection.value) === 'custom';
|
|
52
|
+
var maxDate = new Date().toISOString();
|
|
53
|
+
(0, _react.useEffect)(function () {
|
|
54
|
+
if (isPickerOpen) {
|
|
55
|
+
customFromDate.current = selection === null || selection === void 0 ? void 0 : selection.from;
|
|
56
|
+
customToDate.current = selection === null || selection === void 0 ? void 0 : selection.to;
|
|
57
|
+
}
|
|
58
|
+
}, [isPickerOpen, selection === null || selection === void 0 ? void 0 : selection.from, selection === null || selection === void 0 ? void 0 : selection.to]);
|
|
59
|
+
var handleFromOnChange = function handleFromOnChange(date) {
|
|
60
|
+
customFromDate.current = date;
|
|
61
|
+
setInvalidDateRange((0, _utils.getInvalidDateRange)(customFromDate.current, customToDate.current));
|
|
62
|
+
};
|
|
63
|
+
var handleToOnChange = function handleToOnChange(date) {
|
|
64
|
+
customToDate.current = date;
|
|
65
|
+
setInvalidDateRange((0, _utils.getInvalidDateRange)(customFromDate.current, customToDate.current));
|
|
66
|
+
};
|
|
67
|
+
var handleClickUpdateDateRange = function handleClickUpdateDateRange() {
|
|
68
|
+
var label = 'custom';
|
|
69
|
+
if (customFromDate.current && !customToDate.current) {
|
|
70
|
+
label = customFromDate.current;
|
|
71
|
+
} else if (customToDate.current && !customFromDate.current) {
|
|
72
|
+
label = customToDate.current;
|
|
73
|
+
}
|
|
74
|
+
onSelectionChange(_types.CLOLBasicFilters.lastModified, {
|
|
75
|
+
optionType: 'dateRange',
|
|
76
|
+
label: label,
|
|
77
|
+
value: 'custom',
|
|
78
|
+
from: customFromDate.current,
|
|
79
|
+
to: customToDate.current
|
|
80
|
+
});
|
|
38
81
|
setIsPickerOpen(false);
|
|
39
|
-
|
|
40
|
-
|
|
82
|
+
};
|
|
83
|
+
var handleClickFilterOption = (0, _react.useCallback)(function (option) {
|
|
84
|
+
setCurrentOption(option);
|
|
85
|
+
onSelectionChange(_types.CLOLBasicFilters.lastModified, {
|
|
86
|
+
optionType: 'dateRange',
|
|
41
87
|
label: option,
|
|
42
88
|
value: option
|
|
43
|
-
}
|
|
89
|
+
});
|
|
90
|
+
if (option !== 'custom') {
|
|
91
|
+
setIsPickerOpen(false);
|
|
92
|
+
}
|
|
44
93
|
}, [onSelectionChange]);
|
|
45
94
|
var handleTogglePopup = (0, _react.useCallback)(function () {
|
|
95
|
+
// If users click out of popup, we let selection prop define the current option when opened again until user sets state
|
|
96
|
+
setCurrentOption(undefined);
|
|
46
97
|
setIsPickerOpen(!isPickerOpen);
|
|
47
98
|
}, [isPickerOpen]);
|
|
48
99
|
return /*#__PURE__*/_react.default.createElement(_popup.default, {
|
|
@@ -54,36 +105,78 @@ var DateRangePicker = exports.DateRangePicker = function DateRangePicker(_ref) {
|
|
|
54
105
|
return /*#__PURE__*/_react.default.createElement(_styled.CustomDropdown, null, lastModifiedValues.map(function (option) {
|
|
55
106
|
return /*#__PURE__*/_react.default.createElement(_styled.CustomDropdownItem, {
|
|
56
107
|
key: option
|
|
57
|
-
//want to show Anytime as selected if none of the other options are selected
|
|
108
|
+
// want to show Anytime as selected if none of the other options are selected
|
|
58
109
|
,
|
|
59
|
-
isSelected:
|
|
110
|
+
isSelected: selection !== null && selection !== void 0 && selection.value ? option === selection.value : option === defaultOptionValue,
|
|
60
111
|
onClick: function onClick() {
|
|
61
|
-
return
|
|
112
|
+
return handleClickFilterOption(option);
|
|
113
|
+
}
|
|
114
|
+
}, (0, _utils.getDropdownLabel)(option, formatMessage));
|
|
115
|
+
}), isPickerOpen && isCustomSelected && /*#__PURE__*/_react.default.createElement(_styled.CustomDateWrapper, null, /*#__PURE__*/_react.default.createElement(_styled.DatePickersWrapper, null, /*#__PURE__*/_react.default.createElement(_datetimePicker.DatePicker, {
|
|
116
|
+
maxDate: maxDate,
|
|
117
|
+
innerProps: {
|
|
118
|
+
style: {
|
|
119
|
+
width: 140
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
testId: "date-from-picker",
|
|
123
|
+
dateFormat: "D MMM YYYY",
|
|
124
|
+
onChange: handleFromOnChange,
|
|
125
|
+
defaultValue: selection === null || selection === void 0 ? void 0 : selection.from,
|
|
126
|
+
placeholder: formatMessage(_messages.dateRangeMessages.dateRangeFrom),
|
|
127
|
+
isInvalid: Boolean(invalidDateRange),
|
|
128
|
+
locale: locale,
|
|
129
|
+
selectProps: {
|
|
130
|
+
styles: {
|
|
131
|
+
placeholder: function placeholder(base) {
|
|
132
|
+
return _objectSpread(_objectSpread({}, base), {}, {
|
|
133
|
+
width: 'max-content'
|
|
134
|
+
});
|
|
135
|
+
}
|
|
62
136
|
}
|
|
63
|
-
}
|
|
64
|
-
}))
|
|
137
|
+
}
|
|
138
|
+
}), /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.dateRangeMessages.dateRangeToLabel), /*#__PURE__*/_react.default.createElement(_datetimePicker.DatePicker, {
|
|
139
|
+
maxDate: maxDate,
|
|
140
|
+
innerProps: {
|
|
141
|
+
style: {
|
|
142
|
+
width: 140
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
testId: "date-to-picker",
|
|
146
|
+
dateFormat: "D MMM YYYY",
|
|
147
|
+
onChange: handleToOnChange,
|
|
148
|
+
defaultValue: selection === null || selection === void 0 ? void 0 : selection.to,
|
|
149
|
+
placeholder: formatMessage(_messages.dateRangeMessages.dateRangeTo),
|
|
150
|
+
isInvalid: Boolean(invalidDateRange),
|
|
151
|
+
locale: locale,
|
|
152
|
+
selectProps: {
|
|
153
|
+
styles: {
|
|
154
|
+
placeholder: function placeholder(base) {
|
|
155
|
+
return _objectSpread(_objectSpread({}, base), {}, {
|
|
156
|
+
width: 'max-content'
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
})), invalidDateRange && /*#__PURE__*/_react.default.createElement(_styled.DateRangeErrorMessage, null, /*#__PURE__*/_react.default.createElement(_error.default, {
|
|
162
|
+
size: "small",
|
|
163
|
+
primaryColor: "var(--ds-icon-danger, ".concat(_colors.R400, ")"),
|
|
164
|
+
label: "Date range error"
|
|
165
|
+
}), invalidDateRange), /*#__PURE__*/_react.default.createElement(_styled.SelectDateRangeButton, {
|
|
166
|
+
"data-testId": "custom-date-range-update-button",
|
|
167
|
+
disabled: Boolean(invalidDateRange),
|
|
168
|
+
onClick: handleClickUpdateDateRange
|
|
169
|
+
}, formatMessage(_messages.dateRangeMessages.dateRangeUpdateButton))));
|
|
65
170
|
},
|
|
66
171
|
placement: "bottom-start",
|
|
67
172
|
trigger: function trigger(triggerProps) {
|
|
68
173
|
return /*#__PURE__*/_react.default.createElement(_trigger.PopupTrigger, {
|
|
69
174
|
triggerProps: triggerProps,
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
selectedLabel:
|
|
73
|
-
|
|
175
|
+
isSelected: !!(selection !== null && selection !== void 0 && selection.value) || isPickerOpen,
|
|
176
|
+
labelPrefix: formatMessage(_messages.dateRangeMessages.dateRangeTitle),
|
|
177
|
+
selectedLabel: (0, _utils.getCurrentOptionLabel)(formatDate, formatMessage, selection),
|
|
178
|
+
onClick: handleTogglePopup
|
|
74
179
|
});
|
|
75
180
|
}
|
|
76
181
|
});
|
|
77
|
-
};
|
|
78
|
-
var getCurrentOptionLabel = function getCurrentOptionLabel(option) {
|
|
79
|
-
var mapping = {
|
|
80
|
-
anyTime: 'dateRangeAnyTime',
|
|
81
|
-
today: 'dateRangeToday',
|
|
82
|
-
yesterday: 'dateRangeYesterday',
|
|
83
|
-
past7Days: 'dateRangeLastWeek',
|
|
84
|
-
past30Days: 'dateRangeLastMonth',
|
|
85
|
-
pastYear: 'dateRangeLastYear',
|
|
86
|
-
custom: 'dateRangeCustom'
|
|
87
|
-
};
|
|
88
|
-
return option ? _messages.dateRangeMessages[mapping[option]] : _messages.dateRangeMessages[mapping['anyTime']];
|
|
89
182
|
};
|
package/dist/cjs/ui/confluence-search-modal/basic-filters/filters/date-range-picker/messages.js
CHANGED
|
@@ -45,5 +45,55 @@ var dateRangeMessages = exports.dateRangeMessages = (0, _reactIntlNext.defineMes
|
|
|
45
45
|
id: 'linkDataSource.confluence-search.configmodal.date.range.custom',
|
|
46
46
|
defaultMessage: 'Custom',
|
|
47
47
|
description: 'Custom date range'
|
|
48
|
+
},
|
|
49
|
+
dateRangeFrom: {
|
|
50
|
+
id: 'linkDataSource.confluence-search.configmodal.date.range.from',
|
|
51
|
+
defaultMessage: 'From',
|
|
52
|
+
description: 'Filter starting from a custom date'
|
|
53
|
+
},
|
|
54
|
+
dateRangeTo: {
|
|
55
|
+
id: 'linkDataSource.confluence-search.configmodal.date.range.to',
|
|
56
|
+
defaultMessage: 'To',
|
|
57
|
+
description: 'Filter up to a custom date'
|
|
58
|
+
},
|
|
59
|
+
dateRangeDateInputPlaceholder: {
|
|
60
|
+
id: 'linkDataSource.confluence-search.configmodal.date.range.input.placeholder',
|
|
61
|
+
defaultMessage: 'Choose a date',
|
|
62
|
+
description: 'Placeholder text for date input'
|
|
63
|
+
},
|
|
64
|
+
dateRangeCustomInvalidDateAfterToday: {
|
|
65
|
+
id: 'linkDataSource.confluence-search.configmodal.date.range.custom.invalid.after.today',
|
|
66
|
+
defaultMessage: 'The From date can’t be in the future',
|
|
67
|
+
description: 'error displayed when a date range begins after the current date'
|
|
68
|
+
},
|
|
69
|
+
dateRangeCustomInvalidToDateAfterToday: {
|
|
70
|
+
id: 'linkDataSource.confluence-search.configmodal.date.range.custom.invalid.to.after.today',
|
|
71
|
+
defaultMessage: 'The To date can’t be in the future',
|
|
72
|
+
description: 'error displayed when a date range ends after the current date'
|
|
73
|
+
},
|
|
74
|
+
dateRangeCustomInvalidDateAfterEnd: {
|
|
75
|
+
id: 'linkDataSource.confluence-search.configmodal.date.range.custom.invalid.after.end',
|
|
76
|
+
defaultMessage: 'The From date has to be before the To date',
|
|
77
|
+
description: 'error displayed when a date range begins after the end date'
|
|
78
|
+
},
|
|
79
|
+
dateRangeToLabel: {
|
|
80
|
+
id: 'linkDataSource.confluence-search.configmodal.date.range.to.Label',
|
|
81
|
+
defaultMessage: 'to',
|
|
82
|
+
description: "'to' in between from and to date pickers"
|
|
83
|
+
},
|
|
84
|
+
dateRangeUpdateButton: {
|
|
85
|
+
id: 'linkDataSource.confluence-search.configmodal.date.range.update.button',
|
|
86
|
+
defaultMessage: 'Update',
|
|
87
|
+
description: 'Text for update button in date filter picker'
|
|
88
|
+
},
|
|
89
|
+
dateRangeBeforeLabel: {
|
|
90
|
+
id: 'linkDataSource.confluence-search.configmodal.date.range.before.label',
|
|
91
|
+
defaultMessage: 'before {date}',
|
|
92
|
+
description: '`before date` for date picker dropdown'
|
|
93
|
+
},
|
|
94
|
+
dateRangeAfterLabel: {
|
|
95
|
+
id: 'linkDataSource.confluence-search.configmodal.date.range.after.label',
|
|
96
|
+
defaultMessage: 'after {date}',
|
|
97
|
+
description: '`after date` for date picker dropdown'
|
|
48
98
|
}
|
|
49
99
|
});
|
package/dist/cjs/ui/confluence-search-modal/basic-filters/filters/date-range-picker/styled.js
CHANGED
|
@@ -7,11 +7,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.SelectDateRangeButton = exports.PopupComponentContainer = exports.DateRangeErrorMessage = exports.DatePickersWrapper = exports.CustomDropdownItem = exports.CustomDropdown = exports.CustomDateWrapper = void 0;
|
|
8
8
|
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
9
9
|
var _colors = require("@atlaskit/theme/colors");
|
|
10
|
+
var _constants = require("@atlaskit/theme/constants");
|
|
10
11
|
var PopupComponentContainer = exports.PopupComponentContainer = _styled.default.div({
|
|
11
12
|
boxSizing: 'border-box',
|
|
12
13
|
display: 'block',
|
|
13
14
|
flex: '1 1 auto',
|
|
14
15
|
overflow: 'visible',
|
|
16
|
+
borderRadius: "var(--ds-border-radius-200, 3px)",
|
|
15
17
|
background: "var(--ds-background-input, ".concat(_colors.N0, ")"),
|
|
16
18
|
':focus': {
|
|
17
19
|
outline: 'none'
|
|
@@ -19,11 +21,11 @@ var PopupComponentContainer = exports.PopupComponentContainer = _styled.default.
|
|
|
19
21
|
boxShadow: "var(--ds-shadow-overlay, 0px 0px 1px 0px rgba(9, 30, 66, 0.31), 0px 3px 5px 0px rgba(9, 30, 66, 0.20))"
|
|
20
22
|
});
|
|
21
23
|
var CustomDropdown = exports.CustomDropdown = _styled.default.div({
|
|
22
|
-
width: '
|
|
24
|
+
width: '340px',
|
|
23
25
|
background: "var(--ds-background-input, ".concat(_colors.N0, ")"),
|
|
24
|
-
borderRadius:
|
|
26
|
+
borderRadius: "var(--ds-border-radius-200, 3px)",
|
|
25
27
|
boxShadow: "var(--ds-shadow-overlay, 0px 0px 1px 0px rgba(9, 30, 66, 0.31), 0px 3px 5px 0px rgba(9, 30, 66, 0.20))",
|
|
26
|
-
zIndex:
|
|
28
|
+
zIndex: _constants.layers.modal()
|
|
27
29
|
});
|
|
28
30
|
var CustomDropdownItem = exports.CustomDropdownItem = _styled.default.div(function (props) {
|
|
29
31
|
return {
|
|
@@ -60,7 +62,7 @@ var SelectDateRangeButton = exports.SelectDateRangeButton = _styled.default.butt
|
|
|
60
62
|
width: '70px',
|
|
61
63
|
height: '40px',
|
|
62
64
|
marginTop: "var(--ds-space-150, 12px)",
|
|
63
|
-
borderRadius:
|
|
65
|
+
borderRadius: "var(--ds-border-radius-200, 3px)",
|
|
64
66
|
'&:hover': {
|
|
65
67
|
background: "var(--ds-background-accent-gray-subtler, ".concat(_colors.N30, ")"),
|
|
66
68
|
cursor: 'pointer'
|
package/dist/cjs/ui/confluence-search-modal/basic-filters/filters/date-range-picker/trigger.js
CHANGED
|
@@ -11,14 +11,14 @@ var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-
|
|
|
11
11
|
var _chevronDown = _interopRequireDefault(require("@atlaskit/icon/glyph/chevron-down"));
|
|
12
12
|
var PopupTrigger = exports.PopupTrigger = function PopupTrigger(_ref) {
|
|
13
13
|
var triggerProps = _ref.triggerProps,
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
isSelected = _ref.isSelected,
|
|
15
|
+
labelPrefix = _ref.labelPrefix,
|
|
16
16
|
selectedLabel = _ref.selectedLabel,
|
|
17
|
-
|
|
17
|
+
onClick = _ref.onClick;
|
|
18
18
|
return /*#__PURE__*/_react.default.createElement(_standardButton.default, (0, _extends2.default)({}, triggerProps, {
|
|
19
19
|
testId: 'confluence-search-modal--date-range-button',
|
|
20
|
-
onClick:
|
|
21
|
-
isSelected:
|
|
20
|
+
onClick: onClick,
|
|
21
|
+
isSelected: isSelected,
|
|
22
22
|
iconAfter: /*#__PURE__*/_react.default.createElement("span", {
|
|
23
23
|
style: {
|
|
24
24
|
display: 'flex',
|
|
@@ -28,5 +28,5 @@ var PopupTrigger = exports.PopupTrigger = function PopupTrigger(_ref) {
|
|
|
28
28
|
size: "medium",
|
|
29
29
|
label: ""
|
|
30
30
|
}))
|
|
31
|
-
}),
|
|
31
|
+
}), labelPrefix, selectedLabel ? ": ".concat(selectedLabel) : '');
|
|
32
32
|
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getInvalidDateRange = exports.getDropdownLabel = exports.getCurrentOptionLabel = void 0;
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _reactIntlNext = require("react-intl-next");
|
|
10
|
+
var _dateTime = require("../../../../../ui/issue-like-table/render-type/date-time");
|
|
11
|
+
var _messages = require("./messages");
|
|
12
|
+
var getDropdownLabel = exports.getDropdownLabel = function getDropdownLabel() {
|
|
13
|
+
var option = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'anyTime';
|
|
14
|
+
var formatMessage = arguments.length > 1 ? arguments[1] : undefined;
|
|
15
|
+
var mapping = {
|
|
16
|
+
anyTime: 'dateRangeAnyTime',
|
|
17
|
+
today: 'dateRangeToday',
|
|
18
|
+
yesterday: 'dateRangeYesterday',
|
|
19
|
+
past7Days: 'dateRangeLastWeek',
|
|
20
|
+
past30Days: 'dateRangeLastMonth',
|
|
21
|
+
pastYear: 'dateRangeLastYear',
|
|
22
|
+
custom: 'dateRangeCustom'
|
|
23
|
+
};
|
|
24
|
+
return formatMessage(_messages.dateRangeMessages[mapping[option]]);
|
|
25
|
+
};
|
|
26
|
+
var getCurrentOptionLabel = exports.getCurrentOptionLabel = function getCurrentOptionLabel(formatDate, formatMessage, selection) {
|
|
27
|
+
var selectedOption = selection === null || selection === void 0 ? void 0 : selection.value;
|
|
28
|
+
if (selectedOption === 'custom') {
|
|
29
|
+
var hasFromDate = !!(selection !== null && selection !== void 0 && selection.from);
|
|
30
|
+
var hasToDate = !!(selection !== null && selection !== void 0 && selection.to);
|
|
31
|
+
var formattedFromDate = (0, _dateTime.getFormattedDate)((selection === null || selection === void 0 ? void 0 : selection.from) || '', 'date', formatDate);
|
|
32
|
+
var formattedToDate = (0, _dateTime.getFormattedDate)((selection === null || selection === void 0 ? void 0 : selection.to) || '', 'date', formatDate);
|
|
33
|
+
if (hasFromDate && !hasToDate) {
|
|
34
|
+
return formatMessage(_messages.dateRangeMessages.dateRangeAfterLabel, {
|
|
35
|
+
date: formattedFromDate
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
if (!hasFromDate && hasToDate) {
|
|
39
|
+
return formatMessage(_messages.dateRangeMessages.dateRangeBeforeLabel, {
|
|
40
|
+
date: formattedToDate
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
if (hasFromDate && hasToDate) {
|
|
44
|
+
return "".concat(formattedFromDate, " - ").concat(formattedToDate);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return getDropdownLabel(selectedOption, formatMessage);
|
|
48
|
+
};
|
|
49
|
+
var getInvalidDateRange = exports.getInvalidDateRange = function getInvalidDateRange(from, to) {
|
|
50
|
+
if (!from && !to) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
var dateFrom = new Date("".concat(from).concat(from ? 'T00:00:00' : ''));
|
|
54
|
+
var dateTo = new Date("".concat(to).concat(to ? 'T00:00:00' : ''));
|
|
55
|
+
var now = new Date();
|
|
56
|
+
if (dateFrom > now) {
|
|
57
|
+
return /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.dateRangeMessages.dateRangeCustomInvalidDateAfterToday);
|
|
58
|
+
}
|
|
59
|
+
if (dateFrom > dateTo) {
|
|
60
|
+
return /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.dateRangeMessages.dateRangeCustomInvalidDateAfterEnd);
|
|
61
|
+
}
|
|
62
|
+
if (dateTo > now) {
|
|
63
|
+
return /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.dateRangeMessages.dateRangeCustomInvalidToDateAfterToday);
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
};
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
8
9
|
var _react = _interopRequireDefault(require("react"));
|
|
9
10
|
var _primitives = require("@atlaskit/primitives");
|
|
10
11
|
var _dateRangePicker = require("./filters/date-range-picker");
|
|
@@ -18,7 +19,15 @@ var BasicFilterContainer = function BasicFilterContainer(_ref) {
|
|
|
18
19
|
_ref$selections = _ref.selections,
|
|
19
20
|
selections = _ref$selections === void 0 ? {} : _ref$selections,
|
|
20
21
|
isHydrating = _ref.isHydrating;
|
|
21
|
-
var
|
|
22
|
+
var lastModified = selections.lastModified,
|
|
23
|
+
editedOrCreatedBy = selections.editedOrCreatedBy;
|
|
24
|
+
var _ref2 = lastModified || [],
|
|
25
|
+
_ref3 = (0, _slicedToArray2.default)(_ref2, 1),
|
|
26
|
+
lastModifiedValue = _ref3[0];
|
|
27
|
+
var lastModifiedSelection = (lastModifiedValue === null || lastModifiedValue === void 0 ? void 0 : lastModifiedValue.optionType) === 'dateRange' ? lastModifiedValue : undefined;
|
|
28
|
+
var onDateRangePickerChange = function onDateRangePickerChange(filterType, updatedOption) {
|
|
29
|
+
onChange(filterType, [updatedOption]);
|
|
30
|
+
};
|
|
22
31
|
return /*#__PURE__*/_react.default.createElement(_primitives.Flex, {
|
|
23
32
|
xcss: basicFilterContainerStyles,
|
|
24
33
|
gap: "space.100",
|
|
@@ -29,7 +38,8 @@ var BasicFilterContainer = function BasicFilterContainer(_ref) {
|
|
|
29
38
|
selection: editedOrCreatedBy || [],
|
|
30
39
|
isHydrating: isHydrating
|
|
31
40
|
}), /*#__PURE__*/_react.default.createElement(_dateRangePicker.DateRangePicker, {
|
|
32
|
-
|
|
41
|
+
selection: lastModifiedSelection,
|
|
42
|
+
onSelectionChange: onDateRangePickerChange
|
|
33
43
|
}));
|
|
34
44
|
};
|
|
35
45
|
var _default = exports.default = BasicFilterContainer;
|
|
@@ -108,14 +108,18 @@ var PlainConfluenceSearchConfigModal = exports.PlainConfluenceSearchConfigModal
|
|
|
108
108
|
_useState10 = (0, _slicedToArray2.default)(_useState9, 2),
|
|
109
109
|
visibleColumnKeys = _useState10[0],
|
|
110
110
|
setVisibleColumnKeys = _useState10[1];
|
|
111
|
-
var _useState11 = (0, _react.useState)(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.
|
|
111
|
+
var _useState11 = (0, _react.useState)((initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.contributorAccountIds) || []),
|
|
112
112
|
_useState12 = (0, _slicedToArray2.default)(_useState11, 2),
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
var _useState13 = (0, _react.useState)(
|
|
113
|
+
contributorAccountIds = _useState12[0],
|
|
114
|
+
setContributorAccountIds = _useState12[1];
|
|
115
|
+
var _useState13 = (0, _react.useState)(initialParameters !== null && initialParameters !== void 0 && initialParameters.lastModified ? {
|
|
116
|
+
value: initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.lastModified,
|
|
117
|
+
from: initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.lastModifiedFrom,
|
|
118
|
+
to: initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.lastModifiedTo
|
|
119
|
+
} : undefined),
|
|
116
120
|
_useState14 = (0, _slicedToArray2.default)(_useState13, 2),
|
|
117
|
-
|
|
118
|
-
|
|
121
|
+
lastModified = _useState14[0],
|
|
122
|
+
setLastModified = _useState14[1];
|
|
119
123
|
|
|
120
124
|
// analytics related parameters
|
|
121
125
|
var searchCount = (0, _react.useRef)(0);
|
|
@@ -125,15 +129,19 @@ var PlainConfluenceSearchConfigModal = exports.PlainConfluenceSearchConfigModal
|
|
|
125
129
|
// TODO: further refactoring in EDM-9573
|
|
126
130
|
// https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo/pull-requests/82725/overview?commentId=6829210
|
|
127
131
|
var parameters = (0, _react.useMemo)(function () {
|
|
128
|
-
return _objectSpread(_objectSpread(_objectSpread({}, initialParameters), {}, {
|
|
132
|
+
return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, initialParameters), {}, {
|
|
129
133
|
cloudId: cloudId,
|
|
130
134
|
searchString: searchString
|
|
131
|
-
}, ((initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.lastModified) || lastModified) && {
|
|
132
|
-
lastModified: lastModified
|
|
135
|
+
}, ((initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.lastModified) || (lastModified === null || lastModified === void 0 ? void 0 : lastModified.value)) && {
|
|
136
|
+
lastModified: lastModified === null || lastModified === void 0 ? void 0 : lastModified.value
|
|
137
|
+
}), ((initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.lastModifiedFrom) || (lastModified === null || lastModified === void 0 ? void 0 : lastModified.from)) && {
|
|
138
|
+
lastModifiedFrom: lastModified === null || lastModified === void 0 ? void 0 : lastModified.from
|
|
139
|
+
}), ((initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.lastModifiedTo) || (lastModified === null || lastModified === void 0 ? void 0 : lastModified.to)) && {
|
|
140
|
+
lastModifiedTo: lastModified === null || lastModified === void 0 ? void 0 : lastModified.to
|
|
133
141
|
}), ((initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.contributorAccountIds) || (contributorAccountIds === null || contributorAccountIds === void 0 ? void 0 : contributorAccountIds.length) > 0) && {
|
|
134
142
|
contributorAccountIds: contributorAccountIds
|
|
135
143
|
});
|
|
136
|
-
}, [
|
|
144
|
+
}, [initialParameters, cloudId, searchString, lastModified, contributorAccountIds]);
|
|
137
145
|
var initialFilterSelection = (0, _react.useMemo)(function () {
|
|
138
146
|
return {
|
|
139
147
|
editedOrCreatedBy: (initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.contributorAccountIds) || []
|
|
@@ -312,8 +320,17 @@ var PlainConfluenceSearchConfigModal = exports.PlainConfluenceSearchConfigModal
|
|
|
312
320
|
if (contributorAccountIds.length > 0) {
|
|
313
321
|
params.append('contributors', contributorAccountIds.join(','));
|
|
314
322
|
}
|
|
323
|
+
if (lastModified !== null && lastModified !== void 0 && lastModified.value) {
|
|
324
|
+
params.append('lastModified', lastModified.value);
|
|
325
|
+
}
|
|
326
|
+
if (lastModified !== null && lastModified !== void 0 && lastModified.from) {
|
|
327
|
+
params.append('from', lastModified === null || lastModified === void 0 ? void 0 : lastModified.from);
|
|
328
|
+
}
|
|
329
|
+
if (lastModified !== null && lastModified !== void 0 && lastModified.to) {
|
|
330
|
+
params.append('to', lastModified === null || lastModified === void 0 ? void 0 : lastModified.to);
|
|
331
|
+
}
|
|
315
332
|
return "".concat(selectedConfluenceSiteUrl, "/wiki/search?").concat(params.toString());
|
|
316
|
-
}, [contributorAccountIds, searchString, selectedConfluenceSiteUrl]);
|
|
333
|
+
}, [contributorAccountIds, lastModified, searchString, selectedConfluenceSiteUrl]);
|
|
317
334
|
var analyticsPayload = (0, _react.useMemo)(function () {
|
|
318
335
|
return {
|
|
319
336
|
extensionKey: extensionKey,
|
|
@@ -453,10 +470,16 @@ var PlainConfluenceSearchConfigModal = exports.PlainConfluenceSearchConfigModal
|
|
|
453
470
|
var editedOrCreatedBy = filters.editedOrCreatedBy,
|
|
454
471
|
_lastModified = filters.lastModified;
|
|
455
472
|
if (_lastModified) {
|
|
456
|
-
var
|
|
473
|
+
var updatedDateRangeOption = _lastModified.find(function (range) {
|
|
457
474
|
return range.value;
|
|
458
475
|
});
|
|
459
|
-
|
|
476
|
+
if ((updatedDateRangeOption === null || updatedDateRangeOption === void 0 ? void 0 : updatedDateRangeOption.optionType) === 'dateRange') {
|
|
477
|
+
setLastModified({
|
|
478
|
+
value: updatedDateRangeOption.value,
|
|
479
|
+
from: updatedDateRangeOption.from,
|
|
480
|
+
to: updatedDateRangeOption.to
|
|
481
|
+
});
|
|
482
|
+
}
|
|
460
483
|
}
|
|
461
484
|
if (editedOrCreatedBy) {
|
|
462
485
|
var accountIds = editedOrCreatedBy.map(function (user) {
|
|
@@ -12,7 +12,7 @@ var _analytics = require("../../../analytics");
|
|
|
12
12
|
var jsmTextStyles = (0, _primitives.xcss)({
|
|
13
13
|
fontSize: 'small',
|
|
14
14
|
color: 'color.text.subtle',
|
|
15
|
-
marginLeft:
|
|
15
|
+
marginLeft: 'space.075',
|
|
16
16
|
':hover': {
|
|
17
17
|
color: 'color.link.pressed'
|
|
18
18
|
}
|