@neo4j-ndl/react 4.14.0 → 4.14.2
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/lib/cjs/ai/response/Response.js +2 -2
- package/lib/cjs/ai/response/Response.js.map +1 -1
- package/lib/cjs/data-grid/Components.js +3 -1
- package/lib/cjs/data-grid/Components.js.map +1 -1
- package/lib/cjs/data-grid/DataGrid.js +2 -1
- package/lib/cjs/data-grid/DataGrid.js.map +1 -1
- package/lib/cjs/data-grid/data-grid-context.js.map +1 -1
- package/lib/cjs/data-grid/index.js +14 -1
- package/lib/cjs/data-grid/index.js.map +1 -1
- package/lib/cjs/data-grid/stories/datagrid-custom-cell-with-style-rules.story.js +142 -0
- package/lib/cjs/data-grid/stories/datagrid-custom-cell-with-style-rules.story.js.map +1 -0
- package/lib/cjs/data-grid/stories/datagrid-rule-based-styling.story.js +133 -0
- package/lib/cjs/data-grid/stories/datagrid-rule-based-styling.story.js.map +1 -0
- package/lib/cjs/data-grid/stories/index.js +9 -1
- package/lib/cjs/data-grid/stories/index.js.map +1 -1
- package/lib/cjs/data-grid/style-rules/evaluate.js +283 -0
- package/lib/cjs/data-grid/style-rules/evaluate.js.map +1 -0
- package/lib/cjs/data-grid/style-rules/hooks.js +45 -0
- package/lib/cjs/data-grid/style-rules/hooks.js.map +1 -0
- package/lib/cjs/data-grid/style-rules/index.js +37 -0
- package/lib/cjs/data-grid/style-rules/index.js.map +1 -0
- package/lib/cjs/data-grid/style-rules/types.js +158 -0
- package/lib/cjs/data-grid/style-rules/types.js.map +1 -0
- package/lib/cjs/index.js +3 -8
- package/lib/cjs/index.js.map +1 -1
- package/lib/esm/ai/response/Response.js +2 -2
- package/lib/esm/ai/response/Response.js.map +1 -1
- package/lib/esm/data-grid/Components.js +3 -1
- package/lib/esm/data-grid/Components.js.map +1 -1
- package/lib/esm/data-grid/DataGrid.js +2 -1
- package/lib/esm/data-grid/DataGrid.js.map +1 -1
- package/lib/esm/data-grid/data-grid-context.js.map +1 -1
- package/lib/esm/data-grid/index.js +3 -0
- package/lib/esm/data-grid/index.js.map +1 -1
- package/lib/esm/data-grid/stories/datagrid-custom-cell-with-style-rules.story.js +140 -0
- package/lib/esm/data-grid/stories/datagrid-custom-cell-with-style-rules.story.js.map +1 -0
- package/lib/esm/data-grid/stories/datagrid-rule-based-styling.story.js +131 -0
- package/lib/esm/data-grid/stories/datagrid-rule-based-styling.story.js.map +1 -0
- package/lib/esm/data-grid/stories/index.js +6 -0
- package/lib/esm/data-grid/stories/index.js.map +1 -1
- package/lib/esm/data-grid/style-rules/evaluate.js +279 -0
- package/lib/esm/data-grid/style-rules/evaluate.js.map +1 -0
- package/lib/esm/data-grid/style-rules/hooks.js +42 -0
- package/lib/esm/data-grid/style-rules/hooks.js.map +1 -0
- package/lib/esm/data-grid/style-rules/index.js +24 -0
- package/lib/esm/data-grid/style-rules/index.js.map +1 -0
- package/lib/esm/data-grid/style-rules/types.js +155 -0
- package/lib/esm/data-grid/style-rules/types.js.map +1 -0
- package/lib/esm/index.js +1 -1
- package/lib/esm/index.js.map +1 -1
- package/lib/types/ai/response/Response.d.ts.map +1 -1
- package/lib/types/data-grid/Components.d.ts.map +1 -1
- package/lib/types/data-grid/DataGrid.d.ts +4 -1
- package/lib/types/data-grid/DataGrid.d.ts.map +1 -1
- package/lib/types/data-grid/data-grid-context.d.ts +2 -0
- package/lib/types/data-grid/data-grid-context.d.ts.map +1 -1
- package/lib/types/data-grid/index.d.ts +4 -0
- package/lib/types/data-grid/index.d.ts.map +1 -1
- package/lib/types/data-grid/stories/datagrid-custom-cell-with-style-rules.story.d.ts +24 -0
- package/lib/types/data-grid/stories/datagrid-custom-cell-with-style-rules.story.d.ts.map +1 -0
- package/lib/types/data-grid/stories/datagrid-pinned-columns.stories.d.ts +2 -2
- package/lib/types/data-grid/stories/datagrid-rule-based-styling.story.d.ts +24 -0
- package/lib/types/data-grid/stories/datagrid-rule-based-styling.story.d.ts.map +1 -0
- package/lib/types/data-grid/stories/datagrid-search-and-filters.stories.d.ts +2 -2
- package/lib/types/data-grid/stories/index.d.ts +4 -0
- package/lib/types/data-grid/stories/index.d.ts.map +1 -1
- package/lib/types/data-grid/style-rules/evaluate.d.ts +41 -0
- package/lib/types/data-grid/style-rules/evaluate.d.ts.map +1 -0
- package/lib/types/data-grid/style-rules/hooks.d.ts +27 -0
- package/lib/types/data-grid/style-rules/hooks.d.ts.map +1 -0
- package/lib/types/data-grid/style-rules/index.d.ts +25 -0
- package/lib/types/data-grid/style-rules/index.d.ts.map +1 -0
- package/lib/types/data-grid/style-rules/types.d.ts +161 -0
- package/lib/types/data-grid/style-rules/types.d.ts.map +1 -0
- package/lib/types/index.d.ts +1 -1
- package/lib/types/index.d.ts.map +1 -1
- package/package.json +3 -2
package/lib/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;;;;;;;;;;;;;;;;AAEH,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AACzB,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport { Accordion } from './accordion';\nexport { StatusLabel } from './status-label';\nexport { Banner } from './banner';\nexport { Checkbox } from './checkbox';\nexport { Switch } from './switch';\nexport { Radio } from './radio';\nexport { Menu } from './menu';\nexport { DatePicker } from './date-picker';\nexport { Dialog } from './dialog';\nexport { LoadingSpinner } from './loading-spinner';\nexport { Tabs } from './tabs';\nexport { SegmentedControl } from './segmented-control';\nexport { Popover } from './popover';\nexport { ProgressBar } from './progress-bar';\nexport { Dropzone } from './dropzone';\nexport * from './data-grid';\nexport { TextInput } from './text-input';\nexport { TextArea } from './text-area';\nexport { TextLink } from './text-link';\nexport { Select } from './select';\nexport { Tag } from './tag';\nexport * from './theme';\nexport { Wizard } from './wizard';\nexport { GraphLabel } from './graph-label';\nexport { CodeBlock } from './code-block';\nexport { StatusIndicator } from './status-indicator';\nexport { SideNavigation } from './side-navigation';\nexport { Typography } from './typography';\nexport { Drawer } from './drawer';\nexport { Breadcrumbs } from './breadcrumbs';\nexport * from './hooks';\nexport { Box } from './box';\nexport { Flex } from './flex';\nexport { Avatar } from './avatar';\nexport { Logo } from './logo';\nexport { ClipboardButton } from './clipboard-button';\nexport { Slider } from './slider';\nexport { InlineEdit } from './inline-edit';\nexport { DropdownButton } from './dropdown-button';\nexport { Divider } from './divider';\nexport * from './tree-view';\nexport { ToasterControlled, Toaster, toast, type ToastId } from './toast';\nexport { Tooltip } from './tooltip';\nexport { Skeleton } from './skeleton';\nexport { TimePicker, NeedleTime } from './time-picker';\nexport { TimeZonePicker } from './timezone-picker';\nexport {\n Spotlight,\n SpotlightProvider,\n SpotlightTarget,\n SpotlightTour,\n useSpotlightContext,\n} from './spotlight';\nexport { LoadingBar } from './loading-bar';\nexport { IconButton } from './icon-button';\nexport { CleanIconButton } from './clean-icon-button';\nexport { IconButtonArray } from './icon-button-array';\nexport { ConditionalWrap } from './conditional-wrap';\nexport { ColorPicker } from './color-picker';\nexport { OutlinedButton } from './outlined-button';\nexport { FilledButton } from './filled-button';\nexport { TextButton } from './text-button';\nexport { Code } from './code';\nexport { Kbd } from './kbd';\nexport { SelectIconButton } from './select-icon-button';\nexport { ReadOnlyTag } from './read-only-tag';\nexport { DismissibleTag } from './dismissible-tag';\nexport { SelectableTag } from './selectable-tag';\n"]}
|
|
@@ -151,7 +151,7 @@ const Response = memo((_a) => {
|
|
|
151
151
|
},
|
|
152
152
|
code: (_a) => {
|
|
153
153
|
var _b, _c, _d, _e;
|
|
154
|
-
var { node, className,
|
|
154
|
+
var { node, className, children: codeChildren } = _a, props = __rest(_a, ["node", "className", "children"]);
|
|
155
155
|
const isInline = ((_b = node === null || node === void 0 ? void 0 : node.position) === null || _b === void 0 ? void 0 : _b.start.line) === ((_c = node === null || node === void 0 ? void 0 : node.position) === null || _c === void 0 ? void 0 : _c.end.line);
|
|
156
156
|
const nodeClassNamesRaw = (_d = node === null || node === void 0 ? void 0 : node.properties) === null || _d === void 0 ? void 0 : _d.className;
|
|
157
157
|
const nodeClassNamesArray = [];
|
|
@@ -181,7 +181,7 @@ const Response = memo((_a) => {
|
|
|
181
181
|
const hasUnclosedFence = fenceCount % 2 !== 0;
|
|
182
182
|
// Show loading state when there's an unclosed fence (code block is streaming)
|
|
183
183
|
const isCodeBlockLoading = hasUnclosedFence;
|
|
184
|
-
return (_jsx(CodePreview, { code: codeChildren, isLoading: isCodeBlockLoading, language: language, className: className, htmlAttributes: Object.assign({}, props) }, key));
|
|
184
|
+
return (_jsx(CodePreview, { code: codeChildren, isLoading: isCodeBlockLoading, language: language, className: className, htmlAttributes: Object.assign({}, props) }, props.key));
|
|
185
185
|
}
|
|
186
186
|
else {
|
|
187
187
|
return _jsx("code", { className: className, children: codeChildren });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Response.js","sourceRoot":"","sources":["../../../../src/ai/response/Response.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,OAAO,EAAqB,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAS9C;;;;;GAKG;AACH,MAAM,QAAQ,GAAG,IAAI,CACnB,CAAC,EAQmC,EAAE,EAAE;QARvC,EACC,SAAS,EACT,QAAQ,EACR,WAAW,GAAG,KAAK,EACnB,GAAG,EACH,KAAK,EACL,cAAc,OAEoB,EAD/B,SAAS,cAPb,0EAQA,CADa;IAEZ,sFAAsF;IACtF,2DAA2D;IAC3D,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrC,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IAE/B,MAAM,UAAU,GACd,OAAO,CACL,GAAG,EAAE,CAAC,CAAC;QACL,0CAA0C;QAC1C,EAAE,EAAE,CAAC,EAAuC,EAAE,EAAE;gBAA3C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,OAAY,EAAP,KAAK,cAArC,iCAAuC,CAAF;YAAO,OAAA,CAC/C,2BAAI,SAAS,EAAE,SAAS,IAAM,KAAK,cAChC,QAAQ,IACN,CACN,CAAA;SAAA;QACD,0CAA0C;QAC1C,EAAE,EAAE,CAAC,EAAuC,EAAE,EAAE;gBAA3C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,OAAY,EAAP,KAAK,cAArC,iCAAuC,CAAF;YAAO,OAAA,CAC/C,2BAAI,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,IAAM,KAAK,cAC5C,QAAQ,IACN,CACN,CAAA;SAAA;QACD,0CAA0C;QAC1C,EAAE,EAAE,CAAC,EAAuC,EAAE,EAAE;gBAA3C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,OAAY,EAAP,KAAK,cAArC,iCAAuC,CAAF;YAAO,OAAA,CAC/C,2BAAI,SAAS,EAAE,SAAS,IAAM,KAAK,cAChC,QAAQ,IACN,CACN,CAAA;SAAA;QACD,0CAA0C;QAC1C,EAAE,EAAE,CAAC,EAA6B,EAAE,EAAE;gBAAjC,EAAE,IAAI,EAAE,SAAS,OAAY,EAAP,KAAK,cAA3B,qBAA6B,CAAF;YAAO,OAAA,CACrC,2BAAI,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,IAAM,KAAK,EAAI,CACpD,CAAA;SAAA;QACD,0CAA0C;QAC1C,MAAM,EAAE,CAAC,EAA8C,EAAE,EAAE;gBAAlD,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,OAAY,EAAP,KAAK,cAA5C,0CAA8C,CAAF;YAAO,OAAA,CAC1D,KAAC,UAAU,kBACT,EAAE,EAAC,QAAQ,EACX,OAAO,EAAC,aAAa,EACrB,SAAS,EAAE,SAAS,EACpB,KAAK,kCAAO,KAAK,KAAE,UAAU,EAAE,MAAM,OACjC,KAAK,cAER,QAAQ,IACE,CACd,CAAA;SAAA;QACD,0CAA0C;QAC1C,EAAE,EAAE,CAAC,EAA8C,EAAE,EAAE;gBAAlD,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,OAAY,EAAP,KAAK,cAA5C,0CAA8C,CAAF;YAAO,OAAA,CACtD,KAAC,UAAU,kBACT,EAAE,EAAC,IAAI,EACP,OAAO,EAAC,aAAa,EACrB,SAAS,EAAE,SAAS,EACpB,KAAK,kCAAO,KAAK,KAAE,SAAS,EAAE,QAAQ,OAClC,KAAK,cAER,QAAQ,IACE,CACd,CAAA;SAAA;QACD,0CAA0C;QAC1C,CAAC,EAAE,CAAC,EAA6C,EAAE,EAAE;gBAAjD,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,OAAY,EAAP,KAAK,cAA3C,yCAA6C,CAAF;YAAO,OAAA,CACpD,KAAC,QAAQ,IACP,IAAI,EAAC,oBAAoB,EACzB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,EACV,cAAc,EAAE,KAAK,YAEpB,QAAQ,GACA,CACZ,CAAA;SAAA;QACD,0CAA0C;QAC1C,EAAE,EAAE,CAAC,EAAuC,EAAE,EAAE;gBAA3C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,OAAY,EAAP,KAAK,cAArC,iCAAuC,CAAF;YAAO,OAAA,CAC/C,KAAC,UAAU,IACT,EAAE,EAAC,IAAI,EACP,OAAO,EAAC,SAAS,EACjB,SAAS,EAAE,SAAS,EACpB,cAAc,oBAAO,KAAK,aAEzB,QAAQ,GACE,CACd,CAAA;SAAA;QACD,0CAA0C;QAC1C,EAAE,EAAE,CAAC,EAAuC,EAAE,EAAE;gBAA3C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,OAAY,EAAP,KAAK,cAArC,iCAAuC,CAAF;YAAO,OAAA,CAC/C,KAAC,UAAU,IACT,EAAE,EAAC,IAAI,EACP,OAAO,EAAC,SAAS,EACjB,SAAS,EAAE,SAAS,EACpB,cAAc,oBAAO,KAAK,aAEzB,QAAQ,GACE,CACd,CAAA;SAAA;QACD,0CAA0C;QAC1C,EAAE,EAAE,CAAC,EAAuC,EAAE,EAAE;gBAA3C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,OAAY,EAAP,KAAK,cAArC,iCAAuC,CAAF;YAAO,OAAA,CAC/C,KAAC,UAAU,IACT,EAAE,EAAC,IAAI,EACP,OAAO,EAAC,SAAS,EACjB,SAAS,EAAE,SAAS,EACpB,cAAc,oBAAO,KAAK,aAEzB,QAAQ,GACE,CACd,CAAA;SAAA;QACD,0CAA0C;QAC1C,EAAE,EAAE,CAAC,EAAuC,EAAE,EAAE;gBAA3C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,OAAY,EAAP,KAAK,cAArC,iCAAuC,CAAF;YAAO,OAAA,CAC/C,KAAC,UAAU,IACT,EAAE,EAAC,IAAI,EACP,OAAO,EAAC,SAAS,EACjB,SAAS,EAAE,SAAS,EACpB,cAAc,oBAAO,KAAK,aAEzB,QAAQ,GACE,CACd,CAAA;SAAA;QACD,0CAA0C;QAC1C,EAAE,EAAE,CAAC,EAAuC,EAAE,EAAE;gBAA3C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,OAAY,EAAP,KAAK,cAArC,iCAAuC,CAAF;YAAO,OAAA,CAC/C,KAAC,UAAU,IACT,EAAE,EAAC,IAAI,EACP,OAAO,EAAC,SAAS,EACjB,SAAS,EAAE,SAAS,EACpB,cAAc,oBAAO,KAAK,aAEzB,QAAQ,GACE,CACd,CAAA;SAAA;QACD,0CAA0C;QAC1C,EAAE,EAAE,CAAC,EAAuC,EAAE,EAAE;gBAA3C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,OAAY,EAAP,KAAK,cAArC,iCAAuC,CAAF;YAAO,OAAA,CAC/C,KAAC,UAAU,IACT,EAAE,EAAC,IAAI,EACP,OAAO,EAAC,OAAO,EACf,SAAS,EAAE,SAAS,EACpB,cAAc,oBAAO,KAAK,aAEzB,QAAQ,GACE,CACd,CAAA;SAAA;QACD,0CAA0C;QAC1C,KAAK,EAAE,CAAC,EAAuC,EAAE,EAAE;gBAA3C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,OAAY,EAAP,KAAK,cAArC,iCAAuC,CAAF;YAAO,OAAA,CAClD,cAAK,SAAS,EAAC,+BAA+B,YAC5C,8BAAO,SAAS,EAAE,SAAS,IAAM,KAAK,cACnC,QAAQ,IACH,GACJ,CACP,CAAA;SAAA;QACD,0CAA0C;QAC1C,KAAK,EAAE,CAAC,EAAuC,EAAE,EAAE;gBAA3C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,OAAY,EAAP,KAAK,cAArC,iCAAuC,CAAF;YAAO,OAAA,CAClD,8BAAO,SAAS,EAAE,SAAS,IAAM,KAAK,cACnC,QAAQ,IACH,CACT,CAAA;SAAA;QACD,0CAA0C;QAC1C,KAAK,EAAE,CAAC,EAAuC,EAAE,EAAE;gBAA3C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,OAAY,EAAP,KAAK,cAArC,iCAAuC,CAAF;YAAO,OAAA,CAClD,8BAAO,SAAS,EAAE,SAAS,IAAM,KAAK,cACnC,QAAQ,IACH,CACT,CAAA;SAAA;QACD,0CAA0C;QAC1C,EAAE,EAAE,CAAC,EAAuC,EAAE,EAAE;gBAA3C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,OAAY,EAAP,KAAK,cAArC,iCAAuC,CAAF;YAAO,OAAA,CAC/C,2BAAI,SAAS,EAAE,SAAS,IAAM,KAAK,cAChC,QAAQ,IACN,CACN,CAAA;SAAA;QACD,0CAA0C;QAC1C,EAAE,EAAE,CAAC,EAAuC,EAAE,EAAE;gBAA3C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,OAAY,EAAP,KAAK,cAArC,iCAAuC,CAAF;YAAO,OAAA,CAC/C,2BAAI,SAAS,EAAE,SAAS,IAAM,KAAK,cAChC,QAAQ,IACN,CACN,CAAA;SAAA;QACD,0CAA0C;QAC1C,EAAE,EAAE,CAAC,EAAuC,EAAE,EAAE;gBAA3C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,OAAY,EAAP,KAAK,cAArC,iCAAuC,CAAF;YAAO,OAAA,CAC/C,2BAAI,SAAS,EAAE,SAAS,IAAM,KAAK,cAChC,QAAQ,IACN,CACN,CAAA;SAAA;QACD,0CAA0C;QAC1C,UAAU,EAAE,CAAC,EAAuC,EAAE,EAAE;gBAA3C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,OAAY,EAAP,KAAK,cAArC,iCAAuC,CAAF;YAAO,OAAA,CACvD,mCAAY,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,IAAM,KAAK,cACpD,QAAQ,IACE,CACd,CAAA;SAAA;QACD,IAAI,EAAE,CAAC,EAMN,EAAE,EAAE;;gBANE,EACL,IAAI,EACJ,SAAS,EACT,GAAG,EACH,QAAQ,EAAE,YAAY,OAEvB,EADI,KAAK,cALH,wCAMN,CADS;YAER,MAAM,QAAQ,GACZ,CAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,0CAAE,KAAK,CAAC,IAAI,OAAK,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,0CAAE,GAAG,CAAC,IAAI,CAAA,CAAC;YAE1D,MAAM,iBAAiB,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,0CAAE,SAAS,CAAC;YACtD,MAAM,mBAAmB,GAAa,EAAE,CAAC;YAEzC,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE,CAAC;gBAC1C,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAC5B,mBAAmB,EACnB,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAC7B,CAAC;YACJ,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAC5C,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAC5B,mBAAmB,EACnB,iBAA6B,CAC9B,CAAC;YACJ,CAAC;YAED,IAAI,QAAQ,GAA0B,MAAM,CAAC;YAC7C,MAAM,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,MAAc,EAAE,EAAE,CAC9D,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAC/B,CAAC;YACF,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,QAAQ;oBACN,MAAC,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAkB,mCACtD,MAAM,CAAC;YACX,CAAC;YACD,QAAQ,GAAI,SAA+B,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC5D,CAAC,CAAE,QAAyB;gBAC5B,CAAC,CAAC,MAAM,CAAC;YACX,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,CACL,KAAC,IAAI,IACH,UAAU,EAAE,KAAK,EACjB,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,KAAK,YAEpB,YAAY,GACR,CACR,CAAC;YACJ,CAAC;YACD,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACrC,oDAAoD;gBACpD,gFAAgF;gBAChF,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACvD,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1D,MAAM,gBAAgB,GAAG,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC;gBAE9C,8EAA8E;gBAC9E,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;gBAC5C,OAAO,CACL,KAAC,WAAW,IAEV,IAAI,EAAE,YAAY,EAClB,SAAS,EAAE,kBAAkB,EAC7B,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,cAAc,oBACT,KAAK,KANL,GAAG,CAQR,CACH,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,eAAM,SAAS,EAAE,SAAS,YAAG,YAAY,GAAQ,CAAC;YAC3D,CAAC;QACH,CAAC;QACD,0CAA0C;QAC1C,GAAG,EAAE,CAAC,EAAuC,EAAE,EAAE;gBAA3C,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,OAAY,EAAP,KAAK,cAArC,iCAAuC,CAAF;YACzC,OAAO,CACL,4BAAK,SAAS,EAAE,SAAS,IAAM,KAAK,cACjC,QAAQ,IACL,CACP,CAAC;QACJ,CAAC;QACD,0CAA0C;QAC1C,CAAC,EAAE,CAAC,EAAuC,EAAE,EAAE;gBAA3C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,OAAY,EAAP,KAAK,cAArC,iCAAuC,CAAF;YAAO,OAAA,CAC9C,KAAC,UAAU,kBACT,EAAE,EAAC,GAAG,EACN,OAAO,EAAC,aAAa,EACrB,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,IAC5B,KAAK,cAER,QAAQ,IACE,CACd,CAAA;SAAA;QACD,0CAA0C;QAC1C,GAAG,EAAE,CAAC,EAAuC,EAAE,EAAE;gBAA3C,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,OAAY,EAAP,KAAK,cAArC,mCAAuC,CAAF;YAAO,OAAA,CAChD,4BACE,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,EAChC,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,IACJ,KAAK,EACT,CACH,CAAA;SAAA;KACF,CAAC,EACF,EAAE,CACH,CAAC;IAEJ,OAAO,CACL,4BACE,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,UAAU,CAAC,iBAAiB,EAAE,SAAS,CAAC,IAC/C,SAAS,EACT,cAAc,cAElB,KAAC,UAAU,IACT,WAAW,EAAE,WAAW,EACxB,uBAAuB,EAAE,WAAW,EACpC,UAAU,EAAE,UAAU,YAErB,QAAQ,GACE,IACT,CACP,CAAC;AACJ,CAAC,EACD,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,CACpE,CAAC;AAEF,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAE,CAAC","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Code, TextLink, Typography } from '@neo4j-ndl/react';\nimport classNames from 'classnames';\nimport { memo, useMemo, useRef } from 'react';\nimport { Streamdown } from 'streamdown';\n\nimport { type CommonProps } from '../../_common/types';\nimport { type LanguageProp, Languages } from '../../code-block/code-languages';\nimport { CodePreview } from '../code-preview';\n\ntype ResponseProps = {\n /** The response from the AI */\n children: string;\n /** Whether the response is animating */\n isAnimating?: React.ComponentProps<typeof Streamdown>['isAnimating'];\n};\n\n/**\n * The component is used to display the response from an LLM.\n * It handles markdown rendering and streaming.\n *\n * @alpha - Changes to this component may be breaking.\n */\nconst Response = memo(\n ({\n className,\n children,\n isAnimating = false,\n ref,\n style,\n htmlAttributes,\n ...restProps\n }: CommonProps<'div', ResponseProps>) => {\n // Use a ref to store the current markdown content so we can check for unclosed fences\n // without recreating the components object on every render\n const childrenRef = useRef(children);\n childrenRef.current = children;\n\n const components: React.ComponentProps<typeof Streamdown>['components'] =\n useMemo(\n () => ({\n // oxlint-disable-next-line no-unused-vars\n ol: ({ node, children, className, ...props }) => (\n <ol className={className} {...props}>\n {children}\n </ol>\n ),\n // oxlint-disable-next-line no-unused-vars\n ul: ({ node, children, className, ...props }) => (\n <ul className={classNames(className)} {...props}>\n {children}\n </ul>\n ),\n // oxlint-disable-next-line no-unused-vars\n li: ({ node, children, className, ...props }) => (\n <li className={className} {...props}>\n {children}\n </li>\n ),\n // oxlint-disable-next-line no-unused-vars\n hr: ({ node, className, ...props }) => (\n <hr className={classNames(className)} {...props} />\n ),\n // oxlint-disable-next-line no-unused-vars\n strong: ({ node, children, className, style, ...props }) => (\n <Typography\n as=\"strong\"\n variant=\"body-medium\"\n className={className}\n style={{ ...style, fontWeight: 'bold' }}\n {...props}\n >\n {children}\n </Typography>\n ),\n // oxlint-disable-next-line no-unused-vars\n em: ({ node, children, className, style, ...props }) => (\n <Typography\n as=\"em\"\n variant=\"body-medium\"\n className={className}\n style={{ ...style, fontStyle: 'italic' }}\n {...props}\n >\n {children}\n </Typography>\n ),\n // oxlint-disable-next-line no-unused-vars\n a: ({ node, children, className, href, ...props }) => (\n <TextLink\n type=\"internal-underline\"\n className={className}\n href={href}\n htmlAttributes={props}\n >\n {children}\n </TextLink>\n ),\n // oxlint-disable-next-line no-unused-vars\n h1: ({ node, children, className, ...props }) => (\n <Typography\n as=\"h1\"\n variant=\"display\"\n className={className}\n htmlAttributes={{ ...props }}\n >\n {children}\n </Typography>\n ),\n // oxlint-disable-next-line no-unused-vars\n h2: ({ node, children, className, ...props }) => (\n <Typography\n as=\"h2\"\n variant=\"title-1\"\n className={className}\n htmlAttributes={{ ...props }}\n >\n {children}\n </Typography>\n ),\n // oxlint-disable-next-line no-unused-vars\n h3: ({ node, children, className, ...props }) => (\n <Typography\n as=\"h3\"\n variant=\"title-2\"\n className={className}\n htmlAttributes={{ ...props }}\n >\n {children}\n </Typography>\n ),\n // oxlint-disable-next-line no-unused-vars\n h4: ({ node, children, className, ...props }) => (\n <Typography\n as=\"h4\"\n variant=\"title-3\"\n className={className}\n htmlAttributes={{ ...props }}\n >\n {children}\n </Typography>\n ),\n // oxlint-disable-next-line no-unused-vars\n h5: ({ node, children, className, ...props }) => (\n <Typography\n as=\"h5\"\n variant=\"title-4\"\n className={className}\n htmlAttributes={{ ...props }}\n >\n {children}\n </Typography>\n ),\n // oxlint-disable-next-line no-unused-vars\n h6: ({ node, children, className, ...props }) => (\n <Typography\n as=\"h6\"\n variant=\"label\"\n className={className}\n htmlAttributes={{ ...props }}\n >\n {children}\n </Typography>\n ),\n // oxlint-disable-next-line no-unused-vars\n table: ({ node, children, className, ...props }) => (\n <div className=\"ndl-ai-response-table-wrapper\">\n <table className={className} {...props}>\n {children}\n </table>\n </div>\n ),\n // oxlint-disable-next-line no-unused-vars\n thead: ({ node, children, className, ...props }) => (\n <thead className={className} {...props}>\n {children}\n </thead>\n ),\n // oxlint-disable-next-line no-unused-vars\n tbody: ({ node, children, className, ...props }) => (\n <tbody className={className} {...props}>\n {children}\n </tbody>\n ),\n // oxlint-disable-next-line no-unused-vars\n tr: ({ node, children, className, ...props }) => (\n <tr className={className} {...props}>\n {children}\n </tr>\n ),\n // oxlint-disable-next-line no-unused-vars\n th: ({ node, children, className, ...props }) => (\n <th className={className} {...props}>\n {children}\n </th>\n ),\n // oxlint-disable-next-line no-unused-vars\n td: ({ node, children, className, ...props }) => (\n <td className={className} {...props}>\n {children}\n </td>\n ),\n // oxlint-disable-next-line no-unused-vars\n blockquote: ({ node, children, className, ...props }) => (\n <blockquote className={classNames(className)} {...props}>\n {children}\n </blockquote>\n ),\n code: ({\n node,\n className,\n key,\n children: codeChildren,\n ...props\n }) => {\n const isInline =\n node?.position?.start.line === node?.position?.end.line;\n\n const nodeClassNamesRaw = node?.properties?.className;\n const nodeClassNamesArray: string[] = [];\n\n if (typeof nodeClassNamesRaw === 'string') {\n nodeClassNamesArray.push.apply(\n nodeClassNamesArray,\n nodeClassNamesRaw.split(' '),\n );\n } else if (Array.isArray(nodeClassNamesRaw)) {\n nodeClassNamesArray.push.apply(\n nodeClassNamesArray,\n nodeClassNamesRaw as string[],\n );\n }\n\n let language: LanguageProp | 'text' = 'text';\n const rawLanguage = nodeClassNamesArray.find((string: string) =>\n string.startsWith('language-'),\n );\n if (rawLanguage !== undefined) {\n language =\n (rawLanguage.replace('language-', '') as LanguageProp) ??\n 'text';\n }\n language = (Languages as readonly string[]).includes(language)\n ? (language as LanguageProp)\n : 'text';\n if (isInline) {\n return (\n <Code\n isRunnable={false}\n className={className}\n htmlAttributes={props}\n >\n {codeChildren}\n </Code>\n );\n }\n if (typeof codeChildren === 'string') {\n // Check if code fences are balanced in the markdown\n // If there are an odd number of fences, it means there's an unclosed code block\n const fenceMatches = childrenRef.current.match(/```/g);\n const fenceCount = fenceMatches ? fenceMatches.length : 0;\n const hasUnclosedFence = fenceCount % 2 !== 0;\n\n // Show loading state when there's an unclosed fence (code block is streaming)\n const isCodeBlockLoading = hasUnclosedFence;\n return (\n <CodePreview\n key={key}\n code={codeChildren}\n isLoading={isCodeBlockLoading}\n language={language}\n className={className}\n htmlAttributes={{\n ...props,\n }}\n />\n );\n } else {\n return <code className={className}>{codeChildren}</code>;\n }\n },\n // oxlint-disable-next-line no-unused-vars\n pre: ({ node, className, children, ...props }) => {\n return (\n <pre className={className} {...props}>\n {children}\n </pre>\n );\n },\n // oxlint-disable-next-line no-unused-vars\n p: ({ node, children, className, ...props }) => (\n <Typography\n as=\"p\"\n variant=\"body-medium\"\n className={classNames(className)}\n {...props}\n >\n {children}\n </Typography>\n ),\n // oxlint-disable-next-line no-unused-vars\n img: ({ node, className, src, alt, ...props }) => (\n <img\n className={classNames(className)}\n src={src}\n alt={alt}\n {...props}\n />\n ),\n }),\n [],\n );\n\n return (\n <div\n ref={ref}\n style={style}\n className={classNames('ndl-ai-response', className)}\n {...restProps}\n {...htmlAttributes}\n >\n <Streamdown\n isAnimating={isAnimating}\n parseIncompleteMarkdown={isAnimating}\n components={components}\n >\n {children}\n </Streamdown>\n </div>\n );\n },\n (prevProps, nextProps) => prevProps.children === nextProps.children,\n);\n\nResponse.displayName = 'Response';\n\nexport { Response };\n"]}
|
|
1
|
+
{"version":3,"file":"Response.js","sourceRoot":"","sources":["../../../../src/ai/response/Response.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Code, TextLink, Typography } from '@neo4j-ndl/react';\nimport classNames from 'classnames';\nimport { memo, useMemo, useRef } from 'react';\nimport { Streamdown } from 'streamdown';\n\nimport { type CommonProps } from '../../_common/types';\nimport { type LanguageProp, Languages } from '../../code-block/code-languages';\nimport { CodePreview } from '../code-preview';\n\ntype ResponseProps = {\n /** The response from the AI */\n children: string;\n /** Whether the response is animating */\n isAnimating?: React.ComponentProps<typeof Streamdown>['isAnimating'];\n};\n\n/**\n * The component is used to display the response from an LLM.\n * It handles markdown rendering and streaming.\n *\n * @alpha - Changes to this component may be breaking.\n */\nconst Response = memo(\n ({\n className,\n children,\n isAnimating = false,\n ref,\n style,\n htmlAttributes,\n ...restProps\n }: CommonProps<'div', ResponseProps>) => {\n // Use a ref to store the current markdown content so we can check for unclosed fences\n // without recreating the components object on every render\n const childrenRef = useRef(children);\n childrenRef.current = children;\n\n const components: React.ComponentProps<typeof Streamdown>['components'] =\n useMemo(\n () => ({\n // oxlint-disable-next-line no-unused-vars\n ol: ({ node, children, className, ...props }) => (\n <ol className={className} {...props}>\n {children}\n </ol>\n ),\n // oxlint-disable-next-line no-unused-vars\n ul: ({ node, children, className, ...props }) => (\n <ul className={classNames(className)} {...props}>\n {children}\n </ul>\n ),\n // oxlint-disable-next-line no-unused-vars\n li: ({ node, children, className, ...props }) => (\n <li className={className} {...props}>\n {children}\n </li>\n ),\n // oxlint-disable-next-line no-unused-vars\n hr: ({ node, className, ...props }) => (\n <hr className={classNames(className)} {...props} />\n ),\n // oxlint-disable-next-line no-unused-vars\n strong: ({ node, children, className, style, ...props }) => (\n <Typography\n as=\"strong\"\n variant=\"body-medium\"\n className={className}\n style={{ ...style, fontWeight: 'bold' }}\n {...props}\n >\n {children}\n </Typography>\n ),\n // oxlint-disable-next-line no-unused-vars\n em: ({ node, children, className, style, ...props }) => (\n <Typography\n as=\"em\"\n variant=\"body-medium\"\n className={className}\n style={{ ...style, fontStyle: 'italic' }}\n {...props}\n >\n {children}\n </Typography>\n ),\n // oxlint-disable-next-line no-unused-vars\n a: ({ node, children, className, href, ...props }) => (\n <TextLink\n type=\"internal-underline\"\n className={className}\n href={href}\n htmlAttributes={props}\n >\n {children}\n </TextLink>\n ),\n // oxlint-disable-next-line no-unused-vars\n h1: ({ node, children, className, ...props }) => (\n <Typography\n as=\"h1\"\n variant=\"display\"\n className={className}\n htmlAttributes={{ ...props }}\n >\n {children}\n </Typography>\n ),\n // oxlint-disable-next-line no-unused-vars\n h2: ({ node, children, className, ...props }) => (\n <Typography\n as=\"h2\"\n variant=\"title-1\"\n className={className}\n htmlAttributes={{ ...props }}\n >\n {children}\n </Typography>\n ),\n // oxlint-disable-next-line no-unused-vars\n h3: ({ node, children, className, ...props }) => (\n <Typography\n as=\"h3\"\n variant=\"title-2\"\n className={className}\n htmlAttributes={{ ...props }}\n >\n {children}\n </Typography>\n ),\n // oxlint-disable-next-line no-unused-vars\n h4: ({ node, children, className, ...props }) => (\n <Typography\n as=\"h4\"\n variant=\"title-3\"\n className={className}\n htmlAttributes={{ ...props }}\n >\n {children}\n </Typography>\n ),\n // oxlint-disable-next-line no-unused-vars\n h5: ({ node, children, className, ...props }) => (\n <Typography\n as=\"h5\"\n variant=\"title-4\"\n className={className}\n htmlAttributes={{ ...props }}\n >\n {children}\n </Typography>\n ),\n // oxlint-disable-next-line no-unused-vars\n h6: ({ node, children, className, ...props }) => (\n <Typography\n as=\"h6\"\n variant=\"label\"\n className={className}\n htmlAttributes={{ ...props }}\n >\n {children}\n </Typography>\n ),\n // oxlint-disable-next-line no-unused-vars\n table: ({ node, children, className, ...props }) => (\n <div className=\"ndl-ai-response-table-wrapper\">\n <table className={className} {...props}>\n {children}\n </table>\n </div>\n ),\n // oxlint-disable-next-line no-unused-vars\n thead: ({ node, children, className, ...props }) => (\n <thead className={className} {...props}>\n {children}\n </thead>\n ),\n // oxlint-disable-next-line no-unused-vars\n tbody: ({ node, children, className, ...props }) => (\n <tbody className={className} {...props}>\n {children}\n </tbody>\n ),\n // oxlint-disable-next-line no-unused-vars\n tr: ({ node, children, className, ...props }) => (\n <tr className={className} {...props}>\n {children}\n </tr>\n ),\n // oxlint-disable-next-line no-unused-vars\n th: ({ node, children, className, ...props }) => (\n <th className={className} {...props}>\n {children}\n </th>\n ),\n // oxlint-disable-next-line no-unused-vars\n td: ({ node, children, className, ...props }) => (\n <td className={className} {...props}>\n {children}\n </td>\n ),\n // oxlint-disable-next-line no-unused-vars\n blockquote: ({ node, children, className, ...props }) => (\n <blockquote className={classNames(className)} {...props}>\n {children}\n </blockquote>\n ),\n code: ({ node, className, children: codeChildren, ...props }) => {\n const isInline =\n node?.position?.start.line === node?.position?.end.line;\n\n const nodeClassNamesRaw = node?.properties?.className;\n const nodeClassNamesArray: string[] = [];\n\n if (typeof nodeClassNamesRaw === 'string') {\n nodeClassNamesArray.push.apply(\n nodeClassNamesArray,\n nodeClassNamesRaw.split(' '),\n );\n } else if (Array.isArray(nodeClassNamesRaw)) {\n nodeClassNamesArray.push.apply(\n nodeClassNamesArray,\n nodeClassNamesRaw as string[],\n );\n }\n\n let language: LanguageProp | 'text' = 'text';\n const rawLanguage = nodeClassNamesArray.find((string: string) =>\n string.startsWith('language-'),\n );\n if (rawLanguage !== undefined) {\n language =\n (rawLanguage.replace('language-', '') as LanguageProp) ??\n 'text';\n }\n language = (Languages as readonly string[]).includes(language)\n ? (language as LanguageProp)\n : 'text';\n if (isInline) {\n return (\n <Code\n isRunnable={false}\n className={className}\n htmlAttributes={props}\n >\n {codeChildren}\n </Code>\n );\n }\n if (typeof codeChildren === 'string') {\n // Check if code fences are balanced in the markdown\n // If there are an odd number of fences, it means there's an unclosed code block\n const fenceMatches = childrenRef.current.match(/```/g);\n const fenceCount = fenceMatches ? fenceMatches.length : 0;\n const hasUnclosedFence = fenceCount % 2 !== 0;\n\n // Show loading state when there's an unclosed fence (code block is streaming)\n const isCodeBlockLoading = hasUnclosedFence;\n return (\n <CodePreview\n key={props.key}\n code={codeChildren}\n isLoading={isCodeBlockLoading}\n language={language}\n className={className}\n htmlAttributes={{\n ...props,\n }}\n />\n );\n } else {\n return <code className={className}>{codeChildren}</code>;\n }\n },\n // oxlint-disable-next-line no-unused-vars\n pre: ({ node, className, children, ...props }) => {\n return (\n <pre className={className} {...props}>\n {children}\n </pre>\n );\n },\n // oxlint-disable-next-line no-unused-vars\n p: ({ node, children, className, ...props }) => (\n <Typography\n as=\"p\"\n variant=\"body-medium\"\n className={classNames(className)}\n {...props}\n >\n {children}\n </Typography>\n ),\n // oxlint-disable-next-line no-unused-vars\n img: ({ node, className, src, alt, ...props }) => (\n <img\n className={classNames(className)}\n src={src}\n alt={alt}\n {...props}\n />\n ),\n }),\n [],\n );\n\n return (\n <div\n ref={ref}\n style={style}\n className={classNames('ndl-ai-response', className)}\n {...restProps}\n {...htmlAttributes}\n >\n <Streamdown\n isAnimating={isAnimating}\n parseIncompleteMarkdown={isAnimating}\n components={components}\n >\n {children}\n </Streamdown>\n </div>\n );\n },\n (prevProps, nextProps) => prevProps.children === nextProps.children,\n);\n\nResponse.displayName = 'Response';\n\nexport { Response };\n"]}
|
|
@@ -43,6 +43,7 @@ import { Skeleton } from '../skeleton';
|
|
|
43
43
|
import { Typography } from '../typography';
|
|
44
44
|
import { useDataGridContext } from './data-grid-context';
|
|
45
45
|
import { resizeColumn, ResizeDirection, userFriendlyPagination, } from './helpers';
|
|
46
|
+
import { useDataGridCellStyle } from './style-rules/hooks';
|
|
46
47
|
/** Table results per page, with the first option being the default */
|
|
47
48
|
const TABLE_RESULTS = {
|
|
48
49
|
DEFAULT: 10,
|
|
@@ -280,6 +281,7 @@ const BodyCell = (_a) => {
|
|
|
280
281
|
const isDropDownCell = Boolean((_d = cell.column.columnDef.meta) === null || _d === void 0 ? void 0 : _d.isDropDownCell);
|
|
281
282
|
const isCustomCell = isActionColumn || isDropDownCell;
|
|
282
283
|
const { isKeyboardNavigationEnabled, isSkeletonLoading, skeletonProps } = useDataGridContext();
|
|
284
|
+
const ruleStyle = useDataGridCellStyle(cell);
|
|
283
285
|
return (_jsx("div", Object.assign({ ref: ref, className: classNames('ndl-data-grid-td', className, {
|
|
284
286
|
'ndl-data-grid-custom-cell': isCustomCell,
|
|
285
287
|
'ndl-data-grid-dropdown-cell': isDropDownCell,
|
|
@@ -290,7 +292,7 @@ const BodyCell = (_a) => {
|
|
|
290
292
|
'ndl-data-grid-pinned-cell-right': cell.column.getIsPinned() === 'right',
|
|
291
293
|
'ndl-data-grid-row-action': isActionColumn,
|
|
292
294
|
'ndl-focusable-cell': isKeyboardNavigationEnabled,
|
|
293
|
-
}), role: "cell", tabIndex: isKeyboardNavigationEnabled ? 0 : undefined, style: Object.assign(Object.assign({}, style), { width: isActionColumn ? 40 : cell.column.getSize() }) }, restProps, htmlAttributes, { children: _jsx(Skeleton, Object.assign({ onBackground: "weak", shape: "rectangular", width: "100%" }, skeletonProps, { isLoading: isSkeletonLoading && !isActionColumn, children: children || flexRender(cell.column.columnDef.cell, cell.getContext()) })) }), cell.id));
|
|
295
|
+
}), role: "cell", tabIndex: isKeyboardNavigationEnabled ? 0 : undefined, style: Object.assign(Object.assign(Object.assign({}, ruleStyle), style), { width: isActionColumn ? 40 : cell.column.getSize() }) }, restProps, htmlAttributes, { children: _jsx(Skeleton, Object.assign({ onBackground: "weak", shape: "rectangular", width: "100%" }, skeletonProps, { isLoading: isSkeletonLoading && !isActionColumn, children: children || flexRender(cell.column.columnDef.cell, cell.getContext()) })) }), cell.id));
|
|
294
296
|
};
|
|
295
297
|
const BodyRow = (_a) => {
|
|
296
298
|
var { row, children, className, style, htmlAttributes, ref } = _a, restProps = __rest(_a, ["row", "children", "className", "style", "htmlAttributes", "ref"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Components.js","sourceRoot":"","sources":["../../../src/data-grid/Components.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport { useMergeRefs } from '@floating-ui/react';\nimport {\n type Cell,\n type CellContext,\n flexRender,\n type Header as HeaderType,\n type Row,\n type RowData,\n type SortDirection,\n} from '@tanstack/react-table';\nimport classNames from 'classnames';\nimport type React from 'react';\nimport {\n Fragment,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport {\n type CommonProps,\n type PolymorphicCommonProps,\n} from '../_common/types';\nimport { CleanIconButton } from '../clean-icon-button';\nimport {\n Bars3CenterLeftIconOutline,\n BarsArrowDownIconOutline,\n BarsArrowUpIconOutline,\n ChevronDownIconSolid,\n ChevronLeftIconOutline,\n ChevronRightIconOutline,\n DataGridCrossIcon,\n EllipsisHorizontalIconOutline,\n} from '../icons';\nimport { LoadingSpinner } from '../loading-spinner';\nimport { Menu } from '../menu';\nimport { Select } from '../select';\nimport { Skeleton } from '../skeleton';\nimport { Typography } from '../typography';\nimport { useDataGridContext } from './data-grid-context';\nimport { type ColumnAction } from './datagrid-types';\nimport {\n resizeColumn,\n ResizeDirection,\n userFriendlyPagination,\n} from './helpers';\n\n/** Table results per page, with the first option being the default */\nconst TABLE_RESULTS = {\n DEFAULT: 10,\n values: [10, 25, 50, 100],\n} as const;\n\ntype paginationOption = {\n value: number;\n label: string;\n};\n\nconst getPaginationOptions = (pageSize: number): paginationOption[] => {\n return [...new Set([...TABLE_RESULTS.values, pageSize])]\n .sort((a, b) => a - b)\n .map((option) => ({\n label: `${option}`,\n value: option,\n }));\n};\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport const DEFAULT_SORT_ACTIONS: (cell: HeaderType<any, unknown>) => {\n [key in SortDirection | 'default']: ColumnAction;\n} = (cell) => ({\n asc: {\n icon: <BarsArrowUpIconOutline />,\n onClick: () => cell.column.toggleSorting(false),\n title: 'Sort ascending',\n },\n default: {\n icon: <Bars3CenterLeftIconOutline />,\n onClick: () => cell.column.clearSorting(),\n title: 'Default sort',\n },\n desc: {\n icon: <BarsArrowDownIconOutline />,\n onClick: () => cell.column.toggleSorting(true),\n title: 'Sort descending',\n },\n});\n\ntype ResizingBarProps<T extends RowData> = {\n header: HeaderType<T, unknown>;\n};\n\nconst ResizingBar = <T extends RowData>({\n header,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'button', ResizingBarProps<T>>) => {\n const { isKeyboardNavigationEnabled } = useDataGridContext<T>();\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (event.key === 'ArrowLeft') {\n event.stopPropagation();\n event.preventDefault();\n resizeColumn(ResizeDirection.LEFT, header);\n } else if (event.key === 'ArrowRight') {\n event.stopPropagation();\n event.preventDefault();\n resizeColumn(ResizeDirection.RIGHT, header);\n }\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={classNames('ndl-data-grid-resizer', className, {\n 'ndl-data-grid-is-resizing': header.column.getIsResizing(),\n })}\n style={style}\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n onKeyDown={handleKeyDown}\n aria-label=\"Resizing bar\"\n tabIndex={isKeyboardNavigationEnabled ? -1 : 0}\n {...restProps}\n {...htmlAttributes}\n />\n );\n};\n\ntype ScrollableProps = {\n children?: React.ReactNode;\n};\n\nconst Scrollable = ({\n children,\n ref,\n className,\n style,\n htmlAttributes,\n ...restProps\n}: CommonProps<'div', ScrollableProps> & {\n ref: React.RefObject<HTMLDivElement | null>;\n}) => {\n return (\n <div\n ref={ref}\n style={style}\n className={classNames('ndl-data-grid-scrollable', className)}\n {...restProps}\n {...htmlAttributes}\n >\n {children}\n </div>\n );\n};\n\ntype HeaderProps = {\n children?: React.ReactNode;\n};\n\nconst Header = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', HeaderProps>) => {\n const { tableProps, components } = useDataGridContext();\n const { getHeaderGroups, getState } = tableProps;\n\n return (\n <div\n role=\"rowgroup\"\n className={classNames('ndl-data-grid-thead', className, {\n 'ndl-data-grid-is-resizing':\n getState().columnSizingInfo.isResizingColumn,\n })}\n style={style}\n ref={ref}\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <>\n {getHeaderGroups().map((headerGroup) => (\n <div key={headerGroup.id} className=\"ndl-data-grid-tr\" role=\"row\">\n {headerGroup.headers.map(\n (header) =>\n components.HeaderCell && (\n <components.HeaderCell key={header.id} cell={header} />\n ),\n )}\n </div>\n ))}\n </>\n )}\n </div>\n );\n};\n\ntype ActionButtonProps = {\n action: ColumnAction;\n onClose: () => void;\n};\n\nexport const ActionButton = <T extends React.ElementType = 'button'>({\n action,\n onClose,\n as,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: PolymorphicCommonProps<T, ActionButtonProps>) => {\n const { onClick, ...restAction } = action;\n\n const interceptedOnClick = useCallback(\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n (e: any) => {\n const providedOnClick = onClick ?? action.onClick;\n if (typeof providedOnClick === 'function') {\n providedOnClick(e);\n }\n onClose?.();\n },\n [action.onClick, onClick, onClose],\n );\n\n return (\n <Menu.Item\n onClick={interceptedOnClick}\n as={as}\n className={className}\n style={style}\n htmlAttributes={htmlAttributes}\n ref={ref}\n {...restAction}\n {...restProps}\n />\n );\n};\n\nexport interface ActionCellProps<T extends RowData> {\n cell?: CellContext<T, unknown>;\n innerCleanIconButtonProps?: Partial<\n React.ComponentPropsWithoutRef<typeof CleanIconButton>\n >;\n innerMenuProps?: Partial<React.ComponentProps<typeof Menu>>;\n}\n\nconst ActionCell = <T extends RowData>({\n cell,\n innerCleanIconButtonProps,\n innerMenuProps,\n}: ActionCellProps<T>) => {\n const { components, isSkeletonLoading, portalTarget } =\n useDataGridContext<T>();\n const actionsButtonRef = useRef<HTMLButtonElement>(null);\n const [isActionsOpen, setIsActionsOpen] = useState(false);\n\n if (\n !cell ||\n !cell.column.columnDef.meta ||\n typeof cell.column.columnDef?.meta?.isActionCell !== 'object'\n ) {\n return null;\n }\n\n const { actions, onOpenChange } = cell.column.columnDef.meta.isActionCell;\n\n if (isSkeletonLoading) {\n return null;\n }\n\n return (\n <>\n <CleanIconButton\n as=\"button\"\n size=\"medium\"\n description=\"Actions\"\n ref={actionsButtonRef}\n isActive={isActionsOpen}\n onClick={() => {\n onOpenChange?.(!isActionsOpen);\n setIsActionsOpen(!isActionsOpen);\n }}\n {...innerCleanIconButtonProps}\n htmlAttributes={{\n tabIndex: 0,\n ...innerCleanIconButtonProps?.htmlAttributes,\n }}\n >\n {innerCleanIconButtonProps?.children || (\n <EllipsisHorizontalIconOutline />\n )}\n </CleanIconButton>\n <Menu\n isOpen={isActionsOpen}\n anchorRef={actionsButtonRef}\n onClose={() => {\n onOpenChange?.(false);\n setIsActionsOpen(false);\n }}\n {...innerMenuProps}\n portalTarget={portalTarget}\n >\n {innerMenuProps?.children || (\n <>\n {actions.map(\n (action, i) =>\n components.ActionButton && (\n <components.ActionButton\n key={`${cell.column.id}-action-${i}`}\n action={{\n ...action,\n onClick: (e) => {\n action.onClick?.(e, cell);\n },\n }}\n onClose={() => setIsActionsOpen(false)}\n />\n ),\n )}\n </>\n )}\n </Menu>\n </>\n );\n};\n\ntype ColumnControlsProps<T extends RowData> = {\n cell: HeaderType<T, unknown>;\n children?: React.ReactNode;\n};\n\nexport const ColumnControls = <T extends RowData>({\n cell,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', ColumnControlsProps<T>>) => {\n const { components, portalTarget } = useDataGridContext();\n\n const sort = cell.column.getIsSorted();\n const canSort = cell.column.getCanSort();\n const { hasDefaultSortingActions = true, actions } =\n cell.column.columnDef.meta?.columnActions || {};\n\n const sortingActions = useMemo(() => {\n if (canSort) {\n if (sort !== 'asc' && sort !== 'desc') {\n return [\n DEFAULT_SORT_ACTIONS(cell).asc,\n DEFAULT_SORT_ACTIONS(cell).desc,\n ];\n }\n if (sort === 'asc') {\n return [\n DEFAULT_SORT_ACTIONS(cell).default,\n DEFAULT_SORT_ACTIONS(cell).desc,\n ];\n }\n if (sort === 'desc') {\n return [\n DEFAULT_SORT_ACTIONS(cell).default,\n DEFAULT_SORT_ACTIONS(cell).asc,\n ];\n }\n }\n // Default case\n return [];\n }, [sort, cell, canSort]);\n\n const newActions: ColumnAction[] = [\n ...(hasDefaultSortingActions ? sortingActions : []),\n ...(actions ?? []),\n ];\n\n const actionsButtonRef = useRef<HTMLButtonElement>(null);\n const [isActionsOpen, setIsActionsOpen] = useState(false);\n\n if (!actions || actions.length === 0) {\n return null;\n }\n\n return newActions.length > 0 ? (\n <div\n ref={ref}\n className={classNames('ndl-header-action-group', className)}\n style={style}\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <Fragment>\n <CleanIconButton\n size=\"small\"\n description=\"Actions\"\n ref={actionsButtonRef}\n isActive={isActionsOpen}\n onClick={() => {\n setIsActionsOpen(!isActionsOpen);\n }}\n htmlAttributes={{\n tabIndex: 0,\n }}\n >\n <ChevronDownIconSolid />\n </CleanIconButton>\n <Menu\n isOpen={isActionsOpen}\n anchorRef={actionsButtonRef}\n onClose={() => setIsActionsOpen(false)}\n portalTarget={portalTarget}\n >\n {newActions.map(\n (action, i) =>\n components.ActionButton && (\n <components.ActionButton\n key={`${cell.column.id}-action-${i}`}\n action={action}\n onClose={() => setIsActionsOpen(false)}\n />\n ),\n )}\n </Menu>\n </Fragment>\n )}\n </div>\n ) : null;\n};\n\ntype HeaderCellProps<T> = {\n cell: HeaderType<T, unknown>;\n children?: React.ReactNode;\n};\n\nconst HeaderCell = <T extends RowData>({\n cell,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', HeaderCellProps<T>>) => {\n const { components, isResizable, isKeyboardNavigationEnabled } =\n useDataGridContext<T>();\n\n const sort = cell.column.getIsSorted();\n const canSort = cell.column.getCanSort();\n\n const ariaSortRole = useMemo(() => {\n switch (sort) {\n case 'asc':\n return 'ascending';\n case 'desc':\n return 'descending';\n default:\n return 'none';\n }\n }, [sort]);\n\n const Icon = useMemo(() => {\n switch (sort) {\n case 'asc':\n return <BarsArrowUpIconOutline className=\"ndl-header-icon\" />;\n case 'desc':\n return <BarsArrowDownIconOutline className=\"ndl-header-icon\" />;\n default:\n return (\n <Bars3CenterLeftIconOutline className=\"ndl-hoverable-indicator ndl-header-icon\" />\n );\n }\n }, [sort]);\n\n const ariaDescription = useMemo(() => {\n return canSort\n ? `Press ENTER or SPACE to sort column ${cell.column.id}`\n : `Column id: ${cell.column.id}`;\n }, [canSort, cell.column.id]);\n\n const isActionColumn = useMemo(\n () => typeof cell.column.columnDef.meta?.isActionCell === 'object',\n [cell.column.columnDef.meta],\n );\n\n const Tag = canSort ? 'button' : 'div';\n\n const InnerHeaderCell = () => (\n <div className=\"ndl-header-cell\">\n {cell.isPlaceholder\n ? null\n : flexRender(cell.column.columnDef.header, cell.getContext())}\n {canSort && Icon}\n </div>\n );\n\n return (\n <div\n ref={ref}\n tabIndex={isKeyboardNavigationEnabled && !isActionColumn ? 0 : undefined}\n key={cell.id}\n role=\"columnheader\"\n className={classNames('ndl-data-grid-th', className, {\n 'ndl-data-grid-is-resizing': cell.column.getIsResizing(),\n 'ndl-data-grid-pinned-cell': cell.column.getIsPinned(),\n 'ndl-data-grid-pinned-cell-left': cell.column.getIsPinned() === 'left',\n 'ndl-data-grid-pinned-cell-right':\n cell.column.getIsPinned() === 'right',\n 'ndl-data-grid-row-action': isActionColumn,\n 'ndl-focusable-cell': isKeyboardNavigationEnabled,\n })}\n aria-sort={ariaSortRole}\n style={{\n ...style,\n maxWidth: cell.column.columnDef.maxSize\n ? `${cell.column.columnDef.maxSize}px`\n : 'none',\n width: isActionColumn ? 40 : cell.getSize(),\n }}\n {...(isKeyboardNavigationEnabled\n ? {\n onKeyDown: (e) => {\n if (\n isResizable &&\n e.altKey &&\n (e.key === 'ArrowLeft' || e.key === 'ArrowRight')\n ) {\n const direction =\n e.key === 'ArrowLeft'\n ? ResizeDirection.LEFT\n : ResizeDirection.RIGHT;\n resizeColumn(direction, cell);\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n },\n }\n : {})}\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <>\n <Tag\n className=\"ndl-header-group\"\n style={{\n cursor: canSort ? 'pointer' : 'default',\n }}\n aria-description={ariaDescription}\n onClick={() => canSort && cell.column.toggleSorting()}\n tabIndex={canSort ? 0 : undefined}\n >\n {components.HeaderTitle ? (\n <components.HeaderTitle cell={cell}>\n <InnerHeaderCell />\n </components.HeaderTitle>\n ) : (\n <InnerHeaderCell />\n )}\n </Tag>\n {/* Column actions*/}\n {components.ColumnControls && (\n <components.ColumnControls cell={cell} />\n )}\n {/* Resizer*/}\n {isResizable &&\n cell.column.getCanResize() &&\n components.ResizingBar && <components.ResizingBar header={cell} />}\n </>\n )}\n </div>\n );\n};\n\ntype HeaderTitleProps<T> = {\n cell: HeaderType<T, unknown>;\n children?: React.ReactNode;\n};\n\nconst HeaderTitle = <T extends RowData>({\n cell,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', HeaderTitleProps<T>>) => {\n const { column, id } = cell;\n const title =\n typeof column.columnDef.header === 'string' ? column.columnDef.header : id;\n return (\n <div\n ref={ref}\n className={className}\n title={title}\n style={style}\n {...restProps}\n {...htmlAttributes}\n >\n {children}\n </div>\n );\n};\n\ntype BodyProps = {\n children?: React.ReactNode;\n};\n\nconst Body = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', BodyProps>) => {\n const { tableProps, components, isLoading } = useDataGridContext();\n const { getRowModel } = tableProps;\n\n return (\n <div\n ref={ref}\n style={style}\n className={classNames('ndl-data-grid-tbody', className)}\n role=\"rowgroup\"\n aria-busy={isLoading ? 'true' : 'false'}\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <>\n {isLoading && components.LoadingPlaceholder && (\n <components.LoadingPlaceholder />\n )}\n\n {!isLoading &&\n getRowModel().rows.length === 0 &&\n components.NoDataPlaceholder && <components.NoDataPlaceholder />}\n\n {!isLoading &&\n getRowModel().rows.map(\n (row, idx) =>\n components.BodyRow && (\n <components.BodyRow key={`table-row-${idx}`} row={row} />\n ),\n )}\n </>\n )}\n </div>\n );\n};\n\ntype BodyCellProps<T extends RowData> = {\n cell: Cell<T, unknown>;\n children?: React.ReactNode;\n};\n\nconst BodyCell = <T extends RowData>({\n cell,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', BodyCellProps<T>>) => {\n const isResizing = cell.column.getIsResizing();\n\n const isActionColumn = Boolean(cell.column.columnDef.meta?.isActionCell);\n const isInlineEditCell = Boolean(\n cell.column.columnDef.meta?.isInlineEditCell,\n );\n const isDropDownCell = Boolean(cell.column.columnDef.meta?.isDropDownCell);\n const isCustomCell = isActionColumn || isDropDownCell;\n const { isKeyboardNavigationEnabled, isSkeletonLoading, skeletonProps } =\n useDataGridContext();\n return (\n <div\n ref={ref}\n key={cell.id}\n className={classNames('ndl-data-grid-td', className, {\n 'ndl-data-grid-custom-cell': isCustomCell,\n 'ndl-data-grid-dropdown-cell': isDropDownCell,\n 'ndl-data-grid-inline-edit': isInlineEditCell,\n 'ndl-data-grid-is-resizing': isResizing,\n 'ndl-data-grid-pinned-cell': cell.column.getIsPinned(),\n 'ndl-data-grid-pinned-cell-left': cell.column.getIsPinned() === 'left',\n 'ndl-data-grid-pinned-cell-right':\n cell.column.getIsPinned() === 'right',\n 'ndl-data-grid-row-action': isActionColumn,\n 'ndl-focusable-cell': isKeyboardNavigationEnabled,\n })}\n role=\"cell\"\n tabIndex={isKeyboardNavigationEnabled ? 0 : undefined}\n style={{\n ...style,\n width: isActionColumn ? 40 : cell.column.getSize(),\n }}\n {...restProps}\n {...htmlAttributes}\n >\n <Skeleton\n onBackground=\"weak\"\n shape=\"rectangular\"\n width=\"100%\"\n {...skeletonProps}\n isLoading={isSkeletonLoading && !isActionColumn}\n >\n {children || flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Skeleton>\n </div>\n );\n};\n\ntype BodyRowProps<T extends RowData> = {\n row: Row<T>;\n children?: React.ReactNode;\n};\n\nconst BodyRow = <T extends RowData>({\n row,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', BodyRowProps<T>>) => {\n const { components } = useDataGridContext<T>();\n\n return (\n <div\n key={row.id}\n ref={ref}\n style={style}\n className={classNames('ndl-data-grid-tr', className)}\n role=\"row\"\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <>\n {row\n .getVisibleCells()\n .map(\n (cell) =>\n components.BodyCell && (\n <components.BodyCell key={cell.id} cell={cell} />\n ),\n )}\n </>\n )}\n </div>\n );\n};\n\ntype TableResultProps = {\n manualPagination?: {\n from: number;\n to: number;\n totalRows: number;\n };\n children?: React.ReactNode;\n /**\n * The label to use for the results, meaning the word \"results\" in the sentence \"Showing X-Y of Z results\".\n * @defaultValue 'results'\n */\n resultsLabel?: string;\n};\n\nconst TableResults = ({\n manualPagination,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n resultsLabel = 'results',\n ...restProps\n}: CommonProps<'span', TableResultProps>) => {\n const { tableProps, isSkeletonLoading, skeletonProps, isSmallNavigation } =\n useDataGridContext();\n const { getState, getRowModel, getCoreRowModel } = tableProps;\n const {\n pagination: { pageSize, pageIndex },\n } = getState();\n const { rows } = getRowModel();\n\n const { from, to, totalRows } = useMemo(\n () =>\n manualPagination || {\n from: 1 + pageIndex * pageSize,\n to: rows.length + pageIndex * pageSize,\n totalRows: getCoreRowModel().rows.length,\n },\n [pageIndex, pageSize, manualPagination, rows, getCoreRowModel],\n );\n\n if (isSmallNavigation) {\n return null;\n }\n\n return (\n <Skeleton\n as=\"span\"\n onBackground=\"weak\"\n shape=\"rectangular\"\n {...skeletonProps}\n isLoading={isSkeletonLoading}\n >\n <span\n ref={ref}\n style={style}\n className={classNames('ndl-data-grid-results', className)}\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <span>\n Showing{' '}\n <span className=\"n-font-bold\">\n {totalRows ? `${from}${to !== from ? `-${to}` : ''}` : 0}\n </span>{' '}\n of <span className=\"n-font-bold\">{totalRows}</span> {resultsLabel}\n </span>\n )}\n </span>\n </Skeleton>\n );\n};\n\ntype RowsPerPageProps = {\n /**\n * The target element to portal the menu of the select component to.\n * Should be document.body normally, or the modal root if the select is inside a modal.\n * Defaults to the portalTarget prop of the DataGrid root component.\n */\n portalTarget?: HTMLElement | null;\n children?: React.ReactNode;\n};\n\nconst RowsPerPage = ({\n portalTarget: portalTargetProp,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', RowsPerPageProps>) => {\n const { tableProps, portalTarget } = useDataGridContext();\n\n const { setPageSize, getState } = tableProps;\n\n const {\n pagination: { pageSize },\n } = getState();\n\n const paginationOptions = getPaginationOptions(pageSize);\n const defaultPaginationOption = paginationOptions.find(\n (option) => option.value === pageSize,\n );\n\n const menuPortalTarget =\n portalTargetProp === undefined ? portalTarget : portalTargetProp;\n\n return (\n <div\n ref={ref}\n style={style}\n className={classNames('ndl-data-grid-rows-per-page', className)}\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <>\n Show\n <Select\n type=\"select\"\n size=\"medium\"\n ariaLabel=\"Select page size\"\n selectProps={{\n defaultValue: defaultPaginationOption,\n isSearchable: false,\n menuPortalTarget: menuPortalTarget,\n menuPosition: 'fixed',\n onChange: (option) => {\n if (option) {\n setPageSize(option.value);\n }\n },\n options: paginationOptions,\n styles: {\n container: () => ({\n width: '100%',\n }),\n },\n }}\n />\n </>\n )}\n </div>\n );\n};\n\ntype PaginationArrowButtonProps = {\n action: 'previous' | 'next';\n children?: React.ReactNode;\n onClick?: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n};\n\nconst PaginationArrowButton = ({\n action,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'button', PaginationArrowButtonProps>) => {\n const PaginationIcon =\n action === 'previous' ? ChevronLeftIconOutline : ChevronRightIconOutline;\n const ariaLabel = action === 'previous' ? 'Previous page' : 'Next page';\n const classes = classNames('ndl-data-grid-pagination-icon-button', className);\n\n return (\n <CleanIconButton\n ref={ref}\n style={style}\n className={classes}\n description={ariaLabel}\n htmlAttributes={htmlAttributes}\n {...restProps}\n >\n {children || <PaginationIcon />}\n </CleanIconButton>\n );\n};\n\ntype PaginationNumericButtonProps = {\n currentIndex: number | string;\n isSelected: boolean;\n children?: React.ReactNode;\n onClick?: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n};\n\nconst PaginationNumericButton = ({\n currentIndex,\n isSelected,\n children,\n className,\n style,\n htmlAttributes,\n onClick,\n ref,\n ...restProps\n}: CommonProps<'button', PaginationNumericButtonProps>) => {\n return (\n <button\n ref={ref}\n style={style}\n type=\"button\"\n data-testid={`ndl-table-${currentIndex}`}\n className={classNames(\n 'ndl-data-grid-pagination-numeric-button',\n className,\n {\n 'ndl-is-selected': isSelected,\n 'ndl-not-selected': !isSelected,\n 'ndl-not-selected-numeric':\n typeof currentIndex === 'number' && !isSelected,\n },\n )}\n onClick={(e) => typeof currentIndex === 'number' && onClick && onClick(e)}\n tabIndex={typeof currentIndex === 'number' ? 0 : -1}\n {...restProps}\n {...htmlAttributes}\n >\n {children || currentIndex}\n </button>\n );\n};\n\nconst PaginationNumericButtons = () => {\n const { tableProps, components } = useDataGridContext();\n const { getState, setPageIndex, getPageCount } = tableProps;\n const {\n pagination: { pageIndex },\n } = getState();\n\n return (\n <>\n {userFriendlyPagination(pageIndex + 1, getPageCount()).map(\n (option, idx) =>\n components.PaginationNumericButton && (\n <components.PaginationNumericButton\n /** Use index to avoid situations where two \"...\" values will appear, causing a key conflict */\n key={`${option}-${idx}`}\n onClick={() =>\n typeof option === 'number' && setPageIndex(option - 1)\n }\n currentIndex={option}\n isSelected={option === pageIndex + 1}\n />\n ),\n )}\n </>\n );\n};\n\ntype PaginationProps = {\n children?: React.ReactNode;\n};\n\nconst Pagination = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'nav', PaginationProps>) => {\n const { tableProps, components, isMediumNavigation } = useDataGridContext();\n\n const { getCanPreviousPage, getCanNextPage, previousPage, nextPage } =\n tableProps;\n\n return (\n <nav\n ref={ref}\n style={style}\n className={classNames('ndl-data-grid-nav', className)}\n aria-label=\"Pagination\"\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <>\n {/* Previous page */}\n {getCanPreviousPage()\n ? components.PaginationArrowButton && (\n <components.PaginationArrowButton\n action=\"previous\"\n onClick={previousPage}\n />\n )\n : null}\n {/* Pages - hidden on narrow containers */}\n {!isMediumNavigation && components.PaginationNumericButtons && (\n <components.PaginationNumericButtons />\n )}\n {/* Next page */}\n {getCanNextPage()\n ? components.PaginationArrowButton && (\n <components.PaginationArrowButton\n action=\"next\"\n onClick={nextPage}\n />\n )\n : null}\n </>\n )}\n </nav>\n );\n};\n\ntype NavigationProps = {\n children?: React.ReactNode;\n};\n\nconst Navigation = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', NavigationProps>) => {\n const {\n tableProps,\n components,\n isSkeletonLoading,\n skeletonProps,\n isSmallNavigation,\n } = useDataGridContext();\n\n const { getPageCount } = tableProps;\n\n return (\n <div\n ref={ref}\n style={{\n ...style,\n ...(isSmallNavigation && { justifyContent: 'end' }),\n }}\n className={classNames('ndl-data-grid-navigation', className)}\n {...restProps}\n {...htmlAttributes}\n >\n <>\n {children || (\n <>\n {components.TableResults && <components.TableResults />}\n <Skeleton\n onBackground=\"weak\"\n shape=\"rectangular\"\n height=\"36px\"\n {...skeletonProps}\n isLoading={isSkeletonLoading}\n >\n <div className=\"ndl-data-grid-navigation-right-items\">\n {getPageCount() > 1 && components.Pagination && (\n <components.Pagination />\n )}\n {/* Page size selector */}\n {components.RowsPerPage && <components.RowsPerPage />}\n </div>\n </Skeleton>\n </>\n )}\n </>\n </div>\n );\n};\n\ntype LoadingPlaceholderProps = {\n children?: React.ReactNode;\n};\n\nconst LoadingPlaceholder = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', LoadingPlaceholderProps>) => {\n return (\n <div\n ref={ref}\n style={style}\n className={classNames('nld-table-placeholder-wrapper', className)}\n role=\"row\"\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <div role=\"cell\" className=\"ndl-data-grid-placeholder\">\n <div className=\"ndl-data-grid-loading-placeholder\">\n <LoadingSpinner />\n <h6>Loading data</h6>\n </div>\n </div>\n )}\n </div>\n );\n};\n\ntype NoDataPlaceholderProps = {\n children?: React.ReactNode;\n};\n\nconst NoDataPlaceholder = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', NoDataPlaceholderProps>) => {\n return (\n <div\n ref={ref}\n style={style}\n className={classNames('nld-table-placeholder-wrapper', className)}\n role=\"row\"\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <NoDataPlaceholderContentWrapper>\n <NoDataIcon />\n <Typography variant=\"subheading-small\">No data available</Typography>\n </NoDataPlaceholderContentWrapper>\n )}\n </div>\n );\n};\n\ntype NoDataPlaceholderContentWrapperProps = {\n children?: React.ReactNode;\n};\n\nexport const NoDataPlaceholderContentWrapper = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', NoDataPlaceholderContentWrapperProps>) => {\n return (\n <div\n role=\"cell\"\n className={classNames('ndl-data-grid-placeholder', className)}\n ref={ref}\n style={style}\n {...restProps}\n {...htmlAttributes}\n >\n {children}\n </div>\n );\n};\n\nexport interface InlineEditCellProps<T extends RowData> {\n cell: CellContext<T, unknown>;\n value: string;\n ariaLabel: string;\n}\n\nconst InlineEditCell = <T extends RowData>({\n cell,\n value,\n ariaLabel,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'input', InlineEditCellProps<T>>) => {\n const [inputValue, setInputValue] = useState(value);\n\n useEffect(() => {\n setInputValue(value);\n }, [value]);\n\n const { dataGridNav } = useDataGridContext<T>();\n\n if (!cell.column.columnDef.meta?.isInlineEditCell) {\n return null;\n }\n\n return (\n <input\n ref={ref}\n style={style}\n className={className}\n onChange={(e) => setInputValue(e.target.value)}\n value={inputValue}\n onFocus={() => {\n dataGridNav.disable();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n cell?.column.columnDef.meta?.isInlineEditCell?.onEditChange(\n inputValue,\n cell,\n );\n e.currentTarget.parentElement?.focus();\n return;\n } else if (e.key === 'Escape') {\n e.currentTarget.parentElement?.focus();\n return;\n }\n }}\n onBlur={() => {\n setInputValue(value);\n dataGridNav.enable();\n }}\n aria-label={ariaLabel}\n {...restProps}\n {...htmlAttributes}\n />\n );\n};\n\ntype DropDownCellProps<T extends RowData> = {\n cell: CellContext<T, unknown>;\n options: {\n value: string;\n label: string;\n }[];\n /**\n * The target element to portal the menu of the select component to, e.g. the modal root if the data grid is inside a modal.\n * Defaults to the portalTarget prop of the DataGrid root component.\n */\n portalTarget?: HTMLElement | null;\n /** Aria label of the select component. Required for accessibility. */\n ariaLabel: string;\n /** Whether the select component is disabled */\n isDisabled?: boolean;\n};\n\nconst DropDownCell = <T extends RowData>({\n cell,\n options,\n portalTarget: portalTargetProp,\n ariaLabel,\n className,\n style,\n htmlAttributes,\n ref: forwardRef,\n isDisabled,\n ...restProps\n}: CommonProps<'div', DropDownCellProps<T>>) => {\n const { dataGridNav, portalTarget } = useDataGridContext<T>();\n const ref = useRef<HTMLDivElement>(null);\n const mergedRef = useMergeRefs([ref, forwardRef]);\n\n if (!cell.column.columnDef.meta?.isDropDownCell) {\n return null;\n }\n const defaultOption = options.find(\n (option) => option.value === cell.getValue()?.toString(),\n );\n\n const menuPortalTarget =\n portalTargetProp === undefined ? portalTarget : portalTargetProp;\n\n return (\n <Select\n ref={mergedRef}\n className={className}\n isFluid={true}\n isClean={true}\n style={{ ...style, height: '100%', width: '100%' }}\n type=\"select\"\n size=\"medium\"\n ariaLabel={ariaLabel}\n isDisabled={isDisabled}\n selectProps={{\n defaultValue: defaultOption,\n menuPortalTarget: menuPortalTarget,\n menuPosition: 'fixed',\n onChange: (e) => {\n const value = e?.value;\n cell?.column.columnDef.meta?.isDropDownCell?.onChange(\n value?.toString(),\n cell,\n );\n dataGridNav.enable();\n if (ref?.current) {\n dataGridNav.focusParentCell(ref.current);\n }\n },\n onMenuOpen: () => {\n dataGridNav.disable();\n },\n options: options,\n styles: {\n container: () => ({ height: '100%', width: '100%' }),\n control: () => ({\n borderRadius: 0,\n height: '100%',\n paddingLeft: '16px !important',\n paddingRight: '16px !important',\n }),\n },\n }}\n htmlAttributes={htmlAttributes}\n {...restProps}\n />\n );\n};\n\nconst NoDataIcon = ({\n className,\n ...restProps\n}: React.ComponentPropsWithoutRef<typeof DataGridCrossIcon>) => {\n const classes = classNames('n-size-token-64', className);\n return <DataGridCrossIcon className={classes} {...restProps} />;\n};\n\nexport {\n ResizingBar,\n Header,\n Body,\n BodyCell,\n BodyRow,\n InlineEditCell,\n DropDownCell,\n ActionCell,\n HeaderCell,\n HeaderTitle,\n Navigation,\n TableResults,\n RowsPerPage,\n Pagination,\n PaginationNumericButtons,\n PaginationArrowButton,\n PaginationNumericButton,\n NoDataPlaceholder,\n NoDataIcon,\n LoadingPlaceholder,\n Scrollable,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"Components.js","sourceRoot":"","sources":["../../../src/data-grid/Components.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport { useMergeRefs } from '@floating-ui/react';\nimport {\n type Cell,\n type CellContext,\n flexRender,\n type Header as HeaderType,\n type Row,\n type RowData,\n type SortDirection,\n} from '@tanstack/react-table';\nimport classNames from 'classnames';\nimport type React from 'react';\nimport {\n Fragment,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport {\n type CommonProps,\n type PolymorphicCommonProps,\n} from '../_common/types';\nimport { CleanIconButton } from '../clean-icon-button';\nimport {\n Bars3CenterLeftIconOutline,\n BarsArrowDownIconOutline,\n BarsArrowUpIconOutline,\n ChevronDownIconSolid,\n ChevronLeftIconOutline,\n ChevronRightIconOutline,\n DataGridCrossIcon,\n EllipsisHorizontalIconOutline,\n} from '../icons';\nimport { LoadingSpinner } from '../loading-spinner';\nimport { Menu } from '../menu';\nimport { Select } from '../select';\nimport { Skeleton } from '../skeleton';\nimport { Typography } from '../typography';\nimport { useDataGridContext } from './data-grid-context';\nimport { type ColumnAction } from './datagrid-types';\nimport {\n resizeColumn,\n ResizeDirection,\n userFriendlyPagination,\n} from './helpers';\nimport { useDataGridCellStyle } from './style-rules/hooks';\n\n/** Table results per page, with the first option being the default */\nconst TABLE_RESULTS = {\n DEFAULT: 10,\n values: [10, 25, 50, 100],\n} as const;\n\ntype paginationOption = {\n value: number;\n label: string;\n};\n\nconst getPaginationOptions = (pageSize: number): paginationOption[] => {\n return [...new Set([...TABLE_RESULTS.values, pageSize])]\n .sort((a, b) => a - b)\n .map((option) => ({\n label: `${option}`,\n value: option,\n }));\n};\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport const DEFAULT_SORT_ACTIONS: (cell: HeaderType<any, unknown>) => {\n [key in SortDirection | 'default']: ColumnAction;\n} = (cell) => ({\n asc: {\n icon: <BarsArrowUpIconOutline />,\n onClick: () => cell.column.toggleSorting(false),\n title: 'Sort ascending',\n },\n default: {\n icon: <Bars3CenterLeftIconOutline />,\n onClick: () => cell.column.clearSorting(),\n title: 'Default sort',\n },\n desc: {\n icon: <BarsArrowDownIconOutline />,\n onClick: () => cell.column.toggleSorting(true),\n title: 'Sort descending',\n },\n});\n\ntype ResizingBarProps<T extends RowData> = {\n header: HeaderType<T, unknown>;\n};\n\nconst ResizingBar = <T extends RowData>({\n header,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'button', ResizingBarProps<T>>) => {\n const { isKeyboardNavigationEnabled } = useDataGridContext<T>();\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (event.key === 'ArrowLeft') {\n event.stopPropagation();\n event.preventDefault();\n resizeColumn(ResizeDirection.LEFT, header);\n } else if (event.key === 'ArrowRight') {\n event.stopPropagation();\n event.preventDefault();\n resizeColumn(ResizeDirection.RIGHT, header);\n }\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={classNames('ndl-data-grid-resizer', className, {\n 'ndl-data-grid-is-resizing': header.column.getIsResizing(),\n })}\n style={style}\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n onKeyDown={handleKeyDown}\n aria-label=\"Resizing bar\"\n tabIndex={isKeyboardNavigationEnabled ? -1 : 0}\n {...restProps}\n {...htmlAttributes}\n />\n );\n};\n\ntype ScrollableProps = {\n children?: React.ReactNode;\n};\n\nconst Scrollable = ({\n children,\n ref,\n className,\n style,\n htmlAttributes,\n ...restProps\n}: CommonProps<'div', ScrollableProps> & {\n ref: React.RefObject<HTMLDivElement | null>;\n}) => {\n return (\n <div\n ref={ref}\n style={style}\n className={classNames('ndl-data-grid-scrollable', className)}\n {...restProps}\n {...htmlAttributes}\n >\n {children}\n </div>\n );\n};\n\ntype HeaderProps = {\n children?: React.ReactNode;\n};\n\nconst Header = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', HeaderProps>) => {\n const { tableProps, components } = useDataGridContext();\n const { getHeaderGroups, getState } = tableProps;\n\n return (\n <div\n role=\"rowgroup\"\n className={classNames('ndl-data-grid-thead', className, {\n 'ndl-data-grid-is-resizing':\n getState().columnSizingInfo.isResizingColumn,\n })}\n style={style}\n ref={ref}\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <>\n {getHeaderGroups().map((headerGroup) => (\n <div key={headerGroup.id} className=\"ndl-data-grid-tr\" role=\"row\">\n {headerGroup.headers.map(\n (header) =>\n components.HeaderCell && (\n <components.HeaderCell key={header.id} cell={header} />\n ),\n )}\n </div>\n ))}\n </>\n )}\n </div>\n );\n};\n\ntype ActionButtonProps = {\n action: ColumnAction;\n onClose: () => void;\n};\n\nexport const ActionButton = <T extends React.ElementType = 'button'>({\n action,\n onClose,\n as,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: PolymorphicCommonProps<T, ActionButtonProps>) => {\n const { onClick, ...restAction } = action;\n\n const interceptedOnClick = useCallback(\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n (e: any) => {\n const providedOnClick = onClick ?? action.onClick;\n if (typeof providedOnClick === 'function') {\n providedOnClick(e);\n }\n onClose?.();\n },\n [action.onClick, onClick, onClose],\n );\n\n return (\n <Menu.Item\n onClick={interceptedOnClick}\n as={as}\n className={className}\n style={style}\n htmlAttributes={htmlAttributes}\n ref={ref}\n {...restAction}\n {...restProps}\n />\n );\n};\n\nexport interface ActionCellProps<T extends RowData> {\n cell?: CellContext<T, unknown>;\n innerCleanIconButtonProps?: Partial<\n React.ComponentPropsWithoutRef<typeof CleanIconButton>\n >;\n innerMenuProps?: Partial<React.ComponentProps<typeof Menu>>;\n}\n\nconst ActionCell = <T extends RowData>({\n cell,\n innerCleanIconButtonProps,\n innerMenuProps,\n}: ActionCellProps<T>) => {\n const { components, isSkeletonLoading, portalTarget } =\n useDataGridContext<T>();\n const actionsButtonRef = useRef<HTMLButtonElement>(null);\n const [isActionsOpen, setIsActionsOpen] = useState(false);\n\n if (\n !cell ||\n !cell.column.columnDef.meta ||\n typeof cell.column.columnDef?.meta?.isActionCell !== 'object'\n ) {\n return null;\n }\n\n const { actions, onOpenChange } = cell.column.columnDef.meta.isActionCell;\n\n if (isSkeletonLoading) {\n return null;\n }\n\n return (\n <>\n <CleanIconButton\n as=\"button\"\n size=\"medium\"\n description=\"Actions\"\n ref={actionsButtonRef}\n isActive={isActionsOpen}\n onClick={() => {\n onOpenChange?.(!isActionsOpen);\n setIsActionsOpen(!isActionsOpen);\n }}\n {...innerCleanIconButtonProps}\n htmlAttributes={{\n tabIndex: 0,\n ...innerCleanIconButtonProps?.htmlAttributes,\n }}\n >\n {innerCleanIconButtonProps?.children || (\n <EllipsisHorizontalIconOutline />\n )}\n </CleanIconButton>\n <Menu\n isOpen={isActionsOpen}\n anchorRef={actionsButtonRef}\n onClose={() => {\n onOpenChange?.(false);\n setIsActionsOpen(false);\n }}\n {...innerMenuProps}\n portalTarget={portalTarget}\n >\n {innerMenuProps?.children || (\n <>\n {actions.map(\n (action, i) =>\n components.ActionButton && (\n <components.ActionButton\n key={`${cell.column.id}-action-${i}`}\n action={{\n ...action,\n onClick: (e) => {\n action.onClick?.(e, cell);\n },\n }}\n onClose={() => setIsActionsOpen(false)}\n />\n ),\n )}\n </>\n )}\n </Menu>\n </>\n );\n};\n\ntype ColumnControlsProps<T extends RowData> = {\n cell: HeaderType<T, unknown>;\n children?: React.ReactNode;\n};\n\nexport const ColumnControls = <T extends RowData>({\n cell,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', ColumnControlsProps<T>>) => {\n const { components, portalTarget } = useDataGridContext();\n\n const sort = cell.column.getIsSorted();\n const canSort = cell.column.getCanSort();\n const { hasDefaultSortingActions = true, actions } =\n cell.column.columnDef.meta?.columnActions || {};\n\n const sortingActions = useMemo(() => {\n if (canSort) {\n if (sort !== 'asc' && sort !== 'desc') {\n return [\n DEFAULT_SORT_ACTIONS(cell).asc,\n DEFAULT_SORT_ACTIONS(cell).desc,\n ];\n }\n if (sort === 'asc') {\n return [\n DEFAULT_SORT_ACTIONS(cell).default,\n DEFAULT_SORT_ACTIONS(cell).desc,\n ];\n }\n if (sort === 'desc') {\n return [\n DEFAULT_SORT_ACTIONS(cell).default,\n DEFAULT_SORT_ACTIONS(cell).asc,\n ];\n }\n }\n // Default case\n return [];\n }, [sort, cell, canSort]);\n\n const newActions: ColumnAction[] = [\n ...(hasDefaultSortingActions ? sortingActions : []),\n ...(actions ?? []),\n ];\n\n const actionsButtonRef = useRef<HTMLButtonElement>(null);\n const [isActionsOpen, setIsActionsOpen] = useState(false);\n\n if (!actions || actions.length === 0) {\n return null;\n }\n\n return newActions.length > 0 ? (\n <div\n ref={ref}\n className={classNames('ndl-header-action-group', className)}\n style={style}\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <Fragment>\n <CleanIconButton\n size=\"small\"\n description=\"Actions\"\n ref={actionsButtonRef}\n isActive={isActionsOpen}\n onClick={() => {\n setIsActionsOpen(!isActionsOpen);\n }}\n htmlAttributes={{\n tabIndex: 0,\n }}\n >\n <ChevronDownIconSolid />\n </CleanIconButton>\n <Menu\n isOpen={isActionsOpen}\n anchorRef={actionsButtonRef}\n onClose={() => setIsActionsOpen(false)}\n portalTarget={portalTarget}\n >\n {newActions.map(\n (action, i) =>\n components.ActionButton && (\n <components.ActionButton\n key={`${cell.column.id}-action-${i}`}\n action={action}\n onClose={() => setIsActionsOpen(false)}\n />\n ),\n )}\n </Menu>\n </Fragment>\n )}\n </div>\n ) : null;\n};\n\ntype HeaderCellProps<T> = {\n cell: HeaderType<T, unknown>;\n children?: React.ReactNode;\n};\n\nconst HeaderCell = <T extends RowData>({\n cell,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', HeaderCellProps<T>>) => {\n const { components, isResizable, isKeyboardNavigationEnabled } =\n useDataGridContext<T>();\n\n const sort = cell.column.getIsSorted();\n const canSort = cell.column.getCanSort();\n\n const ariaSortRole = useMemo(() => {\n switch (sort) {\n case 'asc':\n return 'ascending';\n case 'desc':\n return 'descending';\n default:\n return 'none';\n }\n }, [sort]);\n\n const Icon = useMemo(() => {\n switch (sort) {\n case 'asc':\n return <BarsArrowUpIconOutline className=\"ndl-header-icon\" />;\n case 'desc':\n return <BarsArrowDownIconOutline className=\"ndl-header-icon\" />;\n default:\n return (\n <Bars3CenterLeftIconOutline className=\"ndl-hoverable-indicator ndl-header-icon\" />\n );\n }\n }, [sort]);\n\n const ariaDescription = useMemo(() => {\n return canSort\n ? `Press ENTER or SPACE to sort column ${cell.column.id}`\n : `Column id: ${cell.column.id}`;\n }, [canSort, cell.column.id]);\n\n const isActionColumn = useMemo(\n () => typeof cell.column.columnDef.meta?.isActionCell === 'object',\n [cell.column.columnDef.meta],\n );\n\n const Tag = canSort ? 'button' : 'div';\n\n const InnerHeaderCell = () => (\n <div className=\"ndl-header-cell\">\n {cell.isPlaceholder\n ? null\n : flexRender(cell.column.columnDef.header, cell.getContext())}\n {canSort && Icon}\n </div>\n );\n\n return (\n <div\n ref={ref}\n tabIndex={isKeyboardNavigationEnabled && !isActionColumn ? 0 : undefined}\n key={cell.id}\n role=\"columnheader\"\n className={classNames('ndl-data-grid-th', className, {\n 'ndl-data-grid-is-resizing': cell.column.getIsResizing(),\n 'ndl-data-grid-pinned-cell': cell.column.getIsPinned(),\n 'ndl-data-grid-pinned-cell-left': cell.column.getIsPinned() === 'left',\n 'ndl-data-grid-pinned-cell-right':\n cell.column.getIsPinned() === 'right',\n 'ndl-data-grid-row-action': isActionColumn,\n 'ndl-focusable-cell': isKeyboardNavigationEnabled,\n })}\n aria-sort={ariaSortRole}\n style={{\n ...style,\n maxWidth: cell.column.columnDef.maxSize\n ? `${cell.column.columnDef.maxSize}px`\n : 'none',\n width: isActionColumn ? 40 : cell.getSize(),\n }}\n {...(isKeyboardNavigationEnabled\n ? {\n onKeyDown: (e) => {\n if (\n isResizable &&\n e.altKey &&\n (e.key === 'ArrowLeft' || e.key === 'ArrowRight')\n ) {\n const direction =\n e.key === 'ArrowLeft'\n ? ResizeDirection.LEFT\n : ResizeDirection.RIGHT;\n resizeColumn(direction, cell);\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n },\n }\n : {})}\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <>\n <Tag\n className=\"ndl-header-group\"\n style={{\n cursor: canSort ? 'pointer' : 'default',\n }}\n aria-description={ariaDescription}\n onClick={() => canSort && cell.column.toggleSorting()}\n tabIndex={canSort ? 0 : undefined}\n >\n {components.HeaderTitle ? (\n <components.HeaderTitle cell={cell}>\n <InnerHeaderCell />\n </components.HeaderTitle>\n ) : (\n <InnerHeaderCell />\n )}\n </Tag>\n {/* Column actions*/}\n {components.ColumnControls && (\n <components.ColumnControls cell={cell} />\n )}\n {/* Resizer*/}\n {isResizable &&\n cell.column.getCanResize() &&\n components.ResizingBar && <components.ResizingBar header={cell} />}\n </>\n )}\n </div>\n );\n};\n\ntype HeaderTitleProps<T> = {\n cell: HeaderType<T, unknown>;\n children?: React.ReactNode;\n};\n\nconst HeaderTitle = <T extends RowData>({\n cell,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', HeaderTitleProps<T>>) => {\n const { column, id } = cell;\n const title =\n typeof column.columnDef.header === 'string' ? column.columnDef.header : id;\n return (\n <div\n ref={ref}\n className={className}\n title={title}\n style={style}\n {...restProps}\n {...htmlAttributes}\n >\n {children}\n </div>\n );\n};\n\ntype BodyProps = {\n children?: React.ReactNode;\n};\n\nconst Body = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', BodyProps>) => {\n const { tableProps, components, isLoading } = useDataGridContext();\n const { getRowModel } = tableProps;\n\n return (\n <div\n ref={ref}\n style={style}\n className={classNames('ndl-data-grid-tbody', className)}\n role=\"rowgroup\"\n aria-busy={isLoading ? 'true' : 'false'}\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <>\n {isLoading && components.LoadingPlaceholder && (\n <components.LoadingPlaceholder />\n )}\n\n {!isLoading &&\n getRowModel().rows.length === 0 &&\n components.NoDataPlaceholder && <components.NoDataPlaceholder />}\n\n {!isLoading &&\n getRowModel().rows.map(\n (row, idx) =>\n components.BodyRow && (\n <components.BodyRow key={`table-row-${idx}`} row={row} />\n ),\n )}\n </>\n )}\n </div>\n );\n};\n\ntype BodyCellProps<T extends RowData> = {\n cell: Cell<T, unknown>;\n children?: React.ReactNode;\n};\n\nconst BodyCell = <T extends RowData>({\n cell,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', BodyCellProps<T>>) => {\n const isResizing = cell.column.getIsResizing();\n\n const isActionColumn = Boolean(cell.column.columnDef.meta?.isActionCell);\n const isInlineEditCell = Boolean(\n cell.column.columnDef.meta?.isInlineEditCell,\n );\n const isDropDownCell = Boolean(cell.column.columnDef.meta?.isDropDownCell);\n const isCustomCell = isActionColumn || isDropDownCell;\n const { isKeyboardNavigationEnabled, isSkeletonLoading, skeletonProps } =\n useDataGridContext();\n const ruleStyle = useDataGridCellStyle(cell);\n return (\n <div\n ref={ref}\n key={cell.id}\n className={classNames('ndl-data-grid-td', className, {\n 'ndl-data-grid-custom-cell': isCustomCell,\n 'ndl-data-grid-dropdown-cell': isDropDownCell,\n 'ndl-data-grid-inline-edit': isInlineEditCell,\n 'ndl-data-grid-is-resizing': isResizing,\n 'ndl-data-grid-pinned-cell': cell.column.getIsPinned(),\n 'ndl-data-grid-pinned-cell-left': cell.column.getIsPinned() === 'left',\n 'ndl-data-grid-pinned-cell-right':\n cell.column.getIsPinned() === 'right',\n 'ndl-data-grid-row-action': isActionColumn,\n 'ndl-focusable-cell': isKeyboardNavigationEnabled,\n })}\n role=\"cell\"\n tabIndex={isKeyboardNavigationEnabled ? 0 : undefined}\n style={{\n ...ruleStyle,\n ...style,\n width: isActionColumn ? 40 : cell.column.getSize(),\n }}\n {...restProps}\n {...htmlAttributes}\n >\n <Skeleton\n onBackground=\"weak\"\n shape=\"rectangular\"\n width=\"100%\"\n {...skeletonProps}\n isLoading={isSkeletonLoading && !isActionColumn}\n >\n {children || flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Skeleton>\n </div>\n );\n};\n\ntype BodyRowProps<T extends RowData> = {\n row: Row<T>;\n children?: React.ReactNode;\n};\n\nconst BodyRow = <T extends RowData>({\n row,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', BodyRowProps<T>>) => {\n const { components } = useDataGridContext<T>();\n\n return (\n <div\n key={row.id}\n ref={ref}\n style={style}\n className={classNames('ndl-data-grid-tr', className)}\n role=\"row\"\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <>\n {row\n .getVisibleCells()\n .map(\n (cell) =>\n components.BodyCell && (\n <components.BodyCell key={cell.id} cell={cell} />\n ),\n )}\n </>\n )}\n </div>\n );\n};\n\ntype TableResultProps = {\n manualPagination?: {\n from: number;\n to: number;\n totalRows: number;\n };\n children?: React.ReactNode;\n /**\n * The label to use for the results, meaning the word \"results\" in the sentence \"Showing X-Y of Z results\".\n * @defaultValue 'results'\n */\n resultsLabel?: string;\n};\n\nconst TableResults = ({\n manualPagination,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n resultsLabel = 'results',\n ...restProps\n}: CommonProps<'span', TableResultProps>) => {\n const { tableProps, isSkeletonLoading, skeletonProps, isSmallNavigation } =\n useDataGridContext();\n const { getState, getRowModel, getCoreRowModel } = tableProps;\n const {\n pagination: { pageSize, pageIndex },\n } = getState();\n const { rows } = getRowModel();\n\n const { from, to, totalRows } = useMemo(\n () =>\n manualPagination || {\n from: 1 + pageIndex * pageSize,\n to: rows.length + pageIndex * pageSize,\n totalRows: getCoreRowModel().rows.length,\n },\n [pageIndex, pageSize, manualPagination, rows, getCoreRowModel],\n );\n\n if (isSmallNavigation) {\n return null;\n }\n\n return (\n <Skeleton\n as=\"span\"\n onBackground=\"weak\"\n shape=\"rectangular\"\n {...skeletonProps}\n isLoading={isSkeletonLoading}\n >\n <span\n ref={ref}\n style={style}\n className={classNames('ndl-data-grid-results', className)}\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <span>\n Showing{' '}\n <span className=\"n-font-bold\">\n {totalRows ? `${from}${to !== from ? `-${to}` : ''}` : 0}\n </span>{' '}\n of <span className=\"n-font-bold\">{totalRows}</span> {resultsLabel}\n </span>\n )}\n </span>\n </Skeleton>\n );\n};\n\ntype RowsPerPageProps = {\n /**\n * The target element to portal the menu of the select component to.\n * Should be document.body normally, or the modal root if the select is inside a modal.\n * Defaults to the portalTarget prop of the DataGrid root component.\n */\n portalTarget?: HTMLElement | null;\n children?: React.ReactNode;\n};\n\nconst RowsPerPage = ({\n portalTarget: portalTargetProp,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', RowsPerPageProps>) => {\n const { tableProps, portalTarget } = useDataGridContext();\n\n const { setPageSize, getState } = tableProps;\n\n const {\n pagination: { pageSize },\n } = getState();\n\n const paginationOptions = getPaginationOptions(pageSize);\n const defaultPaginationOption = paginationOptions.find(\n (option) => option.value === pageSize,\n );\n\n const menuPortalTarget =\n portalTargetProp === undefined ? portalTarget : portalTargetProp;\n\n return (\n <div\n ref={ref}\n style={style}\n className={classNames('ndl-data-grid-rows-per-page', className)}\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <>\n Show\n <Select\n type=\"select\"\n size=\"medium\"\n ariaLabel=\"Select page size\"\n selectProps={{\n defaultValue: defaultPaginationOption,\n isSearchable: false,\n menuPortalTarget: menuPortalTarget,\n menuPosition: 'fixed',\n onChange: (option) => {\n if (option) {\n setPageSize(option.value);\n }\n },\n options: paginationOptions,\n styles: {\n container: () => ({\n width: '100%',\n }),\n },\n }}\n />\n </>\n )}\n </div>\n );\n};\n\ntype PaginationArrowButtonProps = {\n action: 'previous' | 'next';\n children?: React.ReactNode;\n onClick?: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n};\n\nconst PaginationArrowButton = ({\n action,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'button', PaginationArrowButtonProps>) => {\n const PaginationIcon =\n action === 'previous' ? ChevronLeftIconOutline : ChevronRightIconOutline;\n const ariaLabel = action === 'previous' ? 'Previous page' : 'Next page';\n const classes = classNames('ndl-data-grid-pagination-icon-button', className);\n\n return (\n <CleanIconButton\n ref={ref}\n style={style}\n className={classes}\n description={ariaLabel}\n htmlAttributes={htmlAttributes}\n {...restProps}\n >\n {children || <PaginationIcon />}\n </CleanIconButton>\n );\n};\n\ntype PaginationNumericButtonProps = {\n currentIndex: number | string;\n isSelected: boolean;\n children?: React.ReactNode;\n onClick?: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n};\n\nconst PaginationNumericButton = ({\n currentIndex,\n isSelected,\n children,\n className,\n style,\n htmlAttributes,\n onClick,\n ref,\n ...restProps\n}: CommonProps<'button', PaginationNumericButtonProps>) => {\n return (\n <button\n ref={ref}\n style={style}\n type=\"button\"\n data-testid={`ndl-table-${currentIndex}`}\n className={classNames(\n 'ndl-data-grid-pagination-numeric-button',\n className,\n {\n 'ndl-is-selected': isSelected,\n 'ndl-not-selected': !isSelected,\n 'ndl-not-selected-numeric':\n typeof currentIndex === 'number' && !isSelected,\n },\n )}\n onClick={(e) => typeof currentIndex === 'number' && onClick && onClick(e)}\n tabIndex={typeof currentIndex === 'number' ? 0 : -1}\n {...restProps}\n {...htmlAttributes}\n >\n {children || currentIndex}\n </button>\n );\n};\n\nconst PaginationNumericButtons = () => {\n const { tableProps, components } = useDataGridContext();\n const { getState, setPageIndex, getPageCount } = tableProps;\n const {\n pagination: { pageIndex },\n } = getState();\n\n return (\n <>\n {userFriendlyPagination(pageIndex + 1, getPageCount()).map(\n (option, idx) =>\n components.PaginationNumericButton && (\n <components.PaginationNumericButton\n /** Use index to avoid situations where two \"...\" values will appear, causing a key conflict */\n key={`${option}-${idx}`}\n onClick={() =>\n typeof option === 'number' && setPageIndex(option - 1)\n }\n currentIndex={option}\n isSelected={option === pageIndex + 1}\n />\n ),\n )}\n </>\n );\n};\n\ntype PaginationProps = {\n children?: React.ReactNode;\n};\n\nconst Pagination = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'nav', PaginationProps>) => {\n const { tableProps, components, isMediumNavigation } = useDataGridContext();\n\n const { getCanPreviousPage, getCanNextPage, previousPage, nextPage } =\n tableProps;\n\n return (\n <nav\n ref={ref}\n style={style}\n className={classNames('ndl-data-grid-nav', className)}\n aria-label=\"Pagination\"\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <>\n {/* Previous page */}\n {getCanPreviousPage()\n ? components.PaginationArrowButton && (\n <components.PaginationArrowButton\n action=\"previous\"\n onClick={previousPage}\n />\n )\n : null}\n {/* Pages - hidden on narrow containers */}\n {!isMediumNavigation && components.PaginationNumericButtons && (\n <components.PaginationNumericButtons />\n )}\n {/* Next page */}\n {getCanNextPage()\n ? components.PaginationArrowButton && (\n <components.PaginationArrowButton\n action=\"next\"\n onClick={nextPage}\n />\n )\n : null}\n </>\n )}\n </nav>\n );\n};\n\ntype NavigationProps = {\n children?: React.ReactNode;\n};\n\nconst Navigation = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', NavigationProps>) => {\n const {\n tableProps,\n components,\n isSkeletonLoading,\n skeletonProps,\n isSmallNavigation,\n } = useDataGridContext();\n\n const { getPageCount } = tableProps;\n\n return (\n <div\n ref={ref}\n style={{\n ...style,\n ...(isSmallNavigation && { justifyContent: 'end' }),\n }}\n className={classNames('ndl-data-grid-navigation', className)}\n {...restProps}\n {...htmlAttributes}\n >\n <>\n {children || (\n <>\n {components.TableResults && <components.TableResults />}\n <Skeleton\n onBackground=\"weak\"\n shape=\"rectangular\"\n height=\"36px\"\n {...skeletonProps}\n isLoading={isSkeletonLoading}\n >\n <div className=\"ndl-data-grid-navigation-right-items\">\n {getPageCount() > 1 && components.Pagination && (\n <components.Pagination />\n )}\n {/* Page size selector */}\n {components.RowsPerPage && <components.RowsPerPage />}\n </div>\n </Skeleton>\n </>\n )}\n </>\n </div>\n );\n};\n\ntype LoadingPlaceholderProps = {\n children?: React.ReactNode;\n};\n\nconst LoadingPlaceholder = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', LoadingPlaceholderProps>) => {\n return (\n <div\n ref={ref}\n style={style}\n className={classNames('nld-table-placeholder-wrapper', className)}\n role=\"row\"\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <div role=\"cell\" className=\"ndl-data-grid-placeholder\">\n <div className=\"ndl-data-grid-loading-placeholder\">\n <LoadingSpinner />\n <h6>Loading data</h6>\n </div>\n </div>\n )}\n </div>\n );\n};\n\ntype NoDataPlaceholderProps = {\n children?: React.ReactNode;\n};\n\nconst NoDataPlaceholder = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', NoDataPlaceholderProps>) => {\n return (\n <div\n ref={ref}\n style={style}\n className={classNames('nld-table-placeholder-wrapper', className)}\n role=\"row\"\n {...restProps}\n {...htmlAttributes}\n >\n {children || (\n <NoDataPlaceholderContentWrapper>\n <NoDataIcon />\n <Typography variant=\"subheading-small\">No data available</Typography>\n </NoDataPlaceholderContentWrapper>\n )}\n </div>\n );\n};\n\ntype NoDataPlaceholderContentWrapperProps = {\n children?: React.ReactNode;\n};\n\nexport const NoDataPlaceholderContentWrapper = ({\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', NoDataPlaceholderContentWrapperProps>) => {\n return (\n <div\n role=\"cell\"\n className={classNames('ndl-data-grid-placeholder', className)}\n ref={ref}\n style={style}\n {...restProps}\n {...htmlAttributes}\n >\n {children}\n </div>\n );\n};\n\nexport interface InlineEditCellProps<T extends RowData> {\n cell: CellContext<T, unknown>;\n value: string;\n ariaLabel: string;\n}\n\nconst InlineEditCell = <T extends RowData>({\n cell,\n value,\n ariaLabel,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'input', InlineEditCellProps<T>>) => {\n const [inputValue, setInputValue] = useState(value);\n\n useEffect(() => {\n setInputValue(value);\n }, [value]);\n\n const { dataGridNav } = useDataGridContext<T>();\n\n if (!cell.column.columnDef.meta?.isInlineEditCell) {\n return null;\n }\n\n return (\n <input\n ref={ref}\n style={style}\n className={className}\n onChange={(e) => setInputValue(e.target.value)}\n value={inputValue}\n onFocus={() => {\n dataGridNav.disable();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n cell?.column.columnDef.meta?.isInlineEditCell?.onEditChange(\n inputValue,\n cell,\n );\n e.currentTarget.parentElement?.focus();\n return;\n } else if (e.key === 'Escape') {\n e.currentTarget.parentElement?.focus();\n return;\n }\n }}\n onBlur={() => {\n setInputValue(value);\n dataGridNav.enable();\n }}\n aria-label={ariaLabel}\n {...restProps}\n {...htmlAttributes}\n />\n );\n};\n\ntype DropDownCellProps<T extends RowData> = {\n cell: CellContext<T, unknown>;\n options: {\n value: string;\n label: string;\n }[];\n /**\n * The target element to portal the menu of the select component to, e.g. the modal root if the data grid is inside a modal.\n * Defaults to the portalTarget prop of the DataGrid root component.\n */\n portalTarget?: HTMLElement | null;\n /** Aria label of the select component. Required for accessibility. */\n ariaLabel: string;\n /** Whether the select component is disabled */\n isDisabled?: boolean;\n};\n\nconst DropDownCell = <T extends RowData>({\n cell,\n options,\n portalTarget: portalTargetProp,\n ariaLabel,\n className,\n style,\n htmlAttributes,\n ref: forwardRef,\n isDisabled,\n ...restProps\n}: CommonProps<'div', DropDownCellProps<T>>) => {\n const { dataGridNav, portalTarget } = useDataGridContext<T>();\n const ref = useRef<HTMLDivElement>(null);\n const mergedRef = useMergeRefs([ref, forwardRef]);\n\n if (!cell.column.columnDef.meta?.isDropDownCell) {\n return null;\n }\n const defaultOption = options.find(\n (option) => option.value === cell.getValue()?.toString(),\n );\n\n const menuPortalTarget =\n portalTargetProp === undefined ? portalTarget : portalTargetProp;\n\n return (\n <Select\n ref={mergedRef}\n className={className}\n isFluid={true}\n isClean={true}\n style={{ ...style, height: '100%', width: '100%' }}\n type=\"select\"\n size=\"medium\"\n ariaLabel={ariaLabel}\n isDisabled={isDisabled}\n selectProps={{\n defaultValue: defaultOption,\n menuPortalTarget: menuPortalTarget,\n menuPosition: 'fixed',\n onChange: (e) => {\n const value = e?.value;\n cell?.column.columnDef.meta?.isDropDownCell?.onChange(\n value?.toString(),\n cell,\n );\n dataGridNav.enable();\n if (ref?.current) {\n dataGridNav.focusParentCell(ref.current);\n }\n },\n onMenuOpen: () => {\n dataGridNav.disable();\n },\n options: options,\n styles: {\n container: () => ({ height: '100%', width: '100%' }),\n control: () => ({\n borderRadius: 0,\n height: '100%',\n paddingLeft: '16px !important',\n paddingRight: '16px !important',\n }),\n },\n }}\n htmlAttributes={htmlAttributes}\n {...restProps}\n />\n );\n};\n\nconst NoDataIcon = ({\n className,\n ...restProps\n}: React.ComponentPropsWithoutRef<typeof DataGridCrossIcon>) => {\n const classes = classNames('n-size-token-64', className);\n return <DataGridCrossIcon className={classes} {...restProps} />;\n};\n\nexport {\n ResizingBar,\n Header,\n Body,\n BodyCell,\n BodyRow,\n InlineEditCell,\n DropDownCell,\n ActionCell,\n HeaderCell,\n HeaderTitle,\n Navigation,\n TableResults,\n RowsPerPage,\n Pagination,\n PaginationNumericButtons,\n PaginationArrowButton,\n PaginationNumericButton,\n NoDataPlaceholder,\n NoDataIcon,\n LoadingPlaceholder,\n Scrollable,\n};\n"]}
|
|
@@ -58,7 +58,7 @@ const DEFAULT_STYLING = {
|
|
|
58
58
|
isCompact: false,
|
|
59
59
|
};
|
|
60
60
|
const DataGridComponent = function DataGrid(_a) {
|
|
61
|
-
var { isResizable = true, isLoading = false, isKeyboardNavigable = true, isAutoResizingColumns = true, tableInstance, components, rootProps, styling = {}, tableNavRef, isSkeletonLoading = false, skeletonProps, ref, portalTarget = document.body, htmlAttributes, className, style } = _a, restProps = __rest(_a, ["isResizable", "isLoading", "isKeyboardNavigable", "isAutoResizingColumns", "tableInstance", "components", "rootProps", "styling", "tableNavRef", "isSkeletonLoading", "skeletonProps", "ref", "portalTarget", "htmlAttributes", "className", "style"]);
|
|
61
|
+
var { isResizable = true, isLoading = false, isKeyboardNavigable = true, isAutoResizingColumns = true, tableInstance, components, rootProps, styling = {}, tableNavRef, isSkeletonLoading = false, skeletonProps, ref, portalTarget = document.body, styleRules, htmlAttributes, className, style } = _a, restProps = __rest(_a, ["isResizable", "isLoading", "isKeyboardNavigable", "isAutoResizingColumns", "tableInstance", "components", "rootProps", "styling", "tableNavRef", "isSkeletonLoading", "skeletonProps", "ref", "portalTarget", "styleRules", "htmlAttributes", "className", "style"]);
|
|
62
62
|
const { className: rootClassName = '', style: rootStyle = {} } = rootProps || {};
|
|
63
63
|
const [isScrollable, setIsScrollable] = useState(false);
|
|
64
64
|
const [isMediumNavigation, setIsMediumNavigation] = useState(false);
|
|
@@ -124,6 +124,7 @@ const DataGridComponent = function DataGrid(_a) {
|
|
|
124
124
|
isSmallNavigation,
|
|
125
125
|
portalTarget: portalTarget,
|
|
126
126
|
skeletonProps,
|
|
127
|
+
styleRules,
|
|
127
128
|
tableProps: tableInstance,
|
|
128
129
|
}, children: _jsxs("div", Object.assign({}, rootProps, { className: classNames('ndl-data-grid-root', rootClassName, className, {
|
|
129
130
|
'ndl-data-grid-border-horizontal': Styling.borderStyle === BorderStyleEnum.Horizontal ||
|