<div class="row justify-content-center"> <div class="col-12 col-md-10 col-xl-8"> <h2> <i class="bi bi-box-arrow-in-left me-1"></i> Import Shifts </h2> <p class="lead">If you have an iCal/ics formatted calendar hosted elsewhere, provide its URL here to import its events.</p> <div class="row justify-content-center"> <div class="col-12 col-sm-11 col-md-10 col-lg-9 col-xxl-8"> <%= form_for :ics_import, "#", [phx_change: "validate", phx_submit: "save"], fn iimf -> %> <% show_url_error = @url_validated && !@url_valid || false %> <% valid_class = @url_validated && "is-valid" || "" %> <%= label iimf, :ics_url, "iCal/ics URL", class: "form-label" %> <div class="inner-addon left-addon mb-3"> <i class="bi bi-link icon is-left text-muted fs-5"></i> <%= url_input iimf, :ics_url, class: show_url_error && "form-control is-invalid" || "form-control #{valid_class}", phx_debounce: 500, aria_describedby: "ics-import-url-error" %> <%= if show_url_error do %> <div class="invalid-feedback d-block" id="ics-import-url-error"> Must be a valid URL </div> <% end %> </div> <%= label iimf, :time_zone, class: "form-label" %> <div class="inner-addon left-addon mb-3"> <i class="bi bi-map icon is-left text-muted fs-5"></i> <%= text_input iimf, :time_zone, value: Shift73k.app_time_zone(), class: @tz_valid && "form-control" || "form-control is-invalid", phx_debounce: 250, aria_describedby: "ics-import-tz-error", list: "tz_list" %> <datalist id="tz_list"> <%= for tz_name <- Tzdata.zone_list() do %> <option value={tz_name}></option> <% end %> </datalist> <div class="valid-feedback d-block text-primary">Type to search & select from list of known <%= link "IANA tz database", to: "https://en.wikipedia.org/wiki/List_of_tz_database_time_zones", target: "_blank" %> time zones</div> <%= if !@tz_valid do %> <div class="invalid-feedback d-block" id="ics-import-tz-error"> Invalid time zone </div> <% end %> </div> <div class="row"> <div class="col mb-3 text-end"> <%= submit "Submit", class: "btn btn-primary", disabled: !@tz_valid || !@url_valid %> </div> </div> <% end %> </div> </div> </div> </div>