zova-module-a-table 5.1.40 → 5.1.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/component/table/controller.d.ts +1 -0
- package/dist/component/table/controller.d.ts.map +1 -1
- package/dist/component/table/render.d.ts.map +1 -1
- package/dist/index.js +16 -6
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/component/table/controller.tsx +2 -0
- package/src/component/table/render.tsx +13 -10
|
@@ -16,6 +16,7 @@ export interface ControllerTableProps<TData extends {} = {}> {
|
|
|
16
16
|
sorting?: SortingState;
|
|
17
17
|
onSortingChange?: OnChangeFn<SortingState>;
|
|
18
18
|
enableRowSelection?: boolean | ((row: Row<TData>) => boolean);
|
|
19
|
+
selectionMode?: 'single' | 'multiple';
|
|
19
20
|
rowSelection?: RowSelectionState;
|
|
20
21
|
onRowSelectionChange?: OnChangeFn<RowSelectionState>;
|
|
21
22
|
tableScope?: ITableScope;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/component/table/controller.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kCAAkC,EAClC,2BAA2B,EAE3B,4BAA4B,EAC5B,oCAAoC,EACrC,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAsB,MAAM,eAAe,CAAC;AAC/D,OAAO,EACL,WAAW,EAIX,UAAU,EACV,GAAG,EACH,iBAAiB,EACjB,YAAY,EAEb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC;AAS5B,OAAO,EAAkB,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnD,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,KAAK,EAEV,0BAA0B,EAE3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,4BAA4B,EAE5B,eAAe,EACf,iBAAiB,EACjB,WAAW,EAEZ,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAE3E,MAAM,WAAW,oBAAoB,CAAC,KAAK,SAAS,EAAE,GAAG,EAAE;IACzD,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,eAAe,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;IAC3C,kBAAkB,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,CAAC;IAC9D,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,oBAAoB,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;IACrD,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,UAAU,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACxC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;IACvD,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC;CAC/E;AAED,qBACa,eAAe,CAAC,KAAK,SAAS,EAAE,GAAG,EAAE,CAAE,SAAQ,uBAAuB,CAAC,KAAK,CAAC;IACxF,MAAM,CAAC,aAAa,KAAM;IAI1B,UAAU,EAAE,2BAA2B,EAAE,GAAG,SAAS,CAAC;IACtD,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;IAC7B,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,UAAU,CAAC;cAEhB,QAAQ;IA4BxB,IAAW,MAAM,6BAEhB;IAED,IAAW,IAAI,wBAEd;IAED,IAAW,OAAO,iBAEjB;IAED,IAAW,YAAY,sBAEtB;IAEY,WAAW;IAMxB,OAAO,CAAC,YAAY;
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/component/table/controller.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/component/table/render.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAKtC,qBACa,WAAY,SAAQ,cAAc;IAC7C,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,mBAAmB;
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/component/table/render.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAKtC,qBACa,WAAY,SAAQ,cAAc;IAC7C,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,mBAAmB;IAqGpB,MAAM;;;CAGd"}
|
package/dist/index.js
CHANGED
|
@@ -24,7 +24,10 @@ var BeanControllerTableBase = class extends BeanControllerBase {
|
|
|
24
24
|
var TableColumnIdSelection = "$$selection";
|
|
25
25
|
//#endregion
|
|
26
26
|
//#region src/component/table/controller.tsx
|
|
27
|
-
var _dec$2
|
|
27
|
+
var _dec$2;
|
|
28
|
+
var _dec2$2;
|
|
29
|
+
var _class$2;
|
|
30
|
+
var _ControllerTable;
|
|
28
31
|
var ControllerTable = (_dec$2 = Controller(), _dec2$2 = BeanInfo({ module: "a-table" }), _dec$2(_class$2 = _dec2$2(_class$2 = (_ControllerTable = class ControllerTable extends BeanControllerTableBase {
|
|
29
32
|
constructor(...args) {
|
|
30
33
|
super(...args);
|
|
@@ -78,6 +81,7 @@ var ControllerTable = (_dec$2 = Controller(), _dec2$2 = BeanInfo({ module: "a-ta
|
|
|
78
81
|
enableMultiSort: false,
|
|
79
82
|
enableSortingRemoval: false,
|
|
80
83
|
enableRowSelection: (row) => self._canSelectRow(row),
|
|
84
|
+
enableMultiRowSelection: this.$props.selectionMode !== "single",
|
|
81
85
|
state: {
|
|
82
86
|
get sorting() {
|
|
83
87
|
return self.sorting;
|
|
@@ -160,7 +164,8 @@ var ControllerTable = (_dec$2 = Controller(), _dec2$2 = BeanInfo({ module: "a-ta
|
|
|
160
164
|
_canSelectRow(row) {
|
|
161
165
|
const enableRowSelection = this.$props.enableRowSelection;
|
|
162
166
|
if (!enableRowSelection) return false;
|
|
163
|
-
|
|
167
|
+
const originalId = this.$props.getRowId?.(row.original, row.index, row.getParentRow()) ?? cast(row.original).id;
|
|
168
|
+
if (isNilOrEmptyString(originalId)) return false;
|
|
164
169
|
return typeof enableRowSelection === "function" ? enableRowSelection(row) : true;
|
|
165
170
|
}
|
|
166
171
|
_getColumnPinning() {
|
|
@@ -348,7 +353,9 @@ var ControllerTable = (_dec$2 = Controller(), _dec2$2 = BeanInfo({ module: "a-ta
|
|
|
348
353
|
}, _ControllerTable.$propsDefault = {}, _ControllerTable)) || _class$2) || _class$2);
|
|
349
354
|
//#endregion
|
|
350
355
|
//#region src/component/table/render.tsx
|
|
351
|
-
var _dec$1
|
|
356
|
+
var _dec$1;
|
|
357
|
+
var _dec2$1;
|
|
358
|
+
var _class$1;
|
|
352
359
|
var RenderTable = (_dec$1 = Render(), _dec2$1 = BeanInfo({ module: "a-table" }), _dec$1(_class$1 = _dec2$1(_class$1 = class RenderTable extends BeanRenderBase {
|
|
353
360
|
_getColumnStyle(column) {
|
|
354
361
|
const rest = column.columnDef.meta?.rest;
|
|
@@ -366,13 +373,14 @@ var RenderTable = (_dec$1 = Render(), _dec2$1 = BeanInfo({ module: "a-table" }),
|
|
|
366
373
|
}
|
|
367
374
|
_renderTableDefault() {
|
|
368
375
|
const table = this.table;
|
|
376
|
+
const selectionMode = this.$props.selectionMode ?? "multiple";
|
|
369
377
|
return createVNode("table", { "class": "table" }, [createVNode("thead", null, [createVNode("tr", null, [table.getFlatHeaders().map((header) => {
|
|
370
378
|
const column = header.column;
|
|
371
379
|
const canSort = column.getCanSort();
|
|
372
380
|
const sorted = column.getIsSorted();
|
|
373
381
|
const fixed = column.getIsPinned();
|
|
374
382
|
const headerDefinition = column.columnDef.header;
|
|
375
|
-
const headerContent = column.id === "$$selection" ? createVNode("input", {
|
|
383
|
+
const headerContent = column.id === "$$selection" ? selectionMode === "single" ? null : createVNode("input", {
|
|
376
384
|
"type": "checkbox",
|
|
377
385
|
"checked": table.getIsAllPageRowsSelected(),
|
|
378
386
|
"indeterminate": table.getIsSomePageRowsSelected(),
|
|
@@ -416,7 +424,7 @@ var RenderTable = (_dec$1 = Render(), _dec2$1 = BeanInfo({ module: "a-table" }),
|
|
|
416
424
|
"class": column.getIsPinned() ? "bg-base-100" : void 0,
|
|
417
425
|
"style": this._getColumnStyle(column)
|
|
418
426
|
}, [selection ? createVNode("input", {
|
|
419
|
-
"type": "checkbox",
|
|
427
|
+
"type": selectionMode === "single" ? "radio" : "checkbox",
|
|
420
428
|
"checked": row.getIsSelected(),
|
|
421
429
|
"disabled": !row.getCanSelect(),
|
|
422
430
|
"aria-label": `Select row ${row.id}`,
|
|
@@ -447,7 +455,9 @@ var config = (_sys) => {
|
|
|
447
455
|
//#region src/.metadata/index.ts
|
|
448
456
|
/** config: end */
|
|
449
457
|
/** scope: begin */
|
|
450
|
-
var _dec
|
|
458
|
+
var _dec;
|
|
459
|
+
var _dec2;
|
|
460
|
+
var _class;
|
|
451
461
|
var components = { "table": ZTable };
|
|
452
462
|
var ScopeModuleATable = (_dec = Scope(), _dec2 = BeanInfo({ module: "a-table" }), _dec(_class = _dec2(_class = class ScopeModuleATable extends BeanScopeBase {}) || _class) || _class);
|
|
453
463
|
/** scope: end */
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["celEnvBase","isNilOrEmptyString","createColumnHelper","functionalUpdate","getCoreRowModel","appResource","beanFullNameFromOnionName","cast","deepEqual","deepExtend","objectAssignReactive","isJsxComponent","ZovaJsx","Controller","BeanControllerTableBase","TableColumnIdSelection","ControllerTable","_dec","_dec2","__z_BeanInfo","module","_class","_ControllerTable","constructor","args","properties","columns","tableMeta","zovaJsx","columnCelEnv","__init__","bean","_setBean","_getColumnCelEnv","_newBeanSimple","undefined","_createProperties","refreshMeta","$watch","$props","schema","newValue","oldValue","enableRowSelection","_createTable","data","sorting","rowSelection","_createTableMeta","_createColumns","table","setColumnPinning","_getColumnPinning","self","tableOptions","getRowId","originalRow","index","parent","_getRowId","renderFallbackValue","scope","config","manualPagination","manualSorting","enableMultiSort","enableSortingRemoval","row","_canSelectRow","state","onSortingChange","updater","slice","onRowSelectionChange","initialState","columnPinning","$useTable","getColumns","_createColumnsMiddle","key","render","columnScope","getColumnScope","jsxRenderContext","getColumnJsxRenderContext","visible","columnProps","getColumnComponentPropsTop","_createColumnRender","columnHelper","display","id","header","cell","size","enableSorting","meta","rest","fixed","width","align","property","push","accessor","_props","title","props","renders","_isOrderable","sortDescFirst","String","originalId","original","getParentRow","left","right","schemaOrder","keys","schemaKey","schemaKeys","some","Object","prototype","hasOwnProperty","call","$computed","$sdk","loadSchemaProperties","promises","res","Promise","all","filter","_item","item","forEach","celScope","app","ctx","$scene","$host","$celScope","$jsx","$$table","getCellJsxRenderContext","cellContext","cellRenderPrepare","Array","isArray","renderProviders","map","getRenderProvider","renderProvider","includes","_getBean","renderContext","beanInstance","beanOptions","getBean","onionOptions","options","checkVisible","_cellRender","cellRender","cellScope","_getBeanSyncOnly","cellProps","setTransientObject","getValue","name","_cellRenderInner","value","fallbackValue","cellProps2","renderJsxProps","class","style","$cssMerge","$style","children","length","renderJsxChildrenDirect","getColumnProperty","find","celEnv","clone","registerFunction","transientObject","defaultValue","scopeExtra","tableScope","_getColumnComponentPropsTopByRest","_renderContext","evaluateExpression","assign","$propsDefault","FlexRender","BeanRenderBase","Render","TableColumnIdSelection","RenderTable","_dec","_dec2","__z_BeanInfo","module","_class","_getColumnStyle","column","rest","columnDef","meta","fixed","getIsPinned","width","undefined","minWidth","textAlign","align","position","left","getStart","right","getAfter","zIndex","_renderTableDefault","table","_createVNode","getFlatHeaders","map","header","canSort","getCanSort","sorted","getIsSorted","headerDefinition","selection","id","headerContent","getIsAllPageRowsSelected","getIsSomePageRowsSelected","getRowModel","rows","every","row","getCanSelect","getToggleAllPageRowsSelectedHandler","getContext","sortAria","sortIcon","getToggleSortingHandler","getIsSelected","getVisibleCells","cell","getToggleSelectedHandler","render","$slotDefault"],"sources":["../src/lib/beanControllerTableBase.ts","../src/types/table.ts","../src/component/table/controller.tsx","../src/component/table/render.tsx","../src/.metadata/component/table.ts","../src/config/config.ts","../src/.metadata/index.ts","../src/lib/beanControllerPageTableBase.ts","../src/lib/tableCell.ts"],"sourcesContent":["import { useVueTable } from '@tanstack/vue-table';\nimport { markRaw } from 'vue';\nimport { BeanControllerBase } from 'zova';\nexport class BeanControllerTableBase extends BeanControllerBase {\n constructor(...args) {\n super(...args);\n this.table = void 0;\n }\n $useTable(initialOptions) {\n return this.ctx.util.instanceScope(() => {\n return markRaw(useVueTable(initialOptions));\n });\n }\n async refreshMeta() {\n throw new Error('should implement refreshMeta');\n }\n}","export const TableColumnIdSelection = '$$selection';","import type {\n IResourceTableActionRowOptionsBase,\n ISchemaObjectExtensionField,\n ISchemaObjectExtensionFieldRest,\n TypeTableCellRenderComponent,\n TypeTableCellRenderComponentProvider,\n} from 'zova-module-a-openapi';\n\nimport { celEnvBase, isNilOrEmptyString } from '@cabloy/utils';\nimport {\n CellContext,\n createColumnHelper,\n functionalUpdate,\n getCoreRowModel,\n OnChangeFn,\n Row,\n RowSelectionState,\n SortingState,\n TableOptionsWithReactiveData,\n} from '@tanstack/vue-table';\nimport { SchemaObject } from 'openapi3-ts/oas31';\nimport { VNode } from 'vue';\nimport {\n appResource,\n beanFullNameFromOnionName,\n cast,\n deepEqual,\n deepExtend,\n objectAssignReactive,\n} from 'zova';\nimport { isJsxComponent, ZovaJsx } from 'zova-jsx';\nimport { Controller } from 'zova-module-a-bean';\n\nimport type { ITableMeta, TypeColumn, TypeTableGetColumns } from '../../types/table.js';\nimport type {\n IDecoratorTableCellOptions,\n IJsxRenderContextTableCell,\n ITableCellRender,\n} from '../../types/tableCell.js';\nimport type {\n IJsxRenderContextTableColumn,\n ITableCellRenderColumnProps,\n ITableCellScope,\n ITableColumnScope,\n ITableScope,\n TypeTableCellRender,\n} from '../../types/tableColumn.js';\n\nimport { BeanControllerTableBase } from '../../lib/beanControllerTableBase.js';\nimport { TableColumnIdSelection } from '../../types/table.js';\nimport { ITableCellRenderColumnOptions } from '../../types/tableColumn.js';\n\nexport interface ControllerTableProps<TData extends {} = {}> {\n data?: TData[];\n schema?: SchemaObject;\n schemaOrder?: SchemaObject;\n sorting?: SortingState;\n onSortingChange?: OnChangeFn<SortingState>;\n enableRowSelection?: boolean | ((row: Row<TData>) => boolean);\n rowSelection?: RowSelectionState;\n onRowSelectionChange?: OnChangeFn<RowSelectionState>;\n tableScope?: ITableScope;\n getColumns?: TypeTableGetColumns<TData>;\n slotDefault?: (table: ControllerTable<TData>) => VNode;\n getRowId?: (originalRow: TData, index: number, parent?: Row<TData>) => string;\n}\n\n@Controller()\nexport class ControllerTable<TData extends {} = {}> extends BeanControllerTableBase<TData> {\n static $propsDefault = {};\n\n // table: TypeTable<TData>; // in BeanControllerTableBase\n\n properties: ISchemaObjectExtensionField[] | undefined;\n columns: TypeColumn<TData>[];\n tableMeta: ITableMeta<TData>;\n zovaJsx: ZovaJsx;\n columnCelEnv: typeof celEnvBase;\n\n protected async __init__() {\n this.bean._setBean('$$table', this);\n // jsx\n this.columnCelEnv = this._getColumnCelEnv();\n this.zovaJsx = this.bean._newBeanSimple(ZovaJsx, false, undefined, this.columnCelEnv);\n // properties\n this._createProperties();\n // tableMeta/columns\n await this.refreshMeta();\n // watch\n this.$watch(\n () => this.$props.schema,\n async (newValue, oldValue) => {\n if (deepEqual(newValue, oldValue)) return;\n await this.refreshMeta();\n },\n );\n this.$watch(\n () => this.$props.enableRowSelection,\n async (newValue, oldValue) => {\n if (newValue === oldValue) return;\n await this.refreshMeta();\n },\n );\n // table\n this._createTable();\n }\n\n public get schema() {\n return this.$props.schema;\n }\n\n public get data() {\n return this.$props.data;\n }\n\n public get sorting() {\n return this.$props.sorting ?? [];\n }\n\n public get rowSelection() {\n return this.$props.rowSelection ?? {};\n }\n\n public async refreshMeta() {\n this.tableMeta = await this._createTableMeta();\n this.columns = await this._createColumns();\n this.table?.setColumnPinning(this._getColumnPinning());\n }\n\n private _createTable() {\n // eslint-disable-next-line\n const self = this;\n const tableOptions: TableOptionsWithReactiveData<TData> = {\n getRowId: (originalRow, index, parent) => this._getRowId(originalRow, index, parent),\n getCoreRowModel: getCoreRowModel(),\n renderFallbackValue: this.scope.config.renderFallbackValue,\n manualPagination: true,\n manualSorting: true,\n enableMultiSort: false,\n enableSortingRemoval: false,\n enableRowSelection: row => self._canSelectRow(row),\n state: {\n get sorting() {\n return self.sorting;\n },\n get rowSelection() {\n return self.rowSelection;\n },\n },\n onSortingChange: updater => {\n const sorting = functionalUpdate(updater, self.sorting).slice(0, 1);\n self.$props.onSortingChange?.(sorting);\n },\n onRowSelectionChange: updater => {\n const rowSelection = functionalUpdate(updater, self.rowSelection);\n self.$props.onRowSelectionChange?.(rowSelection);\n },\n get initialState() {\n const columnPinning = self._getColumnPinning();\n return { columnPinning };\n },\n get data() {\n return self.data || [];\n },\n get columns() {\n return self.columns;\n },\n };\n this.table = this.$useTable(tableOptions);\n this.table.setColumnPinning(this._getColumnPinning());\n }\n\n private async _createColumns() {\n if (!this.properties) return [];\n const columns = !this.$props.getColumns\n ? await this._createColumnsMiddle(this.tableMeta.properties)\n : await this.$props.getColumns(\n async properties => {\n return await this._createColumnsMiddle(properties ?? this.tableMeta.properties);\n },\n async (\n key: string,\n render: TypeTableCellRenderComponent,\n ): Promise<TypeTableCellRender<TData, any> | undefined> => {\n // columnScope\n const columnScope = this.getColumnScope(key);\n // renderContext\n const jsxRenderContext = this.getColumnJsxRenderContext(columnScope);\n // columnProps\n const { visible, columnProps } = this.getColumnComponentPropsTop(\n key,\n columnScope,\n jsxRenderContext,\n );\n // visible\n if (visible === false) return;\n return await this._createColumnRender(\n render,\n columnProps,\n columnScope,\n jsxRenderContext,\n );\n },\n this,\n );\n if (!this.$props.enableRowSelection) return columns;\n const columnHelper = createColumnHelper<TData>();\n return [\n columnHelper.display({\n id: TableColumnIdSelection,\n header: '',\n cell: '',\n size: 48,\n enableSorting: false,\n meta: { rest: { fixed: 'left', width: 48, align: 'center' } },\n }),\n ...columns,\n ];\n }\n\n private async _createColumnsMiddle(\n properties: ISchemaObjectExtensionField[],\n ): Promise<TypeColumn<TData>[]> {\n const tableMeta = this.tableMeta;\n const columnHelper = createColumnHelper<TData>();\n const columns: TypeColumn<TData>[] = [];\n for (const property of properties) {\n const key = property.key!;\n columns.push(\n columnHelper.accessor(key as any, {\n id: key,\n header: _props => {\n return property?.title || key;\n },\n cell: props => tableMeta.renders[key](props),\n size: property.rest?.width,\n enableSorting: property.rest?.enableSorting === true && this._isOrderable(property),\n sortDescFirst: property.rest?.sortDescFirst === true,\n meta: { rest: property.rest },\n }),\n );\n }\n return columns;\n }\n\n private _getRowId(originalRow: TData, index: number, parent?: Row<TData>) {\n const id = this.$props.getRowId?.(originalRow, index, parent) ?? cast(originalRow).id;\n if (isNilOrEmptyString(id)) {\n return `__unselectable_${parent ? `${parent.id}.` : ''}${index}`;\n }\n return String(id);\n }\n\n private _canSelectRow(row: Row<TData>) {\n const enableRowSelection = this.$props.enableRowSelection;\n if (!enableRowSelection) return false;\n const originalId =\n this.$props.getRowId?.(row.original, row.index, row.getParentRow()) ?? cast(row.original).id;\n if (isNilOrEmptyString(originalId)) return false;\n return typeof enableRowSelection === 'function' ? enableRowSelection(row) : true;\n }\n\n private _getColumnPinning() {\n const left: string[] = this.$props.enableRowSelection ? [TableColumnIdSelection] : [];\n const right: string[] = [];\n for (const property of this.tableMeta?.properties ?? []) {\n const fixed = property.rest?.fixed;\n if (fixed === 'left') left.push(property.key!);\n if (fixed === 'right') right.push(property.key!);\n }\n return { left, right };\n }\n\n private _isOrderable(property: ISchemaObjectExtensionField) {\n const properties = this.$props.schemaOrder?.properties;\n if (!properties) return false;\n const keys = [property.key, property.schemaKey, ...(property.schemaKeys ?? [])];\n return keys.some(key => key && Object.prototype.hasOwnProperty.call(properties, key));\n }\n\n private _createProperties() {\n this.properties = this.$computed(() => {\n return this.$sdk.loadSchemaProperties(this.schema, 'table');\n });\n }\n\n private async _createTableMeta() {\n let properties: ISchemaObjectExtensionField[] = [];\n const renders: Record<string, TypeTableCellRender<TData>> = {};\n if (!this.properties) return { properties, renders };\n const promises: Promise<any>[] = [];\n for (const property of this.properties) {\n const key = property.key!;\n // columnScope\n const columnScope = this.getColumnScope(key);\n // renderContext\n const jsxRenderContext = this.getColumnJsxRenderContext(columnScope);\n // columnProps\n const { visible, render, columnProps } = this.getColumnComponentPropsTop(\n key,\n columnScope,\n jsxRenderContext,\n );\n // visible\n if (visible === false) continue;\n // property\n properties.push(property);\n // render\n promises.push(this._createColumnRender(render, columnProps, columnScope, jsxRenderContext));\n }\n let res = await Promise.all(promises);\n properties = properties.filter((_item, index) => !!res[index]);\n res = res.filter(item => !!item);\n properties.forEach((item, index) => {\n renders[item.key!] = res[index];\n });\n return { properties, renders };\n }\n\n public getColumnJsxRenderContext(celScope: ITableColumnScope): IJsxRenderContextTableColumn {\n return {\n app: this.app,\n ctx: this.ctx,\n $scene: 'tableColumn',\n $host: this,\n $celScope: celScope,\n $jsx: this.zovaJsx,\n $$table: this,\n };\n }\n\n public getCellJsxRenderContext(\n celScope: ITableCellScope,\n cellContext: CellContext<TData, any>,\n ): IJsxRenderContextTableCell {\n return {\n app: this.app,\n ctx: this.ctx,\n $scene: 'tableCell',\n $host: this,\n $celScope: celScope,\n $jsx: this.zovaJsx,\n $$table: this,\n cellContext,\n };\n }\n\n public async cellRenderPrepare(\n renders: TypeTableCellRenderComponent | TypeTableCellRenderComponent[],\n ) {\n if (!Array.isArray(renders)) renders = [renders];\n const renderProviders = renders.map(item => this.getRenderProvider(item));\n const promises: Promise<any>[] = renderProviders.map(renderProvider =>\n (async () => {\n if (typeof renderProvider === 'string' && renderProvider.includes('.tableCell.')) {\n return await this.app.bean._getBean(renderProvider as any, true);\n }\n })(),\n );\n return await Promise.all(promises);\n }\n\n private async _createColumnRender(\n render: TypeTableCellRenderComponent | undefined,\n columnProps: ITableCellRenderColumnProps | undefined,\n columnScope: ITableColumnScope,\n renderContext: IJsxRenderContextTableColumn,\n ): Promise<TypeTableCellRender<TData, any> | undefined> {\n // renderProvider\n const renderProvider = this.getRenderProvider(render);\n // beanInstance\n let beanInstance: ITableCellRender | undefined;\n if (typeof renderProvider === 'string' && renderProvider.includes('.tableCell.')) {\n beanInstance = await this.app.bean._getBean(renderProvider as any, true);\n const beanOptions = appResource.getBean(renderProvider as any);\n const onionOptions = beanOptions?.options as IDecoratorTableCellOptions | undefined;\n columnProps = deepExtend({}, onionOptions, columnProps);\n // should not eval jsx columnProps\n // columnProps = this.zovaJsx.renderJsxProps(columnProps as any, {}, columnScope, renderContext) as any;\n if (\n beanInstance?.checkVisible &&\n !(await beanInstance.checkVisible(columnProps as any, renderContext))\n ) {\n return;\n }\n }\n return cellContext => {\n if (!cellContext) return;\n return this._cellRender(\n render,\n columnProps,\n columnScope,\n cellContext,\n renderProvider,\n beanInstance,\n undefined,\n undefined,\n undefined,\n );\n };\n }\n\n public cellRender(\n render: TypeTableCellRenderComponent,\n columnProps: IResourceTableActionRowOptionsBase,\n renderContext: IJsxRenderContextTableCell,\n ) {\n // render\n const cellScope = renderContext.$celScope;\n // renderProvider\n const renderProvider = this.getRenderProvider(render);\n // beanInstance\n let beanInstance: ITableCellRender | undefined;\n if (typeof renderProvider === 'string' && renderProvider.includes('.tableCell.')) {\n beanInstance = this.app.bean._getBeanSyncOnly(renderProvider as any);\n const beanOptions = appResource.getBean(renderProvider as any);\n const onionOptions = beanOptions?.options as IDecoratorTableCellOptions | undefined;\n columnProps = deepExtend({}, onionOptions, columnProps);\n // should not eval jsx columnProps\n // columnProps = this.zovaJsx.renderJsxProps(columnProps as any, {}, renderContext.$celScope, renderContext) as any;\n }\n // const cellProps = isJsxComponent(render) ? Object.assign({}, columnProps, cast(render).props) : columnProps;\n const cellProps = columnProps;\n return this._cellRender(\n render,\n columnProps as ITableCellRenderColumnProps,\n undefined,\n renderContext.cellContext,\n renderProvider,\n beanInstance,\n cellProps,\n cellScope,\n renderContext,\n );\n }\n\n private _cellRender(\n render: TypeTableCellRenderComponent | undefined,\n columnProps: ITableCellRenderColumnProps | undefined,\n columnScope: ITableColumnScope | undefined,\n cellContext: CellContext<TData, any>,\n renderProvider: TypeTableCellRenderComponentProvider,\n beanInstance: ITableCellRender | undefined,\n cellProps: any | undefined,\n cellScope: ITableCellScope | undefined,\n jsxRenderContext: IJsxRenderContextTableCell | undefined,\n ) {\n return this.zovaJsx.setTransientObject(\n {\n getValue: (name: string) => {\n return cellContext.row.getValue(name);\n },\n },\n () => {\n return this._cellRenderInner(\n render,\n columnProps,\n columnScope,\n cellContext,\n renderProvider,\n beanInstance,\n cellProps,\n cellScope,\n jsxRenderContext,\n );\n },\n );\n }\n\n private _cellRenderInner(\n render: TypeTableCellRenderComponent | undefined,\n columnProps: ITableCellRenderColumnProps | undefined,\n columnScope: ITableColumnScope | undefined,\n cellContext: CellContext<TData, any>,\n renderProvider: TypeTableCellRenderComponentProvider,\n beanInstance: ITableCellRender | undefined,\n cellProps: any | undefined,\n cellScope: ITableCellScope | undefined,\n jsxRenderContext: IJsxRenderContextTableCell | undefined,\n ) {\n // value\n const value = cellContext.getValue();\n // renderFallbackValue\n const fallbackValue = this.table.options.renderFallbackValue;\n // cellScope\n if (!cellScope) {\n cellScope = objectAssignReactive({}, columnScope, { value, fallbackValue })!;\n }\n // render: text\n if (renderProvider === ('text' as TypeTableCellRenderComponent)) {\n return isNilOrEmptyString(value) ? fallbackValue : value;\n }\n // renderContext\n if (!jsxRenderContext) {\n jsxRenderContext = this.getCellJsxRenderContext(cellScope, cellContext);\n }\n // beanInstance\n if (beanInstance) {\n // jsx: props\n if (!cellProps) {\n // cellProps = isJsxComponent(render) ? Object.assign({}, columnProps, cast(render).props) : columnProps;\n cellProps = columnProps;\n }\n const cellProps2 = this.zovaJsx.renderJsxProps(\n cellProps,\n {},\n cellScope,\n jsxRenderContext,\n ) as any;\n if (cellProps2.class || cellProps2.style) {\n cellProps2.class = jsxRenderContext.$host.$cssMerge(\n cellProps2.class,\n jsxRenderContext.$host.$style(cellProps2.style),\n );\n delete cellProps2.style;\n }\n return beanInstance.render(cellProps2, jsxRenderContext, () => {\n const children = isJsxComponent(render) && cast(render).children;\n if (children && children.length > 0) {\n return this.zovaJsx.renderJsxChildrenDirect(children, cellScope, jsxRenderContext);\n } else {\n return value;\n }\n });\n }\n // general component\n return this.zovaJsx.render(render!, {}, cellScope, jsxRenderContext);\n }\n\n public getColumnProperty(name: string): ISchemaObjectExtensionField | undefined {\n if (!this.properties) return;\n return this.properties.find(item => item.key === name);\n }\n\n private _getColumnCelEnv(): typeof celEnvBase {\n const celEnv = celEnvBase.clone();\n celEnv.registerFunction('getProperty(string):dyn', name => {\n return this.getColumnProperty(name);\n });\n celEnv.registerFunction('getValue(string):dyn', name => {\n return this.zovaJsx.transientObject.getValue(name) ?? null;\n });\n celEnv.registerFunction('getValue(string, dyn):dyn', (name, defaultValue) => {\n return this.zovaJsx.transientObject.getValue(name) ?? defaultValue;\n });\n return celEnv;\n }\n\n public getColumnScope(name: string, scopeExtra?: {}): ITableColumnScope {\n return objectAssignReactive({}, this.$props.tableScope, {\n name,\n property: this.getColumnProperty(name),\n ...scopeExtra,\n });\n }\n\n public getColumnComponentPropsTop(\n name: string,\n celScope: {},\n renderContext: {},\n ): ITableCellRenderColumnOptions {\n const property = this.getColumnProperty(name);\n const rest = property?.rest;\n return this._getColumnComponentPropsTopByRest(rest, name, celScope, renderContext);\n }\n\n private _getColumnComponentPropsTopByRest(\n rest: ISchemaObjectExtensionFieldRest | undefined,\n name: string,\n celScope: {},\n _renderContext: {},\n ): ITableCellRenderColumnOptions {\n const visible = this.zovaJsx.evaluateExpression(rest?.visible, celScope);\n const render = rest?.render as TypeTableCellRenderComponent | undefined;\n const columnProps = Object.assign({ key: name }, cast(rest)?.columnProps);\n return { visible, render, columnProps };\n }\n\n // public getRenderFlattern(render: TypeTableCellRenderComponent): TypeTableCellRenderComponent {\n // return isJsxComponent(render) ? cast(render).type : render;\n // }\n\n public getRenderProvider(\n render: TypeTableCellRenderComponent | undefined,\n ): TypeTableCellRenderComponentProvider {\n if (!render) return 'text';\n if (typeof render === 'string' && render.includes(':')) {\n return beanFullNameFromOnionName(render, 'tableCell');\n }\n return render;\n }\n}\n","import type { AriaAttributes, CSSProperties } from 'vue';\n\nimport { FlexRender } from '@tanstack/vue-table';\nimport { BeanRenderBase } from 'zova';\nimport { Render } from 'zova-module-a-bean';\n\nimport { TableColumnIdSelection } from '../../types/table.js';\n\n@Render()\nexport class RenderTable extends BeanRenderBase {\n private _getColumnStyle(column: any): CSSProperties {\n const rest = (column.columnDef.meta as any)?.rest;\n const fixed = column.getIsPinned();\n const width = rest?.width ? `${rest.width}px` : undefined;\n return {\n width,\n minWidth: width,\n textAlign: rest?.align,\n position: fixed ? ('sticky' as const) : undefined,\n left: fixed === 'left' ? `${column.getStart('left')}px` : undefined,\n right: fixed === 'right' ? `${column.getAfter('right')}px` : undefined,\n zIndex: fixed ? 1 : undefined,\n };\n }\n\n private _renderTableDefault() {\n const table = this.table;\n return (\n <table class=\"table\">\n <thead>\n <tr>\n {table.getFlatHeaders().map(header => {\n const column = header.column;\n const canSort = column.getCanSort();\n const sorted = column.getIsSorted();\n const fixed = column.getIsPinned();\n const headerDefinition = column.columnDef.header;\n const selection = column.id === TableColumnIdSelection;\n const headerContent = selection ? (\n <input\n type=\"checkbox\"\n checked={table.getIsAllPageRowsSelected()}\n indeterminate={table.getIsSomePageRowsSelected()}\n aria-checked={table.getIsSomePageRowsSelected() ? 'mixed' : undefined}\n aria-label=\"Select all rows on this page\"\n disabled={table.getRowModel().rows.every(row => !row.getCanSelect())}\n onChange={table.getToggleAllPageRowsSelectedHandler()}\n />\n ) : (\n <FlexRender render={headerDefinition} props={header.getContext()}></FlexRender>\n );\n let sortAria: AriaAttributes['aria-sort'] = 'none';\n let sortIcon: '▲' | '▼' | '↕' = '↕';\n if (sorted === 'asc') {\n sortAria = 'ascending';\n sortIcon = '▲';\n } else if (sorted === 'desc') {\n sortAria = 'descending';\n sortIcon = '▼';\n }\n return (\n <th\n key={header.id}\n class={fixed ? 'bg-base-100' : undefined}\n style={this._getColumnStyle(column)}\n aria-sort={sortAria}\n >\n {canSort ? (\n <button\n type=\"button\"\n class=\"inline-flex w-full items-center gap-1\"\n onClick={column.getToggleSortingHandler()}\n aria-label={`Sort by ${column.id}`}\n >\n {headerContent}\n <span aria-hidden=\"true\">{sortIcon}</span>\n </button>\n ) : (\n headerContent\n )}\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody>\n {table.getRowModel().rows.map(row => {\n return (\n <tr key={row.id} aria-selected={row.getIsSelected()}>\n {row.getVisibleCells().map(cell => {\n const column = cell.column;\n const selection = column.id === TableColumnIdSelection;\n return (\n <td\n key={cell.id}\n class={column.getIsPinned() ? 'bg-base-100' : undefined}\n style={this._getColumnStyle(column)}\n >\n {selection ? (\n <input\n type=\"checkbox\"\n checked={row.getIsSelected()}\n disabled={!row.getCanSelect()}\n aria-label={`Select row ${row.id}`}\n onChange={row.getToggleSelectedHandler()}\n />\n ) : (\n <FlexRender\n render={column.columnDef.cell}\n props={cell.getContext()}\n ></FlexRender>\n )}\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n </table>\n );\n }\n\n public render() {\n return this.$slotDefault ? this.$slotDefault(this) : this._renderTableDefault();\n }\n}\n","import { defineComponent } from 'vue';\nimport { prepareComponentOptions, useController } from 'zova';\nimport { ControllerTable } from '../../component/table/controller.jsx';\nimport { RenderTable } from '../../component/table/render.jsx';\nexport const ZTable = defineComponent(_props => {\n useController(ControllerTable, RenderTable, undefined);\n return () => {};\n}, prepareComponentOptions());","export const config = _sys => {\n return {\n renderFallbackValue: '--'\n };\n};","var _dec, _dec2, _class;\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\n// eslint-disable\n/** controller: begin */\nexport * from '../component/table/controller.jsx';\nimport 'zova';\n/** controller: end */\n/** controller: begin */\nimport { ControllerTable } from '../component/table/controller.jsx';\nimport 'zova';\n/** controller: end */\n\n/** components: begin */\nexport * from './component/table.js';\nimport { ZTable } from './component/table.js';\nexport const components = {\n 'table': ZTable\n};\nimport 'zova';\n/** components: end */\n/** render: begin */\nexport * from '../component/table/render.jsx';\nimport 'zova';\n/** render: end */\n/** render: begin */\nimport { RenderTable } from '../component/table/render.jsx';\nimport 'zova';\n/** render: end */\n/** config: begin */\nexport * from '../config/config.js';\n/** config: end */\n/** scope: begin */\nimport { BeanScopeBase } from 'zova';\nimport { Scope } from 'zova-module-a-bean';\nexport let ScopeModuleATable = (_dec = Scope(), _dec2 = __z_BeanInfo({\n module: \"a-table\"\n}), _dec(_class = _dec2(_class = class ScopeModuleATable extends BeanScopeBase {}) || _class) || _class);\nimport 'zova';\n\n/** scope: end */","import { useVueTable } from '@tanstack/vue-table';\nimport { markRaw } from 'vue';\nimport { BeanControllerPageBase } from 'zova';\nexport class BeanControllerPageTableBase extends BeanControllerPageBase {\n constructor(...args) {\n super(...args);\n this.table = void 0;\n }\n $useTable(initialOptions) {\n return this.ctx.util.instanceScope(() => {\n return markRaw(useVueTable(initialOptions));\n });\n }\n async refreshMeta() {\n throw new Error('should implement refreshMeta');\n }\n}","import { createBeanDecorator } from 'zova';\nexport function TableCell(options) {\n return createBeanDecorator('tableCell', 'app', true, options);\n}"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["celEnvBase","isNilOrEmptyString","createColumnHelper","functionalUpdate","getCoreRowModel","appResource","beanFullNameFromOnionName","cast","deepEqual","deepExtend","objectAssignReactive","isJsxComponent","ZovaJsx","Controller","BeanControllerTableBase","TableColumnIdSelection","ControllerTable","_dec","_dec2","__z_BeanInfo","module","_class","_ControllerTable","constructor","args","properties","columns","tableMeta","zovaJsx","columnCelEnv","__init__","bean","_setBean","_getColumnCelEnv","_newBeanSimple","undefined","_createProperties","refreshMeta","$watch","$props","schema","newValue","oldValue","enableRowSelection","_createTable","data","sorting","rowSelection","_createTableMeta","_createColumns","table","setColumnPinning","_getColumnPinning","self","tableOptions","getRowId","originalRow","index","parent","_getRowId","renderFallbackValue","scope","config","manualPagination","manualSorting","enableMultiSort","enableSortingRemoval","row","_canSelectRow","enableMultiRowSelection","selectionMode","state","onSortingChange","updater","slice","onRowSelectionChange","initialState","columnPinning","$useTable","getColumns","_createColumnsMiddle","key","render","columnScope","getColumnScope","jsxRenderContext","getColumnJsxRenderContext","visible","columnProps","getColumnComponentPropsTop","_createColumnRender","columnHelper","display","id","header","cell","size","enableSorting","meta","rest","fixed","width","align","property","push","accessor","_props","title","props","renders","_isOrderable","sortDescFirst","String","originalId","original","getParentRow","left","right","schemaOrder","keys","schemaKey","schemaKeys","some","Object","prototype","hasOwnProperty","call","$computed","$sdk","loadSchemaProperties","promises","res","Promise","all","filter","_item","item","forEach","celScope","app","ctx","$scene","$host","$celScope","$jsx","$$table","getCellJsxRenderContext","cellContext","cellRenderPrepare","Array","isArray","renderProviders","map","getRenderProvider","renderProvider","includes","_getBean","renderContext","beanInstance","beanOptions","getBean","onionOptions","options","checkVisible","_cellRender","cellRender","cellScope","_getBeanSyncOnly","cellProps","setTransientObject","getValue","name","_cellRenderInner","value","fallbackValue","cellProps2","renderJsxProps","class","style","$cssMerge","$style","children","length","renderJsxChildrenDirect","getColumnProperty","find","celEnv","clone","registerFunction","transientObject","defaultValue","scopeExtra","tableScope","_getColumnComponentPropsTopByRest","_renderContext","evaluateExpression","assign","$propsDefault","FlexRender","BeanRenderBase","Render","TableColumnIdSelection","RenderTable","_dec","_dec2","__z_BeanInfo","module","_class","_getColumnStyle","column","rest","columnDef","meta","fixed","getIsPinned","width","undefined","minWidth","textAlign","align","position","left","getStart","right","getAfter","zIndex","_renderTableDefault","table","selectionMode","$props","_createVNode","getFlatHeaders","map","header","canSort","getCanSort","sorted","getIsSorted","headerDefinition","selection","id","headerContent","getIsAllPageRowsSelected","getIsSomePageRowsSelected","getRowModel","rows","every","row","getCanSelect","getToggleAllPageRowsSelectedHandler","getContext","sortAria","sortIcon","getToggleSortingHandler","getIsSelected","getVisibleCells","cell","getToggleSelectedHandler","render","$slotDefault"],"sources":["../src/lib/beanControllerTableBase.ts","../src/types/table.ts","../src/component/table/controller.tsx","../src/component/table/render.tsx","../src/.metadata/component/table.ts","../src/config/config.ts","../src/.metadata/index.ts","../src/lib/beanControllerPageTableBase.ts","../src/lib/tableCell.ts"],"sourcesContent":["import { useVueTable } from '@tanstack/vue-table';\nimport { markRaw } from 'vue';\nimport { BeanControllerBase } from 'zova';\nexport class BeanControllerTableBase extends BeanControllerBase {\n constructor(...args) {\n super(...args);\n this.table = void 0;\n }\n $useTable(initialOptions) {\n return this.ctx.util.instanceScope(() => {\n return markRaw(useVueTable(initialOptions));\n });\n }\n async refreshMeta() {\n throw new Error('should implement refreshMeta');\n }\n}","export const TableColumnIdSelection = '$$selection';","import type {\n IResourceTableActionRowOptionsBase,\n ISchemaObjectExtensionField,\n ISchemaObjectExtensionFieldRest,\n TypeTableCellRenderComponent,\n TypeTableCellRenderComponentProvider,\n} from 'zova-module-a-openapi';\n\nimport { celEnvBase, isNilOrEmptyString } from '@cabloy/utils';\nimport {\n CellContext,\n createColumnHelper,\n functionalUpdate,\n getCoreRowModel,\n OnChangeFn,\n Row,\n RowSelectionState,\n SortingState,\n TableOptionsWithReactiveData,\n} from '@tanstack/vue-table';\nimport { SchemaObject } from 'openapi3-ts/oas31';\nimport { VNode } from 'vue';\nimport {\n appResource,\n beanFullNameFromOnionName,\n cast,\n deepEqual,\n deepExtend,\n objectAssignReactive,\n} from 'zova';\nimport { isJsxComponent, ZovaJsx } from 'zova-jsx';\nimport { Controller } from 'zova-module-a-bean';\n\nimport type { ITableMeta, TypeColumn, TypeTableGetColumns } from '../../types/table.js';\nimport type {\n IDecoratorTableCellOptions,\n IJsxRenderContextTableCell,\n ITableCellRender,\n} from '../../types/tableCell.js';\nimport type {\n IJsxRenderContextTableColumn,\n ITableCellRenderColumnProps,\n ITableCellScope,\n ITableColumnScope,\n ITableScope,\n TypeTableCellRender,\n} from '../../types/tableColumn.js';\n\nimport { BeanControllerTableBase } from '../../lib/beanControllerTableBase.js';\nimport { TableColumnIdSelection } from '../../types/table.js';\nimport { ITableCellRenderColumnOptions } from '../../types/tableColumn.js';\n\nexport interface ControllerTableProps<TData extends {} = {}> {\n data?: TData[];\n schema?: SchemaObject;\n schemaOrder?: SchemaObject;\n sorting?: SortingState;\n onSortingChange?: OnChangeFn<SortingState>;\n enableRowSelection?: boolean | ((row: Row<TData>) => boolean);\n selectionMode?: 'single' | 'multiple';\n rowSelection?: RowSelectionState;\n onRowSelectionChange?: OnChangeFn<RowSelectionState>;\n tableScope?: ITableScope;\n getColumns?: TypeTableGetColumns<TData>;\n slotDefault?: (table: ControllerTable<TData>) => VNode;\n getRowId?: (originalRow: TData, index: number, parent?: Row<TData>) => string;\n}\n\n@Controller()\nexport class ControllerTable<TData extends {} = {}> extends BeanControllerTableBase<TData> {\n static $propsDefault = {};\n\n // table: TypeTable<TData>; // in BeanControllerTableBase\n\n properties: ISchemaObjectExtensionField[] | undefined;\n columns: TypeColumn<TData>[];\n tableMeta: ITableMeta<TData>;\n zovaJsx: ZovaJsx;\n columnCelEnv: typeof celEnvBase;\n\n protected async __init__() {\n this.bean._setBean('$$table', this);\n // jsx\n this.columnCelEnv = this._getColumnCelEnv();\n this.zovaJsx = this.bean._newBeanSimple(ZovaJsx, false, undefined, this.columnCelEnv);\n // properties\n this._createProperties();\n // tableMeta/columns\n await this.refreshMeta();\n // watch\n this.$watch(\n () => this.$props.schema,\n async (newValue, oldValue) => {\n if (deepEqual(newValue, oldValue)) return;\n await this.refreshMeta();\n },\n );\n this.$watch(\n () => this.$props.enableRowSelection,\n async (newValue, oldValue) => {\n if (newValue === oldValue) return;\n await this.refreshMeta();\n },\n );\n // table\n this._createTable();\n }\n\n public get schema() {\n return this.$props.schema;\n }\n\n public get data() {\n return this.$props.data;\n }\n\n public get sorting() {\n return this.$props.sorting ?? [];\n }\n\n public get rowSelection() {\n return this.$props.rowSelection ?? {};\n }\n\n public async refreshMeta() {\n this.tableMeta = await this._createTableMeta();\n this.columns = await this._createColumns();\n this.table?.setColumnPinning(this._getColumnPinning());\n }\n\n private _createTable() {\n // eslint-disable-next-line\n const self = this;\n const tableOptions: TableOptionsWithReactiveData<TData> = {\n getRowId: (originalRow, index, parent) => this._getRowId(originalRow, index, parent),\n getCoreRowModel: getCoreRowModel(),\n renderFallbackValue: this.scope.config.renderFallbackValue,\n manualPagination: true,\n manualSorting: true,\n enableMultiSort: false,\n enableSortingRemoval: false,\n enableRowSelection: row => self._canSelectRow(row),\n enableMultiRowSelection: this.$props.selectionMode !== 'single',\n state: {\n get sorting() {\n return self.sorting;\n },\n get rowSelection() {\n return self.rowSelection;\n },\n },\n onSortingChange: updater => {\n const sorting = functionalUpdate(updater, self.sorting).slice(0, 1);\n self.$props.onSortingChange?.(sorting);\n },\n onRowSelectionChange: updater => {\n const rowSelection = functionalUpdate(updater, self.rowSelection);\n self.$props.onRowSelectionChange?.(rowSelection);\n },\n get initialState() {\n const columnPinning = self._getColumnPinning();\n return { columnPinning };\n },\n get data() {\n return self.data || [];\n },\n get columns() {\n return self.columns;\n },\n };\n this.table = this.$useTable(tableOptions);\n this.table.setColumnPinning(this._getColumnPinning());\n }\n\n private async _createColumns() {\n if (!this.properties) return [];\n const columns = !this.$props.getColumns\n ? await this._createColumnsMiddle(this.tableMeta.properties)\n : await this.$props.getColumns(\n async properties => {\n return await this._createColumnsMiddle(properties ?? this.tableMeta.properties);\n },\n async (\n key: string,\n render: TypeTableCellRenderComponent,\n ): Promise<TypeTableCellRender<TData, any> | undefined> => {\n // columnScope\n const columnScope = this.getColumnScope(key);\n // renderContext\n const jsxRenderContext = this.getColumnJsxRenderContext(columnScope);\n // columnProps\n const { visible, columnProps } = this.getColumnComponentPropsTop(\n key,\n columnScope,\n jsxRenderContext,\n );\n // visible\n if (visible === false) return;\n return await this._createColumnRender(\n render,\n columnProps,\n columnScope,\n jsxRenderContext,\n );\n },\n this,\n );\n if (!this.$props.enableRowSelection) return columns;\n const columnHelper = createColumnHelper<TData>();\n return [\n columnHelper.display({\n id: TableColumnIdSelection,\n header: '',\n cell: '',\n size: 48,\n enableSorting: false,\n meta: { rest: { fixed: 'left', width: 48, align: 'center' } },\n }),\n ...columns,\n ];\n }\n\n private async _createColumnsMiddle(\n properties: ISchemaObjectExtensionField[],\n ): Promise<TypeColumn<TData>[]> {\n const tableMeta = this.tableMeta;\n const columnHelper = createColumnHelper<TData>();\n const columns: TypeColumn<TData>[] = [];\n for (const property of properties) {\n const key = property.key!;\n columns.push(\n columnHelper.accessor(key as any, {\n id: key,\n header: _props => {\n return property?.title || key;\n },\n cell: props => tableMeta.renders[key](props),\n size: property.rest?.width,\n enableSorting: property.rest?.enableSorting === true && this._isOrderable(property),\n sortDescFirst: property.rest?.sortDescFirst === true,\n meta: { rest: property.rest },\n }),\n );\n }\n return columns;\n }\n\n private _getRowId(originalRow: TData, index: number, parent?: Row<TData>) {\n const id = this.$props.getRowId?.(originalRow, index, parent) ?? cast(originalRow).id;\n if (isNilOrEmptyString(id)) {\n return `__unselectable_${parent ? `${parent.id}.` : ''}${index}`;\n }\n return String(id);\n }\n\n private _canSelectRow(row: Row<TData>) {\n const enableRowSelection = this.$props.enableRowSelection;\n if (!enableRowSelection) return false;\n const originalId =\n this.$props.getRowId?.(row.original, row.index, row.getParentRow()) ?? cast(row.original).id;\n if (isNilOrEmptyString(originalId)) return false;\n return typeof enableRowSelection === 'function' ? enableRowSelection(row) : true;\n }\n\n private _getColumnPinning() {\n const left: string[] = this.$props.enableRowSelection ? [TableColumnIdSelection] : [];\n const right: string[] = [];\n for (const property of this.tableMeta?.properties ?? []) {\n const fixed = property.rest?.fixed;\n if (fixed === 'left') left.push(property.key!);\n if (fixed === 'right') right.push(property.key!);\n }\n return { left, right };\n }\n\n private _isOrderable(property: ISchemaObjectExtensionField) {\n const properties = this.$props.schemaOrder?.properties;\n if (!properties) return false;\n const keys = [property.key, property.schemaKey, ...(property.schemaKeys ?? [])];\n return keys.some(key => key && Object.prototype.hasOwnProperty.call(properties, key));\n }\n\n private _createProperties() {\n this.properties = this.$computed(() => {\n return this.$sdk.loadSchemaProperties(this.schema, 'table');\n });\n }\n\n private async _createTableMeta() {\n let properties: ISchemaObjectExtensionField[] = [];\n const renders: Record<string, TypeTableCellRender<TData>> = {};\n if (!this.properties) return { properties, renders };\n const promises: Promise<any>[] = [];\n for (const property of this.properties) {\n const key = property.key!;\n // columnScope\n const columnScope = this.getColumnScope(key);\n // renderContext\n const jsxRenderContext = this.getColumnJsxRenderContext(columnScope);\n // columnProps\n const { visible, render, columnProps } = this.getColumnComponentPropsTop(\n key,\n columnScope,\n jsxRenderContext,\n );\n // visible\n if (visible === false) continue;\n // property\n properties.push(property);\n // render\n promises.push(this._createColumnRender(render, columnProps, columnScope, jsxRenderContext));\n }\n let res = await Promise.all(promises);\n properties = properties.filter((_item, index) => !!res[index]);\n res = res.filter(item => !!item);\n properties.forEach((item, index) => {\n renders[item.key!] = res[index];\n });\n return { properties, renders };\n }\n\n public getColumnJsxRenderContext(celScope: ITableColumnScope): IJsxRenderContextTableColumn {\n return {\n app: this.app,\n ctx: this.ctx,\n $scene: 'tableColumn',\n $host: this,\n $celScope: celScope,\n $jsx: this.zovaJsx,\n $$table: this,\n };\n }\n\n public getCellJsxRenderContext(\n celScope: ITableCellScope,\n cellContext: CellContext<TData, any>,\n ): IJsxRenderContextTableCell {\n return {\n app: this.app,\n ctx: this.ctx,\n $scene: 'tableCell',\n $host: this,\n $celScope: celScope,\n $jsx: this.zovaJsx,\n $$table: this,\n cellContext,\n };\n }\n\n public async cellRenderPrepare(\n renders: TypeTableCellRenderComponent | TypeTableCellRenderComponent[],\n ) {\n if (!Array.isArray(renders)) renders = [renders];\n const renderProviders = renders.map(item => this.getRenderProvider(item));\n const promises: Promise<any>[] = renderProviders.map(renderProvider =>\n (async () => {\n if (typeof renderProvider === 'string' && renderProvider.includes('.tableCell.')) {\n return await this.app.bean._getBean(renderProvider as any, true);\n }\n })(),\n );\n return await Promise.all(promises);\n }\n\n private async _createColumnRender(\n render: TypeTableCellRenderComponent | undefined,\n columnProps: ITableCellRenderColumnProps | undefined,\n columnScope: ITableColumnScope,\n renderContext: IJsxRenderContextTableColumn,\n ): Promise<TypeTableCellRender<TData, any> | undefined> {\n // renderProvider\n const renderProvider = this.getRenderProvider(render);\n // beanInstance\n let beanInstance: ITableCellRender | undefined;\n if (typeof renderProvider === 'string' && renderProvider.includes('.tableCell.')) {\n beanInstance = await this.app.bean._getBean(renderProvider as any, true);\n const beanOptions = appResource.getBean(renderProvider as any);\n const onionOptions = beanOptions?.options as IDecoratorTableCellOptions | undefined;\n columnProps = deepExtend({}, onionOptions, columnProps);\n // should not eval jsx columnProps\n // columnProps = this.zovaJsx.renderJsxProps(columnProps as any, {}, columnScope, renderContext) as any;\n if (\n beanInstance?.checkVisible &&\n !(await beanInstance.checkVisible(columnProps as any, renderContext))\n ) {\n return;\n }\n }\n return cellContext => {\n if (!cellContext) return;\n return this._cellRender(\n render,\n columnProps,\n columnScope,\n cellContext,\n renderProvider,\n beanInstance,\n undefined,\n undefined,\n undefined,\n );\n };\n }\n\n public cellRender(\n render: TypeTableCellRenderComponent,\n columnProps: IResourceTableActionRowOptionsBase,\n renderContext: IJsxRenderContextTableCell,\n ) {\n // render\n const cellScope = renderContext.$celScope;\n // renderProvider\n const renderProvider = this.getRenderProvider(render);\n // beanInstance\n let beanInstance: ITableCellRender | undefined;\n if (typeof renderProvider === 'string' && renderProvider.includes('.tableCell.')) {\n beanInstance = this.app.bean._getBeanSyncOnly(renderProvider as any);\n const beanOptions = appResource.getBean(renderProvider as any);\n const onionOptions = beanOptions?.options as IDecoratorTableCellOptions | undefined;\n columnProps = deepExtend({}, onionOptions, columnProps);\n // should not eval jsx columnProps\n // columnProps = this.zovaJsx.renderJsxProps(columnProps as any, {}, renderContext.$celScope, renderContext) as any;\n }\n // const cellProps = isJsxComponent(render) ? Object.assign({}, columnProps, cast(render).props) : columnProps;\n const cellProps = columnProps;\n return this._cellRender(\n render,\n columnProps as ITableCellRenderColumnProps,\n undefined,\n renderContext.cellContext,\n renderProvider,\n beanInstance,\n cellProps,\n cellScope,\n renderContext,\n );\n }\n\n private _cellRender(\n render: TypeTableCellRenderComponent | undefined,\n columnProps: ITableCellRenderColumnProps | undefined,\n columnScope: ITableColumnScope | undefined,\n cellContext: CellContext<TData, any>,\n renderProvider: TypeTableCellRenderComponentProvider,\n beanInstance: ITableCellRender | undefined,\n cellProps: any | undefined,\n cellScope: ITableCellScope | undefined,\n jsxRenderContext: IJsxRenderContextTableCell | undefined,\n ) {\n return this.zovaJsx.setTransientObject(\n {\n getValue: (name: string) => {\n return cellContext.row.getValue(name);\n },\n },\n () => {\n return this._cellRenderInner(\n render,\n columnProps,\n columnScope,\n cellContext,\n renderProvider,\n beanInstance,\n cellProps,\n cellScope,\n jsxRenderContext,\n );\n },\n );\n }\n\n private _cellRenderInner(\n render: TypeTableCellRenderComponent | undefined,\n columnProps: ITableCellRenderColumnProps | undefined,\n columnScope: ITableColumnScope | undefined,\n cellContext: CellContext<TData, any>,\n renderProvider: TypeTableCellRenderComponentProvider,\n beanInstance: ITableCellRender | undefined,\n cellProps: any | undefined,\n cellScope: ITableCellScope | undefined,\n jsxRenderContext: IJsxRenderContextTableCell | undefined,\n ) {\n // value\n const value = cellContext.getValue();\n // renderFallbackValue\n const fallbackValue = this.table.options.renderFallbackValue;\n // cellScope\n if (!cellScope) {\n cellScope = objectAssignReactive({}, columnScope, { value, fallbackValue })!;\n }\n // render: text\n if (renderProvider === ('text' as TypeTableCellRenderComponent)) {\n return isNilOrEmptyString(value) ? fallbackValue : value;\n }\n // renderContext\n if (!jsxRenderContext) {\n jsxRenderContext = this.getCellJsxRenderContext(cellScope, cellContext);\n }\n // beanInstance\n if (beanInstance) {\n // jsx: props\n if (!cellProps) {\n // cellProps = isJsxComponent(render) ? Object.assign({}, columnProps, cast(render).props) : columnProps;\n cellProps = columnProps;\n }\n const cellProps2 = this.zovaJsx.renderJsxProps(\n cellProps,\n {},\n cellScope,\n jsxRenderContext,\n ) as any;\n if (cellProps2.class || cellProps2.style) {\n cellProps2.class = jsxRenderContext.$host.$cssMerge(\n cellProps2.class,\n jsxRenderContext.$host.$style(cellProps2.style),\n );\n delete cellProps2.style;\n }\n return beanInstance.render(cellProps2, jsxRenderContext, () => {\n const children = isJsxComponent(render) && cast(render).children;\n if (children && children.length > 0) {\n return this.zovaJsx.renderJsxChildrenDirect(children, cellScope, jsxRenderContext);\n } else {\n return value;\n }\n });\n }\n // general component\n return this.zovaJsx.render(render!, {}, cellScope, jsxRenderContext);\n }\n\n public getColumnProperty(name: string): ISchemaObjectExtensionField | undefined {\n if (!this.properties) return;\n return this.properties.find(item => item.key === name);\n }\n\n private _getColumnCelEnv(): typeof celEnvBase {\n const celEnv = celEnvBase.clone();\n celEnv.registerFunction('getProperty(string):dyn', name => {\n return this.getColumnProperty(name);\n });\n celEnv.registerFunction('getValue(string):dyn', name => {\n return this.zovaJsx.transientObject.getValue(name) ?? null;\n });\n celEnv.registerFunction('getValue(string, dyn):dyn', (name, defaultValue) => {\n return this.zovaJsx.transientObject.getValue(name) ?? defaultValue;\n });\n return celEnv;\n }\n\n public getColumnScope(name: string, scopeExtra?: {}): ITableColumnScope {\n return objectAssignReactive({}, this.$props.tableScope, {\n name,\n property: this.getColumnProperty(name),\n ...scopeExtra,\n });\n }\n\n public getColumnComponentPropsTop(\n name: string,\n celScope: {},\n renderContext: {},\n ): ITableCellRenderColumnOptions {\n const property = this.getColumnProperty(name);\n const rest = property?.rest;\n return this._getColumnComponentPropsTopByRest(rest, name, celScope, renderContext);\n }\n\n private _getColumnComponentPropsTopByRest(\n rest: ISchemaObjectExtensionFieldRest | undefined,\n name: string,\n celScope: {},\n _renderContext: {},\n ): ITableCellRenderColumnOptions {\n const visible = this.zovaJsx.evaluateExpression(rest?.visible, celScope);\n const render = rest?.render as TypeTableCellRenderComponent | undefined;\n const columnProps = Object.assign({ key: name }, cast(rest)?.columnProps);\n return { visible, render, columnProps };\n }\n\n // public getRenderFlattern(render: TypeTableCellRenderComponent): TypeTableCellRenderComponent {\n // return isJsxComponent(render) ? cast(render).type : render;\n // }\n\n public getRenderProvider(\n render: TypeTableCellRenderComponent | undefined,\n ): TypeTableCellRenderComponentProvider {\n if (!render) return 'text';\n if (typeof render === 'string' && render.includes(':')) {\n return beanFullNameFromOnionName(render, 'tableCell');\n }\n return render;\n }\n}\n","import type { AriaAttributes, CSSProperties } from 'vue';\n\nimport { FlexRender } from '@tanstack/vue-table';\nimport { BeanRenderBase } from 'zova';\nimport { Render } from 'zova-module-a-bean';\n\nimport { TableColumnIdSelection } from '../../types/table.js';\n\n@Render()\nexport class RenderTable extends BeanRenderBase {\n private _getColumnStyle(column: any): CSSProperties {\n const rest = (column.columnDef.meta as any)?.rest;\n const fixed = column.getIsPinned();\n const width = rest?.width ? `${rest.width}px` : undefined;\n return {\n width,\n minWidth: width,\n textAlign: rest?.align,\n position: fixed ? ('sticky' as const) : undefined,\n left: fixed === 'left' ? `${column.getStart('left')}px` : undefined,\n right: fixed === 'right' ? `${column.getAfter('right')}px` : undefined,\n zIndex: fixed ? 1 : undefined,\n };\n }\n\n private _renderTableDefault() {\n const table = this.table;\n const selectionMode = this.$props.selectionMode ?? 'multiple';\n return (\n <table class=\"table\">\n <thead>\n <tr>\n {table.getFlatHeaders().map(header => {\n const column = header.column;\n const canSort = column.getCanSort();\n const sorted = column.getIsSorted();\n const fixed = column.getIsPinned();\n const headerDefinition = column.columnDef.header;\n const selection = column.id === TableColumnIdSelection;\n const headerContent = selection ? (\n selectionMode === 'single' ? null : (\n <input\n type=\"checkbox\"\n checked={table.getIsAllPageRowsSelected()}\n indeterminate={table.getIsSomePageRowsSelected()}\n aria-checked={table.getIsSomePageRowsSelected() ? 'mixed' : undefined}\n aria-label=\"Select all rows on this page\"\n disabled={table.getRowModel().rows.every(row => !row.getCanSelect())}\n onChange={table.getToggleAllPageRowsSelectedHandler()}\n />\n )\n ) : (\n <FlexRender render={headerDefinition} props={header.getContext()}></FlexRender>\n );\n let sortAria: AriaAttributes['aria-sort'] = 'none';\n let sortIcon: '▲' | '▼' | '↕' = '↕';\n if (sorted === 'asc') {\n sortAria = 'ascending';\n sortIcon = '▲';\n } else if (sorted === 'desc') {\n sortAria = 'descending';\n sortIcon = '▼';\n }\n return (\n <th\n key={header.id}\n class={fixed ? 'bg-base-100' : undefined}\n style={this._getColumnStyle(column)}\n aria-sort={sortAria}\n >\n {canSort ? (\n <button\n type=\"button\"\n class=\"inline-flex w-full items-center gap-1\"\n onClick={column.getToggleSortingHandler()}\n aria-label={`Sort by ${column.id}`}\n >\n {headerContent}\n <span aria-hidden=\"true\">{sortIcon}</span>\n </button>\n ) : (\n headerContent\n )}\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody>\n {table.getRowModel().rows.map(row => {\n return (\n <tr key={row.id} aria-selected={row.getIsSelected()}>\n {row.getVisibleCells().map(cell => {\n const column = cell.column;\n const selection = column.id === TableColumnIdSelection;\n return (\n <td\n key={cell.id}\n class={column.getIsPinned() ? 'bg-base-100' : undefined}\n style={this._getColumnStyle(column)}\n >\n {selection ? (\n <input\n type={selectionMode === 'single' ? 'radio' : 'checkbox'}\n checked={row.getIsSelected()}\n disabled={!row.getCanSelect()}\n aria-label={`Select row ${row.id}`}\n onChange={row.getToggleSelectedHandler()}\n />\n ) : (\n <FlexRender\n render={column.columnDef.cell}\n props={cell.getContext()}\n ></FlexRender>\n )}\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n </table>\n );\n }\n\n public render() {\n return this.$slotDefault ? this.$slotDefault(this) : this._renderTableDefault();\n }\n}\n","import { defineComponent } from 'vue';\nimport { prepareComponentOptions, useController } from 'zova';\nimport { ControllerTable } from '../../component/table/controller.jsx';\nimport { RenderTable } from '../../component/table/render.jsx';\nexport const ZTable = defineComponent(_props => {\n useController(ControllerTable, RenderTable, undefined);\n return () => {};\n}, prepareComponentOptions());","export const config = _sys => {\n return {\n renderFallbackValue: '--'\n };\n};","var _dec, _dec2, _class;\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\n// eslint-disable\n/** controller: begin */\nexport * from '../component/table/controller.jsx';\nimport 'zova';\n/** controller: end */\n/** controller: begin */\nimport { ControllerTable } from '../component/table/controller.jsx';\nimport 'zova';\n/** controller: end */\n\n/** components: begin */\nexport * from './component/table.js';\nimport { ZTable } from './component/table.js';\nexport const components = {\n 'table': ZTable\n};\nimport 'zova';\n/** components: end */\n/** render: begin */\nexport * from '../component/table/render.jsx';\nimport 'zova';\n/** render: end */\n/** render: begin */\nimport { RenderTable } from '../component/table/render.jsx';\nimport 'zova';\n/** render: end */\n/** config: begin */\nexport * from '../config/config.js';\n/** config: end */\n/** scope: begin */\nimport { BeanScopeBase } from 'zova';\nimport { Scope } from 'zova-module-a-bean';\nexport let ScopeModuleATable = (_dec = Scope(), _dec2 = __z_BeanInfo({\n module: \"a-table\"\n}), _dec(_class = _dec2(_class = class ScopeModuleATable extends BeanScopeBase {}) || _class) || _class);\nimport 'zova';\n\n/** scope: end */","import { useVueTable } from '@tanstack/vue-table';\nimport { markRaw } from 'vue';\nimport { BeanControllerPageBase } from 'zova';\nexport class BeanControllerPageTableBase extends BeanControllerPageBase {\n constructor(...args) {\n super(...args);\n this.table = void 0;\n }\n $useTable(initialOptions) {\n return this.ctx.util.instanceScope(() => {\n return markRaw(useVueTable(initialOptions));\n });\n }\n async refreshMeta() {\n throw new Error('should implement refreshMeta');\n }\n}","import { createBeanDecorator } from 'zova';\nexport function TableCell(options) {\n return createBeanDecorator('tableCell', 'app', true, options);\n}"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -57,6 +57,7 @@ export interface ControllerTableProps<TData extends {} = {}> {
|
|
|
57
57
|
sorting?: SortingState;
|
|
58
58
|
onSortingChange?: OnChangeFn<SortingState>;
|
|
59
59
|
enableRowSelection?: boolean | ((row: Row<TData>) => boolean);
|
|
60
|
+
selectionMode?: 'single' | 'multiple';
|
|
60
61
|
rowSelection?: RowSelectionState;
|
|
61
62
|
onRowSelectionChange?: OnChangeFn<RowSelectionState>;
|
|
62
63
|
tableScope?: ITableScope;
|
|
@@ -139,6 +140,7 @@ export class ControllerTable<TData extends {} = {}> extends BeanControllerTableB
|
|
|
139
140
|
enableMultiSort: false,
|
|
140
141
|
enableSortingRemoval: false,
|
|
141
142
|
enableRowSelection: row => self._canSelectRow(row),
|
|
143
|
+
enableMultiRowSelection: this.$props.selectionMode !== 'single',
|
|
142
144
|
state: {
|
|
143
145
|
get sorting() {
|
|
144
146
|
return self.sorting;
|
|
@@ -25,6 +25,7 @@ export class RenderTable extends BeanRenderBase {
|
|
|
25
25
|
|
|
26
26
|
private _renderTableDefault() {
|
|
27
27
|
const table = this.table;
|
|
28
|
+
const selectionMode = this.$props.selectionMode ?? 'multiple';
|
|
28
29
|
return (
|
|
29
30
|
<table class="table">
|
|
30
31
|
<thead>
|
|
@@ -37,15 +38,17 @@ export class RenderTable extends BeanRenderBase {
|
|
|
37
38
|
const headerDefinition = column.columnDef.header;
|
|
38
39
|
const selection = column.id === TableColumnIdSelection;
|
|
39
40
|
const headerContent = selection ? (
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
41
|
+
selectionMode === 'single' ? null : (
|
|
42
|
+
<input
|
|
43
|
+
type="checkbox"
|
|
44
|
+
checked={table.getIsAllPageRowsSelected()}
|
|
45
|
+
indeterminate={table.getIsSomePageRowsSelected()}
|
|
46
|
+
aria-checked={table.getIsSomePageRowsSelected() ? 'mixed' : undefined}
|
|
47
|
+
aria-label="Select all rows on this page"
|
|
48
|
+
disabled={table.getRowModel().rows.every(row => !row.getCanSelect())}
|
|
49
|
+
onChange={table.getToggleAllPageRowsSelectedHandler()}
|
|
50
|
+
/>
|
|
51
|
+
)
|
|
49
52
|
) : (
|
|
50
53
|
<FlexRender render={headerDefinition} props={header.getContext()}></FlexRender>
|
|
51
54
|
);
|
|
@@ -98,7 +101,7 @@ export class RenderTable extends BeanRenderBase {
|
|
|
98
101
|
>
|
|
99
102
|
{selection ? (
|
|
100
103
|
<input
|
|
101
|
-
type=
|
|
104
|
+
type={selectionMode === 'single' ? 'radio' : 'checkbox'}
|
|
102
105
|
checked={row.getIsSelected()}
|
|
103
106
|
disabled={!row.getCanSelect()}
|
|
104
107
|
aria-label={`Select row ${row.id}`}
|