@teselagen/ui 0.9.3 → 0.9.4

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/index.cjs.js CHANGED
@@ -57255,9 +57255,14 @@ const DataTable = /* @__PURE__ */ __name((_I) => {
57255
57255
  acc[e.id || e.code] = i2;
57256
57256
  return acc;
57257
57257
  }, {});
57258
- const rowNumbersToCopy = Array.from(
57259
- new Set(selectedRecords.map((rec) => idToIndex[rec.id || rec.code] + 1))
57260
- ).sort();
57258
+ const rowNumbersToCopy = [];
57259
+ selectedRecords.forEach((rec) => {
57260
+ const rowIndex = idToIndex[rec.id || rec.code] + 1;
57261
+ if (!rowNumbersToCopy.includes(rowIndex)) {
57262
+ rowNumbersToCopy.push(rowIndex);
57263
+ }
57264
+ });
57265
+ rowNumbersToCopy.sort();
57261
57266
  if (!rowNumbersToCopy.length) return;
57262
57267
  rowNumbersToCopy.unshift(0);
57263
57268
  try {
package/index.es.js CHANGED
@@ -57237,9 +57237,14 @@ const DataTable = /* @__PURE__ */ __name((_I) => {
57237
57237
  acc[e.id || e.code] = i2;
57238
57238
  return acc;
57239
57239
  }, {});
57240
- const rowNumbersToCopy = Array.from(
57241
- new Set(selectedRecords.map((rec) => idToIndex[rec.id || rec.code] + 1))
57242
- ).sort();
57240
+ const rowNumbersToCopy = [];
57241
+ selectedRecords.forEach((rec) => {
57242
+ const rowIndex = idToIndex[rec.id || rec.code] + 1;
57243
+ if (!rowNumbersToCopy.includes(rowIndex)) {
57244
+ rowNumbersToCopy.push(rowIndex);
57245
+ }
57246
+ });
57247
+ rowNumbersToCopy.sort();
57243
57248
  if (!rowNumbersToCopy.length) return;
57244
57249
  rowNumbersToCopy.unshift(0);
57245
57250
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teselagen/ui",
3
- "version": "0.9.3",
3
+ "version": "0.9.4",
4
4
  "main": "./src/index.js",
5
5
  "type": "module",
6
6
  "exports": {
@@ -10,6 +10,7 @@
10
10
  },
11
11
  "./style.css": "./style.css"
12
12
  },
