@panneau/core 3.0.136 → 3.0.142

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/es/contexts.js CHANGED
@@ -265,7 +265,7 @@ var button = PropTypes.shape({
265
265
  });
266
266
  PropTypes.arrayOf(button);
267
267
  PropTypes.oneOf(['primary', 'secondary', 'success', 'danger', 'warning', 'info', 'light', 'dark', null]);
268
- PropTypes.oneOf(['lg', 'sm', null]);
268
+ PropTypes.oneOf(['lg', 'md', 'sm', null]);
269
269
  PropTypes.oneOf(['button', 'submit']);
270
270
  PropTypes.oneOf(['start', 'end']);
271
271
  PropTypes.oneOf(['lg', 'sm', null]);
package/es/hooks.js CHANGED
@@ -1119,63 +1119,64 @@ var useItemSelection = function useItemSelection(_ref) {
1119
1119
  selectedItems = _useState2[0],
1120
1120
  setSelectedItems = _useState2[1];
1121
1121
  var onSelectItem = useCallback(function (item, index) {
1122
- var newItems = selectedItems !== null && multipleSelection ? [].concat(_toConsumableArray(selectedItems), [item]) : [item];
1123
- setSelectedItems(newItems);
1124
- if (onSelectionChange !== null) {
1125
- onSelectionChange(newItems, item, index);
1126
- }
1127
- }, [selectedItems, onSelectionChange, multipleSelection]);
1128
- var onDeselectItem = useCallback(function (item, index) {
1129
1122
  var _ref2 = item || {},
1130
1123
  _ref2$id = _ref2.id,
1131
1124
  itemId = _ref2$id === void 0 ? null : _ref2$id;
1132
- var newItems = (selectedItems || []).filter(function (_ref3) {
1125
+ var oldItem = (selectedItems || []).find(function (_ref3) {
1133
1126
  var id = _ref3.id;
1134
- return id !== itemId;
1135
- });
1127
+ return id === itemId;
1128
+ }) || null;
1129
+ var newItems = [];
1130
+ if (oldItem === null) {
1131
+ newItems = selectedItems !== null && multipleSelection ? [].concat(_toConsumableArray(selectedItems), [item]) : [item];
1132
+ } else {
1133
+ newItems = (selectedItems || []).filter(function (_ref4) {
1134
+ var id = _ref4.id;
1135
+ return id !== itemId;
1136
+ });
1137
+ }
1136
1138
  setSelectedItems(newItems);
1137
1139
  if (onSelectionChange !== null) {
1138
- onSelectionChange(multipleSelection ? newItems : null, item, index);
1140
+ onSelectionChange(newItems, item, index);
1139
1141
  }
1140
1142
  }, [selectedItems, onSelectionChange, multipleSelection]);
1141
1143
  var onSelectPage = useCallback(function () {
1142
- var nextItems = uniqBy([].concat(_toConsumableArray(items || []), _toConsumableArray(selectedItems || [])), function () {
1143
- var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1144
- _ref4$id = _ref4.id,
1145
- id = _ref4$id === void 0 ? null : _ref4$id;
1146
- return id;
1147
- });
1148
- setSelectedItems(nextItems);
1149
- if (onSelectionChange !== null) {
1150
- onSelectionChange(nextItems);
1144
+ var pageSelected = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
1145
+ var nextItems = [];
1146
+ if (!pageSelected) {
1147
+ nextItems = uniqBy([].concat(_toConsumableArray(items || []), _toConsumableArray(selectedItems || [])), function () {
1148
+ var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1149
+ _ref5$id = _ref5.id,
1150
+ id = _ref5$id === void 0 ? null : _ref5$id;
1151
+ return id;
1152
+ });
1153
+ } else {
1154
+ var ids = (items || []).map(function () {
1155
+ var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1156
+ _ref6$id = _ref6.id,
1157
+ id = _ref6$id === void 0 ? null : _ref6$id;
1158
+ return id;
1159
+ }).filter(function (id) {
1160
+ return id !== null;
1161
+ });
1162
+ nextItems = uniqBy((selectedItems || []).filter(function (it) {
1163
+ var _ref7 = it || {},
1164
+ _ref7$id = _ref7.id,
1165
+ id = _ref7$id === void 0 ? null : _ref7$id;
1166
+ return ids.indexOf(id) === -1;
1167
+ }), function () {
1168
+ var _ref8 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1169
+ _ref8$id = _ref8.id,
1170
+ id = _ref8$id === void 0 ? null : _ref8$id;
1171
+ return id;
1172
+ });
1151
1173
  }
1152
- }, [items, selectedItems, setSelectedItems, onSelectionChange]);
1153
- var onDeselectPage = useCallback(function () {
1154
- var ids = (items || []).map(function () {
1155
- var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1156
- _ref5$id = _ref5.id,
1157
- id = _ref5$id === void 0 ? null : _ref5$id;
1158
- return id;
1159
- }).filter(function (id) {
1160
- return id !== null;
1161
- });
1162
- var nextItems = uniqBy((selectedItems || []).filter(function (it) {
1163
- var _ref6 = it || {},
1164
- _ref6$id = _ref6.id,
1165
- id = _ref6$id === void 0 ? null : _ref6$id;
1166
- return ids.indexOf(id) === -1;
1167
- }), function () {
1168
- var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1169
- _ref7$id = _ref7.id,
1170
- id = _ref7$id === void 0 ? null : _ref7$id;
1171
- return id;
1172
- });
1173
1174
  setSelectedItems(nextItems);
1174
1175
  if (onSelectionChange !== null) {
1175
1176
  onSelectionChange(nextItems);
1176
1177
  }
1177
1178
  }, [items, selectedItems, setSelectedItems, onSelectionChange]);
1178
- var onClearAll = useCallback(function () {
1179
+ var onClearSelected = useCallback(function () {
1179
1180
  setSelectedItems([]);
1180
1181
  if (onSelectionChange !== null) {
1181
1182
  onSelectionChange([]);
@@ -1186,17 +1187,17 @@ var useItemSelection = function useItemSelection(_ref) {
1186
1187
  }, [initialSelectedItems]);
1187
1188
  var pageSelected = useMemo(function () {
1188
1189
  var ids = (items || []).map(function () {
1189
- var _ref8 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1190
- _ref8$id = _ref8.id,
1191
- id = _ref8$id === void 0 ? null : _ref8$id;
1190
+ var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1191
+ _ref9$id = _ref9.id,
1192
+ id = _ref9$id === void 0 ? null : _ref9$id;
1192
1193
  return id;
1193
1194
  }).filter(function (id) {
1194
1195
  return id !== null;
1195
1196
  });
1196
1197
  var currentPageItems = (selectedItems || []).filter(function (it) {
1197
- var _ref9 = it || {},
1198
- _ref9$id = _ref9.id,
1199
- id = _ref9$id === void 0 ? null : _ref9$id;
1198
+ var _ref10 = it || {},
1199
+ _ref10$id = _ref10.id,
1200
+ id = _ref10$id === void 0 ? null : _ref10$id;
1200
1201
  return ids.indexOf(id) !== -1;
1201
1202
  });
1202
1203
  return currentPageItems.length === (items || []).length && currentPageItems.length > 0;
@@ -1204,19 +1205,18 @@ var useItemSelection = function useItemSelection(_ref) {
1204
1205
  var allSelected = useMemo(function () {
1205
1206
  return selectedItems !== null && items !== null && selectedItems.length === items.length;
1206
1207
  }, [selectedItems, items]);
1207
- var countSelected = useMemo(function () {
1208
+ var selectedCount = useMemo(function () {
1208
1209
  return selectedItems !== null && selectedItems.length > 0 ? selectedItems.length : null;
1209
1210
  }, [selectedItems]);
1210
1211
  return {
1211
1212
  onSelectItem: onSelectItem,
1212
- onDeselectItem: onDeselectItem,
1213
1213
  onSelectPage: onSelectPage,
1214
- onDeselectPage: onDeselectPage,
1215
- onClearAll: onClearAll,
1214
+ onClearSelected: onClearSelected,
1216
1215
  pageSelected: pageSelected,
1217
1216
  allSelected: allSelected,
1218
- count: countSelected,
1219
- selectedItems: selectedItems
1217
+ selectedCount: selectedCount,
1218
+ selectedItems: selectedItems,
1219
+ setSelectedItems: setSelectedItems
1220
1220
  };
1221
1221
  };
1222
1222
  var useItemSelection$1 = useItemSelection;
package/es/index.js CHANGED
@@ -41,7 +41,7 @@ var button = PropTypes$1.shape({
41
41
  });
42
42
  var buttons = PropTypes$1.arrayOf(button);
43
43
  var buttonTheme = PropTypes$1.oneOf(['primary', 'secondary', 'success', 'danger', 'warning', 'info', 'light', 'dark', null]);
44
- var buttonSize = PropTypes$1.oneOf(['lg', 'sm', null]);
44
+ var buttonSize = PropTypes$1.oneOf(['lg', 'md', 'sm', null]);
45
45
  var buttonType = PropTypes$1.oneOf(['button', 'submit']);
46
46
  var dropdownAlign = PropTypes$1.oneOf(['start', 'end']);
47
47
  var controlSize = PropTypes$1.oneOf(['lg', 'sm', null]);
package/lib/contexts.js CHANGED
@@ -286,7 +286,7 @@ var button = PropTypes.shape({
286
286
  });
287
287
  PropTypes.arrayOf(button);
288
288
  PropTypes.oneOf(['primary', 'secondary', 'success', 'danger', 'warning', 'info', 'light', 'dark', null]);
289
- PropTypes.oneOf(['lg', 'sm', null]);
289
+ PropTypes.oneOf(['lg', 'md', 'sm', null]);
290
290
  PropTypes.oneOf(['button', 'submit']);
291
291
  PropTypes.oneOf(['start', 'end']);
292
292
  PropTypes.oneOf(['lg', 'sm', null]);
@@ -1229,7 +1229,7 @@ if (typeof history !== "undefined" && typeof window[patchKey] === "undefined") {
1229
1229
  });
1230
1230
  }
1231
1231
 
1232
- var _excluded3 = ["to", "href", "onClick", "asChild", "children", "replace", "state"];
1232
+ var _excluded3 = ["to", "href", "onClick", "asChild", "children", "className", "replace", "state"];
1233
1233
 
1234
1234
  /*
1235
1235
  * Transforms `path` into its relative `base` version
@@ -1272,7 +1272,11 @@ var defaultRouter = {
1272
1272
  base: "",
1273
1273
  // this option is used to override the current location during SSR
1274
1274
  ssrPath: undefined,
1275
- ssrSearch: undefined
1275
+ ssrSearch: undefined,
1276
+ // customizes how `href` props are transformed for <Link />
1277
+ hrefs: function hrefs(x) {
1278
+ return x;
1279
+ }
1276
1280
  };
1277
1281
  var RouterCtx = React.createContext(defaultRouter);
1278
1282
 
@@ -1314,13 +1318,15 @@ React.forwardRef(function (props, ref) {
1314
1318
  var router = useRouter();
1315
1319
  var _useLocationFromRoute3 = useLocationFromRouter(router),
1316
1320
  _useLocationFromRoute4 = _slicedToArray(_useLocationFromRoute3, 2),
1321
+ path = _useLocationFromRoute4[0],
1317
1322
  navigate = _useLocationFromRoute4[1];
1318
1323
  var to = props.to,
1319
1324
  _props$href = props.href,
1320
1325
  _href = _props$href === void 0 ? to : _props$href,
1321
1326
  _onClick = props.onClick,
1322
1327
  asChild = props.asChild,
1323
- children = props.children;
1328
+ children = props.children,
1329
+ cls = props.className;
1324
1330
  props.replace;
1325
1331
  props.state;
1326
1332
  var restProps = _objectWithoutProperties(props, _excluded3);
@@ -1328,7 +1334,7 @@ React.forwardRef(function (props, ref) {
1328
1334
  // ignores the navigation when clicked using right mouse button or
1329
1335
  // by holding a special modifier key: ctrl, command, win, alt, shift
1330
1336
  if (event.ctrlKey || event.metaKey || event.altKey || event.shiftKey || event.button !== 0) return;
1331
- _onClick && _onClick(event); // TODO: is it safe to use _onClick?.(event)
1337
+ _onClick === null || _onClick === void 0 || _onClick(event);
1332
1338
  if (!event.defaultPrevented) {
1333
1339
  event.preventDefault();
1334
1340
  navigate(_href, props);
@@ -1336,13 +1342,16 @@ React.forwardRef(function (props, ref) {
1336
1342
  });
1337
1343
 
1338
1344
  // handle nested routers and absolute paths
1339
- var href = _href[0] === "~" ? _href.slice(1) : router.base + _href;
1345
+ var href = router.hrefs(_href[0] === "~" ? _href.slice(1) : router.base + _href, router // pass router as a second argument for convinience
1346
+ );
1340
1347
  return asChild && React.isValidElement(children) ? React.cloneElement(children, {
1341
- href: href,
1342
- onClick: onClick
1348
+ onClick: onClick,
1349
+ href: href
1343
1350
  }) : React.createElement("a", _objectSpread(_objectSpread({}, restProps), {}, {
1344
- href: href,
1345
1351
  onClick: onClick,
1352
+ href: href,
1353
+ // `className` can be a function to apply the class if this link is active
1354
+ className: cls !== null && cls !== void 0 && cls.call ? cls(path === href) : cls,
1346
1355
  children: children,
1347
1356
  ref: ref
1348
1357
  }));
package/lib/hooks.js CHANGED
@@ -1121,63 +1121,64 @@ var useItemSelection = function useItemSelection(_ref) {
1121
1121
  selectedItems = _useState2[0],
1122
1122
  setSelectedItems = _useState2[1];
1123
1123
  var onSelectItem = react.useCallback(function (item, index) {
1124
- var newItems = selectedItems !== null && multipleSelection ? [].concat(_toConsumableArray(selectedItems), [item]) : [item];
1125
- setSelectedItems(newItems);
1126
- if (onSelectionChange !== null) {
1127
- onSelectionChange(newItems, item, index);
1128
- }
1129
- }, [selectedItems, onSelectionChange, multipleSelection]);
1130
- var onDeselectItem = react.useCallback(function (item, index) {
1131
1124
  var _ref2 = item || {},
1132
1125
  _ref2$id = _ref2.id,
1133
1126
  itemId = _ref2$id === void 0 ? null : _ref2$id;
1134
- var newItems = (selectedItems || []).filter(function (_ref3) {
1127
+ var oldItem = (selectedItems || []).find(function (_ref3) {
1135
1128
  var id = _ref3.id;
1136
- return id !== itemId;
1137
- });
1129
+ return id === itemId;
1130
+ }) || null;
1131
+ var newItems = [];
1132
+ if (oldItem === null) {
1133
+ newItems = selectedItems !== null && multipleSelection ? [].concat(_toConsumableArray(selectedItems), [item]) : [item];
1134
+ } else {
1135
+ newItems = (selectedItems || []).filter(function (_ref4) {
1136
+ var id = _ref4.id;
1137
+ return id !== itemId;
1138
+ });
1139
+ }
1138
1140
  setSelectedItems(newItems);
1139
1141
  if (onSelectionChange !== null) {
1140
- onSelectionChange(multipleSelection ? newItems : null, item, index);
1142
+ onSelectionChange(newItems, item, index);
1141
1143
  }
1142
1144
  }, [selectedItems, onSelectionChange, multipleSelection]);
1143
1145
  var onSelectPage = react.useCallback(function () {
1144
- var nextItems = uniqBy([].concat(_toConsumableArray(items || []), _toConsumableArray(selectedItems || [])), function () {
1145
- var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1146
- _ref4$id = _ref4.id,
1147
- id = _ref4$id === void 0 ? null : _ref4$id;
1148
- return id;
1149
- });
1150
- setSelectedItems(nextItems);
1151
- if (onSelectionChange !== null) {
1152
- onSelectionChange(nextItems);
1146
+ var pageSelected = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
1147
+ var nextItems = [];
1148
+ if (!pageSelected) {
1149
+ nextItems = uniqBy([].concat(_toConsumableArray(items || []), _toConsumableArray(selectedItems || [])), function () {
1150
+ var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1151
+ _ref5$id = _ref5.id,
1152
+ id = _ref5$id === void 0 ? null : _ref5$id;
1153
+ return id;
1154
+ });
1155
+ } else {
1156
+ var ids = (items || []).map(function () {
1157
+ var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1158
+ _ref6$id = _ref6.id,
1159
+ id = _ref6$id === void 0 ? null : _ref6$id;
1160
+ return id;
1161
+ }).filter(function (id) {
1162
+ return id !== null;
1163
+ });
1164
+ nextItems = uniqBy((selectedItems || []).filter(function (it) {
1165
+ var _ref7 = it || {},
1166
+ _ref7$id = _ref7.id,
1167
+ id = _ref7$id === void 0 ? null : _ref7$id;
1168
+ return ids.indexOf(id) === -1;
1169
+ }), function () {
1170
+ var _ref8 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1171
+ _ref8$id = _ref8.id,
1172
+ id = _ref8$id === void 0 ? null : _ref8$id;
1173
+ return id;
1174
+ });
1153
1175
  }
1154
- }, [items, selectedItems, setSelectedItems, onSelectionChange]);
1155
- var onDeselectPage = react.useCallback(function () {
1156
- var ids = (items || []).map(function () {
1157
- var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1158
- _ref5$id = _ref5.id,
1159
- id = _ref5$id === void 0 ? null : _ref5$id;
1160
- return id;
1161
- }).filter(function (id) {
1162
- return id !== null;
1163
- });
1164
- var nextItems = uniqBy((selectedItems || []).filter(function (it) {
1165
- var _ref6 = it || {},
1166
- _ref6$id = _ref6.id,
1167
- id = _ref6$id === void 0 ? null : _ref6$id;
1168
- return ids.indexOf(id) === -1;
1169
- }), function () {
1170
- var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1171
- _ref7$id = _ref7.id,
1172
- id = _ref7$id === void 0 ? null : _ref7$id;
1173
- return id;
1174
- });
1175
1176
  setSelectedItems(nextItems);
1176
1177
  if (onSelectionChange !== null) {
1177
1178
  onSelectionChange(nextItems);
1178
1179
  }
1179
1180
  }, [items, selectedItems, setSelectedItems, onSelectionChange]);
1180
- var onClearAll = react.useCallback(function () {
1181
+ var onClearSelected = react.useCallback(function () {
1181
1182
  setSelectedItems([]);
1182
1183
  if (onSelectionChange !== null) {
1183
1184
  onSelectionChange([]);
@@ -1188,17 +1189,17 @@ var useItemSelection = function useItemSelection(_ref) {
1188
1189
  }, [initialSelectedItems]);
1189
1190
  var pageSelected = react.useMemo(function () {
1190
1191
  var ids = (items || []).map(function () {
1191
- var _ref8 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1192
- _ref8$id = _ref8.id,
1193
- id = _ref8$id === void 0 ? null : _ref8$id;
1192
+ var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1193
+ _ref9$id = _ref9.id,
1194
+ id = _ref9$id === void 0 ? null : _ref9$id;
1194
1195
  return id;
1195
1196
  }).filter(function (id) {
1196
1197
  return id !== null;
1197
1198
  });
1198
1199
  var currentPageItems = (selectedItems || []).filter(function (it) {
1199
- var _ref9 = it || {},
1200
- _ref9$id = _ref9.id,
1201
- id = _ref9$id === void 0 ? null : _ref9$id;
1200
+ var _ref10 = it || {},
1201
+ _ref10$id = _ref10.id,
1202
+ id = _ref10$id === void 0 ? null : _ref10$id;
1202
1203
  return ids.indexOf(id) !== -1;
1203
1204
  });
1204
1205
  return currentPageItems.length === (items || []).length && currentPageItems.length > 0;
@@ -1206,19 +1207,18 @@ var useItemSelection = function useItemSelection(_ref) {
1206
1207
  var allSelected = react.useMemo(function () {
1207
1208
  return selectedItems !== null && items !== null && selectedItems.length === items.length;
1208
1209
  }, [selectedItems, items]);
1209
- var countSelected = react.useMemo(function () {
1210
+ var selectedCount = react.useMemo(function () {
1210
1211
  return selectedItems !== null && selectedItems.length > 0 ? selectedItems.length : null;
1211
1212
  }, [selectedItems]);
1212
1213
  return {
1213
1214
  onSelectItem: onSelectItem,
1214
- onDeselectItem: onDeselectItem,
1215
1215
  onSelectPage: onSelectPage,
1216
- onDeselectPage: onDeselectPage,
1217
- onClearAll: onClearAll,
1216
+ onClearSelected: onClearSelected,
1218
1217
  pageSelected: pageSelected,
1219
1218
  allSelected: allSelected,
1220
- count: countSelected,
1221
- selectedItems: selectedItems
1219
+ selectedCount: selectedCount,
1220
+ selectedItems: selectedItems,
1221
+ setSelectedItems: setSelectedItems
1222
1222
  };
1223
1223
  };
1224
1224
  var useItemSelection$1 = useItemSelection;
package/lib/index.js CHANGED
@@ -43,7 +43,7 @@ var button = PropTypes$1.shape({
43
43
  });
44
44
  var buttons = PropTypes$1.arrayOf(button);
45
45
  var buttonTheme = PropTypes$1.oneOf(['primary', 'secondary', 'success', 'danger', 'warning', 'info', 'light', 'dark', null]);
46
- var buttonSize = PropTypes$1.oneOf(['lg', 'sm', null]);
46
+ var buttonSize = PropTypes$1.oneOf(['lg', 'md', 'sm', null]);
47
47
  var buttonType = PropTypes$1.oneOf(['button', 'submit']);
48
48
  var dropdownAlign = PropTypes$1.oneOf(['start', 'end']);
49
49
  var controlSize = PropTypes$1.oneOf(['lg', 'sm', null]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panneau/core",
3
- "version": "3.0.136",
3
+ "version": "3.0.142",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "javascript"
@@ -93,7 +93,7 @@
93
93
  "classnames": "^2.5.1",
94
94
  "css-mediaquery": "^0.1.2",
95
95
  "dayjs": "^1.10.4",
96
- "debug": "^4.3.1",
96
+ "debug": "^4.3.4",
97
97
  "flat": "^5.0.2",
98
98
  "hoist-non-react-statics": "^3.3.2",
99
99
  "lodash": "^4.17.21",
@@ -106,10 +106,10 @@
106
106
  "tinycolor2": "^1.4.2",
107
107
  "webfontloader": "^1.6.28",
108
108
  "wolfy87-eventemitter": "^5.2.9",
109
- "wouter": "^3.0.0"
109
+ "wouter": "^3.1.0"
110
110
  },
111
111
  "publishConfig": {
112
112
  "access": "public"
113
113
  },
114
- "gitHead": "c9a3de330286a6cadd73651f1893adbbe090cd0e"
114
+ "gitHead": "293308a0e1b7175dcc56128f6dbc1416845d0b15"
115
115
  }