namirasoft-account-react 1.4.418 → 1.4.421

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.
Files changed (74) hide show
  1. package/dist/IEntityInfo.d.ts +3 -1
  2. package/dist/NSACacheService.d.ts +3 -0
  3. package/dist/NSACacheService.js +13 -0
  4. package/dist/NSACacheService.js.map +1 -1
  5. package/dist/NSAFilterOperators.d.ts +28 -0
  6. package/dist/NSAFilterOperators.js +50 -0
  7. package/dist/NSAFilterOperators.js.map +1 -0
  8. package/dist/components/NSAQuickFilter/NSAFilterBoxBase.d.ts +14 -0
  9. package/dist/components/NSAQuickFilter/NSAFilterBoxBase.js +40 -0
  10. package/dist/components/NSAQuickFilter/NSAFilterBoxBase.js.map +1 -0
  11. package/dist/components/NSAQuickFilter/NSAFilterBoxBoolean.d.ts +12 -0
  12. package/dist/components/NSAQuickFilter/NSAFilterBoxBoolean.js +30 -0
  13. package/dist/components/NSAQuickFilter/NSAFilterBoxBoolean.js.map +1 -0
  14. package/dist/components/NSAQuickFilter/NSAFilterBoxDate.d.ts +12 -0
  15. package/dist/components/NSAQuickFilter/NSAFilterBoxDate.js +58 -0
  16. package/dist/components/NSAQuickFilter/NSAFilterBoxDate.js.map +1 -0
  17. package/dist/components/NSAQuickFilter/NSAFilterBoxDateTime.d.ts +12 -0
  18. package/dist/components/NSAQuickFilter/NSAFilterBoxDateTime.js +58 -0
  19. package/dist/components/NSAQuickFilter/NSAFilterBoxDateTime.js.map +1 -0
  20. package/dist/components/NSAQuickFilter/NSAFilterBoxEnum.d.ts +22 -0
  21. package/dist/components/NSAQuickFilter/NSAFilterBoxEnum.js +52 -0
  22. package/dist/components/NSAQuickFilter/NSAFilterBoxEnum.js.map +1 -0
  23. package/dist/components/NSAQuickFilter/NSAFilterBoxNumber.d.ts +22 -0
  24. package/dist/components/NSAQuickFilter/NSAFilterBoxNumber.js +67 -0
  25. package/dist/components/NSAQuickFilter/NSAFilterBoxNumber.js.map +1 -0
  26. package/dist/components/NSAQuickFilter/NSAFilterBoxString.d.ts +13 -0
  27. package/dist/components/NSAQuickFilter/NSAFilterBoxString.js +47 -0
  28. package/dist/components/NSAQuickFilter/NSAFilterBoxString.js.map +1 -0
  29. package/dist/components/NSAQuickFilter/NSAFilterBoxTime.d.ts +12 -0
  30. package/dist/components/NSAQuickFilter/NSAFilterBoxTime.js +58 -0
  31. package/dist/components/NSAQuickFilter/NSAFilterBoxTime.js.map +1 -0
  32. package/dist/components/NSAQuickFilter/NSAQuickFilterBar.d.ts +28 -0
  33. package/dist/components/NSAQuickFilter/NSAQuickFilterBar.js +74 -0
  34. package/dist/components/NSAQuickFilter/NSAQuickFilterBar.js.map +1 -0
  35. package/dist/components/NSAQuickFilter/NSAQuickFilterDialog.d.ts +43 -0
  36. package/dist/components/NSAQuickFilter/NSAQuickFilterDialog.js +114 -0
  37. package/dist/components/NSAQuickFilter/NSAQuickFilterDialog.js.map +1 -0
  38. package/dist/components/NSAReorderDialog.d.ts +30 -0
  39. package/dist/components/NSAReorderDialog.js +69 -0
  40. package/dist/components/NSAReorderDialog.js.map +1 -0
  41. package/dist/components/NSAReorderDialog.module.css +50 -0
  42. package/dist/components/NSASortDialog.d.ts +21 -0
  43. package/dist/components/NSASortDialog.js +61 -0
  44. package/dist/components/NSASortDialog.js.map +1 -0
  45. package/dist/components/NSATable.d.ts +95 -0
  46. package/dist/components/NSATable.js +335 -0
  47. package/dist/components/NSATable.js.map +1 -0
  48. package/dist/layouts/NSASectionList.d.ts +7 -37
  49. package/dist/layouts/NSASectionList.js +17 -247
  50. package/dist/layouts/NSASectionList.js.map +1 -1
  51. package/dist/layouts/NSASectionList.module.css +15 -18
  52. package/package.json +2 -2
  53. package/src/IEntityInfo.ts +3 -1
  54. package/src/NSACacheService.ts +20 -0
  55. package/src/NSAFilterOperators.ts +93 -0
  56. package/src/components/NSAQuickFilter/NSAFilterBoxBase.tsx +56 -0
  57. package/src/components/NSAQuickFilter/NSAFilterBoxBoolean.tsx +55 -0
  58. package/src/components/NSAQuickFilter/NSAFilterBoxDate.tsx +105 -0
  59. package/src/components/NSAQuickFilter/NSAFilterBoxDateTime.tsx +106 -0
  60. package/src/components/NSAQuickFilter/NSAFilterBoxEnum.module.css +45 -0
  61. package/src/components/NSAQuickFilter/NSAFilterBoxEnum.tsx +80 -0
  62. package/src/components/NSAQuickFilter/NSAFilterBoxNumber.tsx +137 -0
  63. package/src/components/NSAQuickFilter/NSAFilterBoxString.tsx +82 -0
  64. package/src/components/NSAQuickFilter/NSAFilterBoxTime.tsx +102 -0
  65. package/src/components/NSAQuickFilter/NSAQuickFilterBar.module.css +20 -0
  66. package/src/components/NSAQuickFilter/NSAQuickFilterBar.tsx +115 -0
  67. package/src/components/NSAQuickFilter/NSAQuickFilterDialog.module.css +75 -0
  68. package/src/components/NSAQuickFilter/NSAQuickFilterDialog.tsx +261 -0
  69. package/src/components/NSAReorderDialog.module.css +50 -0
  70. package/src/components/NSAReorderDialog.tsx +150 -0
  71. package/src/components/NSASortDialog.tsx +118 -0
  72. package/src/components/NSATable.tsx +490 -0
  73. package/src/layouts/NSASectionList.module.css +15 -18
  74. package/src/layouts/NSASectionList.tsx +43 -395
