@veeqo/ui 14.10.2 → 14.10.3-beta-3
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/components/Accordion/Accordion.cjs +19 -16
- package/dist/components/Accordion/Accordion.cjs.map +1 -1
- package/dist/components/Accordion/Accordion.js +19 -16
- package/dist/components/Accordion/Accordion.js.map +1 -1
- package/dist/components/Accordion/Accordion.module.scss.cjs +9 -0
- package/dist/components/Accordion/Accordion.module.scss.cjs.map +1 -0
- package/dist/components/Accordion/Accordion.module.scss.js +7 -0
- package/dist/components/Accordion/Accordion.module.scss.js.map +1 -0
- package/dist/components/Action/Action.d.ts +4 -4
- package/dist/components/Calendars/components/subcomponents/CalendarGrid/subCalendars/DodecadeCalendar.cjs +2 -2
- package/dist/components/Calendars/components/subcomponents/CalendarGrid/subCalendars/DodecadeCalendar.cjs.map +1 -1
- package/dist/components/Calendars/components/subcomponents/CalendarGrid/subCalendars/DodecadeCalendar.js +1 -1
- package/dist/components/Calendars/components/subcomponents/CalendarGrid/subCalendars/YearCalendar.cjs +2 -2
- package/dist/components/Calendars/components/subcomponents/CalendarGrid/subCalendars/YearCalendar.cjs.map +1 -1
- package/dist/components/Calendars/components/subcomponents/CalendarGrid/subCalendars/YearCalendar.js +1 -1
- package/dist/components/Card/Card.cjs +36 -9
- package/dist/components/Card/Card.cjs.map +1 -1
- package/dist/components/Card/Card.d.ts +10 -5
- package/dist/components/Card/Card.js +29 -2
- package/dist/components/Card/Card.js.map +1 -1
- package/dist/components/Card/Card.module.scss.cjs +9 -0
- package/dist/components/Card/Card.module.scss.cjs.map +1 -0
- package/dist/components/Card/Card.module.scss.js +7 -0
- package/dist/components/Card/Card.module.scss.js.map +1 -0
- package/dist/components/Card/index.d.ts +1 -0
- package/dist/components/CardHeader/CardHeader.cjs +3 -3
- package/dist/components/CardHeader/CardHeader.cjs.map +1 -1
- package/dist/components/CardHeader/CardHeader.js +3 -3
- package/dist/components/CardHeader/CardHeader.js.map +1 -1
- package/dist/components/CardHeader/CardHeader.module.scss.cjs +9 -0
- package/dist/components/CardHeader/CardHeader.module.scss.cjs.map +1 -0
- package/dist/components/CardHeader/CardHeader.module.scss.js +7 -0
- package/dist/components/CardHeader/CardHeader.module.scss.js.map +1 -0
- package/dist/components/DataTable/DataTable.cjs +3 -3
- package/dist/components/DataTable/DataTable.cjs.map +1 -1
- package/dist/components/DataTable/DataTable.d.ts +4 -4
- package/dist/components/DataTable/DataTable.js +3 -3
- package/dist/components/DataTable/DataTable.js.map +1 -1
- package/dist/components/DataTable/components/ActionBar.cjs +3 -8
- package/dist/components/DataTable/components/ActionBar.cjs.map +1 -1
- package/dist/components/DataTable/components/ActionBar.js +3 -7
- package/dist/components/DataTable/components/ActionBar.js.map +1 -1
- package/dist/components/DataTable/components/Cell.cjs +15 -4
- package/dist/components/DataTable/components/Cell.cjs.map +1 -1
- package/dist/components/DataTable/components/Cell.d.ts +6 -2
- package/dist/components/DataTable/components/Cell.js +15 -4
- package/dist/components/DataTable/components/Cell.js.map +1 -1
- package/dist/components/DataTable/components/ColumnDivider.cjs +4 -6
- package/dist/components/DataTable/components/ColumnDivider.cjs.map +1 -1
- package/dist/components/DataTable/components/ColumnDivider.d.ts +0 -1
- package/dist/components/DataTable/components/ColumnDivider.js +5 -5
- package/dist/components/DataTable/components/ColumnDivider.js.map +1 -1
- package/dist/components/DataTable/components/ColumnHeader.cjs +8 -9
- package/dist/components/DataTable/components/ColumnHeader.cjs.map +1 -1
- package/dist/components/DataTable/components/ColumnHeader.d.ts +16 -6
- package/dist/components/DataTable/components/ColumnHeader.js +7 -8
- package/dist/components/DataTable/components/ColumnHeader.js.map +1 -1
- package/dist/components/DataTable/components/DataTable.module.scss.cjs +9 -0
- package/dist/components/DataTable/components/DataTable.module.scss.cjs.map +1 -0
- package/dist/components/DataTable/components/DataTable.module.scss.js +7 -0
- package/dist/components/DataTable/components/DataTable.module.scss.js.map +1 -0
- package/dist/components/DataTable/components/EmptyBodyContent.cjs +13 -5
- package/dist/components/DataTable/components/EmptyBodyContent.cjs.map +1 -1
- package/dist/components/DataTable/components/EmptyBodyContent.d.ts +10 -3
- package/dist/components/DataTable/components/EmptyBodyContent.js +12 -4
- package/dist/components/DataTable/components/EmptyBodyContent.js.map +1 -1
- package/dist/components/DataTable/components/Header.cjs +16 -4
- package/dist/components/DataTable/components/Header.cjs.map +1 -1
- package/dist/components/DataTable/components/Header.d.ts +2 -1
- package/dist/components/DataTable/components/Header.js +16 -4
- package/dist/components/DataTable/components/Header.js.map +1 -1
- package/dist/components/DataTable/components/LoadingCellContent.cjs +7 -7
- package/dist/components/DataTable/components/LoadingCellContent.cjs.map +1 -1
- package/dist/components/DataTable/components/LoadingCellContent.d.ts +5 -1
- package/dist/components/DataTable/components/LoadingCellContent.js +6 -6
- package/dist/components/DataTable/components/LoadingCellContent.js.map +1 -1
- package/dist/components/DataTable/components/NoWrap.cjs +7 -3
- package/dist/components/DataTable/components/NoWrap.cjs.map +1 -1
- package/dist/components/DataTable/components/NoWrap.d.ts +6 -1
- package/dist/components/DataTable/components/NoWrap.js +6 -2
- package/dist/components/DataTable/components/NoWrap.js.map +1 -1
- package/dist/components/DataTable/components/Row.cjs +21 -24
- package/dist/components/DataTable/components/Row.cjs.map +1 -1
- package/dist/components/DataTable/components/Row.d.ts +5 -2
- package/dist/components/DataTable/components/Row.js +20 -23
- package/dist/components/DataTable/components/Row.js.map +1 -1
- package/dist/components/DataTable/components/ScrollContainer.cjs +7 -3
- package/dist/components/DataTable/components/ScrollContainer.cjs.map +1 -1
- package/dist/components/DataTable/components/ScrollContainer.d.ts +6 -1
- package/dist/components/DataTable/components/ScrollContainer.js +6 -2
- package/dist/components/DataTable/components/ScrollContainer.js.map +1 -1
- package/dist/components/DataTable/components/StickyHead.cjs +3 -11
- package/dist/components/DataTable/components/StickyHead.cjs.map +1 -1
- package/dist/components/DataTable/components/StickyHead.d.ts +2 -1
- package/dist/components/DataTable/components/StickyHead.js +3 -11
- package/dist/components/DataTable/components/StickyHead.js.map +1 -1
- package/dist/components/DataTable/components/TableGrid.cjs +47 -5
- package/dist/components/DataTable/components/TableGrid.cjs.map +1 -1
- package/dist/components/DataTable/components/TableGrid.d.ts +10 -3
- package/dist/components/DataTable/components/TableGrid.js +46 -4
- package/dist/components/DataTable/components/TableGrid.js.map +1 -1
- package/dist/components/DataTable/components/Truncate.cjs +7 -3
- package/dist/components/DataTable/components/Truncate.cjs.map +1 -1
- package/dist/components/DataTable/components/Truncate.d.ts +6 -1
- package/dist/components/DataTable/components/Truncate.js +6 -2
- package/dist/components/DataTable/components/Truncate.js.map +1 -1
- package/dist/components/DataTable/components/Wrapper.cjs +11 -8
- package/dist/components/DataTable/components/Wrapper.cjs.map +1 -1
- package/dist/components/DataTable/components/Wrapper.d.ts +5 -2
- package/dist/components/DataTable/components/Wrapper.js +10 -7
- package/dist/components/DataTable/components/Wrapper.js.map +1 -1
- package/dist/components/DataTable/constants.cjs +0 -2
- package/dist/components/DataTable/constants.cjs.map +1 -1
- package/dist/components/DataTable/constants.js +1 -2
- package/dist/components/DataTable/constants.js.map +1 -1
- package/dist/components/DataTable/hooks/useTableId.cjs +23 -0
- package/dist/components/DataTable/hooks/useTableId.cjs.map +1 -0
- package/dist/components/DataTable/hooks/useTableId.d.ts +13 -0
- package/dist/components/DataTable/hooks/useTableId.js +21 -0
- package/dist/components/DataTable/hooks/useTableId.js.map +1 -0
- package/dist/components/DataTable/utils/generateTableCss.cjs +44 -80
- package/dist/components/DataTable/utils/generateTableCss.cjs.map +1 -1
- package/dist/components/DataTable/utils/generateTableCss.d.ts +7 -1
- package/dist/components/DataTable/utils/generateTableCss.js +44 -80
- package/dist/components/DataTable/utils/generateTableCss.js.map +1 -1
- package/dist/components/DateInputField/DateInputField.cjs +1 -1
- package/dist/components/DateInputField/DateInputField.js +1 -1
- package/dist/components/DatePicker/DatePicker.cjs +1 -1
- package/dist/components/DatePicker/DatePicker.js +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.cjs +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.js +1 -1
- package/dist/components/DimensionsInput/DimensionsInput.d.ts +10 -10
- package/dist/components/FilterTag/styled.d.ts +1 -1
- package/dist/components/Flex/FlexCol/FlexCol.d.ts +1 -1
- package/dist/components/Flex/FlexRow/FlexRow.d.ts +1 -1
- package/dist/components/Grid/Grid.cjs +24 -0
- package/dist/components/Grid/Grid.cjs.map +1 -0
- package/dist/components/Grid/Grid.d.ts +3 -0
- package/dist/components/Grid/Grid.js +18 -0
- package/dist/components/Grid/Grid.js.map +1 -0
- package/dist/components/Grid/Grid.module.scss.cjs +9 -0
- package/dist/components/Grid/Grid.module.scss.cjs.map +1 -0
- package/dist/components/Grid/Grid.module.scss.js +7 -0
- package/dist/components/Grid/Grid.module.scss.js.map +1 -0
- package/dist/components/Grid/index.d.ts +2 -3
- package/dist/components/LegacyDataTable/LegacyDataTable.d.ts +1 -1
- package/dist/components/LegacyDataTable/LegacyDataTable.module.scss.cjs +9 -0
- package/dist/components/LegacyDataTable/LegacyDataTable.module.scss.cjs.map +1 -0
- package/dist/components/LegacyDataTable/LegacyDataTable.module.scss.js +7 -0
- package/dist/components/LegacyDataTable/LegacyDataTable.module.scss.js.map +1 -0
- package/dist/components/LegacyDataTable/SkeletonContent/SkeletonContent.cjs +8 -8
- package/dist/components/LegacyDataTable/SkeletonContent/SkeletonContent.cjs.map +1 -1
- package/dist/components/LegacyDataTable/SkeletonContent/SkeletonContent.js +8 -7
- package/dist/components/LegacyDataTable/SkeletonContent/SkeletonContent.js.map +1 -1
- package/dist/components/LegacyDataTable/SkeletonContent/SkeletonContent.module.scss.cjs +9 -0
- package/dist/components/LegacyDataTable/SkeletonContent/SkeletonContent.module.scss.cjs.map +1 -0
- package/dist/components/LegacyDataTable/SkeletonContent/SkeletonContent.module.scss.js +7 -0
- package/dist/components/LegacyDataTable/SkeletonContent/SkeletonContent.module.scss.js.map +1 -0
- package/dist/components/LegacyDataTable/SpecificState/SpecificState.cjs +8 -5
- package/dist/components/LegacyDataTable/SpecificState/SpecificState.cjs.map +1 -1
- package/dist/components/LegacyDataTable/SpecificState/SpecificState.js +8 -5
- package/dist/components/LegacyDataTable/SpecificState/SpecificState.js.map +1 -1
- package/dist/components/LegacyDataTable/SpecificState/SpecificState.module.scss.cjs +9 -0
- package/dist/components/LegacyDataTable/SpecificState/SpecificState.module.scss.cjs.map +1 -0
- package/dist/components/LegacyDataTable/SpecificState/SpecificState.module.scss.js +7 -0
- package/dist/components/LegacyDataTable/SpecificState/SpecificState.module.scss.js.map +1 -0
- package/dist/components/LegacyDataTable/StickyHeader.cjs.map +1 -1
- package/dist/components/LegacyDataTable/StickyHeader.js.map +1 -1
- package/dist/components/LegacyDataTable/cells/ClickableCell.cjs +6 -8
- package/dist/components/LegacyDataTable/cells/ClickableCell.cjs.map +1 -1
- package/dist/components/LegacyDataTable/cells/ClickableCell.d.ts +1 -1
- package/dist/components/LegacyDataTable/cells/ClickableCell.js +4 -5
- package/dist/components/LegacyDataTable/cells/ClickableCell.js.map +1 -1
- package/dist/components/LegacyDataTable/cells/EditableCell.cjs +5 -8
- package/dist/components/LegacyDataTable/cells/EditableCell.cjs.map +1 -1
- package/dist/components/LegacyDataTable/cells/EditableCell.d.ts +1 -1
- package/dist/components/LegacyDataTable/cells/EditableCell.js +3 -5
- package/dist/components/LegacyDataTable/cells/EditableCell.js.map +1 -1
- package/dist/components/LegacyDataTable/cells/cells.module.scss.cjs +9 -0
- package/dist/components/LegacyDataTable/cells/cells.module.scss.cjs.map +1 -0
- package/dist/components/LegacyDataTable/cells/cells.module.scss.js +7 -0
- package/dist/components/LegacyDataTable/cells/cells.module.scss.js.map +1 -0
- package/dist/components/LegacyDataTable/styled.cjs +145 -104
- package/dist/components/LegacyDataTable/styled.cjs.map +1 -1
- package/dist/components/LegacyDataTable/styled.d.ts +40 -28
- package/dist/components/LegacyDataTable/styled.js +144 -103
- package/dist/components/LegacyDataTable/styled.js.map +1 -1
- package/dist/components/LegacyDataTable/utils/index.cjs +12 -8
- package/dist/components/LegacyDataTable/utils/index.cjs.map +1 -1
- package/dist/components/LegacyDataTable/utils/index.d.ts +5 -0
- package/dist/components/LegacyDataTable/utils/index.js +12 -8
- package/dist/components/LegacyDataTable/utils/index.js.map +1 -1
- package/dist/components/Pagination/styled.d.ts +11 -11
- package/dist/components/PhoneInput/index.d.ts +10 -10
- package/dist/components/Search/Search.d.ts +10 -10
- package/dist/components/SimpleTable/SimpleTable.cjs +20 -7
- package/dist/components/SimpleTable/SimpleTable.cjs.map +1 -1
- package/dist/components/SimpleTable/SimpleTable.d.ts +9 -7
- package/dist/components/SimpleTable/SimpleTable.js +15 -2
- package/dist/components/SimpleTable/SimpleTable.js.map +1 -1
- package/dist/components/SimpleTable/SimpleTable.module.scss.cjs +9 -0
- package/dist/components/SimpleTable/SimpleTable.module.scss.cjs.map +1 -0
- package/dist/components/SimpleTable/SimpleTable.module.scss.js +7 -0
- package/dist/components/SimpleTable/SimpleTable.module.scss.js.map +1 -0
- package/dist/components/Text/Text.d.ts +1 -1
- package/dist/components/TextField/TextField.d.ts +10 -10
- package/dist/components/TextField/index.d.ts +10 -10
- package/dist/components/UploadFile/UploadFile.cjs +7 -2
- package/dist/components/UploadFile/UploadFile.cjs.map +1 -1
- package/dist/components/UploadFile/UploadFile.js +7 -2
- package/dist/components/UploadFile/UploadFile.js.map +1 -1
- package/dist/components/UploadFile/UploadFile.module.scss.cjs +9 -0
- package/dist/components/UploadFile/UploadFile.module.scss.cjs.map +1 -0
- package/dist/components/UploadFile/UploadFile.module.scss.js +7 -0
- package/dist/components/UploadFile/UploadFile.module.scss.js.map +1 -0
- package/dist/components/View/View.cjs +37 -9
- package/dist/components/View/View.cjs.map +1 -1
- package/dist/components/View/View.js +35 -7
- package/dist/components/View/View.js.map +1 -1
- package/dist/components/View/View.module.scss.cjs +9 -0
- package/dist/components/View/View.module.scss.cjs.map +1 -0
- package/dist/components/View/View.module.scss.js +7 -0
- package/dist/components/View/View.module.scss.js.map +1 -0
- package/dist/components/ViewTab/ViewTab.d.ts +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/index.cjs +10 -10
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/components/Accordion/styled.cjs +0 -49
- package/dist/components/Accordion/styled.cjs.map +0 -1
- package/dist/components/Accordion/styled.d.ts +0 -26
- package/dist/components/Accordion/styled.js +0 -34
- package/dist/components/Accordion/styled.js.map +0 -1
- package/dist/components/Card/styled.cjs +0 -50
- package/dist/components/Card/styled.cjs.map +0 -1
- package/dist/components/Card/styled.d.ts +0 -16
- package/dist/components/Card/styled.js +0 -40
- package/dist/components/Card/styled.js.map +0 -1
- package/dist/components/CardHeader/styled.cjs +0 -15
- package/dist/components/CardHeader/styled.cjs.map +0 -1
- package/dist/components/CardHeader/styled.d.ts +0 -2
- package/dist/components/CardHeader/styled.js +0 -8
- package/dist/components/CardHeader/styled.js.map +0 -1
- package/dist/components/Grid/index.cjs +0 -20
- package/dist/components/Grid/index.cjs.map +0 -1
- package/dist/components/Grid/index.js +0 -14
- package/dist/components/Grid/index.js.map +0 -1
- package/dist/components/LegacyDataTable/SpecificState/styled.cjs +0 -21
- package/dist/components/LegacyDataTable/SpecificState/styled.cjs.map +0 -1
- package/dist/components/LegacyDataTable/SpecificState/styled.d.ts +0 -17
- package/dist/components/LegacyDataTable/SpecificState/styled.js +0 -12
- package/dist/components/LegacyDataTable/SpecificState/styled.js.map +0 -1
- package/dist/components/LegacyDataTable/cells/styled.cjs +0 -14
- package/dist/components/LegacyDataTable/cells/styled.cjs.map +0 -1
- package/dist/components/LegacyDataTable/cells/styled.d.ts +0 -1
- package/dist/components/LegacyDataTable/cells/styled.js +0 -8
- package/dist/components/LegacyDataTable/cells/styled.js.map +0 -1
- package/dist/components/SimpleTable/styled.cjs +0 -34
- package/dist/components/SimpleTable/styled.cjs.map +0 -1
- package/dist/components/SimpleTable/styled.d.ts +0 -15
- package/dist/components/SimpleTable/styled.js +0 -23
- package/dist/components/SimpleTable/styled.js.map +0 -1
- package/dist/components/UploadFile/styled.cjs +0 -54
- package/dist/components/UploadFile/styled.cjs.map +0 -1
- package/dist/components/UploadFile/styled.d.ts +0 -4
- package/dist/components/UploadFile/styled.js +0 -48
- package/dist/components/UploadFile/styled.js.map +0 -1
- package/dist/components/View/styled.cjs +0 -53
- package/dist/components/View/styled.cjs.map +0 -1
- package/dist/components/View/styled.d.ts +0 -37
- package/dist/components/View/styled.js +0 -41
- package/dist/components/View/styled.js.map +0 -1
|
@@ -113,6 +113,8 @@ function StickyHead({ children, intersectionTargetRef, containerRef, cellWidths,
|
|
|
113
113
|
// Render sticky header
|
|
114
114
|
if (!isVisible)
|
|
115
115
|
return null;
|
|
116
|
+
// Generate rules to sync sticky columns with "real" columns
|
|
117
|
+
const columnRules = cellWidths.map((width, index) => `th:nth-child(${index + 1}) { width: ${width}px; }`);
|
|
116
118
|
const containerStyle = {
|
|
117
119
|
...containerRect,
|
|
118
120
|
height: constants.headerCellHeight,
|
|
@@ -125,18 +127,8 @@ function StickyHead({ children, intersectionTargetRef, containerRef, cellWidths,
|
|
|
125
127
|
boxShadow: shadows.Shadows.base,
|
|
126
128
|
top: `${stickyHeaderTop}px` || '0px',
|
|
127
129
|
};
|
|
128
|
-
// Generate styles to sync sticky columns with "real" columns
|
|
129
|
-
const columnsCss = cellWidths
|
|
130
|
-
.map((width, index) => `
|
|
131
|
-
& th:nth-child(${index + 1}) {
|
|
132
|
-
width: ${width}px;
|
|
133
|
-
}
|
|
134
|
-
`)
|
|
135
|
-
.join('');
|
|
136
|
-
// Append to generated table styles
|
|
137
|
-
const allCss = tableCss + columnsCss;
|
|
138
130
|
return (React__default.default.createElement("div", { style: containerStyle, ref: stickyContainerRef },
|
|
139
|
-
React__default.default.createElement(TableGrid.TableGrid, {
|
|
131
|
+
React__default.default.createElement(TableGrid.TableGrid, { tableCss: tableCss, extraRules: columnRules },
|
|
140
132
|
React__default.default.createElement("thead", null, children))));
|
|
141
133
|
}
|
|
142
134
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StickyHead.cjs","sources":["../../../../src/components/DataTable/components/StickyHead.tsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { CSSProperties, ReactNode, RefObject, useEffect, useRef, useState } from 'react';\nimport throttle from 'lodash.throttle';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport { theme } from '../../../theme';\n\nimport { headerCellHeight } from '../constants';\nimport { TableGrid } from './TableGrid';\nimport { Shadows } from '../../../theme/modules/shadows';\n\nexport interface StickyHeadProps {\n tableCss:
|
|
1
|
+
{"version":3,"file":"StickyHead.cjs","sources":["../../../../src/components/DataTable/components/StickyHead.tsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { CSSProperties, ReactNode, RefObject, useEffect, useRef, useState } from 'react';\nimport throttle from 'lodash.throttle';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport { theme } from '../../../theme';\n\nimport { headerCellHeight } from '../constants';\nimport { TableGrid } from './TableGrid';\nimport { TableCssOutput } from '../utils/generateTableCss';\nimport { Shadows } from '../../../theme/modules/shadows';\n\nexport interface StickyHeadProps {\n tableCss: TableCssOutput;\n children?: ReactNode;\n intersectionTargetRef: RefObject<HTMLElement>;\n containerRef: RefObject<HTMLElement>;\n cellWidths: number[];\n stickyHeaderTop?: number;\n}\n\nexport function StickyHead({\n children,\n intersectionTargetRef,\n containerRef,\n cellWidths,\n tableCss,\n stickyHeaderTop = 0,\n}: StickyHeadProps) {\n const stickyContainerRef = useRef<HTMLDivElement>(null);\n const [isVisible, setIsVisible] = useState(false);\n const [containerRect, setContainerRect] = useState({\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n });\n\n const lastLeftValue = useRef<null | number>(null);\n const THROTTE_TIME_MS = 30;\n\n const updateContainerDimensions = () => {\n const targetRect = containerRef.current?.getBoundingClientRect();\n const newRect = {\n left: targetRect?.left || 0,\n width: targetRect?.width || 0,\n top: 0,\n height: 48,\n };\n setContainerRect(newRect);\n };\n\n const updateContainerScrollPosition = () => {\n if (!containerRef.current) return;\n const xScrollOffset = containerRef.current.scrollLeft;\n stickyContainerRef.current?.scrollTo(xScrollOffset, 0);\n };\n\n // Configure intersection observer to toggle sticky header on/off\n\n useEffect(() => {\n if (!intersectionTargetRef.current) return;\n const options = {\n rootMargin: `-${stickyHeaderTop}px 100% 0px 100%`,\n threshold: 1.0,\n };\n const intersectionCallback: IntersectionObserverCallback = (entries) => {\n entries.forEach((entry) => {\n setIsVisible(!entry.isIntersecting);\n });\n };\n const intersectionObserver = new IntersectionObserver(intersectionCallback, options);\n intersectionObserver.observe(intersectionTargetRef.current);\n return () => intersectionObserver.disconnect(); // eslint-disable-line consistent-return\n }, [intersectionTargetRef.current]);\n\n // Calculate sticky header position and size to match table container\n\n useEffect(() => {\n if (!isVisible) return;\n if (!containerRef.current) return;\n updateContainerDimensions();\n }, [containerRef.current, isVisible]);\n\n // Update dimensions when container element is resized\n\n useEffect(() => {\n if (!isVisible) return;\n if (!containerRef.current) return;\n const resizeObserverCallback = throttle(updateContainerDimensions, THROTTE_TIME_MS); // Throttle events\n const resizeObserver = new ResizeObserver(resizeObserverCallback);\n resizeObserver.observe(containerRef.current);\n return () => resizeObserver.disconnect(); // eslint-disable-line consistent-return\n }, [containerRef.current, isVisible]);\n\n // Update dimensions when document scrolls\n // will only call updateContainerDimensions on horizontal scroll\n useEffect(() => {\n if (!isVisible) return;\n if (!containerRef.current) return;\n const scrollCallback = throttle(() => {\n const { left } = containerRef.current?.getBoundingClientRect() || {};\n if (left && lastLeftValue.current !== left) {\n updateContainerDimensions();\n lastLeftValue.current = left;\n }\n }, THROTTE_TIME_MS); // Throttle events\n document.addEventListener('scroll', scrollCallback);\n return () => document.removeEventListener('scroll', scrollCallback); // eslint-disable-line consistent-return\n }, [containerRef.current, isVisible]);\n\n // Sync container scrolling\n\n useEffect(() => {\n updateContainerScrollPosition();\n }, [isVisible]);\n\n useEffect(() => {\n containerRef.current?.addEventListener('scroll', updateContainerScrollPosition);\n return () => {\n containerRef.current?.removeEventListener('scroll', updateContainerScrollPosition);\n };\n }, [containerRef.current]);\n\n // Render sticky header\n\n if (!isVisible) return null;\n\n // Generate rules to sync sticky columns with \"real\" columns\n const columnRules = cellWidths.map(\n (width, index) => `th:nth-child(${index + 1}) { width: ${width}px; }`,\n );\n\n const containerStyle: CSSProperties = {\n ...containerRect,\n height: headerCellHeight,\n position: 'fixed',\n zIndex: 5,\n overflowX: 'hidden',\n overflowY: 'hidden',\n borderBottom: `1px solid ${theme.colors.neutral.grey.base}`,\n borderTop: `1px solid ${theme.colors.neutral.grey.base}`,\n boxShadow: Shadows.base,\n top: `${stickyHeaderTop}px` || '0px',\n };\n\n return (\n <div style={containerStyle} ref={stickyContainerRef}>\n <TableGrid tableCss={tableCss} extraRules={columnRules}>\n <thead>{children}</thead>\n </TableGrid>\n </div>\n );\n}\n"],"names":["useRef","useState","useEffect","throttle","ResizeObserver","headerCellHeight","theme","Shadows","React","TableGrid"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { ReactNode, RefObject } from 'react';
|
|
2
|
+
import { TableCssOutput } from '../utils/generateTableCss';
|
|
2
3
|
export interface StickyHeadProps {
|
|
3
|
-
tableCss:
|
|
4
|
+
tableCss: TableCssOutput;
|
|
4
5
|
children?: ReactNode;
|
|
5
6
|
intersectionTargetRef: RefObject<HTMLElement>;
|
|
6
7
|
containerRef: RefObject<HTMLElement>;
|
|
@@ -105,6 +105,8 @@ function StickyHead({ children, intersectionTargetRef, containerRef, cellWidths,
|
|
|
105
105
|
// Render sticky header
|
|
106
106
|
if (!isVisible)
|
|
107
107
|
return null;
|
|
108
|
+
// Generate rules to sync sticky columns with "real" columns
|
|
109
|
+
const columnRules = cellWidths.map((width, index) => `th:nth-child(${index + 1}) { width: ${width}px; }`);
|
|
108
110
|
const containerStyle = {
|
|
109
111
|
...containerRect,
|
|
110
112
|
height: headerCellHeight,
|
|
@@ -117,18 +119,8 @@ function StickyHead({ children, intersectionTargetRef, containerRef, cellWidths,
|
|
|
117
119
|
boxShadow: Shadows.base,
|
|
118
120
|
top: `${stickyHeaderTop}px` || '0px',
|
|
119
121
|
};
|
|
120
|
-
// Generate styles to sync sticky columns with "real" columns
|
|
121
|
-
const columnsCss = cellWidths
|
|
122
|
-
.map((width, index) => `
|
|
123
|
-
& th:nth-child(${index + 1}) {
|
|
124
|
-
width: ${width}px;
|
|
125
|
-
}
|
|
126
|
-
`)
|
|
127
|
-
.join('');
|
|
128
|
-
// Append to generated table styles
|
|
129
|
-
const allCss = tableCss + columnsCss;
|
|
130
122
|
return (React__default.createElement("div", { style: containerStyle, ref: stickyContainerRef },
|
|
131
|
-
React__default.createElement(TableGrid, {
|
|
123
|
+
React__default.createElement(TableGrid, { tableCss: tableCss, extraRules: columnRules },
|
|
132
124
|
React__default.createElement("thead", null, children))));
|
|
133
125
|
}
|
|
134
126
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StickyHead.js","sources":["../../../../src/components/DataTable/components/StickyHead.tsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { CSSProperties, ReactNode, RefObject, useEffect, useRef, useState } from 'react';\nimport throttle from 'lodash.throttle';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport { theme } from '../../../theme';\n\nimport { headerCellHeight } from '../constants';\nimport { TableGrid } from './TableGrid';\nimport { Shadows } from '../../../theme/modules/shadows';\n\nexport interface StickyHeadProps {\n tableCss:
|
|
1
|
+
{"version":3,"file":"StickyHead.js","sources":["../../../../src/components/DataTable/components/StickyHead.tsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { CSSProperties, ReactNode, RefObject, useEffect, useRef, useState } from 'react';\nimport throttle from 'lodash.throttle';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport { theme } from '../../../theme';\n\nimport { headerCellHeight } from '../constants';\nimport { TableGrid } from './TableGrid';\nimport { TableCssOutput } from '../utils/generateTableCss';\nimport { Shadows } from '../../../theme/modules/shadows';\n\nexport interface StickyHeadProps {\n tableCss: TableCssOutput;\n children?: ReactNode;\n intersectionTargetRef: RefObject<HTMLElement>;\n containerRef: RefObject<HTMLElement>;\n cellWidths: number[];\n stickyHeaderTop?: number;\n}\n\nexport function StickyHead({\n children,\n intersectionTargetRef,\n containerRef,\n cellWidths,\n tableCss,\n stickyHeaderTop = 0,\n}: StickyHeadProps) {\n const stickyContainerRef = useRef<HTMLDivElement>(null);\n const [isVisible, setIsVisible] = useState(false);\n const [containerRect, setContainerRect] = useState({\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n });\n\n const lastLeftValue = useRef<null | number>(null);\n const THROTTE_TIME_MS = 30;\n\n const updateContainerDimensions = () => {\n const targetRect = containerRef.current?.getBoundingClientRect();\n const newRect = {\n left: targetRect?.left || 0,\n width: targetRect?.width || 0,\n top: 0,\n height: 48,\n };\n setContainerRect(newRect);\n };\n\n const updateContainerScrollPosition = () => {\n if (!containerRef.current) return;\n const xScrollOffset = containerRef.current.scrollLeft;\n stickyContainerRef.current?.scrollTo(xScrollOffset, 0);\n };\n\n // Configure intersection observer to toggle sticky header on/off\n\n useEffect(() => {\n if (!intersectionTargetRef.current) return;\n const options = {\n rootMargin: `-${stickyHeaderTop}px 100% 0px 100%`,\n threshold: 1.0,\n };\n const intersectionCallback: IntersectionObserverCallback = (entries) => {\n entries.forEach((entry) => {\n setIsVisible(!entry.isIntersecting);\n });\n };\n const intersectionObserver = new IntersectionObserver(intersectionCallback, options);\n intersectionObserver.observe(intersectionTargetRef.current);\n return () => intersectionObserver.disconnect(); // eslint-disable-line consistent-return\n }, [intersectionTargetRef.current]);\n\n // Calculate sticky header position and size to match table container\n\n useEffect(() => {\n if (!isVisible) return;\n if (!containerRef.current) return;\n updateContainerDimensions();\n }, [containerRef.current, isVisible]);\n\n // Update dimensions when container element is resized\n\n useEffect(() => {\n if (!isVisible) return;\n if (!containerRef.current) return;\n const resizeObserverCallback = throttle(updateContainerDimensions, THROTTE_TIME_MS); // Throttle events\n const resizeObserver = new ResizeObserver(resizeObserverCallback);\n resizeObserver.observe(containerRef.current);\n return () => resizeObserver.disconnect(); // eslint-disable-line consistent-return\n }, [containerRef.current, isVisible]);\n\n // Update dimensions when document scrolls\n // will only call updateContainerDimensions on horizontal scroll\n useEffect(() => {\n if (!isVisible) return;\n if (!containerRef.current) return;\n const scrollCallback = throttle(() => {\n const { left } = containerRef.current?.getBoundingClientRect() || {};\n if (left && lastLeftValue.current !== left) {\n updateContainerDimensions();\n lastLeftValue.current = left;\n }\n }, THROTTE_TIME_MS); // Throttle events\n document.addEventListener('scroll', scrollCallback);\n return () => document.removeEventListener('scroll', scrollCallback); // eslint-disable-line consistent-return\n }, [containerRef.current, isVisible]);\n\n // Sync container scrolling\n\n useEffect(() => {\n updateContainerScrollPosition();\n }, [isVisible]);\n\n useEffect(() => {\n containerRef.current?.addEventListener('scroll', updateContainerScrollPosition);\n return () => {\n containerRef.current?.removeEventListener('scroll', updateContainerScrollPosition);\n };\n }, [containerRef.current]);\n\n // Render sticky header\n\n if (!isVisible) return null;\n\n // Generate rules to sync sticky columns with \"real\" columns\n const columnRules = cellWidths.map(\n (width, index) => `th:nth-child(${index + 1}) { width: ${width}px; }`,\n );\n\n const containerStyle: CSSProperties = {\n ...containerRect,\n height: headerCellHeight,\n position: 'fixed',\n zIndex: 5,\n overflowX: 'hidden',\n overflowY: 'hidden',\n borderBottom: `1px solid ${theme.colors.neutral.grey.base}`,\n borderTop: `1px solid ${theme.colors.neutral.grey.base}`,\n boxShadow: Shadows.base,\n top: `${stickyHeaderTop}px` || '0px',\n };\n\n return (\n <div style={containerStyle} ref={stickyContainerRef}>\n <TableGrid tableCss={tableCss} extraRules={columnRules}>\n <thead>{children}</thead>\n </TableGrid>\n </div>\n );\n}\n"],"names":["React"],"mappings":";;;;;;;;AAAA;SAoBgB,UAAU,CAAC,EACzB,QAAQ,EACR,qBAAqB,EACrB,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,eAAe,GAAG,CAAC,GACH,EAAA;AAChB,IAAA,MAAM,kBAAkB,GAAG,MAAM,CAAiB,IAAI,CAAC;IACvD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AACjD,IAAA,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC;AACjD,QAAA,GAAG,EAAE,CAAC;AACN,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,EAAE,CAAC;AACV,KAAA,CAAC;AAEF,IAAA,MAAM,aAAa,GAAG,MAAM,CAAgB,IAAI,CAAC;IACjD,MAAM,eAAe,GAAG,EAAE;IAE1B,MAAM,yBAAyB,GAAG,MAAK;;QACrC,MAAM,UAAU,GAAG,CAAA,EAAA,GAAA,YAAY,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,qBAAqB,EAAE;AAChE,QAAA,MAAM,OAAO,GAAG;YACd,IAAI,EAAE,CAAA,UAAU,KAAA,IAAA,IAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,KAAI,CAAC;YAC3B,KAAK,EAAE,CAAA,UAAU,KAAA,IAAA,IAAV,UAAU,uBAAV,UAAU,CAAE,KAAK,KAAI,CAAC;AAC7B,YAAA,GAAG,EAAE,CAAC;AACN,YAAA,MAAM,EAAE,EAAE;SACX;QACD,gBAAgB,CAAC,OAAO,CAAC;AAC3B,IAAA,CAAC;IAED,MAAM,6BAA6B,GAAG,MAAK;;QACzC,IAAI,CAAC,YAAY,CAAC,OAAO;YAAE;AAC3B,QAAA,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU;QACrD,CAAA,EAAA,GAAA,kBAAkB,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;AACxD,IAAA,CAAC;;IAID,SAAS,CAAC,MAAK;QACb,IAAI,CAAC,qBAAqB,CAAC,OAAO;YAAE;AACpC,QAAA,MAAM,OAAO,GAAG;YACd,UAAU,EAAE,CAAA,CAAA,EAAI,eAAe,CAAA,gBAAA,CAAkB;AACjD,YAAA,SAAS,EAAE,GAAG;SACf;AACD,QAAA,MAAM,oBAAoB,GAAiC,CAAC,OAAO,KAAI;AACrE,YAAA,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACxB,gBAAA,YAAY,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;AACrC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;QACD,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,CAAC,oBAAoB,EAAE,OAAO,CAAC;AACpF,QAAA,oBAAoB,CAAC,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC;QAC3D,OAAO,MAAM,oBAAoB,CAAC,UAAU,EAAE,CAAC;AACjD,IAAA,CAAC,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;;IAInC,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,CAAC,SAAS;YAAE;QAChB,IAAI,CAAC,YAAY,CAAC,OAAO;YAAE;AAC3B,QAAA,yBAAyB,EAAE;IAC7B,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;;IAIrC,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,CAAC,SAAS;YAAE;QAChB,IAAI,CAAC,YAAY,CAAC,OAAO;YAAE;QAC3B,MAAM,sBAAsB,GAAG,QAAQ,CAAC,yBAAyB,EAAE,eAAe,CAAC,CAAC;AACpF,QAAA,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,sBAAsB,CAAC;AACjE,QAAA,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;QAC5C,OAAO,MAAM,cAAc,CAAC,UAAU,EAAE,CAAC;IAC3C,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;;;IAIrC,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,CAAC,SAAS;YAAE;QAChB,IAAI,CAAC,YAAY,CAAC,OAAO;YAAE;AAC3B,QAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAK;;AACnC,YAAA,MAAM,EAAE,IAAI,EAAE,GAAG,CAAA,CAAA,EAAA,GAAA,YAAY,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,qBAAqB,EAAE,KAAI,EAAE;AACpE,YAAA,IAAI,IAAI,IAAI,aAAa,CAAC,OAAO,KAAK,IAAI,EAAE;AAC1C,gBAAA,yBAAyB,EAAE;AAC3B,gBAAA,aAAa,CAAC,OAAO,GAAG,IAAI;AAC7B,YAAA;AACH,QAAA,CAAC,EAAE,eAAe,CAAC,CAAC;AACpB,QAAA,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,cAAc,CAAC;AACnD,QAAA,OAAO,MAAM,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IACtE,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;;IAIrC,SAAS,CAAC,MAAK;AACb,QAAA,6BAA6B,EAAE;AACjC,IAAA,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IAEf,SAAS,CAAC,MAAK;;QACb,CAAA,EAAA,GAAA,YAAY,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,gBAAgB,CAAC,QAAQ,EAAE,6BAA6B,CAAC;AAC/E,QAAA,OAAO,MAAK;;YACV,CAAA,EAAA,GAAA,YAAY,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,mBAAmB,CAAC,QAAQ,EAAE,6BAA6B,CAAC;AACpF,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;;AAI1B,IAAA,IAAI,CAAC,SAAS;AAAE,QAAA,OAAO,IAAI;;IAG3B,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAChC,CAAC,KAAK,EAAE,KAAK,KAAK,gBAAgB,KAAK,GAAG,CAAC,CAAA,WAAA,EAAc,KAAK,CAAA,KAAA,CAAO,CACtE;AAED,IAAA,MAAM,cAAc,GAAkB;AACpC,QAAA,GAAG,aAAa;AAChB,QAAA,MAAM,EAAE,gBAAgB;AACxB,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,SAAS,EAAE,QAAQ;AACnB,QAAA,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,CAAA,UAAA,EAAa,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAA,CAAE;QAC3D,SAAS,EAAE,CAAA,UAAA,EAAa,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAA,CAAE;QACxD,SAAS,EAAE,OAAO,CAAC,IAAI;AACvB,QAAA,GAAG,EAAE,CAAA,EAAG,eAAe,CAAA,EAAA,CAAI,IAAI,KAAK;KACrC;IAED,QACEA,sCAAK,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,kBAAkB,EAAA;QACjDA,cAAA,CAAA,aAAA,CAAC,SAAS,IAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAA;AACpD,YAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,IAAA,EAAQ,QAAQ,CAAS,CACf,CACR;AAEV;;;;"}
|
|
@@ -1,14 +1,56 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var buildClassnames = require('../../../utils/buildClassnames.cjs');
|
|
5
|
+
require('uid/secure');
|
|
6
|
+
var useTableId = require('../hooks/useTableId.cjs');
|
|
7
|
+
var DataTable_module = require('./DataTable.module.scss.cjs');
|
|
5
8
|
|
|
6
9
|
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
7
10
|
|
|
8
|
-
var
|
|
11
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
9
12
|
|
|
10
|
-
|
|
11
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Prefixes each selector in a rule with the scope selector.
|
|
15
|
+
* Handles comma-separated selector lists (e.g. "th::after, td::after { ... }")
|
|
16
|
+
* by scoping every selector, not just the first.
|
|
17
|
+
*/
|
|
18
|
+
function scopeRule(scopeSelector, rule) {
|
|
19
|
+
const braceIndex = rule.indexOf('{');
|
|
20
|
+
if (braceIndex === -1)
|
|
21
|
+
return `${scopeSelector} ${rule}`;
|
|
22
|
+
const selectorPart = rule.slice(0, braceIndex).trim();
|
|
23
|
+
const bodyPart = rule.slice(braceIndex);
|
|
24
|
+
const scopedSelectors = selectorPart
|
|
25
|
+
.split(',')
|
|
26
|
+
.map((selector) => `${scopeSelector} ${selector.trim()}`)
|
|
27
|
+
.join(', ');
|
|
28
|
+
return `${scopedSelectors} ${bodyPart}`;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Builds a complete scoped stylesheet from properties and rules.
|
|
32
|
+
* No CSS nesting dependency.
|
|
33
|
+
*/
|
|
34
|
+
function buildScopedStyle(scopeSelector, properties, rules) {
|
|
35
|
+
const parts = [];
|
|
36
|
+
if (properties) {
|
|
37
|
+
parts.push(`${scopeSelector} { ${properties} }`);
|
|
38
|
+
}
|
|
39
|
+
rules.forEach((rule) => {
|
|
40
|
+
parts.push(scopeRule(scopeSelector, rule));
|
|
41
|
+
});
|
|
42
|
+
return parts.join('\n');
|
|
43
|
+
}
|
|
44
|
+
const TableGrid = React__default.default.forwardRef(({ tableCss, extraRules, className, children, style, ...rest }, ref) => {
|
|
45
|
+
const tableId = useTableId.useTableId();
|
|
46
|
+
const scopeSelector = `[data-table-id="${tableId}"]`;
|
|
47
|
+
const allRules = extraRules ? [...tableCss.rules, ...extraRules] : tableCss.rules;
|
|
48
|
+
const scopedStyle = buildScopedStyle(scopeSelector, tableCss.properties, allRules);
|
|
49
|
+
return (React__default.default.createElement(React__default.default.Fragment, null,
|
|
50
|
+
scopedStyle && React__default.default.createElement("style", null, scopedStyle),
|
|
51
|
+
React__default.default.createElement("table", { ref: ref, "data-table-id": tableId, className: buildClassnames.buildClassnames([DataTable_module.tableGrid, className]), style: style, ...rest }, children)));
|
|
52
|
+
});
|
|
53
|
+
TableGrid.displayName = 'TableGrid';
|
|
12
54
|
|
|
13
55
|
exports.TableGrid = TableGrid;
|
|
14
56
|
//# sourceMappingURL=TableGrid.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableGrid.cjs","sources":["../../../../src/components/DataTable/components/TableGrid.
|
|
1
|
+
{"version":3,"file":"TableGrid.cjs","sources":["../../../../src/components/DataTable/components/TableGrid.tsx"],"sourcesContent":["import React from 'react';\nimport { buildClassnames } from '../../../utils';\nimport { useTableId } from '../hooks/useTableId';\nimport { TableCssOutput } from '../utils/generateTableCss';\nimport styles from './DataTable.module.scss';\n\nexport interface TableGridProps extends React.TableHTMLAttributes<HTMLTableElement> {\n /** Structured CSS output from generateTableCss */\n tableCss: TableCssOutput;\n /** Additional CSS rules to scope to this table (e.g. StickyHead column widths) */\n extraRules?: string[];\n children?: React.ReactNode;\n className?: string;\n}\n\n/**\n * Prefixes each selector in a rule with the scope selector.\n * Handles comma-separated selector lists (e.g. \"th::after, td::after { ... }\")\n * by scoping every selector, not just the first.\n */\nfunction scopeRule(scopeSelector: string, rule: string): string {\n const braceIndex = rule.indexOf('{');\n if (braceIndex === -1) return `${scopeSelector} ${rule}`;\n\n const selectorPart = rule.slice(0, braceIndex).trim();\n const bodyPart = rule.slice(braceIndex);\n\n const scopedSelectors = selectorPart\n .split(',')\n .map((selector) => `${scopeSelector} ${selector.trim()}`)\n .join(', ');\n\n return `${scopedSelectors} ${bodyPart}`;\n}\n\n/**\n * Builds a complete scoped stylesheet from properties and rules.\n * No CSS nesting dependency.\n */\nfunction buildScopedStyle(scopeSelector: string, properties: string, rules: string[]): string {\n const parts: string[] = [];\n\n if (properties) {\n parts.push(`${scopeSelector} { ${properties} }`);\n }\n\n rules.forEach((rule) => {\n parts.push(scopeRule(scopeSelector, rule));\n });\n\n return parts.join('\\n');\n}\n\nexport const TableGrid = React.forwardRef<HTMLTableElement, TableGridProps>(\n ({ tableCss, extraRules, className, children, style, ...rest }, ref) => {\n const tableId = useTableId();\n const scopeSelector = `[data-table-id=\"${tableId}\"]`;\n\n const allRules = extraRules ? [...tableCss.rules, ...extraRules] : tableCss.rules;\n const scopedStyle = buildScopedStyle(scopeSelector, tableCss.properties, allRules);\n\n return (\n <>\n {scopedStyle && <style>{scopedStyle}</style>}\n <table\n ref={ref}\n data-table-id={tableId}\n className={buildClassnames([styles.tableGrid, className])}\n style={style}\n {...rest}\n >\n {children}\n </table>\n </>\n );\n },\n);\n\nTableGrid.displayName = 'TableGrid';\n"],"names":["React","useTableId","buildClassnames","styles"],"mappings":";;;;;;;;;;;;AAeA;;;;AAIG;AACH,SAAS,SAAS,CAAC,aAAqB,EAAE,IAAY,EAAA;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IACpC,IAAI,UAAU,KAAK,EAAE;AAAE,QAAA,OAAO,CAAA,EAAG,aAAa,CAAA,CAAA,EAAI,IAAI,EAAE;AAExD,IAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;IAEvC,MAAM,eAAe,GAAG;SACrB,KAAK,CAAC,GAAG;AACT,SAAA,GAAG,CAAC,CAAC,QAAQ,KAAK,CAAA,EAAG,aAAa,CAAA,CAAA,EAAI,QAAQ,CAAC,IAAI,EAAE,EAAE;SACvD,IAAI,CAAC,IAAI,CAAC;AAEb,IAAA,OAAO,CAAA,EAAG,eAAe,CAAA,CAAA,EAAI,QAAQ,EAAE;AACzC;AAEA;;;AAGG;AACH,SAAS,gBAAgB,CAAC,aAAqB,EAAE,UAAkB,EAAE,KAAe,EAAA;IAClF,MAAM,KAAK,GAAa,EAAE;AAE1B,IAAA,IAAI,UAAU,EAAE;QACd,KAAK,CAAC,IAAI,CAAC,CAAA,EAAG,aAAa,CAAA,GAAA,EAAM,UAAU,CAAA,EAAA,CAAI,CAAC;AACjD,IAAA;AAED,IAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;QACrB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AAC5C,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB;AAEO,MAAM,SAAS,GAAGA,sBAAK,CAAC,UAAU,CACvC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,KAAI;AACrE,IAAA,MAAM,OAAO,GAAGC,qBAAU,EAAE;AAC5B,IAAA,MAAM,aAAa,GAAG,CAAA,gBAAA,EAAmB,OAAO,IAAI;IAEpD,MAAM,QAAQ,GAAG,UAAU,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK;AACjF,IAAA,MAAM,WAAW,GAAG,gBAAgB,CAAC,aAAa,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;AAElF,IAAA,QACED,sBAAA,CAAA,aAAA,CAAAA,sBAAA,CAAA,QAAA,EAAA,IAAA;QACG,WAAW,IAAIA,sBAAA,CAAA,aAAA,CAAA,OAAA,EAAA,IAAA,EAAQ,WAAW,CAAS;AAC5C,QAAAA,sBAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EACE,GAAG,EAAE,GAAG,EAAA,eAAA,EACO,OAAO,EACtB,SAAS,EAAEE,+BAAe,CAAC,CAACC,gBAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,EACzD,KAAK,EAAE,KAAK,EAAA,GACR,IAAI,EAAA,EAEP,QAAQ,CACH,CACP;AAEP,CAAC;AAGH,SAAS,CAAC,WAAW,GAAG,WAAW;;;;"}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { TableCssOutput } from '../utils/generateTableCss';
|
|
3
|
+
export interface TableGridProps extends React.TableHTMLAttributes<HTMLTableElement> {
|
|
4
|
+
/** Structured CSS output from generateTableCss */
|
|
5
|
+
tableCss: TableCssOutput;
|
|
6
|
+
/** Additional CSS rules to scope to this table (e.g. StickyHead column widths) */
|
|
7
|
+
extraRules?: string[];
|
|
8
|
+
children?: React.ReactNode;
|
|
9
|
+
className?: string;
|
|
3
10
|
}
|
|
4
|
-
export declare const TableGrid:
|
|
11
|
+
export declare const TableGrid: React.ForwardRefExoticComponent<TableGridProps & React.RefAttributes<HTMLTableElement>>;
|
|
@@ -1,8 +1,50 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import React__default from 'react';
|
|
2
|
+
import { buildClassnames } from '../../../utils/buildClassnames.js';
|
|
3
|
+
import 'uid/secure';
|
|
4
|
+
import { useTableId } from '../hooks/useTableId.js';
|
|
5
|
+
import styles from './DataTable.module.scss.js';
|
|
3
6
|
|
|
4
|
-
|
|
5
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Prefixes each selector in a rule with the scope selector.
|
|
9
|
+
* Handles comma-separated selector lists (e.g. "th::after, td::after { ... }")
|
|
10
|
+
* by scoping every selector, not just the first.
|
|
11
|
+
*/
|
|
12
|
+
function scopeRule(scopeSelector, rule) {
|
|
13
|
+
const braceIndex = rule.indexOf('{');
|
|
14
|
+
if (braceIndex === -1)
|
|
15
|
+
return `${scopeSelector} ${rule}`;
|
|
16
|
+
const selectorPart = rule.slice(0, braceIndex).trim();
|
|
17
|
+
const bodyPart = rule.slice(braceIndex);
|
|
18
|
+
const scopedSelectors = selectorPart
|
|
19
|
+
.split(',')
|
|
20
|
+
.map((selector) => `${scopeSelector} ${selector.trim()}`)
|
|
21
|
+
.join(', ');
|
|
22
|
+
return `${scopedSelectors} ${bodyPart}`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Builds a complete scoped stylesheet from properties and rules.
|
|
26
|
+
* No CSS nesting dependency.
|
|
27
|
+
*/
|
|
28
|
+
function buildScopedStyle(scopeSelector, properties, rules) {
|
|
29
|
+
const parts = [];
|
|
30
|
+
if (properties) {
|
|
31
|
+
parts.push(`${scopeSelector} { ${properties} }`);
|
|
32
|
+
}
|
|
33
|
+
rules.forEach((rule) => {
|
|
34
|
+
parts.push(scopeRule(scopeSelector, rule));
|
|
35
|
+
});
|
|
36
|
+
return parts.join('\n');
|
|
37
|
+
}
|
|
38
|
+
const TableGrid = React__default.forwardRef(({ tableCss, extraRules, className, children, style, ...rest }, ref) => {
|
|
39
|
+
const tableId = useTableId();
|
|
40
|
+
const scopeSelector = `[data-table-id="${tableId}"]`;
|
|
41
|
+
const allRules = extraRules ? [...tableCss.rules, ...extraRules] : tableCss.rules;
|
|
42
|
+
const scopedStyle = buildScopedStyle(scopeSelector, tableCss.properties, allRules);
|
|
43
|
+
return (React__default.createElement(React__default.Fragment, null,
|
|
44
|
+
scopedStyle && React__default.createElement("style", null, scopedStyle),
|
|
45
|
+
React__default.createElement("table", { ref: ref, "data-table-id": tableId, className: buildClassnames([styles.tableGrid, className]), style: style, ...rest }, children)));
|
|
46
|
+
});
|
|
47
|
+
TableGrid.displayName = 'TableGrid';
|
|
6
48
|
|
|
7
49
|
export { TableGrid };
|
|
8
50
|
//# sourceMappingURL=TableGrid.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableGrid.js","sources":["../../../../src/components/DataTable/components/TableGrid.
|
|
1
|
+
{"version":3,"file":"TableGrid.js","sources":["../../../../src/components/DataTable/components/TableGrid.tsx"],"sourcesContent":["import React from 'react';\nimport { buildClassnames } from '../../../utils';\nimport { useTableId } from '../hooks/useTableId';\nimport { TableCssOutput } from '../utils/generateTableCss';\nimport styles from './DataTable.module.scss';\n\nexport interface TableGridProps extends React.TableHTMLAttributes<HTMLTableElement> {\n /** Structured CSS output from generateTableCss */\n tableCss: TableCssOutput;\n /** Additional CSS rules to scope to this table (e.g. StickyHead column widths) */\n extraRules?: string[];\n children?: React.ReactNode;\n className?: string;\n}\n\n/**\n * Prefixes each selector in a rule with the scope selector.\n * Handles comma-separated selector lists (e.g. \"th::after, td::after { ... }\")\n * by scoping every selector, not just the first.\n */\nfunction scopeRule(scopeSelector: string, rule: string): string {\n const braceIndex = rule.indexOf('{');\n if (braceIndex === -1) return `${scopeSelector} ${rule}`;\n\n const selectorPart = rule.slice(0, braceIndex).trim();\n const bodyPart = rule.slice(braceIndex);\n\n const scopedSelectors = selectorPart\n .split(',')\n .map((selector) => `${scopeSelector} ${selector.trim()}`)\n .join(', ');\n\n return `${scopedSelectors} ${bodyPart}`;\n}\n\n/**\n * Builds a complete scoped stylesheet from properties and rules.\n * No CSS nesting dependency.\n */\nfunction buildScopedStyle(scopeSelector: string, properties: string, rules: string[]): string {\n const parts: string[] = [];\n\n if (properties) {\n parts.push(`${scopeSelector} { ${properties} }`);\n }\n\n rules.forEach((rule) => {\n parts.push(scopeRule(scopeSelector, rule));\n });\n\n return parts.join('\\n');\n}\n\nexport const TableGrid = React.forwardRef<HTMLTableElement, TableGridProps>(\n ({ tableCss, extraRules, className, children, style, ...rest }, ref) => {\n const tableId = useTableId();\n const scopeSelector = `[data-table-id=\"${tableId}\"]`;\n\n const allRules = extraRules ? [...tableCss.rules, ...extraRules] : tableCss.rules;\n const scopedStyle = buildScopedStyle(scopeSelector, tableCss.properties, allRules);\n\n return (\n <>\n {scopedStyle && <style>{scopedStyle}</style>}\n <table\n ref={ref}\n data-table-id={tableId}\n className={buildClassnames([styles.tableGrid, className])}\n style={style}\n {...rest}\n >\n {children}\n </table>\n </>\n );\n },\n);\n\nTableGrid.displayName = 'TableGrid';\n"],"names":["React"],"mappings":";;;;;;AAeA;;;;AAIG;AACH,SAAS,SAAS,CAAC,aAAqB,EAAE,IAAY,EAAA;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IACpC,IAAI,UAAU,KAAK,EAAE;AAAE,QAAA,OAAO,CAAA,EAAG,aAAa,CAAA,CAAA,EAAI,IAAI,EAAE;AAExD,IAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;IAEvC,MAAM,eAAe,GAAG;SACrB,KAAK,CAAC,GAAG;AACT,SAAA,GAAG,CAAC,CAAC,QAAQ,KAAK,CAAA,EAAG,aAAa,CAAA,CAAA,EAAI,QAAQ,CAAC,IAAI,EAAE,EAAE;SACvD,IAAI,CAAC,IAAI,CAAC;AAEb,IAAA,OAAO,CAAA,EAAG,eAAe,CAAA,CAAA,EAAI,QAAQ,EAAE;AACzC;AAEA;;;AAGG;AACH,SAAS,gBAAgB,CAAC,aAAqB,EAAE,UAAkB,EAAE,KAAe,EAAA;IAClF,MAAM,KAAK,GAAa,EAAE;AAE1B,IAAA,IAAI,UAAU,EAAE;QACd,KAAK,CAAC,IAAI,CAAC,CAAA,EAAG,aAAa,CAAA,GAAA,EAAM,UAAU,CAAA,EAAA,CAAI,CAAC;AACjD,IAAA;AAED,IAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;QACrB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AAC5C,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB;AAEO,MAAM,SAAS,GAAGA,cAAK,CAAC,UAAU,CACvC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,KAAI;AACrE,IAAA,MAAM,OAAO,GAAG,UAAU,EAAE;AAC5B,IAAA,MAAM,aAAa,GAAG,CAAA,gBAAA,EAAmB,OAAO,IAAI;IAEpD,MAAM,QAAQ,GAAG,UAAU,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK;AACjF,IAAA,MAAM,WAAW,GAAG,gBAAgB,CAAC,aAAa,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;AAElF,IAAA,QACEA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA;QACG,WAAW,IAAIA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,IAAA,EAAQ,WAAW,CAAS;AAC5C,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EACE,GAAG,EAAE,GAAG,EAAA,eAAA,EACO,OAAO,EACtB,SAAS,EAAE,eAAe,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,EACzD,KAAK,EAAE,KAAK,EAAA,GACR,IAAI,EAAA,EAEP,QAAQ,CACH,CACP;AAEP,CAAC;AAGH,SAAS,CAAC,WAAW,GAAG,WAAW;;;;"}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var buildClassnames = require('../../../utils/buildClassnames.cjs');
|
|
5
|
+
require('uid/secure');
|
|
6
|
+
var DataTable_module = require('./DataTable.module.scss.cjs');
|
|
4
7
|
|
|
5
8
|
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
6
9
|
|
|
7
|
-
var
|
|
10
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
8
11
|
|
|
9
|
-
const Truncate =
|
|
12
|
+
const Truncate = React__default.default.forwardRef(({ className, children, ...rest }, ref) => (React__default.default.createElement("div", { ref: ref, className: buildClassnames.buildClassnames([DataTable_module.truncate, className]), ...rest }, children)));
|
|
13
|
+
Truncate.displayName = 'Truncate';
|
|
10
14
|
|
|
11
15
|
exports.Truncate = Truncate;
|
|
12
16
|
//# sourceMappingURL=Truncate.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Truncate.cjs","sources":["../../../../src/components/DataTable/components/Truncate.
|
|
1
|
+
{"version":3,"file":"Truncate.cjs","sources":["../../../../src/components/DataTable/components/Truncate.tsx"],"sourcesContent":["import React from 'react';\nimport { buildClassnames } from '../../../utils';\nimport styles from './DataTable.module.scss';\n\nexport interface TruncateProps extends React.HTMLAttributes<HTMLDivElement> {\n children?: React.ReactNode;\n className?: string;\n}\n\nexport const Truncate = React.forwardRef<HTMLDivElement, TruncateProps>(\n ({ className, children, ...rest }, ref) => (\n <div ref={ref} className={buildClassnames([styles.truncate, className])} {...rest}>\n {children}\n </div>\n ),\n);\n\nTruncate.displayName = 'Truncate';\n"],"names":["React","buildClassnames","styles"],"mappings":";;;;;;;;;;;MASa,QAAQ,GAAGA,sBAAK,CAAC,UAAU,CACtC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,MACpCA,8CAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAEC,+BAAe,CAAC,CAACC,gBAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,EAAA,GAAM,IAAI,IAC9E,QAAQ,CACL,CACP;AAGH,QAAQ,CAAC,WAAW,GAAG,UAAU;;;;"}
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface TruncateProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
children?: React.ReactNode;
|
|
4
|
+
className?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const Truncate: React.ForwardRefExoticComponent<TruncateProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
import
|
|
1
|
+
import React__default from 'react';
|
|
2
|
+
import { buildClassnames } from '../../../utils/buildClassnames.js';
|
|
3
|
+
import 'uid/secure';
|
|
4
|
+
import styles from './DataTable.module.scss.js';
|
|
2
5
|
|
|
3
|
-
const Truncate =
|
|
6
|
+
const Truncate = React__default.forwardRef(({ className, children, ...rest }, ref) => (React__default.createElement("div", { ref: ref, className: buildClassnames([styles.truncate, className]), ...rest }, children)));
|
|
7
|
+
Truncate.displayName = 'Truncate';
|
|
4
8
|
|
|
5
9
|
export { Truncate };
|
|
6
10
|
//# sourceMappingURL=Truncate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Truncate.js","sources":["../../../../src/components/DataTable/components/Truncate.
|
|
1
|
+
{"version":3,"file":"Truncate.js","sources":["../../../../src/components/DataTable/components/Truncate.tsx"],"sourcesContent":["import React from 'react';\nimport { buildClassnames } from '../../../utils';\nimport styles from './DataTable.module.scss';\n\nexport interface TruncateProps extends React.HTMLAttributes<HTMLDivElement> {\n children?: React.ReactNode;\n className?: string;\n}\n\nexport const Truncate = React.forwardRef<HTMLDivElement, TruncateProps>(\n ({ className, children, ...rest }, ref) => (\n <div ref={ref} className={buildClassnames([styles.truncate, className])} {...rest}>\n {children}\n </div>\n ),\n);\n\nTruncate.displayName = 'Truncate';\n"],"names":["React"],"mappings":";;;;;MASa,QAAQ,GAAGA,cAAK,CAAC,UAAU,CACtC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,MACpCA,sCAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,EAAA,GAAM,IAAI,IAC9E,QAAQ,CACL,CACP;AAGH,QAAQ,CAAC,WAAW,GAAG,UAAU;;;;"}
|
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var buildClassnames = require('../../../utils/buildClassnames.cjs');
|
|
5
|
+
require('uid/secure');
|
|
6
|
+
var DataTable_module = require('./DataTable.module.scss.cjs');
|
|
5
7
|
|
|
6
8
|
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
7
9
|
|
|
8
|
-
var
|
|
10
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
9
11
|
|
|
10
|
-
const
|
|
11
|
-
full:
|
|
12
|
-
vertical:
|
|
13
|
-
none:
|
|
12
|
+
const borderModeClassMap = {
|
|
13
|
+
full: DataTable_module.borderFull,
|
|
14
|
+
vertical: DataTable_module.borderVertical,
|
|
15
|
+
none: DataTable_module.borderNone,
|
|
14
16
|
};
|
|
15
|
-
const Wrapper =
|
|
17
|
+
const Wrapper = React__default.default.forwardRef(({ borderMode = 'full', className, children, ...rest }, ref) => (React__default.default.createElement("div", { ref: ref, className: buildClassnames.buildClassnames([DataTable_module.wrapper, borderModeClassMap[borderMode], className]), ...rest }, children)));
|
|
18
|
+
Wrapper.displayName = 'Wrapper';
|
|
16
19
|
|
|
17
20
|
exports.Wrapper = Wrapper;
|
|
18
21
|
//# sourceMappingURL=Wrapper.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Wrapper.cjs","sources":["../../../../src/components/DataTable/components/Wrapper.
|
|
1
|
+
{"version":3,"file":"Wrapper.cjs","sources":["../../../../src/components/DataTable/components/Wrapper.tsx"],"sourcesContent":["import React from 'react';\nimport { buildClassnames } from '../../../utils';\nimport { BorderMode } from '../types';\nimport styles from './DataTable.module.scss';\n\nexport interface WrapperProps extends React.HTMLAttributes<HTMLDivElement> {\n borderMode?: BorderMode;\n children?: React.ReactNode;\n className?: string;\n}\n\nconst borderModeClassMap: Record<BorderMode, string> = {\n full: styles.borderFull,\n vertical: styles.borderVertical,\n none: styles.borderNone,\n};\n\nexport const Wrapper = React.forwardRef<HTMLDivElement, WrapperProps>(\n ({ borderMode = 'full', className, children, ...rest }, ref) => (\n <div\n ref={ref}\n className={buildClassnames([styles.wrapper, borderModeClassMap[borderMode], className])}\n {...rest}\n >\n {children}\n </div>\n ),\n);\n\nWrapper.displayName = 'Wrapper';\n"],"names":["styles","React","buildClassnames"],"mappings":";;;;;;;;;;;AAWA,MAAM,kBAAkB,GAA+B;IACrD,IAAI,EAAEA,gBAAM,CAAC,UAAU;IACvB,QAAQ,EAAEA,gBAAM,CAAC,cAAc;IAC/B,IAAI,EAAEA,gBAAM,CAAC,UAAU;CACxB;AAEM,MAAM,OAAO,GAAGC,sBAAK,CAAC,UAAU,CACrC,CAAC,EAAE,UAAU,GAAG,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,MACzDA,sBAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAEC,+BAAe,CAAC,CAACF,gBAAM,CAAC,OAAO,EAAE,kBAAkB,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC,EAAA,GACnF,IAAI,EAAA,EAEP,QAAQ,CACL,CACP;AAGH,OAAO,CAAC,WAAW,GAAG,SAAS;;;;"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
1
2
|
import { BorderMode } from '../types';
|
|
2
|
-
export interface WrapperProps {
|
|
3
|
+
export interface WrapperProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
4
|
borderMode?: BorderMode;
|
|
5
|
+
children?: React.ReactNode;
|
|
6
|
+
className?: string;
|
|
4
7
|
}
|
|
5
|
-
export declare const Wrapper:
|
|
8
|
+
export declare const Wrapper: React.ForwardRefExoticComponent<WrapperProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import React__default from 'react';
|
|
2
|
+
import { buildClassnames } from '../../../utils/buildClassnames.js';
|
|
3
|
+
import 'uid/secure';
|
|
4
|
+
import styles from './DataTable.module.scss.js';
|
|
3
5
|
|
|
4
|
-
const
|
|
5
|
-
full:
|
|
6
|
-
vertical:
|
|
7
|
-
none:
|
|
6
|
+
const borderModeClassMap = {
|
|
7
|
+
full: styles.borderFull,
|
|
8
|
+
vertical: styles.borderVertical,
|
|
9
|
+
none: styles.borderNone,
|
|
8
10
|
};
|
|
9
|
-
const Wrapper =
|
|
11
|
+
const Wrapper = React__default.forwardRef(({ borderMode = 'full', className, children, ...rest }, ref) => (React__default.createElement("div", { ref: ref, className: buildClassnames([styles.wrapper, borderModeClassMap[borderMode], className]), ...rest }, children)));
|
|
12
|
+
Wrapper.displayName = 'Wrapper';
|
|
10
13
|
|
|
11
14
|
export { Wrapper };
|
|
12
15
|
//# sourceMappingURL=Wrapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Wrapper.js","sources":["../../../../src/components/DataTable/components/Wrapper.
|
|
1
|
+
{"version":3,"file":"Wrapper.js","sources":["../../../../src/components/DataTable/components/Wrapper.tsx"],"sourcesContent":["import React from 'react';\nimport { buildClassnames } from '../../../utils';\nimport { BorderMode } from '../types';\nimport styles from './DataTable.module.scss';\n\nexport interface WrapperProps extends React.HTMLAttributes<HTMLDivElement> {\n borderMode?: BorderMode;\n children?: React.ReactNode;\n className?: string;\n}\n\nconst borderModeClassMap: Record<BorderMode, string> = {\n full: styles.borderFull,\n vertical: styles.borderVertical,\n none: styles.borderNone,\n};\n\nexport const Wrapper = React.forwardRef<HTMLDivElement, WrapperProps>(\n ({ borderMode = 'full', className, children, ...rest }, ref) => (\n <div\n ref={ref}\n className={buildClassnames([styles.wrapper, borderModeClassMap[borderMode], className])}\n {...rest}\n >\n {children}\n </div>\n ),\n);\n\nWrapper.displayName = 'Wrapper';\n"],"names":["React"],"mappings":";;;;;AAWA,MAAM,kBAAkB,GAA+B;IACrD,IAAI,EAAE,MAAM,CAAC,UAAU;IACvB,QAAQ,EAAE,MAAM,CAAC,cAAc;IAC/B,IAAI,EAAE,MAAM,CAAC,UAAU;CACxB;AAEM,MAAM,OAAO,GAAGA,cAAK,CAAC,UAAU,CACrC,CAAC,EAAE,UAAU,GAAG,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,MACzDA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,kBAAkB,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC,EAAA,GACnF,IAAI,EAAA,EAEP,QAAQ,CACL,CACP;AAGH,OAAO,CAAC,WAAW,GAAG,SAAS;;;;"}
|
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
const defaultCellSpacing = 3;
|
|
4
4
|
const headerCellHeight = '56px';
|
|
5
|
-
const footerCellHeight = '56px';
|
|
6
5
|
|
|
7
6
|
exports.defaultCellSpacing = defaultCellSpacing;
|
|
8
|
-
exports.footerCellHeight = footerCellHeight;
|
|
9
7
|
exports.headerCellHeight = headerCellHeight;
|
|
10
8
|
//# sourceMappingURL=constants.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.cjs","sources":["../../../src/components/DataTable/constants.ts"],"sourcesContent":["export const defaultCellSpacing = 3;\n\nexport const headerCellHeight = '56px';\nexport const footerCellHeight = '56px';\n"],"names":[],"mappings":";;AAAO,MAAM,kBAAkB,GAAG;AAE3B,MAAM,gBAAgB,GAAG
|
|
1
|
+
{"version":3,"file":"constants.cjs","sources":["../../../src/components/DataTable/constants.ts"],"sourcesContent":["export const defaultCellSpacing = 3;\n\nexport const headerCellHeight = '56px';\nexport const footerCellHeight = '56px';\n"],"names":[],"mappings":";;AAAO,MAAM,kBAAkB,GAAG;AAE3B,MAAM,gBAAgB,GAAG;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../../../src/components/DataTable/constants.ts"],"sourcesContent":["export const defaultCellSpacing = 3;\n\nexport const headerCellHeight = '56px';\nexport const footerCellHeight = '56px';\n"],"names":[],"mappings":"AAAO,MAAM,kBAAkB,GAAG;AAE3B,MAAM,gBAAgB,GAAG
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../src/components/DataTable/constants.ts"],"sourcesContent":["export const defaultCellSpacing = 3;\n\nexport const headerCellHeight = '56px';\nexport const footerCellHeight = '56px';\n"],"names":[],"mappings":"AAAO,MAAM,kBAAkB,GAAG;AAE3B,MAAM,gBAAgB,GAAG;;;;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
|
|
5
|
+
let tableIdCounter = 0;
|
|
6
|
+
/**
|
|
7
|
+
* Generates a unique stable ID per component instance for scoping
|
|
8
|
+
* dynamic CSS to a specific DataTable. Compatible with React 17+.
|
|
9
|
+
*
|
|
10
|
+
* Note: Uses a module-level counter. Not SSR-safe (render order dependent).
|
|
11
|
+
* If SSR support is needed, use a context-based ID provider.
|
|
12
|
+
*/
|
|
13
|
+
function useTableId() {
|
|
14
|
+
const idRef = React.useRef(null);
|
|
15
|
+
if (idRef.current === null) {
|
|
16
|
+
tableIdCounter += 1;
|
|
17
|
+
idRef.current = `dt-${tableIdCounter}`;
|
|
18
|
+
}
|
|
19
|
+
return idRef.current;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
exports.useTableId = useTableId;
|
|
23
|
+
//# sourceMappingURL=useTableId.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTableId.cjs","sources":["../../../../src/components/DataTable/hooks/useTableId.ts"],"sourcesContent":["import { useRef } from 'react';\n\nlet tableIdCounter = 0;\n\n/**\n * Generates a unique stable ID per component instance for scoping\n * dynamic CSS to a specific DataTable. Compatible with React 17+.\n *\n * Note: Uses a module-level counter. Not SSR-safe (render order dependent).\n * If SSR support is needed, use a context-based ID provider.\n */\nexport function useTableId(): string {\n const idRef = useRef<string | null>(null);\n\n if (idRef.current === null) {\n tableIdCounter += 1;\n idRef.current = `dt-${tableIdCounter}`;\n }\n\n return idRef.current;\n}\n\n/**\n * Reset the counter between test runs for deterministic snapshots.\n * @internal Test utility only.\n */\nexport function resetTableIdCounter(): void {\n tableIdCounter = 0;\n}\n"],"names":["useRef"],"mappings":";;;;AAEA,IAAI,cAAc,GAAG,CAAC;AAEtB;;;;;;AAMG;SACa,UAAU,GAAA;AACxB,IAAA,MAAM,KAAK,GAAGA,YAAM,CAAgB,IAAI,CAAC;AAEzC,IAAA,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE;QAC1B,cAAc,IAAI,CAAC;AACnB,QAAA,KAAK,CAAC,OAAO,GAAG,CAAA,GAAA,EAAM,cAAc,EAAE;AACvC,IAAA;IAED,OAAO,KAAK,CAAC,OAAO;AACtB;;;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates a unique stable ID per component instance for scoping
|
|
3
|
+
* dynamic CSS to a specific DataTable. Compatible with React 17+.
|
|
4
|
+
*
|
|
5
|
+
* Note: Uses a module-level counter. Not SSR-safe (render order dependent).
|
|
6
|
+
* If SSR support is needed, use a context-based ID provider.
|
|
7
|
+
*/
|
|
8
|
+
export declare function useTableId(): string;
|
|
9
|
+
/**
|
|
10
|
+
* Reset the counter between test runs for deterministic snapshots.
|
|
11
|
+
* @internal Test utility only.
|
|
12
|
+
*/
|
|
13
|
+
export declare function resetTableIdCounter(): void;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { useRef } from 'react';
|
|
2
|
+
|
|
3
|
+
let tableIdCounter = 0;
|
|
4
|
+
/**
|
|
5
|
+
* Generates a unique stable ID per component instance for scoping
|
|
6
|
+
* dynamic CSS to a specific DataTable. Compatible with React 17+.
|
|
7
|
+
*
|
|
8
|
+
* Note: Uses a module-level counter. Not SSR-safe (render order dependent).
|
|
9
|
+
* If SSR support is needed, use a context-based ID provider.
|
|
10
|
+
*/
|
|
11
|
+
function useTableId() {
|
|
12
|
+
const idRef = useRef(null);
|
|
13
|
+
if (idRef.current === null) {
|
|
14
|
+
tableIdCounter += 1;
|
|
15
|
+
idRef.current = `dt-${tableIdCounter}`;
|
|
16
|
+
}
|
|
17
|
+
return idRef.current;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export { useTableId };
|
|
21
|
+
//# sourceMappingURL=useTableId.js.map
|