Skip to content

Commit 9cc4ca1

Browse files
committed
fix: add support for special date value of 0000-00-00
Closes #153
1 parent 3c3cab0 commit 9cc4ca1

File tree

5 files changed

+35
-9
lines changed

5 files changed

+35
-9
lines changed

src/elements/internal/InternalDateControl/InternalDateControl.test.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,19 @@ describe('InternalDateControl', () => {
192192
expect(field).to.have.property('value', '2020-01-01');
193193
});
194194

195+
it('supports special value of 0000-00-00', async () => {
196+
const layout = html`<test-internal-date-control></test-internal-date-control>`;
197+
const control = await fixture<TestControl>(layout);
198+
const field = control.renderRoot.querySelector('vaadin-date-picker')!;
199+
200+
expect(field).to.have.property('value', '');
201+
202+
control.testValue = '0000-00-00';
203+
await control.requestUpdate();
204+
205+
expect(field).to.have.property('value', '');
206+
});
207+
195208
it('sets long ISO "value" on vaadin-date-picker from "_value" on itself', async () => {
196209
const layout = html`<test-internal-date-control></test-internal-date-control>`;
197210
const control = await fixture<TestControl>(layout);

src/elements/internal/InternalDateControl/InternalDateControl.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,16 @@ export class InternalDateControl extends InternalEditableControl {
3535
renderControl(): TemplateResult {
3636
let value: string;
3737

38-
if (this.format === 'unix') {
39-
value = serializeDate(new Date(((this._value as number) ?? 0) * 1000));
40-
} else if (this.format === 'iso-long') {
41-
value = serializeDate(new Date(this._value as string));
38+
if (this._value === '0000-00-00' || !this._value) {
39+
value = '';
4240
} else {
43-
value = this._value as string;
41+
if (this.format === 'unix') {
42+
value = serializeDate(new Date(((this._value as number) ?? 0) * 1000));
43+
} else if (this.format === 'iso-long') {
44+
value = serializeDate(new Date(this._value as string));
45+
} else {
46+
value = this._value as string;
47+
}
4448
}
4549

4650
return html`
@@ -56,6 +60,7 @@ export class InternalDateControl extends InternalEditableControl {
5660
.checkValidity=${this._checkValidity}
5761
.value=${value}
5862
.i18n=${this.__pickerI18n}
63+
clear-button-visible
5964
@keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.nucleon?.submit()}
6065
@change=${(evt: CustomEvent) => {
6166
const field = evt.currentTarget as DatePickerElement;

src/elements/internal/InternalDateControl/vaadinStyles.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,5 +74,13 @@ registerStyles(
7474
:host([theme~='summary-item'][readonly]) [part='value'] {
7575
margin-right: 0;
7676
}
77+
78+
:host([theme~='summary-item']) [part='clear-button'] {
79+
transform: scale(1.5);
80+
}
81+
82+
:host([has-value]) slot[name='suffix'] {
83+
display: none;
84+
}
7785
`
7886
);

src/server/hapi/createDataset.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,7 @@ export const createDataset: () => Dataset = () => ({
408408
transaction_template_id: 0,
409409
next_transaction_date: '2021-06-19T10:58:39-0700',
410410
start_date: '2023-02-11T22:45:01-0700',
411-
end_date: null,
411+
end_date: '0000-00-00',
412412
frequency: '1m',
413413
error_message: '',
414414
past_due_amount: 0,

src/static/translations/admin-subscription-form/en.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
"start-date": {
3434
"label": "Start date",
3535
"helper_text": "",
36-
"placeholder": "",
36+
"placeholder": "Not set",
3737
"display_value": "{{ value, date }}",
3838
"week": "Week",
3939
"calendar": "Calendar",
@@ -44,7 +44,7 @@
4444
"end-date": {
4545
"label": "End date",
4646
"helper_text": "",
47-
"placeholder": "",
47+
"placeholder": "Not set",
4848
"display_value": "{{ value, date }}",
4949
"week": "Week",
5050
"calendar": "Calendar",
@@ -71,7 +71,7 @@
7171
"next-transaction-date": {
7272
"label": "Next payment date",
7373
"helper_text": "",
74-
"placeholder": "",
74+
"placeholder": "Not set",
7575
"display_value": "{{ value, date }}",
7676
"week": "Week",
7777
"calendar": "Calendar",

0 commit comments

Comments
 (0)