[PER-10623] Refactor timezone dropdown and integrate it into the EDTF components - #1173
Open
aasandei-vsp wants to merge 4 commits into
Open
aasandei-vsp wants to merge 4 commits into
aasandei-vsp wants to merge 4 commits into
Conversation
aasandei-vsp
marked this pull request as draft
September 11, 2026 13:42
aasandei-vsp
force-pushed
the
PER-10415-edtf-date-record-viewer
branch
from
September 11, 2026 13:49
b16b99a to
6841c81
Compare
aasandei-vsp
force-pushed
the
PER-10623-add-timezone-dropdown-final-version
branch
from
September 11, 2026 13:52
4428303 to
11c61bd
Compare
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #1173 +/- ##
==========================================
+ Coverage 53.79% 54.50% +0.71%
==========================================
Files 359 360 +1
Lines 12384 12651 +267
Branches 2256 2320 +64
==========================================
+ Hits 6662 6896 +234
- Misses 5485 5522 +37
+ Partials 237 233 -4 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
aasandei-vsp
force-pushed
the
PER-10623-add-timezone-dropdown-final-version
branch
2 times, most recently
from
September 12, 2026 13:30
2730f04 to
159e16b
Compare
aasandei-vsp
marked this pull request as ready for review
September 12, 2026 13:33
aasandei-vsp
force-pushed
the
PER-10415-edtf-date-record-viewer
branch
2 times, most recently
from
September 16, 2026 11:15
cd8e4f9 to
7a71bfa
Compare
aasandei-vsp
force-pushed
the
PER-10623-add-timezone-dropdown-final-version
branch
from
September 16, 2026 11:27
159e16b to
1ee22f5
Compare
aasandei-vsp
force-pushed
the
PER-10415-edtf-date-record-viewer
branch
from
September 17, 2026 11:26
7a71bfa to
a2a1b21
Compare
The already existing timezone was not wired to anything and it did not match the current design, so it needed to be udpated. The TimezoneService reads the tz database the browser already ships rather than carrying a list of our own, so it stays current as the database does. Also, it maps the cumbersome fields we are getting from the TZ database into clear easy to use properties for our dropdown. Issue: PER-10623
…perty. Up until now we were just adding the current timezone of the browser, which made times and even edge case dates inaccurate. With adding the timezone field, now not only we have the correct offset, but the exact tz identifier that places the date and time in a certain region. From a technical perspective, we are using the tz identifier to infer and set the offset of the date and time, only in special cases where we do not have a stored timezone, we add an approximate tz identifier based on the offset we have already saved. Issue: PER-10623
Both folders and records on stela have a timezone property, so on the web, we are using that to show the timezone(offset and tz identifier), plus we are using the patch to update the value, this includes setting it to null, in case we do not care about this property for our date. Updating this value only goes through stela, which is consistent with the way moving forward. Issue: PER-10623
The intermediary step between the presentational components and the saving/updating/deleting of the timezone is made by the sidebar and file-viewer components that simply pic up the date time object, pass it to the business layer and show any errors that might come from the BE. Issue: PER-10623
aasandei-vsp
force-pushed
the
PER-10623-add-timezone-dropdown-final-version
branch
from
September 18, 2026 09:51
1ee22f5 to
201d5ab
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Manual test cases — IANA timezone picker on the EDTF date editors
Setup: Sign in as the owner of an archive with the
edtf-datefeature flag on.You need: one record with a date and a time already set, one record with a year-only
date and no time, one record you can give a 1985 date to, one record that has a legacy
displayDTbut nodisplayTime, and one folder. Your own machine timezone matters for two of thescenarios below — note what it is before you start (macOS: System Settings → General →
Date & Time).
The visible change: three surfaces now have a timezone row, and they are not
interchangeable — the inline editor in the info sidebar, the same editor in the
full-screen file viewer's metadata panel, and the Edit date and time modal behind
More options in either of them.
The picker itself ⭐
*(run in all three — the info sidebar editor, the full-screen file viewer's editor,
and the Edit date and time modal.
Scenario — opening and reading a row
timezone row that is already filled in — an offset followed by a tz identifier,
e.g.
GMT+02:00 Africa/Blantyre.Africa,America,Antarctica,Arctic,Asia,Atlantic,Australia,Europe,Indian,Pacific.Europe/Bucharestin theEuropegroup.GMT+02:00orGMT+03:00, thenEurope/Bucharest, thenRomania.Europe/Bucharest.Scenario — search, modal only
timezone row in the Start date card.
Search city, country or offset...field above it,already focused.
bucharest.Europe/Bucharest.romania.Europe/Bucharestis still listed — searching by country workseven though the identifier never says
Romania.eastern european.Europe/Bucharestis listed — searching by the zone's display nameworks too.
new york.America/New_Yorkis listed, despite the underscore in the identifier.nowhere at all.No matching timezones.Timezone inferred from the date's own offset ⭐
Scenario — the guess appears without anyone choosing it
a timezone.
Scenario — clearing the timezone actually clears it ⭐
2026/07/15, time12:45:00PM, pickEurope/Bucharest, and save.displayTimeis2026-07-15T12:45:00+03:00.Select timezone, and look at the editor beforesaving.
Select timezone, and no offset is shown beside the timein the read-only row behind it.
displayTimeis now2026-07-15T12:45:00— no offset — and thetimezonecolumn isnull. The offset goes when the zone goes; that is what stopsthe zone coming back.
Select timezone. The zone does notreappear. The date and time are unchanged.
timezonecolumn is stillnull. A cleared zone is never quietlyreplaced by a guess.
Empty state and clearing ⭐
Scenario — a record with nothing to infer from starts empty
Select timezone, not your own timezone.The picker never pre-fills with the machine's zone — only with a zone inferred from
the record's own offset, and there is no offset here.
Scenario — choosing, then emptying again
Europe/Bucharest, then reopen the list.Select timezone.Select timezone.Select timezone. The clear survives the round trip, becauseclearing the zone also removes the offset there was to infer from.
Scenario — clear takes the timezone with it
Asia/Kathmandu, then click Clear date and time.Scenario — the clear row gets out of the way while searching
accra.Select timezoneis no longer in the list.Africa/Accrais highlighted — the first arrow press lands on amatch, not on the clear row.
Validation ⭐
Scenario — a zone on a year-only date is not saved
Select timezone.Europe/Bucharestand save.Select timezoneagain — the zone wasdeliberately not stored, because there is no time for it to qualify.
Scenario — an unreadable time disables save
1985/05/12, then set the format toggle to 24Hand type hour
99.the time field.
14.Scenario — no zone means no offset ⭐
1985/05/12and time12:45:00PM on a record with no stored timezone, and leave the timezone row alone.
1985-05-12T12:45:00with notrailing offset. It does not end in your machine's offset.
displayTime.Europe/Bucharestand watch the footer.1985-05-12T12:45:00+03:00.Select timezoneagain.The full-screen file viewer ⭐
Scenario — the picker works the same here
metadata panel.
inferred zone, exactly as in the info sidebar.
Europe/Bucharestin the modal, and save.Scenario — the legacy
displayDTno longer shows a date here ⭐displayDTbut nodisplayTime. With theedtf-dateflag on, select it in the file list and look at the info sidebar.Click to add date.Click to add date.edtf-dateflag off and open a record with only adisplayDTfull-screen.
displayDTvalue. Theold flag-off path was deliberately left alone.
The
edtf-dateflag — on and off ⭐Scenario — flag ON, what should be present
edtf-dateon, open a record in the info sidebar, then full-screen, then viaMore options.
Scenario — flag OFF, what should be absent
edtf-dateoff, hard-reload, and open a record in the info sidebar.anywhere. No
More optionsbutton.Daterow in the metadata table, no timezone row.displayDT, in both the file list and thefull-screen metadata table.
displayDT; only the flag-on picker stopped doing so.Scenario — flag OFF, what goes over the wire ⭐
edtf-dateoff, edit a date in thelegacy sidebar field on a record you reached by opening its parent folder from the
file list, and save.
load the page fresh).
flag off and hard-reload), edit only the date and save.
the editor to confirm the zone survived.
Scenario — flipping the flag does not strand data
Europe/Buchareston a record. Save.surfaced — there is nowhere to show it — and that is correct, not lost.
Europe/Bucharestis still selected.Regression — untouched paths
Cheap sanity checks; these were traced as unchanged by this PR.