namirasoft-site-react 1.4.467 → 1.4.468

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/dist/App.d.ts CHANGED
@@ -4,7 +4,6 @@ import './App.css';
4
4
  interface AppProps {
5
5
  }
6
6
  export declare class App extends Component<AppProps> {
7
- private Box;
8
7
  render(): import("react/jsx-runtime").JSX.Element;
9
8
  }
10
9
  export {};
package/dist/App.js CHANGED
@@ -7,19 +7,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
+ import { jsx as _jsx } from "react/jsx-runtime";
11
11
  import 'bootstrap/dist/css/bootstrap.min.css';
12
- import { Component, createRef } from 'react';
12
+ import { Component } from 'react';
13
13
  import './App.css';
14
- import { NSBoxEntity } from './components/NSBoxEntity';
15
14
  import { NSLayout } from './components/NSLayout';
16
- import { NSSection } from './components/NSSection';
17
- import { NSButtonBlue, NSColumn } from './main';
15
+ import { EmailFormatter, IntegerFormatter, NSTable, PhoneFormatter, StringFormatter, StringFormatterSizeType } from './main';
18
16
  export class App extends Component {
19
- constructor() {
20
- super(...arguments);
21
- this.Box = createRef();
22
- }
23
17
  render() {
24
18
  return (_jsx(NSLayout, { header: {
25
19
  right: {
@@ -31,20 +25,31 @@ export class App extends Component {
31
25
  }
32
26
  ],
33
27
  }
34
- }, isLoggedIn: () => true, logo: 'https://static.namirasoft.com/image/namirasoft/access/logo/base.png', background: { image: "https://static.namirasoft.com/image/namirasoft/access/background/base.svg" }, notifications: [], notifier: {}, scope: '', children: _jsx(NSSection, { style: { paddingTop: "3rem" }, children: _jsxs(NSColumn, { children: [_jsx(NSBoxEntity, { ref: this.Box, title: "Test Entity Box", getTitle: item => item.value, getValue: item => item.value, multiple: true, required: true, table_name: "product", defaultValue: ["Mohammad"], list: () => __awaiter(this, void 0, void 0, function* () {
35
- return ({
36
- rows: [
37
- { id: "a1", value: "Amin" },
38
- { id: "b2", value: "Negar" },
39
- { id: "c3", value: "Hadis" },
40
- { id: "d4", value: "Lida" },
41
- ],
42
- count: 4,
43
- });
44
- }), getSort: () => null }), _jsx(NSButtonBlue, { title: 'Set Value', onClick: {
45
- action: () => { var _a; return (_a = this.Box.current) === null || _a === void 0 ? void 0 : _a.setValue(["Milad"]); },
46
- showLoading: false
47
- } })] }) }) }));
28
+ }, isLoggedIn: () => true, logo: 'https://static.namirasoft.com/image/namirasoft/access/logo/base.png', background: { image: "https://static.namirasoft.com/image/namirasoft/access/background/base.svg" }, notifications: [], notifier: {}, scope: '', children: _jsx(NSTable, { name: 'users', checkbox: true, getRows: () => __awaiter(this, void 0, void 0, function* () {
29
+ return {
30
+ count: 10,
31
+ rows: [
32
+ { id: "a1", first_name: "Amin", last_name: "Pasban", age: 27, phone: "09117579093", email: "amin.cj0077@gmail.com", bio: "Loves literature and writing, constantly seeking." },
33
+ { id: "a2", first_name: "Sara", last_name: "Moradi", age: 24, phone: "09123456781", email: "sara.moradi@example.com", bio: "Passionate about design and technology, enjoys." },
34
+ { id: "a3", first_name: "Reza", last_name: "Karimi", age: 31, phone: "09129876542", email: "reza.karimi@example.com", bio: "Software engineer with experience in backend system." },
35
+ { id: "a4", first_name: "Niloofar", last_name: "Ahmadi", age: 29, phone: "09351234567", email: "niloofar.ahmadi@example.com", bio: "Enthusiastic about art and photography." },
36
+ { id: "a5", first_name: "Hossein", last_name: "Bagheri", age: 35, phone: "09134561234", email: "hossein.bagheri@example.com", bio: "Expert in finance and investment, passionate about." },
37
+ { id: "a6", first_name: "Maryam", last_name: "Shahbazi", age: 26, phone: "09141239876", email: "maryam.shahbazi@example.com", bio: "Loves literature and writing, constantly seeking." },
38
+ { id: "a7", first_name: "Ali", last_name: "Rostami", age: 28, phone: "09151237654", email: "ali.rostami@example.com", bio: "Tech enthusiast and full-stack developer, enjoys contributing." },
39
+ { id: "a8", first_name: "Fatemeh", last_name: "Jafari", age: 30, phone: "09361234589", email: "fatemeh.jafari@example.com", bio: "Interested in psychology and self-development, spends." },
40
+ { id: "a9", first_name: "Mohammad", last_name: "Esfandiari", age: 33, phone: "09162348752", email: "mohammad.esfandiari@example.com", bio: "Specialized in marketing strategies, creative thinker." },
41
+ { id: "b1", first_name: "Elham", last_name: "Khosravi", age: 25, phone: "09203456781", email: "elham.khosravi@example.com", bio: "Graphic designer with a flair for modern art." }
42
+ ]
43
+ };
44
+ }), getRowKey: (item) => item.value.id, columns: [
45
+ { index: 0, name: "id", text: "ID", table: { name: "users", text: "users" }, formatter: new StringFormatter(StringFormatterSizeType.Word) },
46
+ { index: 0, name: "first_name", text: "First Name", table: { name: "users", text: "users" }, formatter: new StringFormatter(StringFormatterSizeType.TwoWords) },
47
+ { index: 0, name: "last_name", text: "Last Name", table: { name: "users", text: "users" }, formatter: new StringFormatter(StringFormatterSizeType.TwoWords) },
48
+ { index: 0, name: "age", text: "Age", table: { name: "users", text: "users" }, formatter: new IntegerFormatter() },
49
+ { index: 0, name: "phone", text: "Phone Number", table: { name: "users", text: "users" }, formatter: new PhoneFormatter() },
50
+ { index: 0, name: "email", text: "Email Address", table: { name: "users", text: "users" }, formatter: new EmailFormatter() },
51
+ { index: 0, name: "bio", text: "Bio", table: { name: "users", text: "users" }, formatter: new StringFormatter(StringFormatterSizeType.Description) },
52
+ ] }) }));
48
53
  }
49
54
  }
50
55
  //# sourceMappingURL=App.js.map