@@ -0,0 +1,13 @@
1
+ import { NSAFilterBoxBase, NSAFilterBoxBaseProps } from "./NSAFilterBoxBase";
2
+ export interface NSAFilterBoxStringProps extends NSAFilterBoxBaseProps {
3
+ getValues: (search: string) => Promise<{
4
+ value: string;
5
+ title: string;
6
+ }[]>;
7
+ }
8
+ export declare class NSAFilterBoxString extends NSAFilterBoxBase<NSAFilterBoxStringProps> {
9
+ private debounce;
10
+ private list;
11
+ private emitDebounced;
12
+ render(): JSX.Element | null;
13
+ }
@@ -0,0 +1,47 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { jsx as _jsx } from "react/jsx-runtime";
11
+ import { FilterItemOperator, SetTimeouService } from "namirasoft-core";
12
+ import { NSBoxEntity, NSBoxString } from "namirasoft-site-react";
13
+ import { NSAFilterBoxBase } from "./NSAFilterBoxBase";
14
+ import { NSAFilterBoxBoolean } from "./NSAFilterBoxBoolean";
15
+ const ENTITY_OPERATORS = ["equals", "notequals"];
16
+ const DEBOUNCE_MS = 1000;
17
+ export class NSAFilterBoxString extends NSAFilterBoxBase {
18
+ constructor() {
19
+ super(...arguments);
20
+ this.debounce = new SetTimeouService();
21
+ this.list = (filters, _page, _size, _sorts) => __awaiter(this, void 0, void 0, function* () {
22
+ var _a;
23
+ const searchFilter = filters === null || filters === void 0 ? void 0 : filters.find(f => f.values.length > 0);
24
+ const search = (_a = searchFilter === null || searchFilter === void 0 ? void 0 : searchFilter.values[0]) !== null && _a !== void 0 ? _a : "";
25
+ const rows = yield this.props.getValues(search);
26
+ return { count: rows.length, rows };
27
+ });
28
+ }
29
+ emitDebounced(value) {
30
+ this.debounce.setTimeoutIfNotCalledAgain(() => this.props.onChanged(value ? this.buildFilterItem(value) : null), DEBOUNCE_MS);
31
+ }
32
+ render() {
33
+ const { config, onChanged } = this.props;
34
+ const op = config.operatorName
35
+ ? FilterItemOperator.getByName(config.operatorName)
36
+ : null;
37
+ if (op && op.count === 0)
38
+ return _jsx(NSAFilterBoxBoolean, { config: config, onChanged: onChanged });
39
+ if (config.operatorName && ENTITY_OPERATORS.includes(config.operatorName))
40
+ return (_jsx(NSBoxEntity, { title: this.getLabel(), placeholder: this.getLabel(), required: false, hideHeader: true, multiple: false, list: this.list, table_name: config.column.table.name, getValue: item => item.value, getTitle: item => item.title, getSort: () => null, onChanged: e => {
41
+ const val = e.getValueOne();
42
+ onChanged(val ? this.buildFilterItem(val) : null);
43
+ } }));
44
+ return (_jsx(NSBoxString, { title: this.getLabel(), placeholder: this.getLabel(), required: false, hideHeader: true, onChanged: e => this.emitDebounced(e.getValue()) }));
45
+ }
46
+ }
47
+ //# sourceMappingURL=NSAFilterBoxString.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NSAFilterBoxString.js","sourceRoot":"","sources":["../../../src/components/NSAQuickFilter/NSAFilterBoxString.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { NSAFilterBoxBase, NSAFilterBoxBaseProps } from "./NSAFilterBoxBase";
2
+ export interface NSAFilterBoxTimeProps extends NSAFilterBoxBaseProps {
3
+ getValues: (search: string) => Promise<{
4
+ value: string;
5
+ title: string;
6
+ }[]>;
7
+ }
8
+ export declare class NSAFilterBoxTime extends NSAFilterBoxBase<NSAFilterBoxTimeProps> {
9
+ private betweenActive;
10
+ private list;
11
+ render(): JSX.Element | null;
12
+ }
@@ -0,0 +1,58 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { jsx as _jsx } from "react/jsx-runtime";
11
+ import { FilterItemOperator } from "namirasoft-core";
12
+ import { NSBoxEntity, NSBoxTime, NSBoxTimeRange } from "namirasoft-site-react";
13
+ import { NSAFilterBoxBase } from "./NSAFilterBoxBase";
14
+ import { NSAFilterBoxBoolean } from "./NSAFilterBoxBoolean";
15
+ const ENTITY_OPERATORS = ["equals"];
16
+ export class NSAFilterBoxTime extends NSAFilterBoxBase {
17
+ constructor() {
18
+ super(...arguments);
19
+ this.betweenActive = false;
20
+ this.list = (filters, _page, _size, _sorts) => __awaiter(this, void 0, void 0, function* () {
21
+ var _a;
22
+ const searchFilter = filters === null || filters === void 0 ? void 0 : filters.find(f => f.values.length > 0);
23
+ const search = (_a = searchFilter === null || searchFilter === void 0 ? void 0 : searchFilter.values[0]) !== null && _a !== void 0 ? _a : "";
24
+ const rows = yield this.props.getValues(search);
25
+ return { count: rows.length, rows };
26
+ });
27
+ }
28
+ render() {
29
+ const { config, onChanged } = this.props;
30
+ const op = config.operatorName
31
+ ? FilterItemOperator.getByName(config.operatorName)
32
+ : null;
33
+ if (op && op.count === 0)
34
+ return _jsx(NSAFilterBoxBoolean, { config: config, onChanged: onChanged });
35
+ if (config.operatorName === "between")
36
+ return (_jsx(NSBoxTimeRange, { title: this.getLabel(), placeholder: this.getLabel(), required: false, hideHeader: true, preset: true, onChanged: e => {
37
+ const val = e.getValue();
38
+ if (val) {
39
+ this.betweenActive = true;
40
+ onChanged(this.buildBetweenFilterItems(val.from, val.to));
41
+ }
42
+ else if (this.betweenActive) {
43
+ this.betweenActive = false;
44
+ onChanged(null);
45
+ }
46
+ } }));
47
+ if (config.operatorName && ENTITY_OPERATORS.includes(config.operatorName))
48
+ return (_jsx(NSBoxEntity, { title: this.getLabel(), placeholder: this.getLabel(), required: false, hideHeader: true, multiple: false, list: this.list, table_name: config.column.table.name, getValue: item => item.value, getTitle: item => item.title, getSort: () => null, onChanged: e => {
49
+ const val = e.getValueOne();
50
+ onChanged(val ? this.buildFilterItem(val) : null);
51
+ } }));
52
+ return (_jsx(NSBoxTime, { title: this.getLabel(), placeholder: this.getLabel(), required: false, hideHeader: true, onChanged: e => {
53
+ const val = e.getValue();
54
+ onChanged(val ? this.buildFilterItem(val) : null);
55
+ } }));
56
+ }
57
+ }
58
+ //# sourceMappingURL=NSAFilterBoxTime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NSAFilterBoxTime.js","sourceRoot":"","sources":["../../../src/components/NSAQuickFilter/NSAFilterBoxTime.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { Component } from "react";
2
+ import { FilterItem } from "namirasoft-core";
3
+ import { QuickFilterConfig } from "./NSAQuickFilterDialog";
4
+ interface NSAQuickFilterBarProps {
5
+ configs: QuickFilterConfig[];
6
+ getValues: (tableName: string, columnName: string, search: string) => Promise<{
7
+ value: string;
8
+ title: string;
9
+ }[]>;
10
+ onChanged?: () => void;
11
+ }
12
+ interface NSAQuickFilterBarState {
13
+ filterValues: {
14
+ [id: string]: FilterItem | FilterItem[] | null;
15
+ };
16
+ clearKeys: {
17
+ [id: string]: number;
18
+ };
19
+ }
20
+ export declare class NSAQuickFilterBar extends Component<NSAQuickFilterBarProps, NSAQuickFilterBarState> {
21
+ constructor(props: NSAQuickFilterBarProps);
22
+ getFilterItems(): FilterItem[];
23
+ private handleFilterChange;
24
+ private renderFilterBox;
25
+ private renderCard;
26
+ render(): import("react").JSX.Element | null;
27
+ }
28
+ export {};
@@ -0,0 +1,74 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Component } from "react";
3
+ import { VariableType } from "namirasoft-schema";
4
+ import { NSAFilterBoxBoolean } from "./NSAFilterBoxBoolean";
5
+ import { NSAFilterBoxDate } from "./NSAFilterBoxDate";
6
+ import { NSAFilterBoxDateTime } from "./NSAFilterBoxDateTime";
7
+ import { NSAFilterBoxEnum } from "./NSAFilterBoxEnum";
8
+ import { NSAFilterBoxNumber } from "./NSAFilterBoxNumber";
9
+ import { NSAFilterBoxString } from "./NSAFilterBoxString";
10
+ import { NSAFilterBoxTime } from "./NSAFilterBoxTime";
11
+ import Styles from "./NSAQuickFilterBar.module.css";
12
+ const NUMERIC_TYPES = new Set([
13
+ VariableType.TinyInt, VariableType.SmallInt, VariableType.MediumInt,
14
+ VariableType.Integer, VariableType.BigInt, VariableType.Float,
15
+ VariableType.Double, VariableType.Decimal, VariableType.Real, VariableType.Money,
16
+ ]);
17
+ const STRING_TYPES = new Set([
18
+ VariableType.String, VariableType.Email, VariableType.Phone, VariableType.URL,
19
+ VariableType.Color, VariableType.Font, VariableType.FilePath, VariableType.Version,
20
+ VariableType.IPV4, VariableType.IPV6, VariableType.IPV4Range, VariableType.IPV6Range,
21
+ ]);
22
+ export class NSAQuickFilterBar extends Component {
23
+ constructor(props) {
24
+ super(props);
25
+ this.handleFilterChange = (configId, items) => {
26
+ this.setState(prev => ({ filterValues: Object.assign(Object.assign({}, prev.filterValues), { [configId]: items }) }), this.props.onChanged);
27
+ };
28
+ this.state = { filterValues: {}, clearKeys: {} };
29
+ }
30
+ getFilterItems() {
31
+ return Object.values(this.state.filterValues).flatMap(v => {
32
+ if (!v)
33
+ return [];
34
+ return Array.isArray(v) ? v : [v];
35
+ });
36
+ }
37
+ renderFilterBox(config, clearKey, colGetValues) {
38
+ const { columnType } = config.column;
39
+ const onChanged = (items) => this.handleFilterChange(config.id, items);
40
+ const commonProps = { key: clearKey, config, onChanged };
41
+ if (columnType === VariableType.Boolean)
42
+ return _jsx(NSAFilterBoxBoolean, Object.assign({}, commonProps));
43
+ if (NUMERIC_TYPES.has(columnType))
44
+ return _jsx(NSAFilterBoxNumber, Object.assign({}, commonProps, { getValues: colGetValues }));
45
+ if (columnType === VariableType.Date)
46
+ return _jsx(NSAFilterBoxDate, Object.assign({}, commonProps, { getValues: colGetValues }));
47
+ if (columnType === VariableType.DateTime)
48
+ return _jsx(NSAFilterBoxDateTime, Object.assign({}, commonProps, { getValues: colGetValues }));
49
+ if (columnType === VariableType.Time)
50
+ return _jsx(NSAFilterBoxTime, Object.assign({}, commonProps, { getValues: colGetValues }));
51
+ if (STRING_TYPES.has(columnType))
52
+ return _jsx(NSAFilterBoxString, Object.assign({}, commonProps, { getValues: colGetValues }));
53
+ if (columnType === VariableType.Enum || columnType === VariableType.Entity)
54
+ return _jsx(NSAFilterBoxEnum, Object.assign({}, commonProps, { getValues: colGetValues }));
55
+ return null;
56
+ }
57
+ renderCard(config) {
58
+ var _a;
59
+ const { getValues } = this.props;
60
+ const clearKey = (_a = this.state.clearKeys[config.id]) !== null && _a !== void 0 ? _a : 0;
61
+ const colGetValues = (s) => getValues(config.column.table.name, config.column.name, s);
62
+ const box = this.renderFilterBox(config, clearKey, colGetValues);
63
+ if (!box)
64
+ return null;
65
+ return (_jsx("div", { className: Styles.qf_card, children: box }, config.id));
66
+ }
67
+ render() {
68
+ const { configs } = this.props;
69
+ if (configs.length === 0)
70
+ return null;
71
+ return (_jsx("div", { className: Styles.qf_bar, children: configs.map(config => this.renderCard(config)) }));
72
+ }
73
+ }
74
+ //# sourceMappingURL=NSAQuickFilterBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NSAQuickFilterBar.js","sourceRoot":"","sources":["../../../src/components/NSAQuickFilter/NSAQuickFilterBar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { VariableType } from "namirasoft-schema";
2
+ import { TableColumnInfo } from "namirasoft-site-react";
3
+ import { Component } from "react";
4
+ export interface QuickFilterConfig {
5
+ id: string;
6
+ column: {
7
+ table: {
8
+ name: string;
9
+ text: string;
10
+ };
11
+ name: string;
12
+ text: string;
13
+ type: string;
14
+ columnType: VariableType;
15
+ };
16
+ operatorName?: string;
17
+ }
18
+ interface NSAQuickFilterDialogProps {
19
+ configs: QuickFilterConfig[];
20
+ getColumns: () => TableColumnInfo[];
21
+ typeConverter: (type: string) => VariableType;
22
+ onSave: (configs: QuickFilterConfig[]) => void;
23
+ onConfirm: (configs: QuickFilterConfig[]) => void;
24
+ onClose: () => void;
25
+ }
26
+ interface NSAQuickFilterDialogState {
27
+ configs: QuickFilterConfig[];
28
+ formMode: "add" | "edit" | null;
29
+ editingId: string | null;
30
+ formColumn: TableColumnInfo | null;
31
+ formOperatorName: string | null;
32
+ formKey: number;
33
+ }
34
+ export declare class NSAQuickFilterDialog extends Component<NSAQuickFilterDialogProps, NSAQuickFilterDialogState> {
35
+ constructor(props: NSAQuickFilterDialogProps);
36
+ private openAdd;
37
+ private openEdit;
38
+ private deleteConfig;
39
+ private hasChanges;
40
+ private saveForm;
41
+ render(): import("react").JSX.Element;
42
+ }
43
+ export {};
@@ -0,0 +1,114 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
11
+ import { FilterItemOperator } from "namirasoft-core";
12
+ import { VariableType } from "namirasoft-schema";
13
+ import { NSBoxBaseCombo, NSBoxCombo, NSButton, NSButtonBlue, NSColumn, NSDialog, NSNoData, NSTitle } from "namirasoft-site-react";
14
+ import { Component, Fragment } from "react";
15
+ import { NSAFilterOperators } from "../../NSAFilterOperators";
16
+ import Styles from "./NSAQuickFilterDialog.module.css";
17
+ export class NSAQuickFilterDialog extends Component {
18
+ constructor(props) {
19
+ super(props);
20
+ this.openAdd = () => {
21
+ this.setState(prev => ({
22
+ formMode: "add",
23
+ editingId: null,
24
+ formColumn: null,
25
+ formOperatorName: null,
26
+ formKey: prev.formKey + 1,
27
+ }));
28
+ };
29
+ this.openEdit = (config) => {
30
+ var _a;
31
+ const col = (_a = this.props.getColumns().find(c => c.table.name === config.column.table.name && c.name === config.column.name)) !== null && _a !== void 0 ? _a : null;
32
+ this.setState(prev => {
33
+ var _a;
34
+ return ({
35
+ formMode: "edit",
36
+ editingId: config.id,
37
+ formColumn: col,
38
+ formOperatorName: (_a = config.operatorName) !== null && _a !== void 0 ? _a : null,
39
+ formKey: prev.formKey + 1,
40
+ });
41
+ });
42
+ };
43
+ this.deleteConfig = (id) => {
44
+ this.setState(prev => ({ configs: prev.configs.filter(c => c.id !== id) }));
45
+ };
46
+ this.saveForm = () => {
47
+ const { formColumn, formOperatorName, formMode, editingId, configs } = this.state;
48
+ if (!formColumn)
49
+ return;
50
+ const columnType = this.props.typeConverter(formColumn.type);
51
+ const isBoolean = columnType === VariableType.Boolean;
52
+ const newConfig = {
53
+ id: formMode === "edit" && editingId ? editingId : crypto.randomUUID(),
54
+ column: {
55
+ table: { name: formColumn.table.name, text: formColumn.table.text },
56
+ name: formColumn.name,
57
+ text: formColumn.text,
58
+ type: formColumn.type,
59
+ columnType,
60
+ },
61
+ operatorName: isBoolean ? undefined : (formOperatorName !== null && formOperatorName !== void 0 ? formOperatorName : undefined),
62
+ };
63
+ const updatedConfigs = formMode === "edit" && editingId
64
+ ? configs.map(c => c.id === editingId ? newConfig : c)
65
+ : [...configs, newConfig];
66
+ this.setState({ configs: updatedConfigs, formMode: null }, () => {
67
+ this.props.onSave(updatedConfigs);
68
+ });
69
+ };
70
+ this.state = {
71
+ configs: [...props.configs],
72
+ formMode: null,
73
+ editingId: null,
74
+ formColumn: null,
75
+ formOperatorName: null,
76
+ formKey: 0,
77
+ };
78
+ }
79
+ hasChanges() {
80
+ return JSON.stringify(this.state.configs) !== JSON.stringify(this.props.configs);
81
+ }
82
+ render() {
83
+ const { onClose, onConfirm, getColumns, typeConverter } = this.props;
84
+ const { configs, formMode, formColumn, formOperatorName, formKey } = this.state;
85
+ const columns = getColumns();
86
+ const columnType = formColumn ? typeConverter(formColumn.type) : null;
87
+ const isBoolean = columnType === VariableType.Boolean;
88
+ const operators = columnType && !isBoolean ? NSAFilterOperators.getQuickFilterOperators(columnType) : [];
89
+ return (_jsx(NSDialog, { center_dialog: true, closeButton: { show: true }, onClose: onClose, children: _jsxs(NSColumn, { classList: ["align-items-center"], children: [_jsx(NSTitle, { title: "Quick Filters", style: { marginBottom: 0, fontSize: 24 } }), configs.length === 0 && !formMode &&
90
+ _jsx(NSNoData, { lable: "No quick filters defined", style: { marginBottom: 16, fontSize: 20 } }), configs.length > 0 && !formMode && (_jsx(NSColumn, { classList: ["gap-2"], children: configs.map(cfg => {
91
+ const opLabel = cfg.operatorName
92
+ ? FilterItemOperator.getByName(cfg.operatorName).name
93
+ : "—";
94
+ return (_jsxs("div", { className: Styles.qf_item, children: [_jsxs("div", { className: Styles.qf_item_info, children: [_jsx("span", { className: Styles.qf_item_label, children: cfg.column.text }), _jsx("span", { className: Styles.qf_item_op, children: opLabel })] }), _jsxs("div", { className: Styles.qf_item_actions, children: [_jsx(NSButton, { title: "", icon: { src: "https://static.namirasoft.com/image/concept/edit/blue.svg", alt: "edit" }, classList: [Styles.qf_item_btn], onClick: { action: () => this.openEdit(cfg), showLoading: false } }), _jsx(NSButton, { title: "", icon: { src: "https://static.namirasoft.com/image/concept/delete/blue.svg", alt: "delete" }, classList: [Styles.qf_item_btn], onClick: { action: () => this.deleteConfig(cfg.id), showLoading: false } })] })] }, cfg.id));
95
+ }) })), formMode &&
96
+ _jsxs(Fragment, { children: [_jsx(NSBoxBaseCombo, { title: "Column", required: true, defaultValue: formColumn === null || formColumn === void 0 ? void 0 : formColumn.name, getItems: () => __awaiter(this, void 0, void 0, function* () { return ({ count: columns.length, rows: columns }); }), getTitle: c => c.text, getValue: c => c.name, getSort: () => null, multiple: false, onChanged: e => {
97
+ const col = e.getDataOne();
98
+ this.setState({ formColumn: col !== null && col !== void 0 ? col : null, formOperatorName: null });
99
+ }, menu: {
100
+ builtin: {
101
+ copy: { enabled: false, getValue: () => "" }
102
+ },
103
+ items: []
104
+ } }), _jsx(NSBoxCombo, { title: "Operator", required: true, disabled: !formColumn || isBoolean, defaultValue: formOperatorName !== null && formOperatorName !== void 0 ? formOperatorName : undefined, getOptions: () => operators.map(op => ({ value: NSAFilterOperators.getOperatorKey(op), title: `${op.sign} (${op.name})` })), multiple: false, searchable: false, onChanged: e => { var _a; return this.setState({ formOperatorName: (_a = e.getValueOne(false)) !== null && _a !== void 0 ? _a : null }); }, menu: {
105
+ builtin: {
106
+ copy: { enabled: false, getValue: () => "" }
107
+ },
108
+ items: []
109
+ } }, formColumn === null || formColumn === void 0 ? void 0 : formColumn.name), _jsx(NSButtonBlue, { title: "Save", onClick: { action: this.saveForm, showLoading: false } }), _jsx(NSButton, { title: "", icon: { src: "https://static.namirasoft.com/image/concept/arrow/left/blue.svg", alt: "back" }, classList: [Styles.qf_back_btn], onClick: { action: () => this.setState({ formMode: null }), showLoading: false }, style: { width: 40, height: 40 } })] }, formKey), !formMode &&
110
+ _jsxs(_Fragment, { children: [_jsx(NSButton, { title: "+ Add Filter", onClick: { action: this.openAdd, showLoading: false }, style: { border: "1px solid #000" } }), this.hasChanges() &&
111
+ _jsx(NSButtonBlue, { title: "Save Changes", onClick: { action: () => onConfirm(this.state.configs), showLoading: false } })] })] }) }));
112
+ }
113
+ }
114
+ //# sourceMappingURL=NSAQuickFilterDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NSAQuickFilterDialog.js","sourceRoot":"","sources":["../../../src/components/NSAQuickFilter/NSAQuickFilterDialog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { TableColumnInfo } from "namirasoft-site-react";
2
+ import { Component } from "react";
3
+ interface ColumnItem {
4
+ key: string;
5
+ text: string;
6
+ checked: boolean;
7
+ }
8
+ interface NSAReorderDialogProps {
9
+ visibleColumnKeys: string[];
10
+ getColumns: () => TableColumnInfo[];
11
+ onCancel: () => void;
12
+ onApply: (orderedKeys: string[]) => void;
13
+ }
14
+ interface NSAReorderDialogState {
15
+ columns: ColumnItem[];
16
+ dragFromIndex: number | null;
17
+ dragOverIndex: number | null;
18
+ }
19
+ export declare class NSAReorderDialog extends Component<NSAReorderDialogProps, NSAReorderDialogState> {
20
+ constructor(props: NSAReorderDialogProps);
21
+ private buildColumnItems;
22
+ private onDragStart;
23
+ private onDragOver;
24
+ private onDrop;
25
+ private onDragEnd;
26
+ private toggleChecked;
27
+ private handleApply;
28
+ render(): import("react").JSX.Element;
29
+ }
30
+ export {};
@@ -0,0 +1,69 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { NSBox, NSButtonBlue, NSColumn, NSDialog, NSTitle } from "namirasoft-site-react";
3
+ import { Component } from "react";
4
+ import Styles from "./NSAReorderDialog.module.css";
5
+ export class NSAReorderDialog extends Component {
6
+ constructor(props) {
7
+ super(props);
8
+ this.onDragStart = (index) => this.setState({ dragFromIndex: index });
9
+ this.onDragOver = (e, index) => {
10
+ e.preventDefault();
11
+ if (this.state.dragOverIndex !== index)
12
+ this.setState({ dragOverIndex: index });
13
+ };
14
+ this.onDrop = (e, dropIndex) => {
15
+ e.preventDefault();
16
+ const { dragFromIndex, columns } = this.state;
17
+ if (dragFromIndex === null || dragFromIndex === dropIndex) {
18
+ this.setState({ dragFromIndex: null, dragOverIndex: null });
19
+ return;
20
+ }
21
+ const next = [...columns];
22
+ const [moved] = next.splice(dragFromIndex, 1);
23
+ next.splice(dropIndex, 0, moved);
24
+ this.setState({ columns: next, dragFromIndex: null, dragOverIndex: null });
25
+ };
26
+ this.onDragEnd = () => this.setState({ dragFromIndex: null, dragOverIndex: null });
27
+ this.toggleChecked = (key) => this.setState(prev => ({
28
+ columns: prev.columns.map(c => c.key === key ? Object.assign(Object.assign({}, c), { checked: !c.checked }) : c)
29
+ }));
30
+ this.handleApply = () => {
31
+ const orderedKeys = this.state.columns.filter(c => c.checked).map(c => c.key);
32
+ this.props.onApply(orderedKeys);
33
+ };
34
+ this.state = {
35
+ columns: this.buildColumnItems(props),
36
+ dragFromIndex: null,
37
+ dragOverIndex: null
38
+ };
39
+ }
40
+ buildColumnItems(props) {
41
+ const allColumns = props.getColumns();
42
+ const visibleKeys = props.visibleColumnKeys;
43
+ if (visibleKeys.length === 0)
44
+ return allColumns.map(c => ({ key: c.table.name + "." + c.name, text: c.text, checked: true }));
45
+ const visibleItems = visibleKeys
46
+ .map(k => allColumns.find(c => c.table.name + "." + c.name === k))
47
+ .filter(Boolean)
48
+ .map(c => ({ key: c.table.name + "." + c.name, text: c.text, checked: true }));
49
+ const hiddenItems = allColumns
50
+ .filter(c => !visibleKeys.includes(c.table.name + "." + c.name))
51
+ .map(c => ({ key: c.table.name + "." + c.name, text: c.text, checked: false }));
52
+ return [...visibleItems, ...hiddenItems];
53
+ }
54
+ render() {
55
+ const { onCancel } = this.props;
56
+ const { columns, dragFromIndex, dragOverIndex } = this.state;
57
+ return (_jsx(NSDialog, { center_dialog: true, closeButton: { show: true }, onClose: onCancel, style: { minWidth: NSBox.width.double }, children: _jsxs(NSColumn, { classList: ["align-items-center"], children: [_jsx(NSTitle, { title: "Columns", style: { marginBottom: 0, fontSize: 24 } }), _jsx(NSColumn, { classList: ["gap-1"], children: columns.map((col, index) => {
58
+ const isDragging = dragFromIndex === index;
59
+ const isDragOver = dragOverIndex === index && !isDragging;
60
+ let cls = Styles.column_item;
61
+ if (isDragging)
62
+ cls += " " + Styles.column_item_dragging;
63
+ if (isDragOver)
64
+ cls += " " + Styles.column_item_drag_over;
65
+ return (_jsxs("div", { draggable: true, onDragStart: () => this.onDragStart(index), onDragOver: e => this.onDragOver(e, index), onDrop: e => this.onDrop(e, index), onDragEnd: this.onDragEnd, className: cls, children: [_jsx("span", { className: Styles.drag_handle, children: "\u283F" }), _jsx("input", { type: "checkbox", checked: col.checked, onChange: () => this.toggleChecked(col.key), className: Styles.checkbox }), _jsx("span", { className: Styles.column_label, children: col.text })] }, col.key));
66
+ }) }), _jsx(NSButtonBlue, { title: "Apply", onClick: { action: this.handleApply, showLoading: false } })] }) }));
67
+ }
68
+ }
69
+ //# sourceMappingURL=NSAReorderDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NSAReorderDialog.js","sourceRoot":"","sources":["../../src/components/NSAReorderDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAmB,MAAM,uBAAuB,CAAC;AAC1G,OAAO,EAAE,SAAS,EAAa,MAAM,OAAO,CAAC;AAC7C,OAAO,MAAM,MAAM,+BAA+B,CAAC;AAwBnD,MAAM,OAAO,gBAAiB,SAAQ,SAAuD;IAEzF,YAAY,KAA4B;QAEpC,KAAK,CAAC,KAAK,CAAC,CAAC;QA4BT,gBAAW,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QAEzE,eAAU,GAAG,CAAC,CAAY,EAAE,KAAa,EAAE,EAAE;YAEjD,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,KAAK,KAAK;gBAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QAChD,CAAC,CAAC;QAEM,WAAM,GAAG,CAAC,CAAY,EAAE,SAAiB,EAAE,EAAE;YAEjD,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAC9C,IAAI,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,SAAS,EACzD,CAAC;gBACG,IAAI,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5D,OAAO;YACX,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/E,CAAC,CAAC;QAEM,cAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAE9E,kBAAa,GAAG,CAAC,GAAW,EAAE,EAAE,CACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,iCAAM,CAAC,KAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,IAAG,CAAC,CAAC,CAAC,CAAC;SACpF,CAAC,CAAC,CAAC;QAEA,gBAAW,GAAG,GAAG,EAAE;YAEvB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC9E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACpC,CAAC,CAAC;QA9DE,IAAI,CAAC,KAAK,GAAG;YACT,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;YACrC,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,IAAI;SACtB,CAAC;IACN,CAAC;IAEO,gBAAgB,CAAC,KAA4B;QAEjD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,KAAK,CAAC,iBAAiB,CAAC;QAE5C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;YACxB,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAEpG,MAAM,YAAY,GAAiB,WAAW;aACzC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;aACjE,MAAM,CAAC,OAAO,CAAC;aACf,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAE,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,CAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAEtF,MAAM,WAAW,GAAiB,UAAU;aACvC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;aAC/D,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAEpF,OAAO,CAAC,GAAG,YAAY,EAAE,GAAG,WAAW,CAAC,CAAC;IAC7C,CAAC;IAuCQ,MAAM;QAEX,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAChC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAE7D,OAAO,CACH,KAAC,QAAQ,IACL,aAAa,QACb,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAC3B,OAAO,EAAE,QAAQ,EACjB,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,YAEvC,MAAC,QAAQ,IAAC,SAAS,EAAE,CAAC,oBAAoB,CAAC,aACvC,KAAC,OAAO,IAAC,KAAK,EAAC,SAAS,EAAC,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAI,EACrE,KAAC,QAAQ,IAAC,SAAS,EAAE,CAAC,OAAO,CAAC,YAEtB,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;4BAEvB,MAAM,UAAU,GAAG,aAAa,KAAK,KAAK,CAAC;4BAC3C,MAAM,UAAU,GAAG,aAAa,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC;4BAC1D,IAAI,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC;4BAC7B,IAAI,UAAU;gCAAE,GAAG,IAAI,GAAG,GAAG,MAAM,CAAC,oBAAoB,CAAC;4BACzD,IAAI,UAAU;gCAAE,GAAG,IAAI,GAAG,GAAG,MAAM,CAAC,qBAAqB,CAAC;4BAC1D,OAAO,CACH,eAEI,SAAS,QACT,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAC1C,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,EAC1C,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,EAClC,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,SAAS,EAAE,GAAG,aAEd,eAAM,SAAS,EAAE,MAAM,CAAC,WAAW,uBAAU,EAC7C,gBACI,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,GAAG,CAAC,OAAO,EACpB,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAC3C,SAAS,EAAE,MAAM,CAAC,QAAQ,GAC5B,EACF,eAAM,SAAS,EAAE,MAAM,CAAC,YAAY,YAAG,GAAG,CAAC,IAAI,GAAQ,KAflD,GAAG,CAAC,GAAG,CAgBV,CACT,CAAC;wBACN,CAAC,CAAC,GAEC,EACX,KAAC,YAAY,IACT,KAAK,EAAC,OAAO,EACb,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,GAC3D,IACK,GACJ,CACd,CAAC;IACN,CAAC;CACJ"}
@@ -0,0 +1,50 @@
1
+ .column_item {
2
+ width: 100%;
3
+ display: flex;
4
+ align-items: center;
5
+ gap: 10px;
6
+ padding: 8px 12px;
7
+ border-radius: 6px;
8
+ border: 2px solid transparent;
9
+ background-color: rgba(20, 27, 92, 0.04);
10
+ cursor: grab;
11
+ user-select: none;
12
+ box-sizing: border-box;
13
+ transition: background-color 0.1s, border-color 0.1s;
14
+ }
15
+
16
+ .column_item:hover {
17
+ background-color: rgba(20, 27, 92, 0.08);
18
+ }
19
+
20
+ .column_item_dragging {
21
+ opacity: 0.35;
22
+ }
23
+
24
+ .column_item_drag_over {
25
+ border-color: rgba(20, 27, 92, 0.45);
26
+ border-style: dashed;
27
+ background-color: rgba(20, 27, 92, 0.1);
28
+ }
29
+
30
+ .drag_handle {
31
+ color: #bbb;
32
+ font-size: 20px;
33
+ line-height: 1;
34
+ cursor: grab;
35
+ flex-shrink: 0;
36
+ }
37
+
38
+ .checkbox {
39
+ width: 18px;
40
+ height: 18px;
41
+ cursor: pointer;
42
+ margin: 0;
43
+ flex-shrink: 0;
44
+ accent-color: rgba(20, 27, 92, 1);
45
+ }
46
+
47
+ .column_label {
48
+ font-size: 14px;
49
+ flex: 1;
50
+ }
@@ -0,0 +1,21 @@
1
+ import { SortItem } from "namirasoft-core";
2
+ import { TableColumnInfo } from "namirasoft-site-react";
3
+ import { Component } from "react";
4
+ interface NSASortDialogProps {
5
+ sorts: SortItem[];
6
+ getColumns: () => TableColumnInfo[];
7
+ onCancel: () => void;
8
+ onApply: (sorts: SortItem[] | null) => void;
9
+ }
10
+ interface NSASortDialogState {
11
+ sortEnabled: boolean;
12
+ }
13
+ export declare class NSASortDialog extends Component<NSASortDialogProps, NSASortDialogState> {
14
+ private sortBoolRef;
15
+ private sortColumnRef;
16
+ private sortDirectionRef;
17
+ constructor(props: NSASortDialogProps);
18
+ private handleApply;
19
+ render(): import("react").JSX.Element;
20
+ }
21
+ export {};