ar-design 0.4.23 → 0.4.25
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/assets/css/components/form/date-picker/date-picker.css +4 -0
- package/dist/components/data-display/table/body/TBody.d.ts +11 -3
- package/dist/components/data-display/table/body/TBody.js +14 -10
- package/dist/components/data-display/table/index.js +4 -1
- package/dist/components/form/date-picker/index.js +3 -7
- package/package.json +1 -1
|
@@ -1,15 +1,23 @@
|
|
|
1
|
-
import React from "react";
|
|
1
|
+
import React, { Dispatch, SetStateAction } from "react";
|
|
2
2
|
import { TableColumnType } from "../../../../libs/types";
|
|
3
3
|
import { Config } from "../IProps";
|
|
4
4
|
interface IProps<T> {
|
|
5
5
|
data: T[];
|
|
6
6
|
columns: TableColumnType<T>[];
|
|
7
|
+
refs: {
|
|
8
|
+
_checkboxItems: React.MutableRefObject<(HTMLInputElement | null)[]>;
|
|
9
|
+
_selectionItems: React.MutableRefObject<T[]>;
|
|
10
|
+
};
|
|
7
11
|
states: {
|
|
12
|
+
setSelectAll: {
|
|
13
|
+
get: boolean;
|
|
14
|
+
set: Dispatch<SetStateAction<boolean>>;
|
|
15
|
+
};
|
|
8
16
|
showSubitems: {
|
|
9
17
|
get: {
|
|
10
18
|
[key: string]: boolean;
|
|
11
19
|
};
|
|
12
|
-
set:
|
|
20
|
+
set: Dispatch<React.SetStateAction<{
|
|
13
21
|
[key: string]: boolean;
|
|
14
22
|
}>>;
|
|
15
23
|
};
|
|
@@ -23,6 +31,6 @@ interface IProps<T> {
|
|
|
23
31
|
};
|
|
24
32
|
config: Config<T>;
|
|
25
33
|
}
|
|
26
|
-
declare function TBody<T extends object>({ data, columns, methods, states, config }: IProps<T>): React.JSX.Element | React.JSX.Element[];
|
|
34
|
+
declare function TBody<T extends object>({ data, columns, refs, methods, states, config }: IProps<T>): React.JSX.Element | React.JSX.Element[];
|
|
27
35
|
declare const _default: typeof TBody;
|
|
28
36
|
export default _default;
|
|
@@ -2,14 +2,11 @@ import React, { Fragment, memo, useEffect, useRef, useState } from "react";
|
|
|
2
2
|
import { ARIcon } from "../../../icons";
|
|
3
3
|
import Checkbox from "../../../form/checkbox";
|
|
4
4
|
import Editable from "./Editable";
|
|
5
|
-
function TBody({ data, columns, methods, states, config }) {
|
|
5
|
+
function TBody({ data, columns, refs, methods, states, config }) {
|
|
6
6
|
// refs
|
|
7
7
|
const _tBodyTR = useRef([]);
|
|
8
|
-
const _checkboxItems = useRef([]);
|
|
9
|
-
// refs -> Selection
|
|
10
|
-
const _selectionItems = useRef([]);
|
|
11
8
|
// states
|
|
12
|
-
const [
|
|
9
|
+
const [triggerForRender, setTriggerForRender] = useState(false);
|
|
13
10
|
const [rowHeights, setRowHeights] = useState([]);
|
|
14
11
|
// variables
|
|
15
12
|
const _subrowSelector = config.subrow?.selector ?? "subitems";
|
|
@@ -22,17 +19,17 @@ function TBody({ data, columns, methods, states, config }) {
|
|
|
22
19
|
_tBodyTR.current[index] = element;
|
|
23
20
|
}, ...(methods.rowBackgroundColor ? { style: { backgroundColor: methods.rowBackgroundColor(item) } } : {}), ...(methods.onDnD && data.length > 1 ? { className: "draggable", draggable: true } : {}) },
|
|
24
21
|
methods.selections && (React.createElement("td", { className: "flex justify-content-center sticky-left", "data-sticky-position": "left" },
|
|
25
|
-
React.createElement(Checkbox, { key: Date.now(), ref: (element) => (_checkboxItems.current[index] = element), variant: "filled", color: "green", checked: _selectionItems.current.some((selectionItem) => methods.trackBy?.(selectionItem) === methods.trackBy?.(item)), onChange: (event) => {
|
|
22
|
+
React.createElement(Checkbox, { key: Date.now(), ref: (element) => (refs._checkboxItems.current[index] = element), variant: "filled", color: "green", checked: refs._selectionItems.current.some((selectionItem) => methods.trackBy?.(selectionItem) === methods.trackBy?.(item)), onChange: (event) => {
|
|
26
23
|
const key = methods.trackBy?.(item);
|
|
27
24
|
if (event.target.checked) {
|
|
28
|
-
if (!_selectionItems.current.some((_item) => methods.trackBy?.(_item) === key)) {
|
|
29
|
-
_selectionItems.current = [..._selectionItems.current, item];
|
|
25
|
+
if (!refs._selectionItems.current.some((_item) => methods.trackBy?.(_item) === key)) {
|
|
26
|
+
refs._selectionItems.current = [...refs._selectionItems.current, item];
|
|
30
27
|
}
|
|
31
28
|
}
|
|
32
29
|
else {
|
|
33
|
-
_selectionItems.current = _selectionItems.current.filter((_item) => methods.trackBy?.(_item) !== key);
|
|
30
|
+
refs._selectionItems.current = refs._selectionItems.current.filter((_item) => methods.trackBy?.(_item) !== key);
|
|
34
31
|
}
|
|
35
|
-
methods.selections?.(_selectionItems.current);
|
|
32
|
+
methods.selections?.(refs._selectionItems.current);
|
|
36
33
|
setTriggerForRender((prev) => !prev);
|
|
37
34
|
} }))),
|
|
38
35
|
isHasSubitems && _subrowButton ? (React.createElement("td", null, item[_subrowSelector] && (React.createElement("div", { className: "subitem-open-button-wrapper" },
|
|
@@ -133,7 +130,14 @@ function TBody({ data, columns, methods, states, config }) {
|
|
|
133
130
|
useEffect(() => {
|
|
134
131
|
const heights = _tBodyTR.current.map((el) => (el ? el.getBoundingClientRect().height : 0));
|
|
135
132
|
setRowHeights(heights);
|
|
133
|
+
setTriggerForRender((prev) => !prev);
|
|
136
134
|
}, [data]);
|
|
135
|
+
useEffect(() => {
|
|
136
|
+
if (Array.isArray(refs._checkboxItems.current) && refs._checkboxItems.current.length > 0) {
|
|
137
|
+
const allChecked = refs._checkboxItems.current.every((item) => item?.checked === true);
|
|
138
|
+
states.setSelectAll.set(allChecked);
|
|
139
|
+
}
|
|
140
|
+
}, [triggerForRender]);
|
|
137
141
|
return data.length > 0 ? (data.map((item, index) => React.createElement(React.Fragment, { key: index }, renderRow(item, index, 1)))) : (React.createElement("tr", null,
|
|
138
142
|
React.createElement("td", { colSpan: columns.length || 1 },
|
|
139
143
|
React.createElement("div", { className: "no-item" },
|
|
@@ -656,7 +656,10 @@ const Table = forwardRef(({ children, trackBy, title, description, data, columns
|
|
|
656
656
|
} }))))));
|
|
657
657
|
})))),
|
|
658
658
|
React.createElement("tbody", { ref: _tBody },
|
|
659
|
-
React.createElement(TBody, { data: getData, columns: columns,
|
|
659
|
+
React.createElement(TBody, { data: getData, columns: columns, refs: { _checkboxItems: _checkboxItems, _selectionItems: _selectionItems }, states: {
|
|
660
|
+
setSelectAll: { get: selectAll, set: setSelectAll },
|
|
661
|
+
showSubitems: { get: showSubitems, set: setShowSubitems },
|
|
662
|
+
}, methods: {
|
|
660
663
|
trackBy: trackBy,
|
|
661
664
|
selections: selections,
|
|
662
665
|
onDnD: onDnD,
|
|
@@ -251,10 +251,8 @@ const DatePicker = ({ variant, color, onChange, config, validation, ...attribute
|
|
|
251
251
|
attributes.placeholder && attributes.placeholder.length > 0 && (React.createElement("label", { ref: _placeholder },
|
|
252
252
|
validation ? "* " : "",
|
|
253
253
|
attributes.placeholder)),
|
|
254
|
-
React.createElement("div", { className: "wrapper",
|
|
255
|
-
|
|
256
|
-
style: {
|
|
257
|
-
clipPath: `polygon(
|
|
254
|
+
React.createElement("div", { className: "wrapper", style: {
|
|
255
|
+
clipPath: `polygon(
|
|
258
256
|
-15px 0,
|
|
259
257
|
10px -5px,
|
|
260
258
|
10px 5px,
|
|
@@ -264,9 +262,7 @@ const DatePicker = ({ variant, color, onChange, config, validation, ...attribute
|
|
|
264
262
|
calc(100% + 5px) calc(100% + 5px),
|
|
265
263
|
-5px calc(100% + 5px)
|
|
266
264
|
)`,
|
|
267
|
-
|
|
268
|
-
}
|
|
269
|
-
: {}) },
|
|
265
|
+
} },
|
|
270
266
|
React.createElement(Input, { ref: _beginDate, variant: variant, color: color, ...attributes, value: DATE.ParseValue(String(attributes.value), config?.isClock), type: config?.isClock ? "datetime-local" : "date", onKeyDown: (event) => {
|
|
271
267
|
if (event.code === "Space")
|
|
272
268
|
event.preventDefault();
|