Skip to content

Commit f34a5d9

Browse files
committed
refactor: update itemRender & dropdownRender
1 parent 06c8623 commit f34a5d9

File tree

7 files changed

+47
-21
lines changed

7 files changed

+47
-21
lines changed

antdv-demo

components/pagination/Pagination.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export const PaginationProps = () => ({
3232
locale: PropTypes.object,
3333
prefixCls: PropTypes.string,
3434
selectPrefixCls: PropTypes.string,
35-
itemRender: PropTypes.any,
35+
itemRender: PropTypes.func,
3636
role: PropTypes.string,
3737
showLessItems: PropTypes.bool,
3838
});
@@ -116,6 +116,7 @@ export default {
116116
buildOptionText: buildOptionText || this.$slots.buildOptionText,
117117
...this.$attrs,
118118
class: classNames({ mini: isSmall }, this.$attrs.class),
119+
itemRender: this.itemRender || this.$slots.itemRender,
119120
};
120121

121122
return <VcPagination {...paginationProps} />;

components/vc-pagination/Pager.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ export default {
4949
class={cls}
5050
style={style}
5151
>
52-
{this.itemRender(this.page, 'page', <a>{this.page}</a>)}
52+
{this.itemRender({ page: this.page, type: 'page', originalElement: <a>{this.page}</a> })}
5353
</li>
5454
);
5555
},

components/vc-pagination/Pagination.jsx

Lines changed: 40 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ function isInteger(value) {
1414
return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;
1515
}
1616