13
+ "devDependencies": {},
13
14
  "dependencies": {
14
15
  "@blueprintjs/core": "3.54.0",
15
16
  "@blueprintjs/datetime": "^3.24.1",
@@ -18,6 +19,7 @@
18
19
  "@dnd-kit/modifiers": "^7.0.0",
19
20
  "@dnd-kit/sortable": "^8.0.0",
20
21
  "@teselagen/react-table": "6.10.18",
22
+ "chance": "1.1.11",
21
23
  "classnames": "^2.3.2",
22
24
  "color": "^3.2.1",
23
25
  "copy-to-clipboard": "^3.3.1",
@@ -1242,9 +1242,15 @@ const DataTable = ({
1242
1242
 
1243
1243
  //index 0 of the table is the column titles
1244
1244
  //must add 1 to rowNum
1245
- const rowNumbersToCopy = Array.from(
1246
- new Set(selectedRecords.map(rec => idToIndex[rec.id || rec.code] + 1))
1247
- ).sort();
1245
+ // Dedupe rows by row index, not by Set (which dedupes by value)
1246
+ const rowNumbersToCopy = [];
1247
+ selectedRecords.forEach(rec => {
1248
+ const rowIndex = idToIndex[rec.id || rec.code] + 1;
1249
+ if (!rowNumbersToCopy.includes(rowIndex)) {
1250
+ rowNumbersToCopy.push(rowIndex);
1251
+ }
1252
+ });
1253
+ rowNumbersToCopy.sort();
1248
1254
 
1249
1255
  if (!rowNumbersToCopy.length) return;
1250
1256
  rowNumbersToCopy.unshift(0); //add in the header row
@@ -1,10 +0,0 @@
1
- export function EditableCell({ cancelEdit, dataTest, finishEdit, initialValue, isEditableCellInitialValue, isNumeric, shouldSelectAll, stopSelectAll }: {
2
- cancelEdit: any;
3
- dataTest: any;
4
- finishEdit: any;
5
- initialValue: any;
6
- isEditableCellInitialValue: any;
7
- isNumeric: any;
8
- shouldSelectAll: any;
9
- stopSelectAll: any;
10
- }): import("react/jsx-runtime").JSX.Element;
@@ -1,43 +0,0 @@
1
- import { noop } from 'lodash-es';
2
- declare namespace _default {
3
- export { noop as addFilters };
4
- export let className: string;
5
- export { noop as clearFilters };
6
- export { noop as contextMenu };
7
- export let disabled: boolean;
8
- export let entities: never[];
9
- export let extraClasses: string;
10
- export let filters: never[];
11
- export let isCopyable: boolean;
12
- export { noop as isEntityDisabled };
13
- export let isLoading: boolean;
14
- export let isSimple: boolean;
15
- export let isSingleSelect: boolean;
16
- export let maxHeight: number;
17
- export let noHeader: boolean;
18
- export let noSelect: boolean;
19
- export let noUserSelect: boolean;
20
- export { noop as onDeselect };
21
- export { noop as onMultiRowSelect };
22
- export { noop as onRowClick };
23
- export { noop as onRowSelect };
24
- export { noop as onSingleRowSelect };
25
- export let page: number;
26
- export let pageSize: number;
27
- export let reduxFormExpandedEntityIdMap: {};
28
- export let reduxFormSearchInput: string;
29
- export let reduxFormSelectedEntityIdMap: {};
30
- export { noop as removeSingleFilter };
31
- export let resized: never[];
32
- export { noop as resizePersist };
33
- export { noop as setFilter };
34
- export { noop as setOrder };
35
- export { noop as setPage };
36
- export { noop as setPageSize };
37
- export { noop as setSearchTerm };
38
- export let showCount: boolean;
39
- export let style: {};
40
- export let withCheckboxes: boolean;
41
- export let withSort: boolean;
42
- }
43
- export default _default;
@@ -1 +0,0 @@
1
- export default function computePresets(props?: {}): import('lodash').Dictionary<any>;
@@ -1,55 +0,0 @@
1
- import React, { useEffect, useRef, useState } from "react";
2
-
3
- export const EditableCell = ({
4
- cancelEdit,
5
- dataTest,
6
- finishEdit,
7
- initialValue,
8
- isEditableCellInitialValue,
9
- isNumeric,
10
- shouldSelectAll,
11
- stopSelectAll
12
- }) => {
13
- const [value, setValue] = useState(initialValue);
14
- const inputRef = useRef(null);
15
-
16
- useEffect(() => {
17
- if (inputRef.current) {
18
- inputRef.current.focus();
19
- if (isEditableCellInitialValue && !isNumeric) {
20
- inputRef.current.selectionStart = inputRef.current.value.length;
21
- inputRef.current.selectionEnd = inputRef.current.value.length;
22
- } else if (shouldSelectAll) {
23
- inputRef.current.select();
24
- stopSelectAll();
25
- }
26
- }
27
- }, [isEditableCellInitialValue, isNumeric, shouldSelectAll, stopSelectAll]);
28
-
29
- return (
30
- <input
31
- style={{
32
- border: 0,
33
- width: "95%",
34
- fontSize: 12,
35
- background: "none"
36
- }}
37
- ref={inputRef}
38
- {...dataTest}
39
- autoFocus
40
- onKeyDown={e => {
41
- if (e.key === "Enter") {
42
- finishEdit(value);
43
- e.stopPropagation();
44
- } else if (e.key === "Escape") {
45
- e.stopPropagation();
46
- cancelEdit();
47
- }
48
- }}
49
- onBlur={() => finishEdit(value)}
50
- onChange={e => setValue(e.target.value)}
51
- type={isNumeric ? "number" : undefined}
52
- value={value}
53
- />
54
- );
55
- };
@@ -1,45 +0,0 @@
1
- import { noop } from "lodash-es";
2
-
3
- // eslint-disable-next-line import/no-anonymous-default-export
4
- export default {
5
- //NOTE: DO NOT SET DEFAULTS HERE FOR PROPS THAT GET COMPUTED AS PART OF PRESET GROUPS IN computePresets
6
- addFilters: noop,
7
- className: "",
8
- clearFilters: noop,
9
- contextMenu: noop,
10
- disabled: false,
11
- entities: [],
12
- extraClasses: "",
13
- filters: [],
14
- isCopyable: true,
15
- isEntityDisabled: noop,
16
- isLoading: false,
17
- isSimple: false,
18
- isSingleSelect: false,
19
- maxHeight: 600,
20
- noHeader: false,
21
- noSelect: false,
22
- noUserSelect: false,
23
- onDeselect: noop,
24
- onMultiRowSelect: noop,
25
- onRowClick: noop,
26
- onRowSelect: noop,
27
- onSingleRowSelect: noop,
28
- page: 1,
29
- pageSize: 10,
30
- reduxFormExpandedEntityIdMap: {},
31
- reduxFormSearchInput: "",
32
- reduxFormSelectedEntityIdMap: {},
33
- removeSingleFilter: noop,
34
- resized: [],
35
- resizePersist: noop,
36
- setFilter: noop,
37
- setOrder: noop,
38
- setPage: noop,
39
- setPageSize: noop,
40
- setSearchTerm: noop,
41
- showCount: false,
42
- style: {},
43
- withCheckboxes: false,
44
- withSort: true
45
- };
@@ -1,42 +0,0 @@
1
- import { omitBy, isNil } from "lodash-es";
2
- //we use this to make adding preset prop groups simpler
3
- export default function computePresets(props = {}) {
4
- const { isSimple } = props;
5
- let toReturn = omitBy(props, isNil);
6
- toReturn.pageSize = toReturn.controlled_pageSize || toReturn.pageSize;
7
- if (isSimple) {
8
- //isSimplePreset
9
- toReturn = {
10
- noHeader: true,
11
- noFooter: !props.withPaging,
12
- noPadding: true,
13
- noFullscreenButton: true,
14
- hidePageSizeWhenPossible: !props.withPaging,
15
- isInfinite: !props.withPaging,
16
- hideSelectedCount: true,
17
- withTitle: false,
18
- withSearch: false,
19
- compact: true,
20
- withPaging: false,
21
- withFilter: false,
22
- ...toReturn
23
- };
24
- } else {
25
- toReturn = {
26
- // the usual defaults:
27
- noFooter: false,
28
- noPadding: false,
29
- compact: true,
30
- noFullscreenButton: false,
31
- hidePageSizeWhenPossible: false,
32
- isInfinite: false,
33
- hideSelectedCount: false,
34
- withTitle: true,
35
- withSearch: true,
36
- withPaging: true,
37
- withFilter: true,
38
- ...toReturn
39
- };
40
- }
41
- return toReturn || {};
42
- }
package/src/ExcelCell.js DELETED
@@ -1,38 +0,0 @@
1
- /* eslint react/jsx-no-bind: 0 */
2
- import { Popover } from "@blueprintjs/core";
3
- import React, { useState } from "react";
4
-
5
- export default function ExcelCell() {
6
- const [v, setV] = useState("");
7
- const [isPopoverOpen, setIsPopoverOpen] = useState(false);
8
- return (
9
- <Popover
10
- onClose={() => {
11
- setIsPopoverOpen(false);
12
- }}
13
- isOpen={isPopoverOpen}
14
- content={<div>Sum</div>}
15
- >
16
- <div
17
- style={{
18
- border: "1px solid #ccc",
19
- padding: 5,
20
- width: 100,
21
- height: 30
22
- }}
23
- contentEditable
24
- onInput={e => {
25
- const text = e.currentTarget.textContent;
26
-
27
- if (text === "=") {
28
- // open a popover
29
- setIsPopoverOpen(true);
30
- }
31
- setV(text);
32
- }}
33
- >
34
- {v}
35
- </div>
36
- </Popover>
37
- );
38
- }