From b82c553747ca72884c12682321d67763719805a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tu=C4=9F=C3=A7e=20K=C3=BC=C3=A7=C3=BCko=C4=9Flu?= Date: Thu, 13 Apr 2023 17:42:33 +0300 Subject: [PATCH] Refactor #3832 Refactor #3833 - For DataTable & Column --- api-generator/components/column.js | 44 +++++++++++++ api-generator/components/datatable.js | 28 +++++--- components/lib/column/Column.d.ts | 72 +++++++++++++++++++++ components/lib/datatable/BodyCell.vue | 53 +++++++++++---- components/lib/datatable/ColumnFilter.vue | 39 +++++++---- components/lib/datatable/DataTable.d.ts | 25 ++++++- components/lib/datatable/DataTable.vue | 28 +++++--- components/lib/datatable/HeaderCell.vue | 44 ++++++++++--- components/lib/datatable/HeaderCheckbox.vue | 12 +++- components/lib/datatable/RowCheckbox.vue | 12 +++- components/lib/datatable/TableBody.vue | 24 ++++--- components/lib/datatable/TableHeader.vue | 6 ++ 12 files changed, 314 insertions(+), 73 deletions(-) diff --git a/api-generator/components/column.js b/api-generator/components/column.js index 380fbc8ec..243428103 100644 --- a/api-generator/components/column.js +++ b/api-generator/components/column.js @@ -289,6 +289,50 @@ const ColumnSlots = [ { name: 'filterapply', description: "Custom content for the filter menu's apply section" + }, + { + name: 'rowtogglericon', + description: 'Custom row toggler icon template.' + }, + { + name: 'roweditoriniticon', + description: 'Custom row editor init icon template.' + }, + { + name: 'roweditorsaveicon', + description: 'Custom row editor save icon template.' + }, + { + name: 'roweditorcancelicon', + description: 'Custom row editor cancel icon template.' + }, + { + name: 'filtericon', + description: 'Custom filter icon template.' + }, + { + name: 'filterclearicon', + description: 'Custom filter clear icon template.' + }, + { + name: 'filterremoveicon', + description: 'Custom filter remove icon template.' + }, + { + name: 'filteraddicon', + description: 'Custom filter add icon template.' + }, + { + name: 'sorticon', + description: 'Custom sort icon template.' + }, + { + name: 'headercheckboxicon', + description: 'Custom header checkbox icon template.' + }, + { + name: 'rowcheckboxicon', + description: 'Custom row checkbox icon template.' } ]; diff --git a/api-generator/components/datatable.js b/api-generator/components/datatable.js index a2e48a9e2..f57aa6f32 100644 --- a/api-generator/components/datatable.js +++ b/api-generator/components/datatable.js @@ -1120,31 +1120,43 @@ const DataTableEvents = [ const DataTableSlots = [ { name: 'header', - description: "Custom content for the component's header" + description: "Custom content for the component's header." }, { name: 'paginatorstart', - description: "Custom content for the component paginator's left side" + description: "Custom content for the component paginator's left side." }, { name: 'paginatorend', - description: "Custom content for the component paginator's right side" + description: "Custom content for the component paginator's right side." }, { name: 'footer', - description: "Custom content for the component's footer" + description: "Custom content for the component's footer." }, { name: 'groupheader', - description: "Custom content for the component's subgroup header" + description: "Custom content for the component's subgroup header." }, { name: 'groupfooter', - description: "Custom content for the component's subgroup footer" + description: "Custom content for the component's subgroup footer." }, { - name: 'expansion', - description: "Custom content for the component's expanded content" + name: 'loadingicon', + description: 'Custom loading icon template.' + }, + { + name: 'reorderindicatorupicon', + description: 'Custom reorder indicator up icon template.' + }, + { + name: 'reorderindicatordownicon', + description: 'Custom reorder indicator down icon template.' + }, + { + name: 'rowgrouptogglericon', + description: 'Custom rowgroup toggler icon template.' } ]; diff --git a/components/lib/column/Column.d.ts b/components/lib/column/Column.d.ts index 7bd646f7d..4a5804eab 100755 --- a/components/lib/column/Column.d.ts +++ b/components/lib/column/Column.d.ts @@ -486,6 +486,78 @@ export interface ColumnSlots { */ loadingOptions: ColumnLoadingOptions; }): VNode[]; + /** + * Custom row toggler icon template. + * @param {Object} scope - row toggler icon slot's params. + */ + rowtogglericon(scope: { + /** + * Current row expanded state. + */ + rowExpanded: boolean; + }): VNode[]; + /** + * Custom row checkbox icon template. + * @param {Object} scope - header row icon slot's params. + */ + rowcheckboxicon(scope: { + /** + * Current check state. + */ + checked: boolean; + }): VNode[]; + /** + * Custom row editor init icon template. + */ + roweditoriniticon(): VNode[]; + /** + * Custom row editor save icon template. + */ + roweditorsaveicon(): VNode[]; + /** + * Custom row editor cancel icon template. + */ + roweditorcancelicon(): VNode[]; + /** + * Custom filter icon template. + */ + filtericon(): VNode[]; + /** + * Custom filter clear icon template. + */ + filterclearicon(): VNode[]; + /** + * Custom filter remove icon template. + */ + filterremoveicon(): VNode[]; + /** + * Custom filter add icon template. + */ + filteraddicon(): VNode[]; + /** + * Custom sort icon template. + * @param {Object} scope - sort icon slot's params. + */ + sorticon(scope: { + /** + * Current sort state. + */ + sorted: boolean; + /** + * Current sort order state. + */ + sortOrder: boolean; + }): VNode[]; + /** + * Custom header checkbox icon template. + * @param {Object} scope - header checkbox icon slot's params. + */ + headercheckboxicon(scope: { + /** + * Current check state. + */ + checked: boolean; + }): VNode[]; } export interface ColumnEmits {} diff --git a/components/lib/datatable/BodyCell.vue b/components/lib/datatable/BodyCell.vue index f06159d31..9263f7ff6 100755 --- a/components/lib/datatable/BodyCell.vue +++ b/components/lib/datatable/BodyCell.vue @@ -19,25 +19,34 @@ @@ -45,6 +54,12 @@ diff --git a/components/lib/datatable/HeaderCell.vue b/components/lib/datatable/HeaderCell.vue index 673026188..15f3686e3 100644 --- a/components/lib/datatable/HeaderCell.vue +++ b/components/lib/datatable/HeaderCell.vue @@ -19,9 +19,11 @@
{{ columnProp('header') }} - + + + {{ getBadgeValue() }} - + diff --git a/components/lib/datatable/HeaderCheckbox.vue b/components/lib/datatable/HeaderCheckbox.vue index 9162d77d6..43ff66745 100755 --- a/components/lib/datatable/HeaderCheckbox.vue +++ b/components/lib/datatable/HeaderCheckbox.vue @@ -4,12 +4,13 @@
- +
diff --git a/components/lib/datatable/RowCheckbox.vue b/components/lib/datatable/RowCheckbox.vue index ac22a3767..433360637 100755 --- a/components/lib/datatable/RowCheckbox.vue +++ b/components/lib/datatable/RowCheckbox.vue @@ -4,12 +4,13 @@
- +
diff --git a/components/lib/datatable/TableBody.vue b/components/lib/datatable/TableBody.vue index 666e09b66..baa6a57db 100755 --- a/components/lib/datatable/TableBody.vue +++ b/components/lib/datatable/TableBody.vue @@ -11,7 +11,9 @@ > @@ -45,7 +47,6 @@ :rowIndex="getRowIndex(index)" :index="i" :selected="isSelected(rowData)" - :rowTogglerIcon="columnProp(col, 'expander') ? rowTogglerIcon(rowData) : null" :frozenRow="frozenRow" :rowspan="rowGroupMode === 'rowspan' ? calculateRowGroupSize(value, col, getRowIndex(index)) : null" :editMode="editMode" @@ -55,6 +56,9 @@ :virtualScrollerContentProps="virtualScrollerContentProps" :ariaControls="expandedRowId + '_' + index + '_expansion'" :name="nameAttributeSelector" + :isRowExpanded="isRowExpanded(rowData)" + :expandedRowIcon="expandedRowIcon" + :collapsedRowIcon="collapsedRowIcon" @radio-change="onRadioChange($event)" @checkbox-change="onCheckboxChange($event)" @row-toggle="onRowToggle($event)" @@ -89,6 +93,8 @@ diff --git a/components/lib/datatable/TableHeader.vue b/components/lib/datatable/TableHeader.vue index 53261751e..8fb02da17 100755 --- a/components/lib/datatable/TableHeader.vue +++ b/components/lib/datatable/TableHeader.vue @@ -35,6 +35,7 @@ @constraint-add="$emit('constraint-add', $event)" @constraint-remove="$emit('constraint-remove', $event)" @apply-click="$emit('apply-click', $event)" + :headerCheckboxIconTemplate="headerCheckboxIconTemplate" /> @@ -104,6 +105,7 @@ @constraint-add="$emit('constraint-add', $event)" @constraint-remove="$emit('constraint-remove', $event)" @apply-click="$emit('apply-click', $event)" + :headerCheckboxIconTemplate="headerCheckboxIconTemplate" /> @@ -205,6 +207,10 @@ export default { filterInputProps: { type: null, default: null + }, + headerCheckboxIconTemplate: { + type: null, + default: null } }, methods: {