@k-int/stripes-kint-components 2.3.3 → 2.4.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 +12 -8
- package/es/index.js +26 -2
- package/es/lib/ActionList/ActionListFieldArray.js +1 -1
- package/es/lib/SASQLookupComponent/SASQLookupComponent.js +61 -105
- package/es/lib/SASQLookupComponent/TableBody/TableBody.js +146 -0
- package/es/lib/SASQLookupComponent/TableBody/index.js +19 -0
- package/es/lib/SASQLookupComponent/index.js +9 -1
- package/es/lib/SASQRoute/SASQRoute.js +2 -2
- package/es/lib/utils/highlightString.js +94 -0
- package/es/lib/utils/index.js +23 -1
- package/es/lib/utils/matchString.js +59 -0
- package/package.json +1 -1
- package/src/index.js +6 -1
- package/src/lib/ActionList/ActionListFieldArray.js +1 -1
- package/src/lib/SASQLookupComponent/SASQLookupComponent.js +39 -77
- package/src/lib/SASQLookupComponent/TableBody/TableBody.js +96 -0
- package/src/lib/SASQLookupComponent/TableBody/index.js +1 -0
- package/src/lib/SASQLookupComponent/index.js +2 -1
- package/src/lib/SASQRoute/SASQRoute.js +1 -1
- package/src/lib/utils/highlightString.js +42 -0
- package/src/lib/utils/index.js +4 -0
- package/src/lib/utils/matchString.js +14 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
|
-
## 2.
|
|
2
|
-
*
|
|
3
|
-
* Fixed improper custom property count behaviour in view mode, now only _set_ primary properties are included in the count.
|
|
4
|
-
|
|
5
|
-
## 2.3.2 2022-04-01
|
|
1
|
+
## 2.4.0 2022-04-21
|
|
2
|
+
* Custom Property component fixes
|
|
6
3
|
* Fix to actionAssigner callback pattern
|
|
7
4
|
* Tweak to remove marginBottom0 warning
|
|
8
5
|
* FormModal buttons have marginBottom0 prop on them now
|
|
9
6
|
* Fixed issue where cusotm property updates would not be reflected on the open view pane in settings
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
*
|
|
7
|
+
* Fixed inconsistent `retiredName` labelOverride function behaviour, where in `filters` the function accepted the name, and in `view` the function accepted the entire object. The behaviour has been standardised to be the name alone in both scenarios.
|
|
8
|
+
* Fixed improper custom property count behaviour in view mode, now only _set_ primary properties are included in the count.
|
|
9
|
+
* ActionListFieldArray changed autofocus to autoFocus to avoid react console noise
|
|
10
|
+
* Refactored SASQ Components to fix various bugs/oddities
|
|
11
|
+
* TableBody default now exported as SASQTableBody from module
|
|
12
|
+
* Table now no longer redraws on row click
|
|
13
|
+
* Formatting tweaks to fix horizontal scroll issue
|
|
14
|
+
* Manually clearing the search field now has the same effect as clicking the "x" button to clear, ensuring the items are refetched without a search term.
|
|
15
|
+
* Implementor can pass props to the filter pane via "filterPaneProps" on SASQRoute/SASQLookupComponent
|
|
16
|
+
* boldString, highlightString, matchString util functions
|
|
13
17
|
|
|
14
18
|
## 2.3.0 2022-03-25
|
|
15
19
|
* FormModal
|
package/es/index.js
CHANGED
|
@@ -140,7 +140,7 @@ Object.defineProperty(exports, "RefdataButtons", {
|
|
|
140
140
|
Object.defineProperty(exports, "SASQLookupComponent", {
|
|
141
141
|
enumerable: true,
|
|
142
142
|
get: function get() {
|
|
143
|
-
return _SASQLookupComponent.
|
|
143
|
+
return _SASQLookupComponent.SASQLookupComponent;
|
|
144
144
|
}
|
|
145
145
|
});
|
|
146
146
|
Object.defineProperty(exports, "SASQRoute", {
|
|
@@ -149,6 +149,12 @@ Object.defineProperty(exports, "SASQRoute", {
|
|
|
149
149
|
return _SASQRoute.default;
|
|
150
150
|
}
|
|
151
151
|
});
|
|
152
|
+
Object.defineProperty(exports, "SASQTableBody", {
|
|
153
|
+
enumerable: true,
|
|
154
|
+
get: function get() {
|
|
155
|
+
return _SASQLookupComponent.TableBody;
|
|
156
|
+
}
|
|
157
|
+
});
|
|
152
158
|
Object.defineProperty(exports, "SASQViewComponent", {
|
|
153
159
|
enumerable: true,
|
|
154
160
|
get: function get() {
|
|
@@ -185,6 +191,12 @@ Object.defineProperty(exports, "Typedown", {
|
|
|
185
191
|
return _Typedown.default;
|
|
186
192
|
}
|
|
187
193
|
});
|
|
194
|
+
Object.defineProperty(exports, "boldString", {
|
|
195
|
+
enumerable: true,
|
|
196
|
+
get: function get() {
|
|
197
|
+
return _utils.boldString;
|
|
198
|
+
}
|
|
199
|
+
});
|
|
188
200
|
Object.defineProperty(exports, "composeValidators", {
|
|
189
201
|
enumerable: true,
|
|
190
202
|
get: function get() {
|
|
@@ -210,12 +222,24 @@ Object.defineProperty(exports, "groupCustomPropertiesByCtx", {
|
|
|
210
222
|
return _utils.groupCustomPropertiesByCtx;
|
|
211
223
|
}
|
|
212
224
|
});
|
|
225
|
+
Object.defineProperty(exports, "highlightString", {
|
|
226
|
+
enumerable: true,
|
|
227
|
+
get: function get() {
|
|
228
|
+
return _utils.highlightString;
|
|
229
|
+
}
|
|
230
|
+
});
|
|
213
231
|
Object.defineProperty(exports, "invalidNumber", {
|
|
214
232
|
enumerable: true,
|
|
215
233
|
get: function get() {
|
|
216
234
|
return _validators.invalidNumber;
|
|
217
235
|
}
|
|
218
236
|
});
|
|
237
|
+
Object.defineProperty(exports, "matchString", {
|
|
238
|
+
enumerable: true,
|
|
239
|
+
get: function get() {
|
|
240
|
+
return _utils.matchString;
|
|
241
|
+
}
|
|
242
|
+
});
|
|
219
243
|
Object.defineProperty(exports, "refdataOptions", {
|
|
220
244
|
enumerable: true,
|
|
221
245
|
get: function get() {
|
|
@@ -371,7 +395,7 @@ var _SearchField = _interopRequireDefault(require("./lib/SearchField"));
|
|
|
371
395
|
|
|
372
396
|
var _SASQRoute = _interopRequireDefault(require("./lib/SASQRoute"));
|
|
373
397
|
|
|
374
|
-
var _SASQLookupComponent =
|
|
398
|
+
var _SASQLookupComponent = require("./lib/SASQLookupComponent");
|
|
375
399
|
|
|
376
400
|
var _SASQViewComponent = _interopRequireDefault(require("./lib/SASQViewComponent"));
|
|
377
401
|
|
|
@@ -322,7 +322,7 @@ var ActionListFieldArray = function ActionListFieldArray(_ref) {
|
|
|
322
322
|
returnObj[key] = fieldComponents[key] ? fieldComponents[key]({
|
|
323
323
|
name: "".concat(fieldName, ".").concat(key)
|
|
324
324
|
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFinalForm.Field, {
|
|
325
|
-
|
|
325
|
+
autoFocus: fieldIndex === 0,
|
|
326
326
|
component: _components.TextField,
|
|
327
327
|
marginBottom0: true,
|
|
328
328
|
name: "".concat(fieldName, ".").concat(key),
|
|
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
|
|
8
|
-
var _react = _interopRequireDefault(require("react"));
|
|
9
|
-
|
|
10
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
9
|
|
|
12
10
|
var _reactIntl = require("react-intl");
|
|
@@ -19,14 +17,16 @@ var _smartComponents = require("@folio/stripes/smart-components");
|
|
|
19
17
|
|
|
20
18
|
var _components = require("@folio/stripes/components");
|
|
21
19
|
|
|
22
|
-
var _NoResultsMessage = _interopRequireDefault(require("../NoResultsMessage"));
|
|
23
|
-
|
|
24
20
|
var _utils = require("../utils");
|
|
25
21
|
|
|
26
22
|
var _hooks = require("../hooks");
|
|
27
23
|
|
|
24
|
+
var _TableBody = _interopRequireDefault(require("./TableBody"));
|
|
25
|
+
|
|
28
26
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
29
27
|
|
|
28
|
+
var _excluded = ["data"];
|
|
29
|
+
|
|
30
30
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
31
31
|
|
|
32
32
|
(function () {
|
|
@@ -48,6 +48,10 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
48
48
|
|
|
49
49
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
50
50
|
|
|
51
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
52
|
+
|
|
53
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
54
|
+
|
|
51
55
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
52
56
|
|
|
53
57
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
@@ -64,32 +68,26 @@ var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoader
|
|
|
64
68
|
return a;
|
|
65
69
|
};
|
|
66
70
|
|
|
67
|
-
var SASQLookupComponent = function SASQLookupComponent(
|
|
71
|
+
var SASQLookupComponent = function SASQLookupComponent(props) {
|
|
68
72
|
var _totalData$pages$redu, _totalData$pages;
|
|
69
73
|
|
|
70
|
-
var _children =
|
|
71
|
-
|
|
72
|
-
fetchParameters =
|
|
73
|
-
|
|
74
|
-
|
|
74
|
+
var _children = props.children,
|
|
75
|
+
_props$fetchParameter = props.fetchParameters,
|
|
76
|
+
fetchParameters = _props$fetchParameter === void 0 ? {} : _props$fetchParameter,
|
|
77
|
+
_props$FilterComponen = props.FilterComponent,
|
|
78
|
+
FilterComponent = _props$FilterComponen === void 0 ? function () {
|
|
75
79
|
return null;
|
|
76
|
-
} :
|
|
77
|
-
|
|
78
|
-
|
|
80
|
+
} : _props$FilterComponen,
|
|
81
|
+
_props$FilterPaneHead = props.FilterPaneHeaderComponent,
|
|
82
|
+
FilterPaneHeaderComponent = _props$FilterPaneHead === void 0 ? function () {
|
|
79
83
|
return null;
|
|
80
|
-
} :
|
|
81
|
-
|
|
82
|
-
id =
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
noSearchField = _ref.noSearchField,
|
|
88
|
-
path = _ref.path,
|
|
89
|
-
_ref$resultColumns = _ref.resultColumns,
|
|
90
|
-
resultColumns = _ref$resultColumns === void 0 ? [] : _ref$resultColumns,
|
|
91
|
-
RenderBody = _ref.RenderBody,
|
|
92
|
-
sasqProps = _ref.sasqProps;
|
|
84
|
+
} : _props$FilterPaneHead,
|
|
85
|
+
filterPaneProps = props.filterPaneProps,
|
|
86
|
+
id = props.id,
|
|
87
|
+
mainPaneProps = props.mainPaneProps,
|
|
88
|
+
noSearchField = props.noSearchField,
|
|
89
|
+
RenderBody = props.RenderBody,
|
|
90
|
+
sasqProps = props.sasqProps;
|
|
93
91
|
|
|
94
92
|
var _useKiwtSASQuery = (0, _hooks.useKiwtSASQuery)(),
|
|
95
93
|
query = _useKiwtSASQuery.query,
|
|
@@ -102,9 +100,9 @@ var SASQLookupComponent = function SASQLookupComponent(_ref) {
|
|
|
102
100
|
var ky = (0, _core.useOkapiKy)();
|
|
103
101
|
var filterPaneVisibileKey = "".concat(namespace, "-").concat(id, "-filterPaneVisibility");
|
|
104
102
|
|
|
105
|
-
var fetchPageData = function fetchPageData(
|
|
106
|
-
var
|
|
107
|
-
pageParam =
|
|
103
|
+
var fetchPageData = function fetchPageData(_ref) {
|
|
104
|
+
var _ref$pageParam = _ref.pageParam,
|
|
105
|
+
pageParam = _ref$pageParam === void 0 ? 0 : _ref$pageParam;
|
|
108
106
|
var queryMap = fetchParameters.SASQ_MAP;
|
|
109
107
|
queryMap.offset = pageParam;
|
|
110
108
|
return ky("".concat(fetchParameters.endpoint).concat((0, _utils.generateKiwtQuery)(queryMap, query))).json();
|
|
@@ -122,10 +120,7 @@ var SASQLookupComponent = function SASQLookupComponent(_ref) {
|
|
|
122
120
|
var _useInfiniteQuery = (0, _reactQuery.useInfiniteQuery)([namespace, id, 'data', query], fetchPageData),
|
|
123
121
|
_useInfiniteQuery$dat = _useInfiniteQuery.data,
|
|
124
122
|
totalData = _useInfiniteQuery$dat === void 0 ? {} : _useInfiniteQuery$dat,
|
|
125
|
-
|
|
126
|
-
isError = _useInfiniteQuery.isError,
|
|
127
|
-
isLoading = _useInfiniteQuery.isLoading,
|
|
128
|
-
fetchNextPage = _useInfiniteQuery.fetchNextPage;
|
|
123
|
+
restOfInfiniteQueryProps = _objectWithoutProperties(_useInfiniteQuery, _excluded);
|
|
129
124
|
|
|
130
125
|
var data = (_totalData$pages$redu = (_totalData$pages = totalData.pages) === null || _totalData$pages === void 0 ? void 0 : _totalData$pages.reduce(function (acc, curr) {
|
|
131
126
|
var _acc$results, _curr$results;
|
|
@@ -147,22 +142,7 @@ var SASQLookupComponent = function SASQLookupComponent(_ref) {
|
|
|
147
142
|
newResults.push.apply(newResults, _toConsumableArray((_curr$results = curr.results) !== null && _curr$results !== void 0 ? _curr$results : []));
|
|
148
143
|
newAcc.results = newResults;
|
|
149
144
|
return newAcc;
|
|
150
|
-
}, {})) !== null && _totalData$pages$redu !== void 0 ? _totalData$pages$redu : {};
|
|
151
|
-
|
|
152
|
-
var onNeedMoreData = function onNeedMoreData(_askAmount, index) {
|
|
153
|
-
fetchNextPage({
|
|
154
|
-
pageParam: index
|
|
155
|
-
});
|
|
156
|
-
}; // Build the map of column definitions
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
var columnMapping = Object.fromEntries(resultColumns.map(function (e) {
|
|
160
|
-
return [e.propertyPath, e.label];
|
|
161
|
-
})); // Build the list of visible columns
|
|
162
|
-
|
|
163
|
-
var visibleColumns = resultColumns.map(function (e) {
|
|
164
|
-
return e.propertyPath;
|
|
165
|
-
});
|
|
145
|
+
}, {})) !== null && _totalData$pages$redu !== void 0 ? _totalData$pages$redu : {};
|
|
166
146
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_smartComponents.SearchAndSortQuery, _objectSpread(_objectSpread({
|
|
167
147
|
initialSearchState: {
|
|
168
148
|
query: ''
|
|
@@ -170,61 +150,23 @@ var SASQLookupComponent = function SASQLookupComponent(_ref) {
|
|
|
170
150
|
queryGetter: queryGetter,
|
|
171
151
|
querySetter: querySetter
|
|
172
152
|
}, sasqProps), {}, {
|
|
173
|
-
children: function children(
|
|
174
|
-
var
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
resetAll = _ref3.resetAll,
|
|
183
|
-
searchChanged = _ref3.searchChanged,
|
|
184
|
-
searchValue = _ref3.searchValue;
|
|
153
|
+
children: function children(sasqRenderProps) {
|
|
154
|
+
var activeFilters = sasqRenderProps.activeFilters,
|
|
155
|
+
filterChanged = sasqRenderProps.filterChanged,
|
|
156
|
+
getFilterHandlers = sasqRenderProps.getFilterHandlers,
|
|
157
|
+
getSearchHandlers = sasqRenderProps.getSearchHandlers,
|
|
158
|
+
onSubmitSearch = sasqRenderProps.onSubmitSearch,
|
|
159
|
+
resetAll = sasqRenderProps.resetAll,
|
|
160
|
+
searchChanged = sasqRenderProps.searchChanged,
|
|
161
|
+
searchValue = sasqRenderProps.searchValue;
|
|
185
162
|
var searchHandlers = getSearchHandlers();
|
|
186
|
-
var sortOrder = (_query$sort = query.sort) !== null && _query$sort !== void 0 ? _query$sort : '';
|
|
187
163
|
var disableReset = !filterChanged && !searchChanged;
|
|
188
164
|
var filterCount = activeFilters.string ? activeFilters.string.split(',').length : 0;
|
|
189
|
-
|
|
190
|
-
var TableBody = function TableBody() {
|
|
191
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.MultiColumnList, _objectSpread({
|
|
192
|
-
autosize: true,
|
|
193
|
-
columnMapping: columnMapping,
|
|
194
|
-
contentData: data === null || data === void 0 ? void 0 : data.results,
|
|
195
|
-
isEmptyMessage: /*#__PURE__*/(0, _jsxRuntime.jsx)(_NoResultsMessage.default, {
|
|
196
|
-
error: error,
|
|
197
|
-
isError: isError,
|
|
198
|
-
isLoading: isLoading,
|
|
199
|
-
filterPaneIsVisible: filterPaneVisible,
|
|
200
|
-
searchTerm: query.query,
|
|
201
|
-
toggleFilterPane: toggleFilterPane
|
|
202
|
-
}),
|
|
203
|
-
isSelected: function isSelected(_ref4) {
|
|
204
|
-
var _match$params;
|
|
205
|
-
|
|
206
|
-
var item = _ref4.item;
|
|
207
|
-
return item.id === (match === null || match === void 0 ? void 0 : (_match$params = match.params) === null || _match$params === void 0 ? void 0 : _match$params.id);
|
|
208
|
-
},
|
|
209
|
-
onHeaderClick: onSort,
|
|
210
|
-
onNeedMoreData: onNeedMoreData,
|
|
211
|
-
onRowClick: function onRowClick(_e, rowData) {
|
|
212
|
-
history.push("".concat(path, "/").concat(rowData === null || rowData === void 0 ? void 0 : rowData.id).concat(location === null || location === void 0 ? void 0 : location.search));
|
|
213
|
-
},
|
|
214
|
-
pagingType: "click",
|
|
215
|
-
sortDirection: sortOrder.startsWith('-') ? 'descending' : 'ascending',
|
|
216
|
-
sortOrder: sortOrder.replace(/^-/, '').replace(/,.*/, ''),
|
|
217
|
-
totalCount: data.totalRecords,
|
|
218
|
-
virtualize: true,
|
|
219
|
-
visibleColumns: visibleColumns
|
|
220
|
-
}, mclProps));
|
|
221
|
-
};
|
|
222
|
-
|
|
223
|
-
var Body = RenderBody !== null && RenderBody !== void 0 ? RenderBody : TableBody;
|
|
165
|
+
var Body = RenderBody !== null && RenderBody !== void 0 ? RenderBody : _TableBody.default;
|
|
224
166
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_smartComponents.PersistedPaneset, {
|
|
225
167
|
appId: namespace,
|
|
226
168
|
id: "".concat(id, "-paneset"),
|
|
227
|
-
children: [filterPaneVisible && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Pane, {
|
|
169
|
+
children: [filterPaneVisible && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Pane, _objectSpread(_objectSpread({
|
|
228
170
|
defaultWidth: "20%",
|
|
229
171
|
lastMenu: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.PaneMenu, {
|
|
230
172
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.IconButton, {
|
|
@@ -236,14 +178,23 @@ var SASQLookupComponent = function SASQLookupComponent(_ref) {
|
|
|
236
178
|
}),
|
|
237
179
|
paneTitle: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
|
|
238
180
|
id: "stripes-smart-components.searchAndFilter"
|
|
239
|
-
})
|
|
181
|
+
})
|
|
182
|
+
}, filterPaneProps), {}, {
|
|
240
183
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("form", {
|
|
241
184
|
onSubmit: onSubmitSearch,
|
|
242
185
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(FilterPaneHeaderComponent, {}), !noSearchField && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
243
186
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.SearchField, {
|
|
244
187
|
autoFocus: true,
|
|
245
188
|
name: "query",
|
|
246
|
-
onChange:
|
|
189
|
+
onChange: function onChange(e) {
|
|
190
|
+
var _e$target;
|
|
191
|
+
|
|
192
|
+
if ((_e$target = e.target) !== null && _e$target !== void 0 && _e$target.value) {
|
|
193
|
+
searchHandlers.query(e); // SASQ needs the whole event here
|
|
194
|
+
} else {
|
|
195
|
+
searchHandlers.reset();
|
|
196
|
+
}
|
|
197
|
+
},
|
|
247
198
|
onClear: searchHandlers.reset,
|
|
248
199
|
value: searchValue.query
|
|
249
200
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
|
|
@@ -276,7 +227,7 @@ var SASQLookupComponent = function SASQLookupComponent(_ref) {
|
|
|
276
227
|
searchValue: searchValue
|
|
277
228
|
})]
|
|
278
229
|
})
|
|
279
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Pane, _objectSpread(_objectSpread({
|
|
230
|
+
})), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Pane, _objectSpread(_objectSpread({
|
|
280
231
|
defaultWidth: "fill",
|
|
281
232
|
firstMenu: !filterPaneVisible ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.PaneMenu, {
|
|
282
233
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.IconButton, {
|
|
@@ -287,6 +238,8 @@ var SASQLookupComponent = function SASQLookupComponent(_ref) {
|
|
|
287
238
|
}
|
|
288
239
|
})
|
|
289
240
|
}) : null,
|
|
241
|
+
noOverflow: true,
|
|
242
|
+
padContent: false,
|
|
290
243
|
paneSub: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
|
|
291
244
|
id: "stripes-kint-components.sasqLookupComponent.mainPane.found",
|
|
292
245
|
values: {
|
|
@@ -294,22 +247,25 @@ var SASQLookupComponent = function SASQLookupComponent(_ref) {
|
|
|
294
247
|
}
|
|
295
248
|
})
|
|
296
249
|
}, mainPaneProps), {}, {
|
|
297
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Body, {
|
|
298
|
-
data: data
|
|
299
|
-
|
|
250
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Body, _objectSpread(_objectSpread(_objectSpread({
|
|
251
|
+
data: data,
|
|
252
|
+
query: query,
|
|
253
|
+
toggleFilterPane: toggleFilterPane
|
|
254
|
+
}, restOfInfiniteQueryProps), sasqProps), props))
|
|
300
255
|
})), _children]
|
|
301
256
|
});
|
|
302
257
|
}
|
|
303
258
|
}));
|
|
304
259
|
};
|
|
305
260
|
|
|
306
|
-
__signature__(SASQLookupComponent, "useKiwtSASQuery{{ query, queryGetter, querySetter }}\nuseNamespace{{ 0: namespace }}\nuseOkapiKy{ky}\nuseLocalStorageState{[filterPaneVisible, setFilterPaneVisible]}\nuseInfiniteQuery{{\n data: totalData = {},\n
|
|
261
|
+
__signature__(SASQLookupComponent, "useKiwtSASQuery{{ query, queryGetter, querySetter }}\nuseNamespace{{ 0: namespace }}\nuseOkapiKy{ky}\nuseLocalStorageState{[filterPaneVisible, setFilterPaneVisible]}\nuseInfiniteQuery{{\n data: totalData = {},\n ...restOfInfiniteQueryProps\n }}", function () {
|
|
307
262
|
return [_hooks.useKiwtSASQuery, _core.useNamespace, _core.useOkapiKy, _hooks.useLocalStorageState, _reactQuery.useInfiniteQuery];
|
|
308
263
|
});
|
|
309
264
|
|
|
310
265
|
SASQLookupComponent.propTypes = {
|
|
311
266
|
children: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.node]),
|
|
312
267
|
fetchParameters: _propTypes.default.object,
|
|
268
|
+
filterPaneProps: _propTypes.default.object,
|
|
313
269
|
FilterComponent: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.node]),
|
|
314
270
|
FilterPaneHeaderComponent: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.node]),
|
|
315
271
|
history: _propTypes.default.object,
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
|
|
10
|
+
var _reactRouterDom = require("react-router-dom");
|
|
11
|
+
|
|
12
|
+
var _components = require("@folio/stripes/components");
|
|
13
|
+
|
|
14
|
+
var _NoResultsMessage = _interopRequireDefault(require("../../NoResultsMessage"));
|
|
15
|
+
|
|
16
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
17
|
+
|
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
+
|
|
20
|
+
(function () {
|
|
21
|
+
var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
|
|
22
|
+
enterModule && enterModule(module);
|
|
23
|
+
})();
|
|
24
|
+
|
|
25
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
26
|
+
|
|
27
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
28
|
+
|
|
29
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
30
|
+
|
|
31
|
+
var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
|
|
32
|
+
return a;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
var TableBody = function TableBody(_ref) {
|
|
36
|
+
var _query$sort;
|
|
37
|
+
|
|
38
|
+
var data = _ref.data,
|
|
39
|
+
error = _ref.error,
|
|
40
|
+
fetchNextPage = _ref.fetchNextPage,
|
|
41
|
+
filterPaneVisible = _ref.filterPaneVisible,
|
|
42
|
+
isError = _ref.isError,
|
|
43
|
+
isLoading = _ref.isLoading,
|
|
44
|
+
match = _ref.match,
|
|
45
|
+
mclProps = _ref.mclProps,
|
|
46
|
+
onSort = _ref.onSort,
|
|
47
|
+
path = _ref.path,
|
|
48
|
+
resultColumns = _ref.resultColumns,
|
|
49
|
+
toggleFilterPane = _ref.toggleFilterPane,
|
|
50
|
+
query = _ref.query;
|
|
51
|
+
var sortOrder = (_query$sort = query.sort) !== null && _query$sort !== void 0 ? _query$sort : '';
|
|
52
|
+
var history = (0, _reactRouterDom.useHistory)();
|
|
53
|
+
var location = (0, _reactRouterDom.useLocation)();
|
|
54
|
+
|
|
55
|
+
var onNeedMoreData = function onNeedMoreData(_askAmount, index) {
|
|
56
|
+
fetchNextPage({
|
|
57
|
+
pageParam: index
|
|
58
|
+
});
|
|
59
|
+
}; // Build the map of column definitions
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
var columnMapping = Object.fromEntries(resultColumns.map(function (e) {
|
|
63
|
+
return [e.propertyPath, e.label];
|
|
64
|
+
})); // Build the list of visible columns
|
|
65
|
+
|
|
66
|
+
var visibleColumns = resultColumns.map(function (e) {
|
|
67
|
+
return e.propertyPath;
|
|
68
|
+
});
|
|
69
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.MultiColumnList, _objectSpread({
|
|
70
|
+
autosize: true,
|
|
71
|
+
columnMapping: columnMapping,
|
|
72
|
+
contentData: data === null || data === void 0 ? void 0 : data.results,
|
|
73
|
+
hasMargin: true,
|
|
74
|
+
isEmptyMessage: /*#__PURE__*/(0, _jsxRuntime.jsx)(_NoResultsMessage.default, {
|
|
75
|
+
error: error,
|
|
76
|
+
isError: isError,
|
|
77
|
+
isLoading: isLoading,
|
|
78
|
+
filterPaneIsVisible: filterPaneVisible,
|
|
79
|
+
searchTerm: query.query,
|
|
80
|
+
toggleFilterPane: toggleFilterPane
|
|
81
|
+
}),
|
|
82
|
+
isSelected: function isSelected(_ref2) {
|
|
83
|
+
var _match$params;
|
|
84
|
+
|
|
85
|
+
var item = _ref2.item;
|
|
86
|
+
return item.id === (match === null || match === void 0 ? void 0 : (_match$params = match.params) === null || _match$params === void 0 ? void 0 : _match$params.id);
|
|
87
|
+
},
|
|
88
|
+
onHeaderClick: onSort,
|
|
89
|
+
onNeedMoreData: onNeedMoreData,
|
|
90
|
+
onRowClick: function onRowClick(_e, rowData) {
|
|
91
|
+
history.push("".concat(path, "/").concat(rowData === null || rowData === void 0 ? void 0 : rowData.id).concat(location === null || location === void 0 ? void 0 : location.search));
|
|
92
|
+
},
|
|
93
|
+
pagingType: "click",
|
|
94
|
+
sortDirection: sortOrder.startsWith('-') ? 'descending' : 'ascending',
|
|
95
|
+
sortOrder: sortOrder.replace(/^-/, '').replace(/,.*/, ''),
|
|
96
|
+
totalCount: data.totalRecords,
|
|
97
|
+
visibleColumns: visibleColumns
|
|
98
|
+
}, mclProps));
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
__signature__(TableBody, "useHistory{history}\nuseLocation{location}", function () {
|
|
102
|
+
return [_reactRouterDom.useHistory, _reactRouterDom.useLocation];
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
TableBody.propTypes = {
|
|
106
|
+
data: _propTypes.default.shape({
|
|
107
|
+
totalRecords: _propTypes.default.number,
|
|
108
|
+
results: _propTypes.default.arrayOf(_propTypes.default.object)
|
|
109
|
+
}),
|
|
110
|
+
error: _propTypes.default.object,
|
|
111
|
+
fetchNextPage: _propTypes.default.func,
|
|
112
|
+
filterPaneVisible: _propTypes.default.bool,
|
|
113
|
+
history: _propTypes.default.object,
|
|
114
|
+
isError: _propTypes.default.bool,
|
|
115
|
+
isLoading: _propTypes.default.bool,
|
|
116
|
+
location: _propTypes.default.object,
|
|
117
|
+
match: _propTypes.default.object,
|
|
118
|
+
mclProps: _propTypes.default.object,
|
|
119
|
+
onSort: _propTypes.default.func,
|
|
120
|
+
path: _propTypes.default.string.isRequired,
|
|
121
|
+
query: _propTypes.default.object,
|
|
122
|
+
resultColumns: _propTypes.default.arrayOf(_propTypes.default.object),
|
|
123
|
+
toggleFilterPane: _propTypes.default.func
|
|
124
|
+
};
|
|
125
|
+
var _default = TableBody;
|
|
126
|
+
var _default2 = _default;
|
|
127
|
+
exports.default = _default2;
|
|
128
|
+
;
|
|
129
|
+
|
|
130
|
+
(function () {
|
|
131
|
+
var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;
|
|
132
|
+
|
|
133
|
+
if (!reactHotLoader) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
reactHotLoader.register(TableBody, "TableBody", "/home/ethan/FolioModules/stripes-kint-components/src/lib/SASQLookupComponent/TableBody/TableBody.js");
|
|
138
|
+
reactHotLoader.register(_default, "default", "/home/ethan/FolioModules/stripes-kint-components/src/lib/SASQLookupComponent/TableBody/TableBody.js");
|
|
139
|
+
})();
|
|
140
|
+
|
|
141
|
+
;
|
|
142
|
+
|
|
143
|
+
(function () {
|
|
144
|
+
var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;
|
|
145
|
+
leaveModule && leaveModule(module);
|
|
146
|
+
})();
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "default", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _TableBody.default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
var _TableBody = _interopRequireDefault(require("./TableBody"));
|
|
14
|
+
|
|
15
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
|
+
|
|
17
|
+
var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
|
|
18
|
+
return a;
|
|
19
|
+
};
|
|
@@ -3,15 +3,23 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
Object.defineProperty(exports, "
|
|
6
|
+
Object.defineProperty(exports, "SASQLookupComponent", {
|
|
7
7
|
enumerable: true,
|
|
8
8
|
get: function get() {
|
|
9
9
|
return _SASQLookupComponent.default;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
+
Object.defineProperty(exports, "TableBody", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function get() {
|
|
15
|
+
return _TableBody.default;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
12
18
|
|
|
13
19
|
var _SASQLookupComponent = _interopRequireDefault(require("./SASQLookupComponent"));
|
|
14
20
|
|
|
21
|
+
var _TableBody = _interopRequireDefault(require("./TableBody"));
|
|
22
|
+
|
|
15
23
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
24
|
|
|
17
25
|
var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
|
|
@@ -11,7 +11,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
11
11
|
|
|
12
12
|
var _reactRouterDom = require("react-router-dom");
|
|
13
13
|
|
|
14
|
-
var _SASQLookupComponent =
|
|
14
|
+
var _SASQLookupComponent = require("../SASQLookupComponent");
|
|
15
15
|
|
|
16
16
|
var _SASQViewComponent = _interopRequireDefault(require("../SASQViewComponent"));
|
|
17
17
|
|
|
@@ -60,7 +60,7 @@ var SASQRoute = function SASQRoute(_ref) {
|
|
|
60
60
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactRouterDom.Route, {
|
|
61
61
|
path: "".concat(path, "/:id?"),
|
|
62
62
|
render: function render(routeProps) {
|
|
63
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_SASQLookupComponent.
|
|
63
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_SASQLookupComponent.SASQLookupComponent, _objectSpread(_objectSpread(_objectSpread({}, routeProps), {}, {
|
|
64
64
|
fetchParameters: fetchParameters,
|
|
65
65
|
path: path
|
|
66
66
|
}, props), {}, {
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.highlightString = exports.boldString = void 0;
|
|
7
|
+
|
|
8
|
+
var _matchString5 = _interopRequireDefault(require("./matchString"));
|
|
9
|
+
|
|
10
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
+
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
|
|
14
|
+
(function () {
|
|
15
|
+
var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
|
|
16
|
+
enterModule && enterModule(module);
|
|
17
|
+
})();
|
|
18
|
+
|
|
19
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
20
|
+
|
|
21
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
22
|
+
|
|
23
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
24
|
+
|
|
25
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
26
|
+
|
|
27
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
28
|
+
|
|
29
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
30
|
+
|
|
31
|
+
var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
|
|
32
|
+
return a;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
var highlightString = function highlightString(match, str) {
|
|
36
|
+
var ignoreNull = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
37
|
+
|
|
38
|
+
var _matchString = (0, _matchString5.default)(match, str, ignoreNull),
|
|
39
|
+
_matchString2 = _slicedToArray(_matchString, 2),
|
|
40
|
+
parts = _matchString2[0],
|
|
41
|
+
regex = _matchString2[1];
|
|
42
|
+
|
|
43
|
+
return parts.filter(function (part) {
|
|
44
|
+
return part;
|
|
45
|
+
}).map(function (part, i) {
|
|
46
|
+
return regex.test(part) ? /*#__PURE__*/(0, _jsxRuntime.jsx)("mark", {
|
|
47
|
+
children: part
|
|
48
|
+
}, i) : /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
49
|
+
children: part
|
|
50
|
+
}, i);
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
exports.highlightString = highlightString;
|
|
55
|
+
|
|
56
|
+
var boldString = function boldString(match, str) {
|
|
57
|
+
var ignoreNull = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
58
|
+
|
|
59
|
+
var _matchString3 = (0, _matchString5.default)(match, str, ignoreNull),
|
|
60
|
+
_matchString4 = _slicedToArray(_matchString3, 2),
|
|
61
|
+
parts = _matchString4[0],
|
|
62
|
+
regex = _matchString4[1];
|
|
63
|
+
|
|
64
|
+
return parts.filter(function (part) {
|
|
65
|
+
return part;
|
|
66
|
+
}).map(function (part, i) {
|
|
67
|
+
return regex.test(part) ? /*#__PURE__*/(0, _jsxRuntime.jsx)("strong", {
|
|
68
|
+
children: part
|
|
69
|
+
}, i) : /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
70
|
+
children: part
|
|
71
|
+
}, i);
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
exports.boldString = boldString;
|
|
76
|
+
;
|
|
77
|
+
|
|
78
|
+
(function () {
|
|
79
|
+
var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;
|
|
80
|
+
|
|
81
|
+
if (!reactHotLoader) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
reactHotLoader.register(highlightString, "highlightString", "/home/ethan/FolioModules/stripes-kint-components/src/lib/utils/highlightString.js");
|
|
86
|
+
reactHotLoader.register(boldString, "boldString", "/home/ethan/FolioModules/stripes-kint-components/src/lib/utils/highlightString.js");
|
|
87
|
+
})();
|
|
88
|
+
|
|
89
|
+
;
|
|
90
|
+
|
|
91
|
+
(function () {
|
|
92
|
+
var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;
|
|
93
|
+
leaveModule && leaveModule(module);
|
|
94
|
+
})();
|
package/es/lib/utils/index.js
CHANGED
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
Object.defineProperty(exports, "boldString", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _highlightString.boldString;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
6
12
|
Object.defineProperty(exports, "buildUrl", {
|
|
7
13
|
enumerable: true,
|
|
8
14
|
get: function get() {
|
|
@@ -27,6 +33,18 @@ Object.defineProperty(exports, "groupCustomPropertiesByCtx", {
|
|
|
27
33
|
return _groupCustomPropertiesByCtx.default;
|
|
28
34
|
}
|
|
29
35
|
});
|
|
36
|
+
Object.defineProperty(exports, "highlightString", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function get() {
|
|
39
|
+
return _highlightString.highlightString;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(exports, "matchString", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function get() {
|
|
45
|
+
return _matchString.default;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
30
48
|
Object.defineProperty(exports, "refdataOptions", {
|
|
31
49
|
enumerable: true,
|
|
32
50
|
get: function get() {
|
|
@@ -92,8 +110,12 @@ var _sortByLabel = _interopRequireDefault(require("./sortByLabel"));
|
|
|
92
110
|
|
|
93
111
|
var _toCamelCase = _interopRequireDefault(require("./toCamelCase"));
|
|
94
112
|
|
|
113
|
+
var _matchString = _interopRequireDefault(require("./matchString"));
|
|
114
|
+
|
|
115
|
+
var _highlightString = require("./highlightString");
|
|
116
|
+
|
|
95
117
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
96
118
|
|
|
97
119
|
var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
|
|
98
120
|
return a;
|
|
99
|
-
};
|
|
121
|
+
};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _escapeRegExp = _interopRequireDefault(require("lodash/escapeRegExp"));
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
|
|
12
|
+
(function () {
|
|
13
|
+
var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
|
|
14
|
+
enterModule && enterModule(module);
|
|
15
|
+
})();
|
|
16
|
+
|
|
17
|
+
var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
|
|
18
|
+
return a;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
var matchString = function matchString(match, str) {
|
|
22
|
+
var ignoreNull = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
23
|
+
var regex = new RegExp("".concat(match.split(/(\s+)/).filter(function (h) {
|
|
24
|
+
return h.trim();
|
|
25
|
+
}).map(function (hl) {
|
|
26
|
+
return '(' + (0, _escapeRegExp.default)(hl) + ')';
|
|
27
|
+
}).join('|')), 'gi');
|
|
28
|
+
|
|
29
|
+
if (ignoreNull && !match) {
|
|
30
|
+
var nullRegex = /a^/gi; // Should match nothing
|
|
31
|
+
|
|
32
|
+
return [[str], nullRegex];
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return [str.split(regex), regex];
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
var _default = matchString;
|
|
39
|
+
var _default2 = _default;
|
|
40
|
+
exports.default = _default2;
|
|
41
|
+
;
|
|
42
|
+
|
|
43
|
+
(function () {
|
|
44
|
+
var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;
|
|
45
|
+
|
|
46
|
+
if (!reactHotLoader) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
reactHotLoader.register(matchString, "matchString", "/home/ethan/FolioModules/stripes-kint-components/src/lib/utils/matchString.js");
|
|
51
|
+
reactHotLoader.register(_default, "default", "/home/ethan/FolioModules/stripes-kint-components/src/lib/utils/matchString.js");
|
|
52
|
+
})();
|
|
53
|
+
|
|
54
|
+
;
|
|
55
|
+
|
|
56
|
+
(function () {
|
|
57
|
+
var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;
|
|
58
|
+
leaveModule && leaveModule(module);
|
|
59
|
+
})();
|
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -18,9 +18,12 @@ export {
|
|
|
18
18
|
|
|
19
19
|
// Useful utility functions
|
|
20
20
|
export {
|
|
21
|
+
boldString,
|
|
21
22
|
generateKiwtQuery,
|
|
22
23
|
generateKiwtQueryParams,
|
|
23
24
|
groupCustomPropertiesByCtx,
|
|
25
|
+
highlightString,
|
|
26
|
+
matchString,
|
|
24
27
|
refdataOptions,
|
|
25
28
|
refdataQueryKey,
|
|
26
29
|
selectorSafe,
|
|
@@ -59,6 +62,7 @@ export {
|
|
|
59
62
|
default as QueryTypedown
|
|
60
63
|
} from './lib/QueryTypedown';
|
|
61
64
|
|
|
65
|
+
/* SASQ Stuff */
|
|
62
66
|
// SearchField
|
|
63
67
|
export {
|
|
64
68
|
default as SearchField
|
|
@@ -71,7 +75,8 @@ export {
|
|
|
71
75
|
|
|
72
76
|
// SASQLookupComponent
|
|
73
77
|
export {
|
|
74
|
-
|
|
78
|
+
SASQLookupComponent,
|
|
79
|
+
TableBody as SASQTableBody
|
|
75
80
|
} from './lib/SASQLookupComponent';
|
|
76
81
|
|
|
77
82
|
// SASQViewComponent
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import PropTypes from 'prop-types';
|
|
3
2
|
import { FormattedMessage } from 'react-intl';
|
|
4
3
|
import { useInfiniteQuery } from 'react-query';
|
|
@@ -17,34 +16,30 @@ import {
|
|
|
17
16
|
Button,
|
|
18
17
|
IconButton,
|
|
19
18
|
Icon,
|
|
20
|
-
MultiColumnList,
|
|
21
19
|
Pane,
|
|
22
20
|
PaneMenu,
|
|
23
21
|
SearchField,
|
|
24
22
|
} from '@folio/stripes/components';
|
|
25
|
-
import NoResultsMessage from '../NoResultsMessage';
|
|
26
23
|
|
|
27
24
|
import { generateKiwtQuery } from '../utils';
|
|
28
25
|
import { useKiwtSASQuery, useLocalStorageState } from '../hooks';
|
|
29
26
|
|
|
27
|
+
import TableBody from './TableBody';
|
|
28
|
+
|
|
29
|
+
const SASQLookupComponent = (props) => {
|
|
30
|
+
const {
|
|
31
|
+
children,
|
|
32
|
+
fetchParameters = {},
|
|
33
|
+
FilterComponent = () => null,
|
|
34
|
+
FilterPaneHeaderComponent = () => null,
|
|
35
|
+
filterPaneProps,
|
|
36
|
+
id,
|
|
37
|
+
mainPaneProps,
|
|
38
|
+
noSearchField,
|
|
39
|
+
RenderBody,
|
|
40
|
+
sasqProps,
|
|
41
|
+
} = props;
|
|
30
42
|
|
|
31
|
-
const SASQLookupComponent = ({
|
|
32
|
-
children,
|
|
33
|
-
fetchParameters = {},
|
|
34
|
-
FilterPaneHeaderComponent = () => null,
|
|
35
|
-
FilterComponent = () => null,
|
|
36
|
-
history,
|
|
37
|
-
id,
|
|
38
|
-
location,
|
|
39
|
-
mainPaneProps,
|
|
40
|
-
match,
|
|
41
|
-
mclProps,
|
|
42
|
-
noSearchField,
|
|
43
|
-
path,
|
|
44
|
-
resultColumns = [],
|
|
45
|
-
RenderBody,
|
|
46
|
-
sasqProps,
|
|
47
|
-
}) => {
|
|
48
43
|
const { query, queryGetter, querySetter } = useKiwtSASQuery();
|
|
49
44
|
const { 0: namespace } = useNamespace();
|
|
50
45
|
const ky = useOkapiKy();
|
|
@@ -62,10 +57,7 @@ const SASQLookupComponent = ({
|
|
|
62
57
|
|
|
63
58
|
const {
|
|
64
59
|
data: totalData = {},
|
|
65
|
-
|
|
66
|
-
isError,
|
|
67
|
-
isLoading,
|
|
68
|
-
fetchNextPage,
|
|
60
|
+
...restOfInfiniteQueryProps
|
|
69
61
|
} = useInfiniteQuery(
|
|
70
62
|
[namespace, id, 'data', query],
|
|
71
63
|
fetchPageData
|
|
@@ -93,20 +85,6 @@ const SASQLookupComponent = ({
|
|
|
93
85
|
{}
|
|
94
86
|
) ?? {};
|
|
95
87
|
|
|
96
|
-
// TODO focus handling to stop redraw movin to top
|
|
97
|
-
|
|
98
|
-
const onNeedMoreData = (_askAmount, index) => {
|
|
99
|
-
fetchNextPage({ pageParam: index });
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
// Build the map of column definitions
|
|
103
|
-
const columnMapping = Object.fromEntries(
|
|
104
|
-
resultColumns.map(e => [e.propertyPath, e.label])
|
|
105
|
-
);
|
|
106
|
-
|
|
107
|
-
// Build the list of visible columns
|
|
108
|
-
const visibleColumns = resultColumns.map(e => e.propertyPath);
|
|
109
|
-
|
|
110
88
|
return (
|
|
111
89
|
<SearchAndSortQuery
|
|
112
90
|
initialSearchState={{ query: '' }}
|
|
@@ -115,56 +93,23 @@ const SASQLookupComponent = ({
|
|
|
115
93
|
{...sasqProps}
|
|
116
94
|
>
|
|
117
95
|
{
|
|
118
|
-
({
|
|
96
|
+
(sasqRenderProps) => {
|
|
97
|
+
const {
|
|
119
98
|
activeFilters,
|
|
120
99
|
filterChanged,
|
|
121
100
|
getFilterHandlers,
|
|
122
101
|
getSearchHandlers,
|
|
123
|
-
onSort,
|
|
124
102
|
onSubmitSearch,
|
|
125
103
|
resetAll,
|
|
126
104
|
searchChanged,
|
|
127
105
|
searchValue
|
|
128
|
-
}
|
|
106
|
+
} = sasqRenderProps;
|
|
107
|
+
|
|
129
108
|
const searchHandlers = getSearchHandlers();
|
|
130
|
-
const sortOrder = query.sort ?? '';
|
|
131
109
|
const disableReset = !filterChanged && !searchChanged;
|
|
132
110
|
|
|
133
111
|
const filterCount = activeFilters.string ? activeFilters.string.split(',').length : 0;
|
|
134
112
|
|
|
135
|
-
const TableBody = () => (
|
|
136
|
-
<MultiColumnList
|
|
137
|
-
autosize
|
|
138
|
-
columnMapping={columnMapping}
|
|
139
|
-
contentData={data?.results}
|
|
140
|
-
isEmptyMessage={
|
|
141
|
-
<NoResultsMessage
|
|
142
|
-
{...{
|
|
143
|
-
error,
|
|
144
|
-
isError,
|
|
145
|
-
isLoading,
|
|
146
|
-
filterPaneIsVisible: filterPaneVisible,
|
|
147
|
-
searchTerm: query.query,
|
|
148
|
-
toggleFilterPane
|
|
149
|
-
}}
|
|
150
|
-
/>
|
|
151
|
-
}
|
|
152
|
-
isSelected={({ item }) => item.id === match?.params?.id}
|
|
153
|
-
onHeaderClick={onSort}
|
|
154
|
-
onNeedMoreData={onNeedMoreData}
|
|
155
|
-
onRowClick={(_e, rowData) => {
|
|
156
|
-
history.push(`${path}/${rowData?.id}${location?.search}`);
|
|
157
|
-
}}
|
|
158
|
-
pagingType="click"
|
|
159
|
-
sortDirection={sortOrder.startsWith('-') ? 'descending' : 'ascending'}
|
|
160
|
-
sortOrder={sortOrder.replace(/^-/, '').replace(/,.*/, '')}
|
|
161
|
-
totalCount={data.totalRecords}
|
|
162
|
-
virtualize
|
|
163
|
-
visibleColumns={visibleColumns}
|
|
164
|
-
{...mclProps}
|
|
165
|
-
/>
|
|
166
|
-
);
|
|
167
|
-
|
|
168
113
|
const Body = RenderBody ?? TableBody;
|
|
169
114
|
|
|
170
115
|
return (
|
|
@@ -184,6 +129,7 @@ const SASQLookupComponent = ({
|
|
|
184
129
|
</PaneMenu>
|
|
185
130
|
}
|
|
186
131
|
paneTitle={<FormattedMessage id="stripes-smart-components.searchAndFilter" />}
|
|
132
|
+
{...filterPaneProps}
|
|
187
133
|
>
|
|
188
134
|
<form onSubmit={onSubmitSearch}>
|
|
189
135
|
<FilterPaneHeaderComponent />
|
|
@@ -192,7 +138,13 @@ const SASQLookupComponent = ({
|
|
|
192
138
|
<SearchField
|
|
193
139
|
autoFocus
|
|
194
140
|
name="query"
|
|
195
|
-
onChange={
|
|
141
|
+
onChange={e => {
|
|
142
|
+
if (e.target?.value) {
|
|
143
|
+
searchHandlers.query(e); // SASQ needs the whole event here
|
|
144
|
+
} else {
|
|
145
|
+
searchHandlers.reset();
|
|
146
|
+
}
|
|
147
|
+
}}
|
|
196
148
|
onClear={searchHandlers.reset}
|
|
197
149
|
value={searchValue.query}
|
|
198
150
|
/>
|
|
@@ -240,10 +192,19 @@ const SASQLookupComponent = ({
|
|
|
240
192
|
</PaneMenu>
|
|
241
193
|
:
|
|
242
194
|
null}
|
|
195
|
+
noOverflow
|
|
196
|
+
padContent={false}
|
|
243
197
|
paneSub={<FormattedMessage id="stripes-kint-components.sasqLookupComponent.mainPane.found" values={{ total: data?.total }} />}
|
|
244
198
|
{...mainPaneProps}
|
|
245
199
|
>
|
|
246
|
-
<Body
|
|
200
|
+
<Body
|
|
201
|
+
data={data}
|
|
202
|
+
query={query}
|
|
203
|
+
toggleFilterPane={toggleFilterPane}
|
|
204
|
+
{...restOfInfiniteQueryProps}
|
|
205
|
+
{...sasqProps}
|
|
206
|
+
{...props}
|
|
207
|
+
/>
|
|
247
208
|
</Pane>
|
|
248
209
|
{children}
|
|
249
210
|
</PersistedPaneset>
|
|
@@ -260,6 +221,7 @@ SASQLookupComponent.propTypes = {
|
|
|
260
221
|
PropTypes.node
|
|
261
222
|
]),
|
|
262
223
|
fetchParameters: PropTypes.object,
|
|
224
|
+
filterPaneProps: PropTypes.object,
|
|
263
225
|
FilterComponent: PropTypes.oneOfType([
|
|
264
226
|
PropTypes.func,
|
|
265
227
|
PropTypes.node
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import PropTypes from 'prop-types';
|
|
2
|
+
|
|
3
|
+
import { useHistory, useLocation } from 'react-router-dom';
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
MultiColumnList,
|
|
7
|
+
} from '@folio/stripes/components';
|
|
8
|
+
import NoResultsMessage from '../../NoResultsMessage';
|
|
9
|
+
|
|
10
|
+
const TableBody = ({
|
|
11
|
+
data,
|
|
12
|
+
error,
|
|
13
|
+
fetchNextPage,
|
|
14
|
+
filterPaneVisible,
|
|
15
|
+
isError,
|
|
16
|
+
isLoading,
|
|
17
|
+
match,
|
|
18
|
+
mclProps,
|
|
19
|
+
onSort,
|
|
20
|
+
path,
|
|
21
|
+
resultColumns,
|
|
22
|
+
toggleFilterPane,
|
|
23
|
+
query,
|
|
24
|
+
}) => {
|
|
25
|
+
const sortOrder = query.sort ?? '';
|
|
26
|
+
const history = useHistory();
|
|
27
|
+
const location = useLocation();
|
|
28
|
+
|
|
29
|
+
const onNeedMoreData = (_askAmount, index) => {
|
|
30
|
+
fetchNextPage({ pageParam: index });
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
// Build the map of column definitions
|
|
34
|
+
const columnMapping = Object.fromEntries(
|
|
35
|
+
resultColumns.map(e => [e.propertyPath, e.label])
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
// Build the list of visible columns
|
|
39
|
+
const visibleColumns = resultColumns.map(e => e.propertyPath);
|
|
40
|
+
|
|
41
|
+
return (
|
|
42
|
+
<MultiColumnList
|
|
43
|
+
autosize
|
|
44
|
+
columnMapping={columnMapping}
|
|
45
|
+
contentData={data?.results}
|
|
46
|
+
hasMargin
|
|
47
|
+
isEmptyMessage={
|
|
48
|
+
<NoResultsMessage
|
|
49
|
+
{...{
|
|
50
|
+
error,
|
|
51
|
+
isError,
|
|
52
|
+
isLoading,
|
|
53
|
+
filterPaneIsVisible: filterPaneVisible,
|
|
54
|
+
searchTerm: query.query,
|
|
55
|
+
toggleFilterPane
|
|
56
|
+
}}
|
|
57
|
+
/>
|
|
58
|
+
}
|
|
59
|
+
isSelected={({ item }) => item.id === match?.params?.id}
|
|
60
|
+
onHeaderClick={onSort}
|
|
61
|
+
onNeedMoreData={onNeedMoreData}
|
|
62
|
+
onRowClick={(_e, rowData) => {
|
|
63
|
+
history.push(`${path}/${rowData?.id}${location?.search}`);
|
|
64
|
+
}}
|
|
65
|
+
pagingType="click"
|
|
66
|
+
sortDirection={sortOrder.startsWith('-') ? 'descending' : 'ascending'}
|
|
67
|
+
sortOrder={sortOrder.replace(/^-/, '').replace(/,.*/, '')}
|
|
68
|
+
totalCount={data.totalRecords}
|
|
69
|
+
visibleColumns={visibleColumns}
|
|
70
|
+
{...mclProps}
|
|
71
|
+
/>
|
|
72
|
+
);
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
TableBody.propTypes = {
|
|
76
|
+
data: PropTypes.shape({
|
|
77
|
+
totalRecords: PropTypes.number,
|
|
78
|
+
results: PropTypes.arrayOf(PropTypes.object)
|
|
79
|
+
}),
|
|
80
|
+
error: PropTypes.object,
|
|
81
|
+
fetchNextPage: PropTypes.func,
|
|
82
|
+
filterPaneVisible: PropTypes.bool,
|
|
83
|
+
history: PropTypes.object,
|
|
84
|
+
isError: PropTypes.bool,
|
|
85
|
+
isLoading: PropTypes.bool,
|
|
86
|
+
location: PropTypes.object,
|
|
87
|
+
match: PropTypes.object,
|
|
88
|
+
mclProps: PropTypes.object,
|
|
89
|
+
onSort: PropTypes.func,
|
|
90
|
+
path: PropTypes.string.isRequired,
|
|
91
|
+
query: PropTypes.object,
|
|
92
|
+
resultColumns: PropTypes.arrayOf(PropTypes.object),
|
|
93
|
+
toggleFilterPane: PropTypes.func
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
export default TableBody;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './TableBody';
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export { default } from './SASQLookupComponent';
|
|
1
|
+
export { default as SASQLookupComponent } from './SASQLookupComponent';
|
|
2
|
+
export { default as TableBody } from './TableBody';
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
Switch
|
|
7
7
|
} from 'react-router-dom';
|
|
8
8
|
|
|
9
|
-
import SASQLookupComponent from '../SASQLookupComponent';
|
|
9
|
+
import { SASQLookupComponent } from '../SASQLookupComponent';
|
|
10
10
|
import SASQViewComponent from '../SASQViewComponent';
|
|
11
11
|
|
|
12
12
|
const SASQRoute = ({ children, path, fetchParameters, ...props }) => {
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import matchString from './matchString';
|
|
2
|
+
|
|
3
|
+
const highlightString = (match, str, ignoreNull = true) => {
|
|
4
|
+
const [parts, regex] = matchString(match, str, ignoreNull);
|
|
5
|
+
|
|
6
|
+
return (
|
|
7
|
+
parts.filter(part => part).map((part, i) => (
|
|
8
|
+
regex.test(part) ?
|
|
9
|
+
<mark
|
|
10
|
+
key={i}
|
|
11
|
+
>
|
|
12
|
+
{part}
|
|
13
|
+
</mark> :
|
|
14
|
+
<span key={i}>
|
|
15
|
+
{part}
|
|
16
|
+
</span>
|
|
17
|
+
))
|
|
18
|
+
);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const boldString = (match, str, ignoreNull = true) => {
|
|
22
|
+
const [parts, regex] = matchString(match, str, ignoreNull);
|
|
23
|
+
|
|
24
|
+
return (
|
|
25
|
+
parts.filter(part => part).map((part, i) => (
|
|
26
|
+
regex.test(part) ?
|
|
27
|
+
<strong
|
|
28
|
+
key={i}
|
|
29
|
+
>
|
|
30
|
+
{part}
|
|
31
|
+
</strong> :
|
|
32
|
+
<span key={i}>
|
|
33
|
+
{part}
|
|
34
|
+
</span>
|
|
35
|
+
))
|
|
36
|
+
);
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export {
|
|
40
|
+
boldString,
|
|
41
|
+
highlightString
|
|
42
|
+
};
|
package/src/lib/utils/index.js
CHANGED
|
@@ -15,3 +15,7 @@ export { default as groupCustomPropertiesByCtx } from './groupCustomPropertiesBy
|
|
|
15
15
|
export { default as renderHelpText } from './renderHelpText';
|
|
16
16
|
export { default as sortByLabel } from './sortByLabel';
|
|
17
17
|
export { default as toCamelCase } from './toCamelCase'; // I hate that this exists
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
export { default as matchString } from './matchString';
|
|
21
|
+
export { boldString, highlightString } from './highlightString';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import escapeRegExp from 'lodash/escapeRegExp';
|
|
2
|
+
|
|
3
|
+
const matchString = (match, str, ignoreNull = true) => {
|
|
4
|
+
const regex = new RegExp(`${match.split(/(\s+)/).filter(h => h.trim()).map(hl => '(' + escapeRegExp(hl) + ')').join('|')}`, 'gi')
|
|
5
|
+
if (ignoreNull && !match) {
|
|
6
|
+
const nullRegex = /a^/gi; // Should match nothing
|
|
7
|
+
|
|
8
|
+
return [[str], nullRegex];
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
return [str.split(regex), regex];
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export default matchString;
|