@laser-ui/components 0.6.1 → 0.6.3

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 CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
4
4
 
5
+ ## [0.6.3](https://github.com/laser-ui/laser-ui/compare/v0.6.2...v0.6.3) (2024-05-24)
6
+
7
+ ### Features
8
+
9
+ - **components:** show selected even if no option ([ddcdf74](https://github.com/laser-ui/laser-ui/commit/ddcdf744faaf8c3ccd3359f00d5c56807b21b85f))
10
+
11
+ ## [0.6.2](https://github.com/laser-ui/laser-ui/compare/v0.6.1...v0.6.2) (2024-04-26)
12
+
13
+ **Note:** Version bump only for package @laser-ui/components
14
+
5
15
  ## [0.6.1](https://github.com/laser-ui/laser-ui/compare/v0.6.0...v0.6.1) (2024-04-26)
6
16
 
7
17
  **Note:** Version bump only for package @laser-ui/components
@@ -355,41 +355,36 @@ function CascaderFC(props, ref) {
355
355
  let suffixNode = null;
356
356
  let selectedLabel;
357
357
  if (multiple) {
358
- const selectedNodes = [];
359
- for (const v of _selected) {
360
- const node = nodesMap.get(v);
361
- if (node) {
362
- selectedNodes.push(node);
363
- }
364
- }
365
- suffixNode = (_jsx(Dropdown, { list: selectedNodes.map((node) => {
366
- const { value: itemValue, disabled: itemDisabled } = node.origin;
367
- const title = customSelected ? customSelected(node.origin) : getTreeNodeLabel(node);
368
- return {
369
- id: itemValue,
370
- title,
371
- type: 'item',
372
- disabled: itemDisabled,
373
- node,
374
- };
375
- }), onClick: (id, item) => {
376
- const checkeds = item.node.changeStatus('UNCHECKED', selected);
377
- changeSelected(Array.from(checkeds.keys()));
358
+ const selectedNodes = _selected.map((value) => {
359
+ const node = nodesMap.get(value);
360
+ return {
361
+ value,
362
+ label: customSelected ? customSelected(value, node === null || node === void 0 ? void 0 : node.origin) : node ? node.origin.label : String(value),
363
+ node,
364
+ };
365
+ });
366
+ suffixNode = (_jsx(Dropdown, { list: selectedNodes.map(({ value, label, node }) => ({
367
+ id: value,
368
+ title: label,
369
+ type: 'item',
370
+ disabled: node === null || node === void 0 ? void 0 : node.origin.disabled,
371
+ })), onClick: (id) => {
372
+ changeSelected((draft) => {
373
+ draft.splice(draft.findIndex((v) => v === id), 1);
374
+ });
378
375
  return false;
379
376
  }, children: _jsx(Tag, { tabIndex: -1, size: size, children: selected.size }) }));
380
- selectedNode = selectedNodes.map((node) => (_jsxs(Tag, { size: size, children: [customSelected ? customSelected(node.origin) : node.origin.label, !(node.disabled || disabled) && (_jsx("div", Object.assign({}, styled('cascader__close'), { role: "button", "aria-label": t('Close'), onClick: (e) => {
377
+ selectedNode = selectedNodes.map(({ value, label, node }) => (_jsxs(Tag, { size: size, children: [label, !((node === null || node === void 0 ? void 0 : node.disabled) || disabled) && (_jsx("div", Object.assign({}, styled('cascader__close'), { role: "button", "aria-label": t('Close'), onClick: (e) => {
381
378
  e.stopPropagation();
382
379
  const checkeds = node.changeStatus('UNCHECKED', selected);
383
380
  changeSelected(Array.from(checkeds.keys()));
384
- }, children: _jsx(Icon, { children: _jsx(CloseOutlined, {}) }) })))] }, node.id)));
381
+ }, children: _jsx(Icon, { children: _jsx(CloseOutlined, {}) }) })))] }, value)));
385
382
  }
386
383
  else {
387
384
  if (!isNull(selected)) {
388
385
  const node = nodesMap.get(selected);
389
- if (node) {
390
- selectedLabel = getTreeNodeLabel(node);
391
- selectedNode = customSelected ? customSelected(node.origin) : selectedLabel;
392
- }
386
+ selectedLabel = node ? getTreeNodeLabel(node) : String(selected);
387
+ selectedNode = customSelected ? customSelected(selected, node === null || node === void 0 ? void 0 : node.origin) : selectedLabel;
393
388
  }
394
389
  }
395
390
  return [selectedNode, suffixNode, selectedLabel];
@@ -33,7 +33,7 @@ export interface CascaderProps<V extends React.Key, T extends CascaderItem<V>> e
33
33
  virtual?: boolean | number;
34
34
  escClosable?: boolean;
35
35
  customItem?: (item: T) => React.ReactNode;
36
- customSelected?: (selected: T) => string;
36
+ customSelected?: (value: V, selected?: T) => string;
37
37
  customSearch?: {
38
38
  filter?: (value: string, item: T) => boolean;
39
39
  sort?: (a: T, b: T) => number;
package/drawer/Drawer.js CHANGED
@@ -26,7 +26,7 @@ export const Drawer = (props) => {
26
26
  const bodyId = `${namespace}-drawer-content-${uniqueId}`;
27
27
  const drawerContext = useContext(DrawerContext);
28
28
  const drawerContextValue = useCallback((offsets) => {
29
- const offset = (offsets[placement].reduce((v, r) => v + r, 0) / 3) * 2;
29
+ const offset = offsets[placement].reduce((sum, v) => Math.min((v / 3) * 2, 200) + sum, 0);
30
30
  if (drawerRef.current) {
31
31
  drawerRef.current.style.transform =
32
32
  placement === 'top'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@laser-ui/components",
3
- "version": "0.6.1",
3
+ "version": "0.6.3",
4
4
  "description": "React components.",
5
5
  "keywords": [
6
6
  "ui",
@@ -26,8 +26,6 @@
26
26
  "module": "./index.js",
27
27
  "types": "./index.d.ts",
28
28
  "dependencies": {
29
- "@laser-ui/hooks": "0.6.1",
30
- "@laser-ui/utils": "0.6.1",
31
29
  "@material-design-icons/svg": "^0.14.12",
32
30
  "jss": "^10.10.0",
33
31
  "jss-preset-default": "^10.10.0",
@@ -42,5 +40,5 @@
42
40
  "access": "public",
43
41
  "directory": "../../dist/libs/components"
44
42
  },
45
- "gitHead": "156633eb28f7306ce633cea5bf5a094045aa4ad8"
43
+ "gitHead": "6530707d94520350ae2c3fe412c98f879d84902b"
46
44
  }
@@ -157,7 +157,7 @@ export function Pagination(props) {
157
157
  label: size.toString(),
158
158
  value: size,
159
159
  }));
160
- return (_jsx("div", { children: _jsx("div", { style: { paddingRight: gap }, children: _jsx(Select, { list: list, model: pageSize, size: mini ? 'small' : undefined, customItem: (item) => (customRender && customRender.pageSize ? customRender.pageSize(item.value) : item.label), customSelected: (select) => `${select.label}${t('Pagination', ' / Page')}`, onModelChange: (value) => {
160
+ return (_jsx("div", { children: _jsx("div", { style: { paddingRight: gap }, children: _jsx(Select, { list: list, model: pageSize, size: mini ? 'small' : undefined, customItem: (item) => (customRender && customRender.pageSize ? customRender.pageSize(item.value) : item.label), customSelected: (value, selected) => (selected ? `${selected.label}${t('Pagination', ' / Page')}` : String(value)), onModelChange: (value) => {
161
161
  if (!isNull(value)) {
162
162
  changePageSize(value);
163
163
  }
package/select/Select.js CHANGED
@@ -369,38 +369,33 @@ function SelectFC(props, ref) {
369
369
  let suffixNode = null;
370
370
  let selectedLabel;
371
371
  if (multiple) {
372
- const selectedItems = [];
373
- for (const v of _selected) {
374
- const item = itemsMap.get(v);
375
- if (item) {
376
- selectedItems.push(item);
377
- }
378
- }
379
- suffixNode = (_jsx(Dropdown, { list: selectedItems.map((item) => {
380
- const { label: itemLabel, value: itemValue, disabled: itemDisabled } = item;
381
- const text = customSelected ? customSelected(item) : itemLabel;
382
- return {
383
- id: itemValue,
384
- title: text,
385
- type: 'item',
386
- disabled: itemDisabled,
387
- };
388
- }), onClick: (id) => {
372
+ const selectedItems = _selected.map((value) => {
373
+ const item = itemsMap.get(value);
374
+ return {
375
+ value,
376
+ label: customSelected ? customSelected(value, item) : item ? item.label : String(value),
377
+ item,
378
+ };
379
+ });
380
+ suffixNode = (_jsx(Dropdown, { list: selectedItems.map(({ value, label, item }) => ({
381
+ id: value,
382
+ title: label,
383
+ type: 'item',
384
+ disabled: item === null || item === void 0 ? void 0 : item.disabled,
385
+ })), onClick: (id) => {
389
386
  changeSelectedByClick(id);
390
387
  return false;
391
388
  }, children: _jsx(Tag, { tabIndex: -1, size: size, children: selected.size }) }));
392
- selectedNode = selectedItems.map((item) => (_jsxs(Tag, { size: size, children: [customSelected ? customSelected(item) : item.label, !(item.disabled || disabled) && (_jsx("div", Object.assign({}, styled('select__close'), { role: "button", "aria-label": t('Close'), onClick: (e) => {
389
+ selectedNode = selectedItems.map(({ value, label, item }) => (_jsxs(Tag, { size: size, children: [label, !((item === null || item === void 0 ? void 0 : item.disabled) || disabled) && (_jsx("div", Object.assign({}, styled('select__close'), { role: "button", "aria-label": t('Close'), onClick: (e) => {
393
390
  e.stopPropagation();
394
- changeSelectedByClick(item.value);
395
- }, children: _jsx(Icon, { children: _jsx(CloseOutlined, {}) }) })))] }, item.value)));
391
+ changeSelectedByClick(value);
392
+ }, children: _jsx(Icon, { children: _jsx(CloseOutlined, {}) }) })))] }, value)));
396
393
  }
397
394
  else {
398
395
  if (!isNull(selected)) {
399
396
  const item = itemsMap.get(selected);
400
- if (item) {
401
- selectedLabel = item.label;
402
- selectedNode = customSelected ? customSelected(item) : selectedLabel;
403
- }
397
+ selectedLabel = item ? item.label : String(selected);
398
+ selectedNode = customSelected ? customSelected(selected, item) : selectedLabel;
404
399
  }
405
400
  }
406
401
  return [selectedNode, suffixNode, selectedLabel];
package/select/types.d.ts CHANGED
@@ -32,7 +32,7 @@ export interface SelectProps<V extends React.Key, T extends SelectItem<V>> exten
32
32
  virtual?: boolean | number;
33
33
  escClosable?: boolean;
34
34
  customItem?: (item: T) => React.ReactNode;
35
- customSelected?: (selected: T) => string;
35
+ customSelected?: (value: V, selected?: T) => string;
36
36
  customSearch?: {
37
37
  filter?: (value: string, item: T) => boolean;
38
38
  sort?: (a: T, b: T) => number;
@@ -377,41 +377,36 @@ function TreeSelectFC(props, ref) {
377
377
  let suffixNode = null;
378
378
  let selectedLabel;
379
379
  if (multiple) {
380
- const selectedNodes = [];
381
- for (const v of _selected) {
382
- const node = nodesMap.get(v);
383
- if (node) {
384
- selectedNodes.push(node);
385
- }
386
- }
387
- suffixNode = (_jsx(Dropdown, { list: selectedNodes.map((node) => {
388
- const { value: itemValue, disabled: itemDisabled } = node.origin;
389
- const title = customSelected ? customSelected(node.origin) : getTreeNodeLabel(node);
390
- return {
391
- id: itemValue,
392
- title,
393
- type: 'item',
394
- disabled: itemDisabled,
395
- node,
396
- };
397
- }), onClick: (id, item) => {
398
- const checkeds = item.node.changeStatus('UNCHECKED', selected);
399
- changeSelected(Array.from(checkeds.keys()));
380
+ const selectedNodes = _selected.map((value) => {
381
+ const node = nodesMap.get(value);
382
+ return {
383
+ value,
384
+ label: customSelected ? customSelected(value, node === null || node === void 0 ? void 0 : node.origin) : node ? node.origin.label : String(value),
385
+ node,
386
+ };
387
+ });
388
+ suffixNode = (_jsx(Dropdown, { list: selectedNodes.map(({ value, label, node }) => ({
389
+ id: value,
390
+ title: label,
391
+ type: 'item',
392
+ disabled: node === null || node === void 0 ? void 0 : node.origin.disabled,
393
+ })), onClick: (id) => {
394
+ changeSelected((draft) => {
395
+ draft.splice(draft.findIndex((v) => v === id), 1);
396
+ });
400
397
  return false;
401
398
  }, children: _jsx(Tag, { tabIndex: -1, size: size, children: selected.size }) }));
402
- selectedNode = selectedNodes.map((node) => (_jsxs(Tag, { size: size, children: [customSelected ? customSelected(node.origin) : node.origin.label, !(node.disabled || disabled) && (_jsx("div", Object.assign({}, styled('tree-select__close'), { role: "button", "aria-label": t('Close'), onClick: (e) => {
399
+ selectedNode = selectedNodes.map(({ value, label, node }) => (_jsxs(Tag, { size: size, children: [label, !((node === null || node === void 0 ? void 0 : node.disabled) || disabled) && (_jsx("div", Object.assign({}, styled('tree-select__close'), { role: "button", "aria-label": t('Close'), onClick: (e) => {
403
400
  e.stopPropagation();
404
401
  const checkeds = node.changeStatus('UNCHECKED', selected);
405
402
  changeSelected(Array.from(checkeds.keys()));
406
- }, children: _jsx(Icon, { children: _jsx(CloseOutlined, {}) }) })))] }, node.id)));
403
+ }, children: _jsx(Icon, { children: _jsx(CloseOutlined, {}) }) })))] }, value)));
407
404
  }
408
405
  else {
409
406
  if (!isNull(selected)) {
410
407
  const node = nodesMap.get(selected);
411
- if (node) {
412
- selectedLabel = getTreeNodeLabel(node);
413
- selectedNode = customSelected ? customSelected(node.origin) : selectedLabel;
414
- }
408
+ selectedLabel = node ? getTreeNodeLabel(node) : String(selected);
409
+ selectedNode = customSelected ? customSelected(selected, node === null || node === void 0 ? void 0 : node.origin) : selectedLabel;
415
410
  }
416
411
  }
417
412
  return [selectedNode, suffixNode, selectedLabel];
@@ -30,7 +30,7 @@ export interface TreeSelectProps<V extends React.Key, T extends TreeItem<V>> ext
30
30
  virtual?: boolean | number;
31
31
  escClosable?: boolean;
32
32
  customItem?: (item: T) => React.ReactNode;
33
- customSelected?: (selected: T) => string;
33
+ customSelected?: (value: V, selected?: T) => string;
34
34
  customSearch?: {
35
35
  filter?: (value: string, item: T) => boolean;
36
36
  sort?: (a: T, b: T) => number;