namirasoft-site-react 1.4.564 → 1.4.566

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
@@ -1,33 +1,30 @@
1
1
  import 'bootstrap/dist/css/bootstrap.min.css';
2
2
  import { Component } from 'react';
3
3
  import './App.css';
4
- import { NSBoxDate, NSBoxDateRange, NSBoxTimeRange, NSTable } from './main';
4
+ import { NSTable } from './main';
5
5
  type TestRow = {
6
6
  id: string;
7
- title: string;
7
+ name: string;
8
+ city: string;
9
+ department: string;
10
+ age: number;
11
+ salary: number;
12
+ score: number;
13
+ experience: number;
8
14
  percentage: number;
9
- url: string;
10
- };
11
- type TreeRow = {
12
- id: string;
13
- parent_id: string | null;
14
- title: string;
15
- percentage: number;
16
- url: string;
15
+ phone: string;
16
+ email: string;
17
+ created_at: string;
17
18
  };
18
19
  interface AppProps {
19
20
  }
20
21
  interface AppState {
21
- dialog_show: boolean;
22
- dialog_loading: boolean;
23
22
  }
24
23
  export declare class App extends Component<AppProps, AppState> {
25
- NSBoxDateRef: import("react").RefObject<NSBoxDate>;
26
- NSBoxTimeRangeRef: import("react").RefObject<NSBoxTimeRange>;
27
- NSBoxDateRangeRef: import("react").RefObject<NSBoxDateRange>;
28
24
  NSTableRef: import("react").RefObject<NSTable<TestRow>>;
29
- NSTreeTableRef: import("react").RefObject<NSTable<TreeRow>>;
30
25
  constructor(props: AppProps);
26
+ componentDidMount(): void;
27
+ componentWillUnmount(): void;
31
28
  render(): import("react").JSX.Element;
32
29
  }
33
30
  export {};
package/dist/App.js CHANGED
@@ -13,36 +13,43 @@ import { Component, createRef } from 'react';
13
13
  import './App.css';
14
14
  import { NSLayout } from './components/NSLayout';
15
15
  import { PercentFormatter } from './formatter/PercentFormatter';