package/dist/App.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"App.js","sourceRoot":"","sources":["../src/App.tsx"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,sCAAsC,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,WAAW,CAAC;AACnB,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAIhD,MAAM,OAAO,GAAI,SAAQ,SAAmB;IAA5C;;QAEY,QAAG,GAAG,SAAS,EAA8C,CAAC;IA0D1E,CAAC;IAxDY,MAAM;QAEX,OAAO,CACH,KAAC,QAAQ,IACL,MAAM,EAAE;gBACJ,KAAK,EAAE;oBACH,KAAK,EAAE;wBACH;4BACI,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC;4BACpB,GAAG,EAAE,qEAAqE;4BAC1E,KAAK,EAAE,CAAC;yBACX;qBACJ;iBACJ;aACJ,EACD,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,EACtB,IAAI,EAAC,qEAAqE,EAC1E,UAAU,EAAE,EAAE,KAAK,EAAE,2EAA2E,EAAE,EAClG,aAAa,EAAE,EAAE,EACjB,QAAQ,EAAE,EAAS,EACnB,KAAK,EAAC,EAAE,YAER,KAAC,SAAS,IAAC,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,YACpC,MAAC,QAAQ,eACL,KAAC,WAAW,IACR,GAAG,EAAE,IAAI,CAAC,GAAG,EACb,KAAK,EAAC,iBAAiB,EACvB,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAC5B,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAC5B,QAAQ,QACR,QAAQ,QACR,UAAU,EAAC,SAAS,EACpB,YAAY,EAAE,CAAC,UAAU,CAAC,EAC1B,IAAI,EAAE,GAAS,EAAE;gCAAC,OAAA,CAAC;oCACf,IAAI,EAAE;wCACF,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;wCAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;wCAC5B,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;wCAC5B,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;qCAC9B;oCACD,KAAK,EAAE,CAAC;iCACX,CAAC,CAAA;8BAAA,EACF,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,GACrB,EACF,KAAC,YAAY,IACT,KAAK,EAAC,WAAW,EACjB,OAAO,EAAE;gCACL,MAAM,EAAE,GAAG,EAAE,WAAC,OAAA,MAAA,IAAI,CAAC,GAAG,CAAC,OAAO,0CAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA,EAAA;gCACnD,WAAW,EAAE,KAAK;6BACrB,GACH,IACK,GACH,GACL,CACd,CAAC;IACN,CAAC;CACJ"}
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../src/App.tsx"],"names":[],"mappings":"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"}
@@ -42,9 +42,9 @@ export interface NSTableProps<RowType> extends IBaseComponentProps {
42
42
  [key: string]: any;
43
43
  };
44
44
  getCellFormattedValue?: (value: any, column: TableColumnInfo, row: TableRowInfo<RowType>, printable: boolean) => any;
45
- onColumnClick?: (e: React.MouseEvent<HTMLTableDataCellElement, MouseEvent>, column: TableColumnInfo) => void;
45
+ onColumnClick?: (e: React.MouseEvent<HTMLTableCellElement, MouseEvent>, column: TableColumnInfo) => void;
46
46
  onRowClick?: (e: React.MouseEvent<HTMLTableRowElement, MouseEvent>, row: TableRowInfo<RowType>) => void;
47
- onCellClick?: (e: React.MouseEvent<HTMLTableDataCellElement, MouseEvent>, cell: TableCellInfo<RowType>) => boolean | undefined;
47
+ onCellClick?: (e: React.MouseEvent<HTMLTableCellElement, MouseEvent>, cell: TableCellInfo<RowType>) => boolean | undefined;
48
48
  onSelectedIDsChanged?: () => void;
49
49
  onSortChanged?: (items: SortItem[] | null) => void;
50
50
  onVisibleColumnsChanged?: (visible_columns: {
@@ -80,6 +80,7 @@ declare enum PageSelectionMode {
80
80
  }
81
81
  export declare class NSTable<RowType> extends Component<NSTableProps<RowType>, NSTableState<RowType>> {
82
82
  private nstable_top_div;
83
+ private lastSelectedRowID;
83
84
  NSPagination: React.RefObject<NSPagination>;
84
85
  constructor(props: NSTableProps<RowType>);
85
86
  private getSortItemsKey;
@@ -102,14 +103,17 @@ export declare class NSTable<RowType> extends Component<NSTableProps<RowType>, N
102
103
  private hideModal;
103
104
  private onPageChange;
104
105
  reload(page: number | null, size: number | null): Promise<void>;
105
- private toggleAllCheckboxes;
106
+ private toggleAllSelections;
106
107
  print(rows: RowType[]): void;
107
108
  exportCSV(rows: RowType[]): void;
109
+ handleSelectRow(row: TableRowInfo<RowType>, selected: boolean, ctrlKey: boolean, shiftKey: boolean): void;
110
+ getRowsInRange(fromIndex: number, toIndex: number): RowType[];
108
111
  getSelectedIDs(): string[];
109
112
  getSelectedRows(): RowType[];
110
113
  setSelectedIDs(ids: string[], rows: RowType[], callback?: () => void): void;
111
- private isAllChecked;
112
- private isSomeChecked;
114
+ private isAllSelected;
115
+ private isSomeSelected;
116
+ private isMultipleSelected;
113
117
  private getCellTableInfo;
114
118
  private getCellFormattedValue;
115
119
  componentDidMount(): void;
@@ -8,7 +8,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
- import { createElement as _createElement } from "react";
12
11
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
13
12
  import React from "react";
14
13
  import { Component } from 'react';
@@ -32,6 +31,7 @@ export class NSTable extends Component {
32
31
  constructor(props) {
33
32
  super(props);
34
33
  this.nstable_top_div = React.createRef();
34
+ this.lastSelectedRowID = null;
35
35
  this.NSPagination = React.createRef();
36
36
  this.state = {
37
37
  columns: props.columns,
@@ -58,11 +58,11 @@ export class NSTable extends Component {
58
58
  this.showModal = this.showModal.bind(this);
59
59
  this.hideModal = this.hideModal.bind(this);
60
60
  this.onPageChange = this.onPageChange.bind(this);
61
- this.isSomeChecked = this.isSomeChecked.bind(this);
62
- this.toggleAllCheckboxes = this.toggleAllCheckboxes.bind(this);
61
+ this.isSomeSelected = this.isSomeSelected.bind(this);
62
+ this.toggleAllSelections = this.toggleAllSelections.bind(this);
63
63
  this.print = this.print.bind(this);
64
64
  this.exportCSV = this.exportCSV.bind(this);
65
- this.isAllChecked = this.isAllChecked.bind(this);
65
+ this.isAllSelected = this.isAllSelected.bind(this);
66
66
  this.reload = this.reload.bind(this);
67
67
  }
68
68
  getSortItemsKey() {
@@ -161,16 +161,18 @@ export class NSTable extends Component {
161
161
  }
162
162
  });
163
163
  }
164
- toggleAllCheckboxes() {
164
+ toggleAllSelections() {
165
165
  var _a;
166
166
  let selectedIDs = [];
167
167
  let selectedRows = [];
168
- if (this.getSelectedIDs().length === 0)
168
+ this.lastSelectedRowID = null;
169
+ if (this.getSelectedIDs().length === 0) {
169
170
  (_a = this.state.rows) === null || _a === void 0 ? void 0 : _a.forEach((row, rowIndex) => {
170
171
  let id = this.props.getRowKey({ index: rowIndex, value: row });
171
172
  selectedIDs.push(id);
172
173
  selectedRows.push(row);
173
174
  });
175
+ }
174
176
  this.setSelectedIDs(selectedIDs, selectedRows);
175
177
  }
176
178
  print(rows) {
@@ -205,6 +207,48 @@ export class NSTable extends Component {
205
207
  utils.book_append_sheet(workbook, worksheet, this.props.name);
206
208
  writeFile(workbook, this.props.name + ".xlsx");
207
209
  }
210
+ handleSelectRow(row, selected, ctrlKey, shiftKey) {
211
+ var _a;
212
+ let selectedIDs = this.state.selectedIDs;
213
+ let selectedRows = this.state.selectedRows;
214
+ let rowID = this.props.getRowKey(row);
215
+ if (shiftKey) {
216
+ selectedRows = this.getRowsInRange((_a = this.lastSelectedRowID) !== null && _a !== void 0 ? _a : 0, row.index);
217
+ selectedIDs = selectedRows.map(row => this.props.getRowKey({ index: -1, value: row }));
218
+ }
219
+ else if (selected) {
220
+ if (this.isMultipleSelected() && !ctrlKey) {
221
+ selectedIDs = [rowID];
222
+ selectedRows = [row.value];
223
+ this.lastSelectedRowID = row.index;
224
+ }
225
+ else {
226
+ selectedIDs = selectedIDs.filter(x => x !== rowID);
227
+ selectedRows = selectedRows.filter(x => this.props.getRowKey({ index: -1, value: x }) !== rowID);
228
+ this.lastSelectedRowID = ctrlKey ? row.index : null;
229
+ }
230
+ }
231
+ else {
232
+ if (ctrlKey) {
233
+ selectedIDs.push(rowID);
234
+ selectedRows.push(row.value);
235
+ }
236
+ else {
237
+ selectedIDs = [rowID];
238
+ selectedRows = [row.value];
239
+ }
240
+ this.lastSelectedRowID = row.index;
241
+ }
242
+ this.setSelectedIDs(selectedIDs, selectedRows);
243
+ }
244
+ getRowsInRange(fromIndex, toIndex) {
245
+ var _a;
246
+ if (!this.state.rows)
247
+ return [];
248
+ let start = Math.min(fromIndex, toIndex);
249
+ let end = Math.max(fromIndex, toIndex);
250
+ return (_a = this.state.rows) === null || _a === void 0 ? void 0 : _a.slice(start, end + 1);
251
+ }
208
252
  getSelectedIDs() {
209
253
  return this.state.selectedIDs;
210
254
  }
@@ -219,11 +263,14 @@ export class NSTable extends Component {
219
263
  callback();
220
264
  });
221
265
  }
222
- isAllChecked() {
266
+ isAllSelected() {
223
267
  return this.state.rows !== null && this.state.rows.length > 0 && this.state.selectedIDs.length === this.state.rows.length;
224
268
  }
225
- isSomeChecked() {
226
- return this.state.selectedIDs.length > 0 && !this.isAllChecked();
269
+ isSomeSelected() {
270
+ return this.state.selectedIDs.length > 0 && !this.isAllSelected();
271
+ }
272
+ isMultipleSelected() {
273
+ return this.state.selectedIDs.length > 1;
227
274
  }
228
275
  getCellTableInfo(column, row, printable) {
229
276
  let value = row.value[column.name];
@@ -255,7 +302,11 @@ export class NSTable extends Component {
255
302
  if (this.props.onColumnClick)
256
303
  this.props.onColumnClick(e, column);
257
304
  };
258
- let onRowClick = (e, row) => {
305
+ let onRowClick = (e, row, selected) => {
306
+ var _a;
307
+ const target = e.target;
308
+ if (target.tagName === "TR" || ((_a = target.closest("td")) === null || _a === void 0 ? void 0 : _a.dataset.cellType) === "checkbox")
309
+ this.handleSelectRow(row, selected, e.ctrlKey, e.shiftKey);
259
310
  if (this.props.onRowClick)
260
311
  this.props.onRowClick(e, row);
261
312
  };
@@ -277,29 +328,19 @@ export class NSTable extends Component {
277
328
  else {
278
329
  content = this.state.rows.map((rowValue, rowIndex) => {
279
330
  let row = { index: rowIndex, value: rowValue };
280
- return _jsxs("tr", Object.assign({}, getRowAttributes(rowValue, rowIndex), { onClick: (e) => { onRowClick(e, row); }, children: [this.props.checkbox &&
281
- _jsx("td", { children: _jsx("label", { htmlFor: `checkbox_device_${this.props.getRowKey(row)}`, className: Styles.ns_check_box_label, children: _jsx("input", { id: `checkbox_device_${this.props.getRowKey(row)}`, type: "checkbox", className: Styles.ns_check_box, checked: this.state.selectedIDs.includes(this.props.getRowKey(row)), onChange: (e) => {
282
- let selectedIDs = this.state.selectedIDs;
283
- let selectedRows = this.state.selectedRows;
284
- let id = this.props.getRowKey(row);
285
- if (e.currentTarget.checked) {
286
- selectedIDs.push(id);
287
- selectedRows.push(row.value);
288
- }
289
- else {
290
- selectedIDs = selectedIDs.filter(x => x !== id);
291
- selectedRows = selectedRows.filter(x => this.props.getRowKey({ index: -1, value: x }) !== id);
292
- }
293
- this.setSelectedIDs(selectedIDs, selectedRows);
294
- } }) }) }), this.getColumns(true).map((column, index) => {
331
+ let rowKey = this.props.getRowKey(row);
332
+ let isSelected = this.state.selectedIDs.includes(rowKey);
333
+ let isLastSelected = this.lastSelectedRowID === row.index;
334
+ return (_jsxs("tr", Object.assign({}, getRowAttributes(rowValue, rowIndex), { className: `${isSelected ? Styles.ns_selected : ""} ${isLastSelected ? Styles.ns_last_selected : ""}`.trim(), onClick: (e) => onRowClick(e, row, isSelected), children: [this.props.checkbox &&
335
+ _jsx("td", { "data-cell-type": "checkbox", children: _jsx("label", { htmlFor: `checkbox_device_${rowKey}`, className: Styles.ns_check_box_label, children: _jsx("input", { id: `checkbox_device_${rowKey}`, type: "checkbox", checked: isSelected, className: Styles.ns_check_box, onChange: () => { } }) }) }), this.getColumns(true).map((column, index) => {
295
336
  var _a;
296
337
  column.index = index + (this.props.checkbox ? 1 : 0);
297
338
  let cell = this.getCellTableInfo(column, row, false);
298
- return (_createElement("td", Object.assign({ className: 'py-3', width: column.formatter.width }, getColumnAttributes(column), { key: column.index, "data-label": `${column.text}: `, onClick: (e) => {
339
+ return (_jsx("td", Object.assign({}, getColumnAttributes(column), { "data-label": `${column.text}: `, width: column.formatter.width, className: 'py-3', onClick: (e) => {
299
340
  onColumnClick(e, column);
300
341
  onCellClick(e, cell);
301
- } }), (_a = cell.formatted) !== null && _a !== void 0 ? _a : ""));
302
- })] }), this.props.getRowKey(row));
342
+ }, children: (_a = cell.formatted) !== null && _a !== void 0 ? _a : "" }), column.index));
343
+ })] }), rowKey));
303
344
  });
304
345
  }
305
346
  let getSortSign = (column) => {
@@ -314,7 +355,7 @@ export class NSTable extends Component {
314
355
  return "";
315
356
  };
316
357
  return (_jsxs(_Fragment, { children: [_jsx("div", { ref: this.nstable_top_div }), _jsxs("div", { id: this.props.id, className: (_b = (_a = this.props.classList) === null || _a === void 0 ? void 0 : _a.join(" ")) !== null && _b !== void 0 ? _b : "", style: this.props.style, children: [_jsxs("table", { className: Styles.ns_table, children: [_jsx("thead", { children: _jsxs("tr", { children: [this.props.checkbox &&
317
- _jsx("th", { style: { width: "24px", height: "24px" }, children: _jsx("label", { htmlFor: 'checkbox', className: Styles.ns_checkbox_label, children: _jsx("input", { id: "checkbox", type: "checkbox", className: `${Styles.ns_check_box} ${this.isSomeChecked() ? Styles.ns_indeterminate : ""}`, checked: this.getSelectedIDs().length > 0, onChange: this.toggleAllCheckboxes }) }) }), this.getColumns(true).map(column => _jsx("th", { scope: "col", style: { width: column.formatter.width, cursor: "pointer" }, onClick: () => {
358
+ _jsx("th", { style: { width: "24px", height: "24px" }, children: _jsx("label", { htmlFor: 'checkbox', className: Styles.ns_checkbox_label, children: _jsx("input", { id: "checkbox", type: "checkbox", className: `${Styles.ns_check_box} ${this.isSomeSelected() ? Styles.ns_indeterminate : ""}`, checked: this.getSelectedIDs().length > 0, onChange: this.toggleAllSelections }) }) }), this.getColumns(true).map(column => _jsx("th", { scope: "col", style: { width: column.formatter.width, cursor: "pointer" }, onClick: () => {
318
359
  let t = new BaseMetaTable(null, column.table.name, column.table.text);
319
360
  let c = new BaseMetaColumn(t, column.name, column.text, "", false);
320
361
  let items = this.getSortItems();
@@ -1 +1 @@
1
- {"version":3,"file":"NSTable.js","sourceRoot":"","sources":["../../src/components/NSTable.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NSTable.js","sourceRoot":"","sources":["../../src/components/NSTable.tsx"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  .ns_table {
2
2
  display: flex;
3
3
  flex-direction: column;
4
- color: rgba(20, 27, 92, 1);
5
4
  overflow-x: auto;
5
+ color: rgba(20, 27, 92);
6
6
  }
7
7
 
8
8
  .ns_search_input {
@@ -23,7 +23,6 @@
23
23
  z-index: -1;
24
24
  }
25
25
 
26
-
27
26
  .ns_table thead {
28
27
  clip: rect(0 0 0 0);
29
28
  position: fixed;
@@ -37,12 +36,8 @@
37
36
  transition: all 0.2s ease-in-out;
38
37
  }
39
38
 
40
- /* .ns_table th {
41
- margin: 8px;
42
- } */
43
-
44
39
  .ns_table td {
45
- display: -webkit-box;
40
+ display: flex;
46
41
  flex-direction: row;
47
42
  gap: 16px;
48
43
  margin: 8px;
@@ -70,20 +65,20 @@
70
65
  min-width: 30%;
71
66
  }
72
67
 
73
- .ns_tbody tr:nth-child(odd):hover {
74
- background-color: rgb(184 190 240 / 57%);
68
+ .ns_tbody tr:nth-child(odd) {
69
+ background-color: #f5f5f5;
75
70
  }
76
71
 
77
- .ns_tbody tr:nth-child(even):hover {
78
- background-color: rgb(184 190 240 / 57%);
72
+ .ns_tbody tr:nth-child(even) {
73
+ background-color: #ffffff;
79
74
  }
80
75
 
81
- .ns_tbody tr:nth-child(odd) {
82
- background-color: #eaeaea;
76
+ .ns_tbody tr:hover {
77
+ background-color: rgb(184, 190, 240, 0.32);
83
78
  }
84
79
 
85
- .ns_tbody tr:nth-child(even) {
86
- background-color: #ffffff;
80
+ .ns_tbody tr.ns_selected {
81
+ background-color: rgb(184, 190, 240, 0.64);
87
82
  }
88
83
 
89
84
  .ns_table_footer {
@@ -150,13 +145,7 @@
150
145
  gap: 16px;
151
146
  }
152
147
 
153
- @media screen and (min-width: 992px) {
154
- .ns_table tr {
155
- border-radius: 8px;
156
- }
157
- }
158
-
159
- @media screen and (max-width: 992px) {
148
+ @media screen and (max-width: 991px) {
160
149
  .ns_table td {
161
150
  width: auto;
162
151
  }
@@ -164,41 +153,51 @@
164
153
 
165
154
  @media screen and (min-width: 992px) {
166
155
  .ns_table {
167
- color: #000000;
168
- background-color: white;
169
- display: flex;
170
156
  justify-content: center;
157
+ color: #000;
171
158
  }
172
159
 
173
160
  .ns_table thead {
174
161
  position: static;
175
- background-color: rgba(20, 27, 92, 1);
176
162
  border-top-left-radius: 8px;
177
163
  border-top-right-radius: 8px;
178
164
  min-width: max-content;
179
165
  }
180
166
 
167
+ .ns_table thead tr {
168
+ background-color: rgba(20, 27, 92);
169
+ }
170
+
181
171
  .ns_table tbody {
182
- background-color: rgba(255, 255, 255, 1);
172
+ background-color: #fff;
183
173
  min-width: max-content;
184
174
  }
185
175
 
186
176
  .ns_table tr {
187
- display: grid;
188
- grid-auto-flow: column;
189
- grid-auto-columns: max-content;
190
- padding: 16px 8px;
191
177
  margin: 0;
178
+ border: 1px solid transparent;
192
179
  border-radius: 0;
193
- border-bottom: 1px solid rgba(20, 27, 92, 0.3);
194
- background-color: transparent;
180
+ padding: 4px 8px;
181
+ display: grid;
195
182
  align-items: center;
183
+ grid-auto-flow: column;
184
+ grid-auto-columns: max-content;
185
+ }
186
+
187
+ .ns_table tr.ns_selected,
188
+ .ns_table tr.ns_last_selected {
189
+ border-color: rgba(20, 27, 92);
190
+ }
191
+
192
+ .ns_table tr.ns_selected+tr,
193
+ .ns_table tr.ns_last_selected+tr {
194
+ border-top-color: transparent;
196
195
  }
197
196
 
198
197
  .ns_table th {
199
198
  font-size: 16px;
200
- font-weight: 300;
201
- color: #ffffff;
199
+ font-weight: 500;
200
+ color: #fff;
202
201
  padding: 0;
203
202
  margin: 8px;
204
203
  }
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "framework": "npm",
9
9
  "application": "package",
10
10
  "private": false,
11
- "version": "1.4.467",
11
+ "version": "1.4.468",
12
12
  "author": "Amir Abolhasani",
13
13
  "license": "MIT",
14
14
  "main": "./dist/main.js",
@@ -21,7 +21,7 @@
21
21
  "copy": "copyfiles -u 1 src/**/*.html src/**/*.css src/**/*.svg src/**/*.png src/**/*.jpg dist/"
22
22
  },
23
23
  "dependencies": {
24
- "@ant-design/charts": "^2.6.4",
24
+ "@ant-design/charts": "^2.6.5",
25
25
  "@babel/plugin-proposal-private-property-in-object": "^7.21.11",
26
26
  "@types/node": "^24.5.2",
27
27
  "@types/react": "^18.3.12",
package/src/App.tsx CHANGED
@@ -1,17 +1,13 @@
1
1
  import 'bootstrap/dist/css/bootstrap.min.css';
2
- import { Component, createRef } from 'react';
2
+ import { Component } from 'react';
3
3
  import './App.css';
4
- import { NSBoxEntity } from './components/NSBoxEntity';
5
4
  import { NSLayout } from './components/NSLayout';
6
- import { NSSection } from './components/NSSection';
7
- import { NSButtonBlue, NSColumn } from './main';
5
+ import { EmailFormatter, IntegerFormatter, NSTable, PhoneFormatter, StringFormatter, StringFormatterSizeType } from './main';
8
6
 
9
7
  interface AppProps { }
10
8
 
11
9
  export class App extends Component<AppProps>
12
10
  {
13
- private Box = createRef<NSBoxEntity<{ id: string, value: string }>>();
14
-
15
11
  override render()
16
12
  {
17
13
  return (
@@ -34,37 +30,38 @@ export class App extends Component<AppProps>
34
30
  notifier={{} as any}
35
31
  scope=''
36
32
  >
37
- <NSSection style={{ paddingTop: "3rem" }}>
38
- <NSColumn>
39
- <NSBoxEntity<{ id: string, value: string }>
40
- ref={this.Box}
41
- title="Test Entity Box"
42
- getTitle={item => item.value}
43
- getValue={item => item.value}
44
- multiple
45
- required
46
- table_name="product"
47
- defaultValue={["Mohammad"]}
48
- list={async () => ({
49
- rows: [
50
- { id: "a1", value: "Amin" },
51
- { id: "b2", value: "Negar" },
52
- { id: "c3", value: "Hadis" },
53
- { id: "d4", value: "Lida" },
54
- ],
55
- count: 4,
56
- })}
57
- getSort={() => null}
58
- />
59
- <NSButtonBlue
60
- title='Set Value'
61
- onClick={{
62
- action: () => this.Box.current?.setValue(["Milad"]),
63
- showLoading: false
64
- }}
65
- />
66
- </NSColumn>
67
- </NSSection>
33
+ <NSTable<{ id: string, first_name: string, last_name: string, age: number, phone: string, email: string, bio: string }>
34
+ name='users'
35
+ checkbox
36
+ getRows={async () =>
37
+ {
38
+ return {
39
+ count: 10,
40
+ rows: [
41
+ { id: "a1", first_name: "Amin", last_name: "Pasban", age: 27, phone: "09117579093", email: "amin.cj0077@gmail.com", bio: "Loves literature and writing, constantly seeking." },
42
+ { id: "a2", first_name: "Sara", last_name: "Moradi", age: 24, phone: "09123456781", email: "sara.moradi@example.com", bio: "Passionate about design and technology, enjoys." },
43
+ { id: "a3", first_name: "Reza", last_name: "Karimi", age: 31, phone: "09129876542", email: "reza.karimi@example.com", bio: "Software engineer with experience in backend system." },
44
+ { id: "a4", first_name: "Niloofar", last_name: "Ahmadi", age: 29, phone: "09351234567", email: "niloofar.ahmadi@example.com", bio: "Enthusiastic about art and photography." },
45
+ { id: "a5", first_name: "Hossein", last_name: "Bagheri", age: 35, phone: "09134561234", email: "hossein.bagheri@example.com", bio: "Expert in finance and investment, passionate about." },
46
+ { id: "a6", first_name: "Maryam", last_name: "Shahbazi", age: 26, phone: "09141239876", email: "maryam.shahbazi@example.com", bio: "Loves literature and writing, constantly seeking." },
47
+ { id: "a7", first_name: "Ali", last_name: "Rostami", age: 28, phone: "09151237654", email: "ali.rostami@example.com", bio: "Tech enthusiast and full-stack developer, enjoys contributing." },
48
+ { id: "a8", first_name: "Fatemeh", last_name: "Jafari", age: 30, phone: "09361234589", email: "fatemeh.jafari@example.com", bio: "Interested in psychology and self-development, spends." },
49
+ { id: "a9", first_name: "Mohammad", last_name: "Esfandiari", age: 33, phone: "09162348752", email: "mohammad.esfandiari@example.com", bio: "Specialized in marketing strategies, creative thinker." },
50
+ { id: "b1", first_name: "Elham", last_name: "Khosravi", age: 25, phone: "09203456781", email: "elham.khosravi@example.com", bio: "Graphic designer with a flair for modern art." }
51
+ ]
52
+ }
53
+ }}
54
+ getRowKey={(item) => item.value.id}
55
+ columns={[
56
+ { index: 0, name: "id", text: "ID", table: { name: "users", text: "users" }, formatter: new StringFormatter(StringFormatterSizeType.Word) },
57
+ { index: 0, name: "first_name", text: "First Name", table: { name: "users", text: "users" }, formatter: new StringFormatter(StringFormatterSizeType.TwoWords) },
58
+ { index: 0, name: "last_name", text: "Last Name", table: { name: "users", text: "users" }, formatter: new StringFormatter(StringFormatterSizeType.TwoWords) },
59
+ { index: 0, name: "age", text: "Age", table: { name: "users", text: "users" }, formatter: new IntegerFormatter() },
60
+ { index: 0, name: "phone", text: "Phone Number", table: { name: "users", text: "users" }, formatter: new PhoneFormatter() },
61
+ { index: 0, name: "email", text: "Email Address", table: { name: "users", text: "users" }, formatter: new EmailFormatter() },
62
+ { index: 0, name: "bio", text: "Bio", table: { name: "users", text: "users" }, formatter: new StringFormatter(StringFormatterSizeType.Description) },
63
+ ]}
64
+ />
68
65
  </NSLayout>
69
66
  );
70
67
  }
@@ -1,8 +1,8 @@
1
1
  .ns_table {
2
2
  display: flex;
3
3
  flex-direction: column;
4
- color: rgba(20, 27, 92, 1);
5
4
  overflow-x: auto;
5
+ color: rgba(20, 27, 92);
6
6
  }
7
7
 
8
8
  .ns_search_input {
@@ -23,7 +23,6 @@
23
23
  z-index: -1;
24
24
  }
25
25
 
26
-
27
26
  .ns_table thead {
28
27
  clip: rect(0 0 0 0);
29
28
  position: fixed;
@@ -37,12 +36,8 @@
37
36
  transition: all 0.2s ease-in-out;
38
37
  }
39
38
 
40
- /* .ns_table th {
41
- margin: 8px;
42
- } */
43
-
44
39
  .ns_table td {
45
- display: -webkit-box;
40
+ display: flex;
46
41
  flex-direction: row;
47
42
  gap: 16px;
48
43
  margin: 8px;
@@ -70,20 +65,20 @@
70
65
  min-width: 30%;
71
66
  }
72
67
 
73
- .ns_tbody tr:nth-child(odd):hover {
74
- background-color: rgb(184 190 240 / 57%);
68
+ .ns_tbody tr:nth-child(odd) {
69
+ background-color: #f5f5f5;
75
70
  }
76
71
 
77
- .ns_tbody tr:nth-child(even):hover {
78
- background-color: rgb(184 190 240 / 57%);
72
+ .ns_tbody tr:nth-child(even) {
73
+ background-color: #ffffff;
79
74
  }
80
75
 
81
- .ns_tbody tr:nth-child(odd) {
82
- background-color: #eaeaea;
76
+ .ns_tbody tr:hover {
77
+ background-color: rgb(184, 190, 240, 0.32);
83
78
  }
84
79
 
85
- .ns_tbody tr:nth-child(even) {
86
- background-color: #ffffff;
80
+ .ns_tbody tr.ns_selected {
81
+ background-color: rgb(184, 190, 240, 0.64);
87
82
  }
88
83
 
89
84
  .ns_table_footer {
@@ -150,13 +145,7 @@
150
145
  gap: 16px;
151
146
  }
152
147
 
153
- @media screen and (min-width: 992px) {
154
- .ns_table tr {
155
- border-radius: 8px;
156
- }
157
- }
158
-
159
- @media screen and (max-width: 992px) {
148
+ @media screen and (max-width: 991px) {
160
149
  .ns_table td {
161
150
  width: auto;
162
151
  }
@@ -164,41 +153,51 @@
164
153
 
165
154
  @media screen and (min-width: 992px) {
166
155
  .ns_table {
167
- color: #000000;
168
- background-color: white;
169
- display: flex;
170
156
  justify-content: center;
157
+ color: #000;
171
158
  }
172
159
 
173
160
  .ns_table thead {
174
161
  position: static;
175
- background-color: rgba(20, 27, 92, 1);
176
162
  border-top-left-radius: 8px;
177
163
  border-top-right-radius: 8px;
178
164
  min-width: max-content;
179
165
  }
180
166
 
167
+ .ns_table thead tr {
168
+ background-color: rgba(20, 27, 92);
169
+ }
170
+
181
171
  .ns_table tbody {
182
- background-color: rgba(255, 255, 255, 1);
172
+ background-color: #fff;
183
173
  min-width: max-content;
184
174
  }
185
175
 
186
176
  .ns_table tr {
187
- display: grid;
188
- grid-auto-flow: column;
189
- grid-auto-columns: max-content;
190
- padding: 16px 8px;
191
177
  margin: 0;
178
+ border: 1px solid transparent;
192
179
  border-radius: 0;
193
- border-bottom: 1px solid rgba(20, 27, 92, 0.3);
194
- background-color: transparent;
180
+ padding: 4px 8px;
181
+ display: grid;
195
182
  align-items: center;
183
+ grid-auto-flow: column;
184
+ grid-auto-columns: max-content;
185
+ }
186
+
187
+ .ns_table tr.ns_selected,
188
+ .ns_table tr.ns_last_selected {
189
+ border-color: rgba(20, 27, 92);
190
+ }
191
+
192
+ .ns_table tr.ns_selected+tr,
193
+ .ns_table tr.ns_last_selected+tr {
194
+ border-top-color: transparent;
196
195
  }
197
196
 
198
197
  .ns_table th {
199
198
  font-size: 16px;
200
- font-weight: 300;
201
- color: #ffffff;
199
+ font-weight: 500;
200
+ color: #fff;
202
201
  padding: 0;
203
202
  margin: 8px;
204
203
  }
@@ -54,9 +54,9 @@ export interface NSTableProps<RowType> extends IBaseComponentProps
54
54
  getRowAttributes?: (row_value: RowType, row_index: number) => { [key: string]: any };
55
55
  getColumnAttributes?: (column: TableColumnInfo) => { [key: string]: any };
56
56
  getCellFormattedValue?: (value: any, column: TableColumnInfo, row: TableRowInfo<RowType>, printable: boolean) => any;
57
- onColumnClick?: (e: React.MouseEvent<HTMLTableDataCellElement, MouseEvent>, column: TableColumnInfo) => void;
57
+ onColumnClick?: (e: React.MouseEvent<HTMLTableCellElement, MouseEvent>, column: TableColumnInfo) => void;
58
58
  onRowClick?: (e: React.MouseEvent<HTMLTableRowElement, MouseEvent>, row: TableRowInfo<RowType>) => void;
59
- onCellClick?: (e: React.MouseEvent<HTMLTableDataCellElement, MouseEvent>, cell: TableCellInfo<RowType>) => boolean | undefined;
59
+ onCellClick?: (e: React.MouseEvent<HTMLTableCellElement, MouseEvent>, cell: TableCellInfo<RowType>) => boolean | undefined;
60
60
  onSelectedIDsChanged?: () => void;
61
61
  onSortChanged?: (items: SortItem[] | null) => void;
62
62
  onVisibleColumnsChanged?: (visible_columns: { table: string, column: string }[]) => void;
@@ -92,6 +92,7 @@ enum PageSelectionMode
92
92
  export class NSTable<RowType> extends Component<NSTableProps<RowType>, NSTableState<RowType>>
93
93
  {
94
94
  private nstable_top_div = React.createRef<HTMLDivElement>();
95
+ private lastSelectedRowID: number | null = null;
95
96
  NSPagination = React.createRef<NSPagination>();
96
97
  constructor(props: NSTableProps<RowType>)
97
98
  {
@@ -121,11 +122,11 @@ export class NSTable<RowType> extends Component<NSTableProps<RowType>, NSTableSt
121
122
  this.showModal = this.showModal.bind(this);
122
123
  this.hideModal = this.hideModal.bind(this);
123
124
  this.onPageChange = this.onPageChange.bind(this);
124
- this.isSomeChecked = this.isSomeChecked.bind(this);
125
- this.toggleAllCheckboxes = this.toggleAllCheckboxes.bind(this);
125
+ this.isSomeSelected = this.isSomeSelected.bind(this);
126
+ this.toggleAllSelections = this.toggleAllSelections.bind(this);
126
127
  this.print = this.print.bind(this);
127
128
  this.exportCSV = this.exportCSV.bind(this);
128
- this.isAllChecked = this.isAllChecked.bind(this);
129
+ this.isAllSelected = this.isAllSelected.bind(this);
129
130
  this.reload = this.reload.bind(this);
130
131
  }
131
132
  private getSortItemsKey(): string
@@ -240,17 +241,22 @@ export class NSTable<RowType> extends Component<NSTableProps<RowType>, NSTableSt
240
241
  {
241
242
  }
242
243
  }
243
- private toggleAllCheckboxes()
244
+ private toggleAllSelections()
244
245
  {
245
246
  let selectedIDs: string[] = [];
246
247
  let selectedRows: RowType[] = [];
248
+ this.lastSelectedRowID = null;
249
+
247
250
  if (this.getSelectedIDs().length === 0)
251
+ {
248
252
  this.state.rows?.forEach((row, rowIndex) =>
249
253
  {
250
254
  let id = this.props.getRowKey({ index: rowIndex, value: row });
251
255
  selectedIDs.push(id);
252
256
  selectedRows.push(row);
253
257
  })
258
+ }
259
+
254
260
  this.setSelectedIDs(selectedIDs, selectedRows);
255
261
  }
256
262
  print(rows: RowType[])
@@ -294,6 +300,60 @@ export class NSTable<RowType> extends Component<NSTableProps<RowType>, NSTableSt
294
300
  utils.book_append_sheet(workbook, worksheet, this.props.name);
295
301
  writeFile(workbook, this.props.name + ".xlsx");
296
302
  }
303
+
304
+ handleSelectRow(row: TableRowInfo<RowType>, selected: boolean, ctrlKey: boolean, shiftKey: boolean)
305
+ {
306
+ let selectedIDs = this.state.selectedIDs;
307
+ let selectedRows = this.state.selectedRows;
308
+ let rowID = this.props.getRowKey(row);
309
+
310
+ if (shiftKey)
311
+ {
312
+ selectedRows = this.getRowsInRange(this.lastSelectedRowID ?? 0, row.index);
313
+ selectedIDs = selectedRows.map(row => this.props.getRowKey({ index: -1, value: row }));
314
+ }
315
+ else if (selected)
316
+ {
317
+ if (this.isMultipleSelected() && !ctrlKey)
318
+ {
319
+ selectedIDs = [rowID];
320
+ selectedRows = [row.value];
321
+ this.lastSelectedRowID = row.index;
322
+ }
323
+ else
324
+ {
325
+ selectedIDs = selectedIDs.filter(x => x !== rowID);
326
+ selectedRows = selectedRows.filter(x => this.props.getRowKey({ index: -1, value: x }) !== rowID);
327
+ this.lastSelectedRowID = ctrlKey ? row.index : null;
328
+ }
329
+ }
330
+ else
331
+ {
332
+ if (ctrlKey)
333
+ {
334
+ selectedIDs.push(rowID);
335
+ selectedRows.push(row.value);
336
+ }
337
+ else
338
+ {
339
+ selectedIDs = [rowID];
340
+ selectedRows = [row.value];
341
+ }
342
+ this.lastSelectedRowID = row.index;
343
+ }
344
+
345
+ this.setSelectedIDs(selectedIDs, selectedRows);
346
+ }
347
+ getRowsInRange(fromIndex: number, toIndex: number)
348
+ {
349
+ if (!this.state.rows)
350
+ return [];
351
+
352
+ let start = Math.min(fromIndex, toIndex);
353
+ let end = Math.max(fromIndex, toIndex);
354
+
355
+ return this.state.rows?.slice(start, end + 1);
356
+ }
297
357
  getSelectedIDs(): string[]
298
358
  {
299
359
  return this.state.selectedIDs;
@@ -312,16 +372,18 @@ export class NSTable<RowType> extends Component<NSTableProps<RowType>, NSTableSt
312
372
  callback();
313
373
  });
314
374
  }
315
- private isAllChecked(): boolean
375
+ private isAllSelected(): boolean
316
376
  {
317
377
  return this.state.rows !== null && this.state.rows.length > 0 && this.state.selectedIDs.length === this.state.rows.length;
318
378
  }
319
-
320
- private isSomeChecked(): boolean
379
+ private isSomeSelected(): boolean
321
380
  {
322
- return this.state.selectedIDs.length > 0 && !this.isAllChecked();
381
+ return this.state.selectedIDs.length > 0 && !this.isAllSelected();
382
+ }
383
+ private isMultipleSelected(): boolean
384
+ {
385
+ return this.state.selectedIDs.length > 1;
323
386
  }
324
-
325
387
  private getCellTableInfo(column: TableColumnInfo, row: TableRowInfo<RowType>, printable: boolean)
326
388
  {
327
389
  let value = (row.value as any)[column.name];
@@ -353,17 +415,22 @@ export class NSTable<RowType> extends Component<NSTableProps<RowType>, NSTableSt
353
415
  return this.props.getColumnAttributes(column);
354
416
  return {};
355
417
  }
356
- let onColumnClick = (e: React.MouseEvent<HTMLTableDataCellElement, MouseEvent>, column: TableColumnInfo) =>
418
+ let onColumnClick = (e: React.MouseEvent<HTMLTableCellElement, MouseEvent>, column: TableColumnInfo) =>
357
419
  {
358
420
  if (this.props.onColumnClick)
359
421
  this.props.onColumnClick(e, column);
360
422
  }
361
- let onRowClick = (e: React.MouseEvent<HTMLTableRowElement, MouseEvent>, row: TableRowInfo<RowType>) =>
423
+ let onRowClick = (e: React.MouseEvent<HTMLTableRowElement, MouseEvent>, row: TableRowInfo<RowType>, selected: boolean) =>
362
424
  {
425
+ const target = e.target as HTMLElement;
426
+
427
+ if (target.tagName === "TR" || target.closest("td")?.dataset.cellType === "checkbox")
428
+ this.handleSelectRow(row, selected, e.ctrlKey, e.shiftKey);
429
+
363
430
  if (this.props.onRowClick)
364
431
  this.props.onRowClick(e, row);
365
432
  };
366
- let onCellClick = (e: React.MouseEvent<HTMLTableDataCellElement, MouseEvent>, cell: TableCellInfo<RowType>) =>
433
+ let onCellClick = (e: React.MouseEvent<HTMLTableCellElement, MouseEvent>, cell: TableCellInfo<RowType>) =>
367
434
  {
368
435
  let overided = cell.column.formatter.onclick_overrided;
369
436
  if (this.props.onCellClick)
@@ -397,66 +464,61 @@ export class NSTable<RowType> extends Component<NSTableProps<RowType>, NSTableSt
397
464
  content = this.state.rows.map((rowValue, rowIndex) =>
398
465
  {
399
466
  let row = { index: rowIndex, value: rowValue };
400
- return <tr
401
- key={this.props.getRowKey(row)}
402
- {...getRowAttributes(rowValue, rowIndex)}
403
- onClick={(e) => { onRowClick(e, row); }}
404
- >
405
- {
406
- this.props.checkbox &&
407
- <td>
408
- <label
409
- htmlFor={`checkbox_device_${this.props.getRowKey(row)}`}
410
- className={Styles.ns_check_box_label}
411
- >
412
- <input
413
- id={`checkbox_device_${this.props.getRowKey(row)}`}
414
- type="checkbox"
415
- className={Styles.ns_check_box}
416
- checked={this.state.selectedIDs.includes(this.props.getRowKey(row))}
417
- onChange={(e) =>
418
- {
419
- let selectedIDs = this.state.selectedIDs;
420
- let selectedRows = this.state.selectedRows;
421
- let id = this.props.getRowKey(row);
422
- if (e.currentTarget.checked)
423
- {
424
- selectedIDs.push(id);
425
- selectedRows.push(row.value);
426
- }
427
- else
428
- {
429
- selectedIDs = selectedIDs.filter(x => x !== id);
430
- selectedRows = selectedRows.filter(x => this.props.getRowKey({ index: -1, value: x }) !== id);
431
- }
432
- this.setSelectedIDs(selectedIDs, selectedRows);
433
- }}
434
- />
435
- </label>
436
- </td>
437
- }
438
- {
439
- this.getColumns(true).map((column, index) =>
467
+ let rowKey = this.props.getRowKey(row);
468
+ let isSelected = this.state.selectedIDs.includes(rowKey);
469
+ let isLastSelected = this.lastSelectedRowID === row.index;
470
+ return (
471
+ <tr
472
+ key={rowKey}
473
+ {...getRowAttributes(rowValue, rowIndex)}
474
+ className={`${isSelected ? Styles.ns_selected : ""} ${isLastSelected ? Styles.ns_last_selected : ""}`.trim()}
475
+ onClick={(e) => onRowClick(e, row, isSelected)}
476
+ >
440
477
  {
441
- column.index = index + (this.props.checkbox ? 1 : 0);
442
- let cell = this.getCellTableInfo(column, row, false);
443
- return (
444
- <td className='py-3' width={column.formatter.width} {...getColumnAttributes(column)} key={column.index} data-label={`${column.text}: `} onClick={(e) =>
445
- {
446
- onColumnClick(e, column);
447
- onCellClick(e, cell);
448
- }}>
449
-
450
- {
451
- cell.formatted ?? ""
452
- }
453
- </td>
454
- );
455
- })
456
- }
457
- </tr>
478
+ this.props.checkbox &&
479
+ <td data-cell-type="checkbox">
480
+ <label
481
+ htmlFor={`checkbox_device_${rowKey}`}
482
+ className={Styles.ns_check_box_label}
483
+ >
484
+ <input
485
+ id={`checkbox_device_${rowKey}`}
486
+ type="checkbox"
487
+ checked={isSelected}
488
+ className={Styles.ns_check_box}
489
+ onChange={() => { }}
490
+ />
491
+ </label>
492
+ </td>
493
+ }
494
+ {
495
+ this.getColumns(true).map((column, index) =>
496
+ {
497
+ column.index = index + (this.props.checkbox ? 1 : 0);
498
+ let cell = this.getCellTableInfo(column, row, false);
499
+ return (
500
+ <td
501
+ key={column.index}
502
+ {...getColumnAttributes(column)}
503
+ data-label={`${column.text}: `}
504
+ width={column.formatter.width}
505
+ className='py-3'
506
+ onClick={(e) =>
507
+ {
508
+ onColumnClick(e, column);
509
+ onCellClick(e, cell);
510
+ }}
511
+ >
512
+ {cell.formatted ?? ""}
513
+ </td>
514
+ );
515
+ })
516
+ }
517
+ </tr>
518
+ )
458
519
  });
459
520
  }
521
+
460
522
  let getSortSign = (column: TableColumnInfo) =>
461
523
  {
462
524
  if (this.state.sortItems)
@@ -493,9 +555,9 @@ export class NSTable<RowType> extends Component<NSTableProps<RowType>, NSTableSt
493
555
  <input
494
556
  id="checkbox"
495
557
  type="checkbox"
496
- className={`${Styles.ns_check_box} ${this.isSomeChecked() ? Styles.ns_indeterminate : ""}`}
558
+ className={`${Styles.ns_check_box} ${this.isSomeSelected() ? Styles.ns_indeterminate : ""}`}
497
559
  checked={this.getSelectedIDs().length > 0}
498
- onChange={this.toggleAllCheckboxes}
560
+ onChange={this.toggleAllSelections}
499
561
  ></input>
500
562
  </label>
501
563
  </th>