Skip to content

Commit 037e5fa

Browse files
authored
fix(drp): render prefixes and suffixes correctly + test (#1730)
1 parent d1c56ac commit 037e5fa

File tree

4 files changed

+40
-4
lines changed

4 files changed

+40
-4
lines changed

src/components/date-range-picker/date-range-picker-single.spec.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -671,6 +671,7 @@ describe('Date range picker - single input', () => {
671671
content: 'Custom title',
672672
prerequisite: () => {
673673
picker.mode = 'dialog';
674+
picker.open = true;
674675
},
675676
},
676677
{
@@ -690,6 +691,7 @@ describe('Date range picker - single input', () => {
690691
slot: 'calendar-icon',
691692
tagName: 'span',
692693
content: '^',
694+
prerequisite: async () => await picker.hide(),
693695
},
694696
{
695697
slot: 'calendar-icon-open',
@@ -726,6 +728,10 @@ describe('Date range picker - single input', () => {
726728
testCase.content
727729
);
728730
expect(elements[0].tagName.toLowerCase()).to.equal(testCase.tagName);
731+
732+
const rendered = elements[0].getBoundingClientRect().width > 0;
733+
expect(rendered, `Element for slot "${testCase.slot}" is not rendered`)
734+
.to.be.true;
729735
}
730736
});
731737
});

src/components/date-range-picker/date-range-picker-two-inputs.spec.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -914,6 +914,7 @@ describe('Date range picker - two inputs', () => {
914914
content: 'Custom title',
915915
prerequisite: () => {
916916
picker.mode = 'dialog';
917+
picker.open = true;
917918
},
918919
},
919920
{
@@ -933,11 +934,13 @@ describe('Date range picker - two inputs', () => {
933934
slot: 'calendar-icon-start',
934935
tagName: 'span',
935936
content: '^',
937+
prerequisite: async () => await picker.hide(),
936938
},
937939
{
938940
slot: 'calendar-icon-end',
939941
tagName: 'span',
940942
content: '^-end',
943+
prerequisite: async () => await picker.hide(),
941944
},
942945
{
943946
slot: 'calendar-icon-open-start',
@@ -993,6 +996,10 @@ describe('Date range picker - two inputs', () => {
993996
testCase.content
994997
);
995998
expect(elements[0].tagName.toLowerCase()).to.equal(testCase.tagName);
999+
1000+
const rendered = elements[0].getBoundingClientRect().width > 0;
1001+
expect(rendered, `Element for slot "${testCase.slot}" is not rendered`)
1002+
.to.be.true;
9961003
}
9971004
});
9981005
});

src/components/date-range-picker/date-range-picker.ts

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -254,9 +254,21 @@ export default class IgcDateRangePickerComponent extends FormAssociatedRequiredM
254254
@queryAssignedElements({ slot: 'prefix' })
255255
private readonly _prefixes!: HTMLElement[];
256256

257+
@queryAssignedElements({ slot: 'prefix-start' })
258+
private readonly _startPrefixes!: HTMLElement[];
259+
260+
@queryAssignedElements({ slot: 'prefix-end' })
261+
private readonly _endPrefixes!: HTMLElement[];
262+
257263
@queryAssignedElements({ slot: 'suffix' })
258264
private readonly _suffixes!: HTMLElement[];
259265

266+
@queryAssignedElements({ slot: 'suffix-start' })
267+
private readonly _startSuffixes!: HTMLElement[];
268+
269+
@queryAssignedElements({ slot: 'suffix-end' })
270+
private readonly _endSuffixes!: HTMLElement[];
271+
260272
@queryAssignedElements({ slot: 'actions' })
261273
private readonly _actions!: HTMLElement[];
262274

@@ -582,6 +594,12 @@ export default class IgcDateRangePickerComponent extends FormAssociatedRequiredM
582594
.set(escapeKey, this._onEscapeKey);
583595
}
584596

597+
protected override createRenderRoot(): HTMLElement | DocumentFragment {
598+
const root = super.createRenderRoot();
599+
root.addEventListener('slotchange', () => this.requestUpdate());
600+
return root;
601+
}
602+
585603
protected override firstUpdated() {
586604
this._setCalendarRangeValues();
587605
this._delegateInputsValidity();
@@ -1082,8 +1100,13 @@ export default class IgcDateRangePickerComponent extends FormAssociatedRequiredM
10821100
this._displayFormat!
10831101
);
10841102
const value = picker === 'start' ? this.value?.start : this.value?.end;
1085-
const prefix = isEmpty(this._prefixes) ? undefined : 'prefix';
1086-
const suffix = isEmpty(this._suffixes) ? undefined : 'suffix';
1103+
1104+
const prefixes =
1105+
picker === 'start' ? this._startPrefixes : this._endPrefixes;
1106+
const suffixes =
1107+
picker === 'start' ? this._startSuffixes : this._endSuffixes;
1108+
const prefix = isEmpty(prefixes) ? undefined : 'prefix';
1109+
const suffix = isEmpty(suffixes) ? undefined : 'suffix';
10871110

10881111
return html`
10891112
<igc-date-time-input

stories/date-range-picker.stories.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -628,8 +628,8 @@ export const Slots: Story = {
628628
?keep-open-on-outside-click=${args.keepOpenOnOutsideClick}
629629
?keep-open-on-select=${args.keepOpenOnSelect}
630630
>
631-
<span slot="prefix-start">$</span>
632-
<span slot="suffix-start">🦀</span>
631+
<span slot="prefix">$</span>
632+
<span slot="suffix">🦀</span>
633633
634634
<span slot="calendar-icon-open-start">👩‍💻</span>
635635
<span slot="calendar-icon-start">👩‍💻</span>

0 commit comments

Comments
 (0)