16
- import { NSBoxDate, NSBoxDateRange, NSBoxTimeRange, NSButtonBlue, NSColumn, NSTable, StringFormatter, URLFormatter } from './main';
17
- const TEST_TABLE = "test_table";
18
- const TREE_TABLE = "tree_table";
19
- const TREE_DATA = [
20
- { id: "1", parent_id: null, title: "Engineering", percentage: 60, url: "example.com/eng" },
21
- { id: "1.1", parent_id: "1", title: "Frontend", percentage: 35, url: "example.com/eng/fe" },
22
- { id: "1.1.1", parent_id: "1.1", title: "React Team", percentage: 20, url: "example.com/eng/fe/react" },
23
- { id: "1.1.2", parent_id: "1.1", title: "Design System", percentage: 15, url: "example.com/eng/fe/ds" },
24
- { id: "1.2", parent_id: "1", title: "Backend", percentage: 25, url: "example.com/eng/be" },
25
- { id: "2", parent_id: null, title: "Sales", percentage: 40, url: "example.com/sales" },
26
- { id: "2.1", parent_id: "2", title: "EMEA", percentage: 22, url: "example.com/sales/emea" },
27
- { id: "2.2", parent_id: "2", title: "APAC", percentage: 18, url: "example.com/sales/apac" },
28
- { id: "3", parent_id: null, title: "Operations", percentage: 10, url: "example.com/ops" },
29
- ];
16
+ import { DateTimeFormatter, EmailFormatter, IntegerFormatter, KeyOperation, NSButtonBlue, NSTable, PhoneFormatter, StringFormatter } from './main';
17
+ const FIRST_NAMES = ["Amin", "Negar", "Milad", "Sara", "Reza", "Maryam", "Ali", "Fatemeh", "Hossein", "Zahra", "Mohammad", "Narges", "Saeed", "Leila", "Hamed"];
18
+ const LAST_NAMES = ["Pasban", "Sharifpour", "Nazirzadeh", "Ahmadi", "Karimi", "Hosseini", "Rezaei", "Moradi", "Jafari", "Bagheri", "Salehi", "Ghasemi", "Akbari", "Mousavi", "Tavakoli"];
19
+ const CITIES = ["Tehran", "Shiraz", "Tabriz", "Isfahan", "Mashhad"];
20
+ const DEPARTMENTS = ["Engineering", "Sales", "Marketing", "Support", "Finance"];
21
+ const ALL_ROWS = Array.from({ length: 45 }, (_, i) => {
22
+ const n = i + 1;
23
+ return {
24
+ id: n.toString(),
25
+ name: `${FIRST_NAMES[i % FIRST_NAMES.length]} ${LAST_NAMES[(i * 7) % LAST_NAMES.length]}`,
26
+ city: CITIES[i % CITIES.length],
27
+ department: DEPARTMENTS[(i * 3) % DEPARTMENTS.length],
28
+ age: 22 + (i * 5) % 35,
29
+ salary: 30000 + (i * 1700) % 90000,
30
+ score: 40 + (i * 11) % 60,
31
+ experience: (i * 2) % 20,
32
+ percentage: 10 + (i * 13) % 80,
33
+ phone: "0912" + (1000000 + i).toString(),
34
+ email: `${FIRST_NAMES[i % FIRST_NAMES.length].toLowerCase()}.${n}@example.com`,
35
+ created_at: new Date(Date.now() - i * 86400000 - i * 3600000).toISOString()
36
+ };
37
+ });
30
38
  export class App extends Component {
31
39
  constructor(props) {
32
40
  super(props);
33
- this.NSBoxDateRef = createRef();
34
- this.NSBoxTimeRangeRef = createRef();
35
- this.NSBoxDateRangeRef = createRef();
36
41
  this.NSTableRef = createRef();
37
- this.NSTreeTableRef = createRef();
38
- this.state = {
39
- dialog_show: false,
40
- dialog_loading: false,
41
- };
42
+ this.state = {};
42
43
  }
43
44
  ;
45
+ componentDidMount() {
46
+ KeyOperation.start();
47
+ }
48
+ componentWillUnmount() {
49
+ KeyOperation.stop();
50
+ }
44
51
  render() {
45
- return (_jsx(NSLayout, { header: {
52
+ return (_jsxs(NSLayout, { header: {
46
53
  right: {
47
54
  icons: [
48
55
  {
@@ -54,77 +61,63 @@ export class App extends Component {
54
61
  },
55
62
  mega_menu: true,
56
63
  onCollapse: () => { },
57
- }, 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: _jsxs(NSColumn, { style: { alignItems: "center" }, children: [_jsx(NSTable, { ref: this.NSTableRef, name: TEST_TABLE, checkbox: true, columns: [
58
- {
59
- table: { name: TEST_TABLE, text: "Test Table" },
60
- index: 0,
61
- type: "String",
62
- name: "title",
63
- text: "Title",
64
- formatter: new StringFormatter()
65
- },
66
- {
67
- table: { name: TEST_TABLE, text: "Test Table" },
68
- index: 1,
69
- type: "Number",
70
- name: "percentage",
71
- text: "Percentage",
72
- formatter: new PercentFormatter()
73
- },
74
- {
75
- table: { name: TEST_TABLE, text: "Test Table" },
76
- index: 2,
77
- type: "String",
78
- name: "url",
79
- text: "URL",
80
- formatter: new URLFormatter(),
81
- defaults: { hidden: true }
82
- },
83
- ], getRowKey: (item) => item.value.id, getRows: () => __awaiter(this, void 0, void 0, function* () {
84
- return {
85
- count: 2,
86
- rows: [
87
- { id: "1", title: "Amin", percentage: 19, url: "https://example.com/amin" },
88
- { id: "2", title: "Negar", percentage: 21, url: "example.com/negar" },
89
- ]
90
- };
91
- }), getRowCheckboxDisabled: row => {
92
- return row.value.percentage < 20;
93
- } }), _jsx(NSTable, { ref: this.NSTreeTableRef, name: TREE_TABLE, checkbox: false, defaultExpanded: true, hierarchy: { id: "id", parent: "parent_id" }, columns: [
94
- {
95
- table: { name: TREE_TABLE, text: "Tree Table" },
96
- index: 0,
97
- type: "String",
98
- name: "title",
99
- text: "Title",
100
- formatter: new StringFormatter()
101
- },
102
- {
103
- table: { name: TREE_TABLE, text: "Tree Table" },
104
- index: 1,
105
- type: "Number",
106
- name: "percentage",
107
- text: "Percentage",
108
- formatter: new PercentFormatter()
109
- },
110
- {
111
- table: { name: TREE_TABLE, text: "Tree Table" },
112
- index: 2,
113
- type: "String",
114
- name: "url",
115
- text: "URL",
116
- formatter: new URLFormatter(),
117
- defaults: { hidden: true }
118
- },
119
- ], getRowKey: (item) => item.value.id, getRows: () => __awaiter(this, void 0, void 0, function* () { return ({ count: TREE_DATA.length, rows: TREE_DATA }); }), ui: { pagination: false, button_panel: false } }), _jsx(NSBoxDate, { ref: this.NSBoxDateRef, title: "Date", required: true }), _jsx(NSBoxDateRange, { ref: this.NSBoxDateRangeRef, required: true, title: 'Range' }), _jsx(NSBoxTimeRange, { ref: this.NSBoxTimeRangeRef, required: true, title: 'Time Range', preset: true }), _jsx(NSButtonBlue, { title: "Log Data", onClick: {
120
- showLoading: false,
121
- action: () => {
122
- var _a, _b, _c;
123
- console.log((_a = this.NSBoxDateRef.current) === null || _a === void 0 ? void 0 : _a.getValue(false));
124
- console.log((_b = this.NSBoxDateRangeRef.current) === null || _b === void 0 ? void 0 : _b.getValue(false));
125
- console.log((_c = this.NSBoxTimeRangeRef.current) === null || _c === void 0 ? void 0 : _c.setValue({ from: "12:00:00", to: "13:00:00" }));
126
- }
127
- } })] }) }));
64
+ }, 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, { ref: this.NSTableRef, name: "test_table", checkbox: true, columns: [
65
+ {
66
+ table: { name: "test_table", text: "Test Table" },
67
+ index: 0, type: "String", name: "name", text: "Name", formatter: new StringFormatter()
68
+ },
69
+ {
70
+ table: { name: "test_table", text: "Test Table" },
71
+ index: 1, type: "String", name: "city", text: "City", formatter: new StringFormatter()
72
+ },
73
+ {
74
+ table: { name: "test_table", text: "Test Table" },
75
+ index: 2, type: "String", name: "department", text: "Department", formatter: new StringFormatter()
76
+ },
77
+ {
78
+ table: { name: "test_table", text: "Test Table" },
79
+ index: 3, type: "Number", name: "age", text: "Age", formatter: new IntegerFormatter()
80
+ },
81
+ {
82
+ table: { name: "test_table", text: "Test Table" },
83
+ index: 4, type: "Number", name: "salary", text: "Salary", formatter: new IntegerFormatter()
84
+ },
85
+ {
86
+ table: { name: "test_table", text: "Test Table" },
87
+ index: 5, type: "Number", name: "score", text: "Score", formatter: new IntegerFormatter()
88
+ },
89
+ {
90
+ table: { name: "test_table", text: "Test Table" },
91
+ index: 6, type: "Number", name: "experience", text: "Experience", formatter: new IntegerFormatter()
92
+ },
93
+ {
94
+ table: { name: "test_table", text: "Test Table" },
95
+ index: 7, type: "Number", name: "percentage", text: "Percentage", formatter: new PercentFormatter()
96
+ },
97
+ {
98
+ table: { name: "test_table", text: "Test Table" },
99
+ index: 8, type: "String", name: "phone", text: "Phone", formatter: new PhoneFormatter()
100
+ },
101
+ {
102
+ table: { name: "test_table", text: "Test Table" },
103
+ index: 9, type: "String", name: "email", text: "Email", formatter: new EmailFormatter()
104
+ },
105
+ {
106
+ table: { name: "test_table", text: "Test Table" },
107
+ index: 10, type: "DateTime", name: "created_at", text: "Created At", formatter: new DateTimeFormatter()
108
+ },
109
+ ], getRowKey: (item) => item.value.id, getRows: (page, size) => __awaiter(this, void 0, void 0, function* () {
110
+ const start = (page - 1) * size;
111
+ return {
112
+ count: ALL_ROWS.length,
113
+ rows: ALL_ROWS.slice(start, start + size)
114
+ };
115
+ }), getRowCheckboxDisabled: row => row.value.percentage < 20 }), _jsx(NSButtonBlue, { title: "Log", onClick: {
116
+ showLoading: false,
117
+ action: () => {
118
+ console.log(KeyOperation.isControlPressed());
119
+ }
120
+ } })] }));
128
121
  }
129
122
  }
130
123
  //# 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":"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"}
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../src/App.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { NavigateFunction, NavigateOptions } from "react-router-dom";
2
2
  export declare enum LinkTarget {
3
3
  Self = "_self",
4
- Blank = "_blank"
4
+ Blank = "_blank",
5
+ Window = "_window"
5
6
  }
6
7
  export declare class LinkOperation {
7
8
  private static navigate?;
@@ -10,6 +11,7 @@ export declare class LinkOperation {
10
11
  private static isExternal;
11
12
  static open(url: string, target?: LinkTarget, options?: NavigateOptions): void;
12
13
  static openBlank(url: string): void;
14
+ static openWindow(url: string): void;
13
15
  static openSelf(url: string, options?: NavigateOptions): void;
14
16
  static replace(url: string, options?: NavigateOptions): void;
15
17
  static back(): void;
@@ -3,6 +3,7 @@ export var LinkTarget;
3
3
  (function (LinkTarget) {
4
4
  LinkTarget["Self"] = "_self";
5
5
  LinkTarget["Blank"] = "_blank";
6
+ LinkTarget["Window"] = "_window";
6
7
  })(LinkTarget || (LinkTarget = {}));
7
8
  export class LinkOperation {
8
9
  static setNavigate(navigate) {
@@ -11,6 +12,8 @@ export class LinkOperation {
11
12
  static resolveTarget(target) {
12
13
  if (target)
13
14
  return target;
15
+ if (KeyOperation.isShiftPressed())
16
+ return LinkTarget.Window;
14
17
  if (KeyOperation.isControlPressed() || KeyOperation.isMetaPressed())
15
18
  return LinkTarget.Blank;
16
19
  return LinkTarget.Self;
@@ -24,6 +27,10 @@ export class LinkOperation {
24
27
  LinkOperation.openBlank(url);
25
28
  return;
26
29
  }
30
+ if (resolved === LinkTarget.Window) {
31
+ LinkOperation.openWindow(url);
32
+ return;
33
+ }
27
34
  if (LinkOperation.isExternal(url) || !LinkOperation.navigate) {
28
35
  window.location.href = url;
29
36
  return;
@@ -35,6 +42,11 @@ export class LinkOperation {
35
42
  return;
36
43
  window.open(url, "_blank", "noopener,noreferrer");
37
44
  }
45
+ static openWindow(url) {
46
+ if (typeof window === "undefined")
47
+ return;
48
+ window.open(url, "_blank", "noopener,noreferrer,popup");
49
+ }
38
50
  static openSelf(url, options) {
39
51
  LinkOperation.open(url, LinkTarget.Self, options);
40
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LinkOperation.js","sourceRoot":"","sources":["../src/LinkOperation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,CAAN,IAAY,UAIX;AAJD,WAAY,UAAU;IAElB,4BAAc,CAAA;IACd,8BAAgB,CAAA;AACpB,CAAC,EAJW,UAAU,KAAV,UAAU,QAIrB;AAED,MAAM,OAAO,aAAa;IAItB,MAAM,CAAC,WAAW,CAAC,QAA0B;QAEzC,aAAa,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACtC,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,MAAmB;QAE5C,IAAI,MAAM;YACN,OAAO,MAAM,CAAC;QAClB,IAAI,YAAY,CAAC,gBAAgB,EAAE,IAAI,YAAY,CAAC,aAAa,EAAE;YAC/D,OAAO,UAAU,CAAC,KAAK,CAAC;QAC5B,OAAO,UAAU,CAAC,IAAI,CAAC;IAC3B,CAAC;IAEO,MAAM,CAAC,UAAU,CAAC,GAAW;QAEjC,OAAO,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,GAAW,EAAE,MAAmB,EAAE,OAAyB;QAEnE,MAAM,QAAQ,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,QAAQ,KAAK,UAAU,CAAC,KAAK,EACjC,CAAC;YACG,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC7B,OAAO;QACX,CAAC;QACD,IAAI,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAC5D,CAAC;YACG,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;YAC3B,OAAO;QACX,CAAC;QACD,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,GAAW;QAExB,IAAI,OAAO,MAAM,KAAK,WAAW;YAC7B,OAAO;QACX,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,qBAAqB,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,GAAW,EAAE,OAAyB;QAElD,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,GAAW,EAAE,OAAyB;QAEjD,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,kCAAO,OAAO,KAAE,OAAO,EAAE,IAAI,IAAG,CAAC;IAC5E,CAAC;IAED,MAAM,CAAC,IAAI;QAEP,IAAI,aAAa,CAAC,QAAQ;YACtB,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1B,IAAI,OAAO,MAAM,KAAK,WAAW;YAClC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,OAAO;QAEV,IAAI,aAAa,CAAC,QAAQ;YACtB,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aACzB,IAAI,OAAO,MAAM,KAAK,WAAW;YAClC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,MAAM;QAET,IAAI,OAAO,MAAM,KAAK,WAAW;YAC7B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IACjC,CAAC;CACJ"}
1
+ {"version":3,"file":"LinkOperation.js","sourceRoot":"","sources":["../src/LinkOperation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,CAAN,IAAY,UAKX;AALD,WAAY,UAAU;IAElB,4BAAc,CAAA;IACd,8BAAgB,CAAA;IAChB,gCAAkB,CAAA;AACtB,CAAC,EALW,UAAU,KAAV,UAAU,QAKrB;AAED,MAAM,OAAO,aAAa;IAItB,MAAM,CAAC,WAAW,CAAC,QAA0B;QAEzC,aAAa,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACtC,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,MAAmB;QAE5C,IAAI,MAAM;YACN,OAAO,MAAM,CAAC;QAClB,IAAI,YAAY,CAAC,cAAc,EAAE;YAC7B,OAAO,UAAU,CAAC,MAAM,CAAC;QAC7B,IAAI,YAAY,CAAC,gBAAgB,EAAE,IAAI,YAAY,CAAC,aAAa,EAAE;YAC/D,OAAO,UAAU,CAAC,KAAK,CAAC;QAC5B,OAAO,UAAU,CAAC,IAAI,CAAC;IAC3B,CAAC;IAEO,MAAM,CAAC,UAAU,CAAC,GAAW;QAEjC,OAAO,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,GAAW,EAAE,MAAmB,EAAE,OAAyB;QAEnE,MAAM,QAAQ,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,QAAQ,KAAK,UAAU,CAAC,KAAK,EACjC,CAAC;YACG,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC7B,OAAO;QACX,CAAC;QACD,IAAI,QAAQ,KAAK,UAAU,CAAC,MAAM,EAClC,CAAC;YACG,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO;QACX,CAAC;QACD,IAAI,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAC5D,CAAC;YACG,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;YAC3B,OAAO;QACX,CAAC;QACD,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,GAAW;QAExB,IAAI,OAAO,MAAM,KAAK,WAAW;YAC7B,OAAO;QACX,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,qBAAqB,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,GAAW;QAEzB,IAAI,OAAO,MAAM,KAAK,WAAW;YAC7B,OAAO;QACX,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,2BAA2B,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,GAAW,EAAE,OAAyB;QAElD,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,GAAW,EAAE,OAAyB;QAEjD,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,kCAAO,OAAO,KAAE,OAAO,EAAE,IAAI,IAAG,CAAC;IAC5E,CAAC;IAED,MAAM,CAAC,IAAI;QAEP,IAAI,aAAa,CAAC,QAAQ;YACtB,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1B,IAAI,OAAO,MAAM,KAAK,WAAW;YAClC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,OAAO;QAEV,IAAI,aAAa,CAAC,QAAQ;YACtB,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aACzB,IAAI,OAAO,MAAM,KAAK,WAAW;YAClC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,MAAM;QAET,IAAI,OAAO,MAAM,KAAK,WAAW;YAC7B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IACjC,CAAC;CACJ"}
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "framework": "npm",
9
9
  "application": "package",
10
10
  "private": false,
11
- "version": "1.4.564",
11
+ "version": "1.4.566",
12
12
  "author": "Amir Abolhasani",
13
13
  "license": "MIT",
14
14
  "main": "./dist/main.js",
package/src/App.tsx CHANGED
@@ -3,53 +3,70 @@ import { Component, createRef } from 'react';
3
3
  import './App.css';
4
4
  import { NSLayout } from './components/NSLayout';
5
5
  import { PercentFormatter } from './formatter/PercentFormatter';
6
- import
7
- { NSBoxDate, NSBoxDateRange, NSBoxTimeRange, NSButtonBlue, NSColumn, NSTable, StringFormatter, URLFormatter } from './main';
6
+ import { DateTimeFormatter, EmailFormatter, IntegerFormatter, KeyOperation, NSButtonBlue, NSTable, PhoneFormatter, StringFormatter } from './main';
8
7
 
8
+ type TestRow = {
9
+ id: string,
10
+ name: string,
11
+ city: string,
12
+ department: string,
13
+ age: number,
14
+ salary: number,
15
+ score: number,
16
+ experience: number,
17
+ percentage: number,
18
+ phone: string,
19
+ email: string,
20
+ created_at: string,
21
+ };
9
22
 
10
- type TestRow = { id: string, title: string, percentage: number, url: string };
23
+ const FIRST_NAMES = ["Amin", "Negar", "Milad", "Sara", "Reza", "Maryam", "Ali", "Fatemeh", "Hossein", "Zahra", "Mohammad", "Narges", "Saeed", "Leila", "Hamed"];
24
+ const LAST_NAMES = ["Pasban", "Sharifpour", "Nazirzadeh", "Ahmadi", "Karimi", "Hosseini", "Rezaei", "Moradi", "Jafari", "Bagheri", "Salehi", "Ghasemi", "Akbari", "Mousavi", "Tavakoli"];
25
+ const CITIES = ["Tehran", "Shiraz", "Tabriz", "Isfahan", "Mashhad"];
26
+ const DEPARTMENTS = ["Engineering", "Sales", "Marketing", "Support", "Finance"];
11
27
 
12
- type TreeRow = { id: string, parent_id: string | null, title: string, percentage: number, url: string };
13
-
14
- const TEST_TABLE = "test_table";
15
- const TREE_TABLE = "tree_table";
16
-
17
- const TREE_DATA: TreeRow[] = [
18
- { id: "1", parent_id: null, title: "Engineering", percentage: 60, url: "example.com/eng" },
19
- { id: "1.1", parent_id: "1", title: "Frontend", percentage: 35, url: "example.com/eng/fe" },
20
- { id: "1.1.1", parent_id: "1.1", title: "React Team", percentage: 20, url: "example.com/eng/fe/react" },
21
- { id: "1.1.2", parent_id: "1.1", title: "Design System", percentage: 15, url: "example.com/eng/fe/ds" },
22
- { id: "1.2", parent_id: "1", title: "Backend", percentage: 25, url: "example.com/eng/be" },
23
- { id: "2", parent_id: null, title: "Sales", percentage: 40, url: "example.com/sales" },
24
- { id: "2.1", parent_id: "2", title: "EMEA", percentage: 22, url: "example.com/sales/emea" },
25
- { id: "2.2", parent_id: "2", title: "APAC", percentage: 18, url: "example.com/sales/apac" },
26
- { id: "3", parent_id: null, title: "Operations", percentage: 10, url: "example.com/ops" },
27
- ];
28
+ const ALL_ROWS: TestRow[] = Array.from({ length: 45 }, (_, i) =>
29
+ {
30
+ const n = i + 1;
31
+ return {
32
+ id: n.toString(),
33
+ name: `${FIRST_NAMES[i % FIRST_NAMES.length]} ${LAST_NAMES[(i * 7) % LAST_NAMES.length]}`,
34
+ city: CITIES[i % CITIES.length],
35
+ department: DEPARTMENTS[(i * 3) % DEPARTMENTS.length],
36
+ age: 22 + (i * 5) % 35,
37
+ salary: 30000 + (i * 1700) % 90000,
38
+ score: 40 + (i * 11) % 60,
39
+ experience: (i * 2) % 20,
40
+ percentage: 10 + (i * 13) % 80,
41
+ phone: "0912" + (1000000 + i).toString(),
42
+ email: `${FIRST_NAMES[i % FIRST_NAMES.length].toLowerCase()}.${n}@example.com`,
43
+ created_at: new Date(Date.now() - i * 86400000 - i * 3600000).toISOString()
44
+ };
45
+ });
28
46
 
29
47
  interface AppProps { }
30
- interface AppState
31
- {
32
- dialog_show: boolean;
33
- dialog_loading: boolean;
34
- }
48
+ interface AppState { }
35
49
 
36
50
  export class App extends Component<AppProps, AppState>
37
51
  {
38
- NSBoxDateRef = createRef<NSBoxDate>();
39
- NSBoxTimeRangeRef = createRef<NSBoxTimeRange>();
40
- NSBoxDateRangeRef = createRef<NSBoxDateRange>();
41
52
  NSTableRef = createRef<NSTable<TestRow>>();
42
- NSTreeTableRef = createRef<NSTable<TreeRow>>();
43
53
 
44
54
  constructor(props: AppProps)
45
55
  {
46
56
  super(props);
47
- this.state = {
48
- dialog_show: false,
49
- dialog_loading: false,
50
- }
57
+ this.state = {}
51
58
  };
52
59
 
60
+ override componentDidMount(): void
61
+ {
62
+ KeyOperation.start();
63
+ }
64
+
65
+ override componentWillUnmount(): void
66
+ {
67
+ KeyOperation.stop();
68
+ }
69
+
53
70
  override render()
54
71
  {
55
72
  return (
@@ -74,125 +91,77 @@ export class App extends Component<AppProps, AppState>
74
91
  notifier={{} as any}
75
92
  scope=''
76
93
  >
77
- <NSColumn style={{ alignItems: "center" }}>
78
- <NSTable<TestRow>
79
- ref={this.NSTableRef}
80
- name={TEST_TABLE}
81
- checkbox
82
- columns={[
83
- {
84
- table: { name: TEST_TABLE, text: "Test Table" },
85
- index: 0,
86
- type: "String",
87
- name: "title",
88
- text: "Title",
89
- formatter: new StringFormatter()
90
- },
91
- {
92
- table: { name: TEST_TABLE, text: "Test Table" },
93
- index: 1,
94
- type: "Number",
95
- name: "percentage",
96
- text: "Percentage",
97
- formatter: new PercentFormatter()
98
- },
99
-
100
- {
101
- table: { name: TEST_TABLE, text: "Test Table" },
102
- index: 2,
103
- type: "String",
104
- name: "url",
105
- text: "URL",
106
- formatter: new URLFormatter(),
107
- defaults: { hidden: true }
108
- },
109
- ]}
110
- getRowKey={(item) => item.value.id}
111
- getRows={async () =>
94
+ <NSTable<TestRow>
95
+ ref={this.NSTableRef}
96
+ name={"test_table"}
97
+ checkbox
98
+ columns={[
112
99
  {
113
- return {
114
- count: 2,
115
- rows: [
116
- { id: "1", title: "Amin", percentage: 19, url: "https://example.com/amin" },
117
- { id: "2", title: "Negar", percentage: 21, url: "example.com/negar" },
118
- ]
119
- }
120
- }}
121
- getRowCheckboxDisabled={row =>
100
+ table: { name: "test_table", text: "Test Table" },
101
+ index: 0, type: "String", name: "name", text: "Name", formatter: new StringFormatter()
102
+ },
122
103
  {
123
- return row.value.percentage < 20
124
- }}
125
- />
126
- <NSTable<TreeRow>
127
- ref={this.NSTreeTableRef}
128
- name={TREE_TABLE}
129
- checkbox={false}
130
- defaultExpanded
131
- hierarchy={{ id: "id", parent: "parent_id" }}
132
- columns={[
133
- {
134
- table: { name: TREE_TABLE, text: "Tree Table" },
135
- index: 0,
136
- type: "String",
137
- name: "title",
138
- text: "Title",
139
- formatter: new StringFormatter()
140
- },
141
- {
142
- table: { name: TREE_TABLE, text: "Tree Table" },
143
- index: 1,
144
- type: "Number",
145
- name: "percentage",
146
- text: "Percentage",
147
- formatter: new PercentFormatter()
148
- },
149
- {
150
- table: { name: TREE_TABLE, text: "Tree Table" },
151
- index: 2,
152
- type: "String",
153
- name: "url",
154
- text: "URL",
155
- formatter: new URLFormatter(),
156
- defaults: { hidden: true }
157
- },
158
- ]}
159
- getRowKey={(item) => item.value.id}
160
- getRows={async () => ({ count: TREE_DATA.length, rows: TREE_DATA })}
161
- ui={{ pagination: false, button_panel: false }}
162
- />
163
- <NSBoxDate
164
- ref={this.NSBoxDateRef}
165
- title="Date"
166
- required
167
- />
168
-
169
- <NSBoxDateRange
170
- ref={this.NSBoxDateRangeRef}
171
- required
172
- title='Range'
173
-
174
- />
175
- <NSBoxTimeRange
176
- ref={this.NSBoxTimeRangeRef}
177
- required
178
- title='Time Range'
179
- preset
180
-
181
- />
182
-
183
- <NSButtonBlue
184
- title="Log Data"
185
- onClick={{
186
- showLoading: false,
187
- action: () =>
188
- {
189
- console.log(this.NSBoxDateRef.current?.getValue(false))
190
- console.log(this.NSBoxDateRangeRef.current?.getValue(false))
191
- console.log(this.NSBoxTimeRangeRef.current?.setValue({ from: "12:00:00", to: "13:00:00" }))
192
- }
193
- }}
194
- />
195
- </NSColumn>
104
+ table: { name: "test_table", text: "Test Table" },
105
+ index: 1, type: "String", name: "city", text: "City", formatter: new StringFormatter()
106
+ },
107
+ {
108
+ table: { name: "test_table", text: "Test Table" },
109
+ index: 2, type: "String", name: "department", text: "Department", formatter: new StringFormatter()
110
+ },
111
+ {
112
+ table: { name: "test_table", text: "Test Table" },
113
+ index: 3, type: "Number", name: "age", text: "Age", formatter: new IntegerFormatter()
114
+ },
115
+ {
116
+ table: { name: "test_table", text: "Test Table" },
117
+ index: 4, type: "Number", name: "salary", text: "Salary", formatter: new IntegerFormatter()
118
+ },
119
+ {
120
+ table: { name: "test_table", text: "Test Table" },
121
+ index: 5, type: "Number", name: "score", text: "Score", formatter: new IntegerFormatter()
122
+ },
123
+ {
124
+ table: { name: "test_table", text: "Test Table" },
125
+ index: 6, type: "Number", name: "experience", text: "Experience", formatter: new IntegerFormatter()
126
+ },
127
+ {
128
+ table: { name: "test_table", text: "Test Table" },
129
+ index: 7, type: "Number", name: "percentage", text: "Percentage", formatter: new PercentFormatter()
130
+ },
131
+ {
132
+ table: { name: "test_table", text: "Test Table" },
133
+ index: 8, type: "String", name: "phone", text: "Phone", formatter: new PhoneFormatter()
134
+ },
135
+ {
136
+ table: { name: "test_table", text: "Test Table" },
137
+ index: 9, type: "String", name: "email", text: "Email", formatter: new EmailFormatter()
138
+ },
139
+ {
140
+ table: { name: "test_table", text: "Test Table" },
141
+ index: 10, type: "DateTime", name: "created_at", text: "Created At", formatter: new DateTimeFormatter()
142
+ },
143
+ ]}
144
+ getRowKey={(item) => item.value.id}
145
+ getRows={async (page, size) =>
146
+ {
147
+ const start = (page - 1) * size;
148
+ return {
149
+ count: ALL_ROWS.length,
150
+ rows: ALL_ROWS.slice(start, start + size)
151
+ };
152
+ }}
153
+ getRowCheckboxDisabled={row => row.value.percentage < 20}
154
+ />
155
+ <NSButtonBlue
156
+ title={"Log"}
157
+ onClick={{
158
+ showLoading: false,
159
+ action: () =>
160
+ {
161
+ console.log(KeyOperation.isControlPressed());
162
+ }
163
+ }}
164
+ />
196
165
  </NSLayout>
197
166
  );
198
167
  }
@@ -5,6 +5,7 @@ export enum LinkTarget
5
5
  {
6
6
  Self = "_self",
7
7
  Blank = "_blank",
8
+ Window = "_window",
8
9
  }
9
10
 
10
11
  export class LinkOperation
@@ -20,6 +21,8 @@ export class LinkOperation
20
21
  {
21
22
  if (target)
22
23
  return target;
24
+ if (KeyOperation.isShiftPressed())
25
+ return LinkTarget.Window;
23
26
  if (KeyOperation.isControlPressed() || KeyOperation.isMetaPressed())
24
27
  return LinkTarget.Blank;
25
28
  return LinkTarget.Self;
@@ -38,6 +41,11 @@ export class LinkOperation
38
41
  LinkOperation.openBlank(url);
39
42
  return;
40
43
  }
44
+ if (resolved === LinkTarget.Window)
45
+ {
46
+ LinkOperation.openWindow(url);
47
+ return;
48
+ }
41
49
  if (LinkOperation.isExternal(url) || !LinkOperation.navigate)
42
50
  {
43
51
  window.location.href = url;
@@ -53,6 +61,13 @@ export class LinkOperation
53
61
  window.open(url, "_blank", "noopener,noreferrer");
54
62
  }
55
63
 
64
+ static openWindow(url: string): void
65
+ {
66
+ if (typeof window === "undefined")
67
+ return;
68
+ window.open(url, "_blank", "noopener,noreferrer,popup");
69
+ }
70
+
56
71
  static openSelf(url: string, options?: NavigateOptions): void
57
72
  {
58
73
  LinkOperation.open(url, LinkTarget.Self, options);