17-
function defaultItemRender(page, type, element) {
18-
return element;
17+
function defaultItemRender({ originalElement }) {
18+
return originalElement;
1919
}
2020

2121
function calculatePage(p, state, props) {
@@ -52,7 +52,7 @@ export default {
5252
showTotal: PropTypes.func,
5353
simple: PropTypes.bool,
5454
locale: PropTypes.object.def(LOCALE),
55-
itemRender: PropTypes.func.def(defaultItemRender),
55+
itemRender: PropTypes.func,
5656
prevIcon: PropTypes.any,
5757
nextIcon: PropTypes.any,
5858
jumpPrevIcon: PropTypes.any,
@@ -315,6 +315,7 @@ export default {
315315
if (this.hideOnSinglePage === true && this.total <= this.statePageSize) {
316316
return null;
317317
}
318+
const itemRender = this.itemRender || defaultItemRender;
318319
const props = this.$props;
319320
const locale = this.locale;
320321

@@ -368,7 +369,11 @@ export default {
368369
class={`${hasPrev ? '' : `${prefixCls}-disabled`} ${prefixCls}-prev`}
369370
aria-disabled={!this.hasPrev()}
370371
>
371-
{this.itemRender(prevPage, 'prev', this.getItemIcon('prevIcon'))}
372+
{itemRender({
373+
page: prevPage,
374+
type: 'prev',
375+
originalElement: this.getItemIcon('prevIcon'),
376+
})}
372377
</li>
373378
<li
374379
title={this.showTitle ? `${stateCurrent}/${allPages}` : null}
@@ -394,7 +399,11 @@ export default {
394399
class={`${hasNext ? '' : `${prefixCls}-disabled`} ${prefixCls}-next`}
395400
aria-disabled={!this.hasNext()}
396401
>
397-
{this.itemRender(nextPage, 'next', this.getItemIcon('nextIcon'))}
402+
{itemRender({
403+
page: nextPage,
404+
type: 'next',
405+
originalElement: this.getItemIcon('nextIcon'),
406+
})}
398407
</li>
399408
{gotoButton}
400409
</ul>
@@ -405,7 +414,7 @@ export default {
405414
locale,
406415
rootPrefixCls: prefixCls,
407416
showTitle: props.showTitle,
408-
itemRender: props.itemRender,
417+
itemRender,
409418
onClick: this.handleChange,
410419
onKeypress: this.runIfEnter,
411420
};
@@ -435,7 +444,11 @@ export default {
435444
onKeypress={this.runIfEnterJumpPrev}
436445
class={jumpPrevClassString}
437446
>
438-
{this.itemRender(this.getJumpPrevPage(), 'jump-prev', this.getItemIcon('jumpPrevIcon'))}
447+
{itemRender({
448+
page: this.getJumpPrevPage(),
449+
type: 'jump-prev',
450+
originalElement: this.getItemIcon('jumpPrevIcon'),
451+
})}
439452
</li>
440453
);
441454
let jumpNextClassString = `${prefixCls}-jump-next`;
@@ -451,7 +464,11 @@ export default {
451464
onKeypress={this.runIfEnterJumpNext}
452465
class={jumpNextClassString}
453466
>
454-
{this.itemRender(this.getJumpNextPage(), 'jump-next', this.getItemIcon('jumpNextIcon'))}
467+
{itemRender({
468+
page: this.getJumpNextPage(),
469+
type: 'jump-next',
470+
originalElement: this.getItemIcon('jumpNextIcon'),
471+
})}
455472
</li>
456473
);
457474
}
@@ -467,7 +484,7 @@ export default {
467484
page={allPages}
468485
active={false}
469486
showTitle={this.showTitle}
470-
itemRender={this.itemRender}
487+
itemRender={itemRender}
471488
/>
472489
);
473490
firstPager = (
@@ -480,7 +497,7 @@ export default {
480497
page={1}
481498
active={false}
482499
showTitle={this.showTitle}
483-
itemRender={this.itemRender}
500+
itemRender={itemRender}
484501
/>
485502
);
486503

@@ -507,7 +524,7 @@ export default {
507524
page={i}
508525
active={active}
509526
showTitle={this.showTitle}
510-
itemRender={this.itemRender}
527+
itemRender={itemRender}
511528
/>,
512529
);
513530
}
@@ -524,7 +541,7 @@ export default {
524541
class={`${prefixCls}-item-after-jump-prev`}
525542
active={false}
526543
showTitle={this.showTitle}
527-
itemRender={this.itemRender}
544+
itemRender={itemRender}
528545
/>
529546
);
530547
pagerList.unshift(jumpPrev);
@@ -541,7 +558,7 @@ export default {
541558
class={`${prefixCls}-item-before-jump-next`}
542559
active={false}
543560
showTitle={this.showTitle}
544-
itemRender={this.itemRender}
561+
itemRender={itemRender}
545562
/>
546563
);
547564
pagerList.push(jumpNext);
@@ -589,7 +606,11 @@ export default {
589606
class={`${!prevDisabled ? '' : `${prefixCls}-disabled`} ${prefixCls}-prev`}
590607
aria-disabled={prevDisabled}
591608
>
592-
{this.itemRender(prevPage, 'prev', this.getItemIcon('prevIcon'))}
609+
{itemRender({
610+
page: prevPage,
611+
type: 'prev',
612+
originalElement: this.getItemIcon('prevIcon'),
613+
})}
593614
</li>
594615
{pagerList}
595616
<li
@@ -600,7 +621,11 @@ export default {
600621
class={`${!nextDisabled ? '' : `${prefixCls}-disabled`} ${prefixCls}-next`}
601622
aria-disabled={nextDisabled}
602623
>
603-
{this.itemRender(nextPage, 'next', this.getItemIcon('nextIcon'))}
624+
{itemRender({
625+
page: nextPage,
626+
type: 'next',
627+
originalElement: this.getItemIcon('nextIcon'),
628+
})}
604629
</li>
605630
<Options
606631
disabled={disabled}

components/vc-select/Select.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ const Select = {
9898
tokenSeparators: PropTypes.arrayOf(PropTypes.string).def([]),
9999
autoClearSearchValue: PropTypes.bool.def(true),
100100
tabindex: PropTypes.any.def(0),
101-
dropdownRender: PropTypes.func.def(menu => menu),
101+
dropdownRender: PropTypes.func.def(({ menuNode }) => menuNode),
102102
// onChange: noop,
103103
// onFocus: noop,
104104
// onBlur: noop,

components/vc-select/SelectTrigger.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ export default {
131131
);
132132

133133
if (dropdownRender) {
134-
return dropdownRender(menuNode, props);
134+
return dropdownRender({ menuNode, props });
135135
}
136136
return null;
137137
},

examples/App.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
</div>
55
</template>
66
<script>
7-
import demo from '../antdv-demo/docs/mentions/demo/form';
7+
import demo from '../antdv-demo/docs/select/demo/custom-dropdown-menu';
88
export default {
99
components: {
1010
demo,

0 commit comments

Comments
 (0)