Kurumsal Ürün Tasarımı · Yeni Kaynak

Duet tasarım sistemi.

ISO tarih değerleri, açık aralık doğrulaması, bileşen odaklama yöntemleri ve ayrı açık kaynak tarih seçici sınırı içeren tarih aralığı iş akışıyla Duet’in LocalTapiola renk ve boşluk ölçeklerini inceleyin.

OpenDesign Kılavuzu8 Bölüm39 Referans KaydıÖzgün Uygulama Kılavuzu
01

Duet tasarım sistemi Arayüz Önizlemesi

Gidiş ve dönüş tarihlerini belirleyin, geçersiz bir tarih aralığını sınayın ve gün sayısını dahilî olarak hesaplayın.

Seyahat dönemi planlayıcısıÖrneğin Tamamını Aç
Yerel tarih girişlerini ve doğrulanmış Duet varsayılan tema değerlerini kullanan çevrimdışı HTML yorumu; Duet takvim çalışma zamanı değildir. · Uygulama başvurusu
02

Duet tasarım sistemi Tasarım Başvurusu

Duet’in herkese açık belgelerinin anlık görüntüsü: ana sistem bileşenleri, LocalTapiola varsayılan belirteçleri ve belgelenmiş 10.7.0/CDN entegrasyonu. Ayrı @duetds/date-picker 1.x paketi değildir. Bazı radius belirteçleri hâlâ In Review olarak işaretlidir.

Varsayılan ve Turva rolleri

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
--color-primary#0077b3 LocalTapiola eylemi.
--color-primary-dark#004b81 Daha koyu etkileşim durumu.
--color-primary-darker#00619b Bağlantı rolü.
--color-primary-light#c6e1ee Aralık tonu.
--color-secondary#082a4d Gövde metni.
--color-primary-turva#e61740 Turva eylemi, ayrı tema.
--color-danger#d61c52 Doğrulama.
--radius-default4pxGiriş alanları ve kapsayıcılar.
--radius-pill20remDüğmeler.
--radius-medium8px; In ReviewÜretime hazır olduğunu iddia etmeyin.

Boşluk belirteçleri

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
--space-xxx-small2pxSıkı.
--space-xx-small4pxSıkı.
--space-x-small8pxKompakt.
--space-small12pxKüçük.
--space-medium16pxVarsayılan.
--space-large20pxBileşenler arası.
--space-x-large28pxDaha geniş aralık.
--space-xx-large36pxDüğmenin yatay iç boşluğu.
--space-xxx-large48pxBölüm.
--size-layout-max-width1110pxBelgelenmiş düzen üst sınırı.

Yazı tipi ölçeği

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
$font-size-medium16px / 1remGövde ve H5.
$font-size-large20px / 1.25remH4.
$font-size-x-large24px / 1.5remH3.
$font-size-xx-large36px / 2.25remH2.
$font-size-xxx-large48px / 3remH1.
$font-size-xxxx-large72px / 4.5remH0.

Tarih Seçici sözleşmesi

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
value / min / maxYYYY-MM-DD stringsSaklanan değer ISO biçimindedir, gösterim metni değildir.
duetChangedetail.value and detail.valueAsDateTarih seçimi olayı.
validitybadInput / valueMissing / rangeOverflow / rangeUnderflow / customErrorKabul etmeden önce inceleyin.
setFocus()Promise<void>Giriş alanına odaklanır; ana öğenin focus() metoduna değil.
show() / hide()Promise<void>Takvim ve odak yönetimi.
languageDeprecatedhtml lang kullanın.
disallow-weekendsBooleanBileşen düzeyinde devre dışı bırakma.

Eylem özellikleri

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
variation="primary"Main actionHer görünümde bir ana eylem kullanın.
submitBoolean, default falseForm gönderimini açıkça etkinleştirin.
urlAnchor destinationGezinme anlamı.
expand100% containerGeniş eylem.
themedefault / turva / inherited emptyMarka seçimi.
margin="none"Remove automatic marginUygulama, boşlukları kontrol eder.
03

Duet tasarım sistemi Eksiksiz Rehber

Bu sistemi gerçek bir arayüz için seçmeye, uygulamaya ve gözden geçirmeye yönelik pratik bir kılavuz.

DESIGN-duet.md

Eksiksiz yönlendirme, uygulama için başlangıç noktası ve kaynak bağlantıları.

Kılavuzu İndir

Duet tasarım sistemi Ana Duet sistemi ile açık kaynaklı seçici birbirinden ayrıdır

Paket sözleşmesini örneğe ekli tutun

Duet, LocalTapiola ve Turva için temalı bileşenler ve temeller sunar. Ayrı olarak yayımlanan @duetds/date-picker projesi, kapsamı daha dar bir açık kaynak dağıtımıdır. Etiket adlarının aynı olması; özelliklerinin, yerelleştirme kurulumunun veya CSS değişkenlerinin mevcut ana tasarım sistemiyle birbirinin yerine kullanılabileceği anlamına gelmez.

Bu OpenDesign kılavuzundan

Bu sayfadaki entegrasyon kodu ana sistemi hedefler. Çevrimdışı önizlemede, bağlantılı Duet belirteçlerini temel alan özgün stiller ve yerel tarih girişleri kullanılır. Takvim açılır penceresini veya klavye modelini Duet çalıştırıyormuş gibi göstermeden tarih aralığı kurallarını örnekler.

Destekleyici belirtimi okuyun

Duet tasarım sistemi Marka mavisi ile durum kırmızısının kullanım amaçları farklıdır

Tek bir vurgu rengini değiştirmek yerine tema kullanın

Varsayılan LocalTapiola teması, mavi bir eylem rengini koyu mavi gövde metniyle birleştirir. Turva'nın kendine özgü kırmızı bir eylem rengi ve ikincil metin rolü vardır. Yalnızca eylem rengini değiştirmek, temadaki diğer ilişkileri göz ardı eder. Güncel tabloda eski Turva tonları kullanımdan kaldırılmış olarak da işaretlenmiştir; geçmiş paletin tüm öğelerini kopyalamak artık geçerli olmayan yönergeleri korumak olur.

Özgün seyahat tarihi örneğimiz, sonraki eylem için maviyi; yalnızca seçilen tarih aralığının düzeltilmesi gerektiğinde kırmızıyı kullanır. Bu, bir sigorta önerisi, fiyat teklifi veya satın alma işlemi değil, bir planlama gösterimidir.

Destekleyici belirtimi okuyun

Duet tasarım sistemi 16px gövde metni hiyerarşinin temelini oluşturur

Ölçek, her yerde dev başlıklar kullanmayı gerektirmez

Duet’in tipografi tablosu büyük boyutlarda 16, 20, 24, 36, 48 ve 72px değerlerinden oluşur. Gömülü bir planlama panelinde, eylemin ve tarih etiketlerinin belirgin kalması için 24px boyutu kullanılır. Pazarlama tasarımlarına yönelik 72px boyut, kompakt bir formun varsayılanı değildir.

LocalTapiola ve Turva yazı tipi paketleri ayrı varlıklardır. Çevrimdışı yorumda sistem yedeği kullanılır; marka yazı tipi dosyaları pakete dahil değildir. Yetkili bir uygulama, seçilen yazı tipi ailesini belgelenmiş yazı tipi yolu üzerinden yüklemeli ve ardından bu aileye uygun kalınlık belirteçlerini kullanmalıdır.

Destekleyici belirtimi okuyun

Duet tasarım sistemi Gerçek 20px ve 28px adımlarını kullanın

Duet, standart sekiz piksel ölçeğini kullanmaz

Ölçekte, sık kullanılan ikinin kuvvetlerine ek olarak 12, 20, 28 ve 36px değerleri de bulunur. Sistem formunun ritmini yakalamak için bu ara aralıklar önemlidir. Geniş düzende iki alan arasındaki 20px boşluğu kullanın; alanları alt alta yerleştirirken her etiketi kendi alanıyla birlikte tutun. Örnekteki kırılma noktası uygulamaya özgü bir tercihtir.

Varsayılan kontrollerde köşe yarıçapı 4px, düğmelerde ise hap biçimli yarıçap kullanılır. Belirteç başvurusundaki bazı yeni kapsayıcı köşe yarıçapı değerleri açıkça In Review olarak işaretlenmiştir. Bu rehber, listelenen her belirteci onaylanmış gibi sunmak yerine bu durumu korur.

Destekleyici belirtimi okuyun

Duet tasarım sistemi ISO değerlerini saklayın, görünür biçimi açıklayın

Yerelleştirilmiş gösterim dizelerini veri olarak ayrıştırmayın

Bileşenin value ve sınır değerleri YYYY-MM-DD biçimindedir. Tarih seçimi olayı hem bir dize hem de bir Date nesnesi içerir. Karşılaştırma ve depolama için dizeyi kullanın; yerelleştirilmiş alan görünümü sunumla ilgili bir konudur. Belge dili, geçerli yerelleştirme giriş noktasıdır; eski language özelliği ise kullanımdan kaldırılmıştır.

Örnek, yalnızca Haziran 2027 içindeki tarihlere izin verir. Bu sabit aralık, testleri tekrarlanabilir kılar ve örneğe özgü bir kısıtlama olduğu açıkça belirtilir. Üretim formunda izin verilen aralık, ürün kuralına göre belirlenmeli ve bu kural alanın yanında açıklanmalıdır.

Destekleyici belirtimi okuyun

Duet tasarım sistemi Geçerli bir tarih, mutlaka geçerli bir aralık anlamına gelmez

Her iki alan da geçerliyse tarihlerin ilişkisini denetleyin

Bileşenin validity nesnesi, alanlardaki tekil hataları açıklar. Dönüş tarihi, gidiş tarihinden önce olsa da takvim açısından geçerli bir tarih olabilir; bu nedenle uygulama iki tarihi ayrıca denetlemelidir. Yerel örnek, anlaşılır bir hata atar ve iç giriş alanına ulaşan belgelenmiş setFocus() metodunu kullanır.

Gün sayısı başlangıç ve bitiş günlerini kapsar: gidiş ve dönüş aynı gündeyse bir takvim günü sayılır. ISO tarihlerini UTC gece yarısına dönüştürmek, yaz saati değişikliğinin bir takvim aralığını kesirli süreye çevirmesini önler. Bu hesaplama, Duet fiyatlandırma kuralı değil, uygulamaya özgü mantıktır.

  1. Eksik, hatalı biçimlendirilmiş veya sınırların dışındaki uç tarihleri reddedin.
  2. Gidiş tarihinden önce olan dönüş tarihini reddedin.
  3. Düzeltme gereken alana odağı taşıyın.
  4. Dahilî tarih aralığını yalnızca her iki denetim de başarılı olduğunda hazırlayın.

Destekleyici belirtimi okuyun

Duet tasarım sistemi Birincil eylem, formun gönderileceği anlamına gelmez

Duet, açıkça etkinleştirilen bir submit özelliği kullanır

Ana sistem düğmesi, submit ile form gönderimini etkinleştirir; varsayılanı false değeridir. Sunulan bileşim, yerel bir sonuç hazırlayan tıklama eylemini kullandığından bu özelliğe ihtiyaç duymaz. Hedef adres url alanına girilir; bu da bağlantı semantiği sağlar.

Önizleme, girdilerden herhangi biri değiştiğinde hazırlanan mesajı temizler. Aksi hâlde mesaj, ziyaretçinin değiştirdiği değerleri onaylıyormuş gibi görünebilir. Eşzamansız bir işlem olmadığı için yükleme simgesi gösterilmez.

  • Tek bir birincil hazırlama eylemi kullanın.
  • Sonucun yerel olduğunu belirtin.
  • İlke oluşturulduğunu ima etmek için başarı ifadesini yeniden kullanmayın.

Destekleyici belirtimi okuyun

Duet tasarım sistemi Ana sistem varlıklarını uyumlu bir küme olarak sabitleyin

Örnek, belgelenmiş bir anlık görüntüdür; en yeni sürüm olduğuna dair bir vaat değildir

İncelenen kullanım sayfasında bileşenler 10.7.0 ve CSS 5.1.4 olarak sunuluyor; arama dizini anlık görüntülerinde daha sonraki sürümlerden zaten söz ediliyor. Örnek, doğrudan incelenen bu ikiliyi bilerek birlikte tutuyor. Üretimde kullanırken tek bir sürüm seçin ve uyumlu CSS, yazı tipleri ve bileşen davranışını doğrulayın.

Tarih alanları özel öğelerdir. Yöntem çağrılarından önce tanımlarının yüklenmesini bekleyin, dinleyicileri duetChange olayına ekleyin ve yerel change olayını varsaymak yerine belgelenmiş yükü okuyun. Aynı sayfada ana sistemin CDN modülünü bağımsız tarih seçiciyle birlikte kullanmayın: ikisi de aynı etiketi tanımlar.

Destekleyici belirtimi okuyun

Duet tasarım sistemi Bileşen Örnekleri

Tamamlanmış, bağımsız ve etkileşimli örnek

Belgenin tamamını index.html adıyla kaydedip tarayıcıda açın. Yerel date alanları ve doğrulanmış Duet varsayılan tema değerleriyle çevrimdışı HTML yorumu sunar; Duet takvim çalışma zamanı değildir.

html
<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Duet travel period interpretation</title><style>*{box-sizing:border-box}body{margin:0;background:#f0f7fa;color:#082a4d;font:16px/1.5 system-ui,sans-serif}main{max-width:1000px;margin:auto;padding:36px 28px}.eyebrow{font-size:12px;letter-spacing:2px;text-transform:uppercase;margin-bottom:12px}h1{font-size:36px;line-height:1.2;font-weight:600;margin:0 0 20px}p{margin:0 0 20px}.hero{display:grid;grid-template-columns:1fr 300px;gap:28px;align-items:center;margin-bottom:28px}.art{height:170px;position:relative;overflow:hidden;border-radius:50%;background:#c6e1ee}.sun{position:absolute;top:25px;right:60px;width:36px;height:36px;border-radius:50%;background:white}.hill{position:absolute;background:#0077b3;width:210px;height:170px;bottom:-95px;left:-10px;transform:rotate(25deg);border-radius:24px}.hill.two{left:135px;background:#00619b;bottom:-110px;transform:rotate(-25deg)}.road{position:absolute;width:150px;height:200px;border:12px solid white;border-radius:50%;top:65px;left:95px;transform:rotate(25deg)}.card{background:white;border-radius:4px;padding:28px;box-shadow:0 2px 8px #082a4d0d;display:grid;grid-template-columns:1fr 230px;gap:28px}h2{font-size:24px;line-height:1.3;margin:0 0 20px}.fields{display:grid;grid-template-columns:1fr 1fr;gap:20px}label{display:block;font-weight:600;margin-bottom:8px}input{width:100%;max-width:100%;min-width:0;border:1px solid #909599;border-radius:4px;font:inherit;color:inherit;padding:12px;background:white}input[aria-invalid=true]{border-color:#d61c52}button{background:#0077b3;color:white;border:0;border-radius:20rem;padding:12px 36px;font:600 16px/1.5 system-ui;cursor:pointer}button:hover{background:#004b81}button:focus-visible,input:focus-visible{outline:3px solid #082a4d;outline-offset:3px}.error{font-size:14px;color:#d61c52;min-height:24px;margin:8px 0 20px}.calendar{background:#f0f7fa;border-radius:4px;padding:20px}.calendar strong{display:block;margin-bottom:12px}.grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;font-size:12px;text-align:center}.grid span{padding:3px 0}.grid .in-range{background:#c6e1ee}.grid .endpoint{background:#0077b3;color:white;border-radius:50%}.caption{font-size:12px;margin:12px 0 0}.result{margin-top:20px;background:#e4f1f7;padding:20px;border-radius:4px}.result:empty{display:none}.boundary{font-size:12px;margin-top:28px}.hint{font-size:14px}@media(max-width:650px){main{padding:24px 16px}.hero{grid-template-columns:1fr}.art{display:none}h1{font-size:28px}.card{grid-template-columns:1fr;padding:20px}.fields{grid-template-columns:1fr;gap:16px}.calendar{max-width:300px;width:100%}button{width:100%;padding:12px 20px}}
</style><main><div class="hero"><div><div class="eyebrow">Travel period planner</div><h1>Make time for a change of scenery.</h1><p>Choose a departure and return date to explore an inclusive calendar-day count.</p></div><div class="art" aria-hidden="true"><div class="sun"></div><div class="hill"></div><div class="hill two"></div><div class="road"></div></div></div><div class="card"><section><h2>When will you travel?</h2><p class="hint" id="hint">Use dates from 1–30 June 2027. This fixed month is for demonstration.</p><form novalidate><div class="fields"><div><label for="start">Departure</label><input id="start" type="date" min="2027-06-01" max="2027-06-30" value="2027-06-10" required aria-describedby="hint error"></div><div><label for="end">Return</label><input id="end" type="date" min="2027-06-01" max="2027-06-30" value="2027-06-17" required aria-describedby="hint error"></div></div><div class="error" id="error" role="alert"></div><button type="submit">Prepare date range</button></form></section><aside class="calendar"><strong>June 2027</strong><div class="grid" id="calendar" aria-hidden="true"></div><p class="caption" id="range-caption">10–17 June selected</p></aside></div><div class="result" id="result" role="status"></div><p class="boundary">Independent HTML interpretation of Duet tokens with native date fields. The calendar image is a non-interactive range overview. No insurance quote, booking or policy is created.</p></main><script>const start=document.querySelector('#start'),end=document.querySelector('#end'),result=document.querySelector('#result'),error=document.querySelector('#error');function valid(){return start.validity.valid&&end.validity.valid&&start.value&&end.value&&end.value>=start.value}function draw(){let days=['M','T','W','T','F','S','S'].map(d=>'<span>'+d+'</span>').join('')+'<span></span>';for(let i=1;i<=30;i++){let iso='2027-06-'+String(i).padStart(2,'0'),range=valid()&&iso>=start.value&&iso<=end.value,edge=range&&(iso===start.value||iso===end.value);days+='<span class="'+(edge?'endpoint':range?'in-range':'')+'">'+i+'</span>'}document.querySelector('#calendar').innerHTML=days;document.querySelector('#range-caption').textContent=valid()?start.value+' to '+end.value:'Choose a valid range to highlight it.'}function changed(){result.textContent='';error.textContent='';start.removeAttribute('aria-invalid');end.removeAttribute('aria-invalid');draw()}[start,end].forEach(el=>el.oninput=changed);document.querySelector('form').onsubmit=e=>{e.preventDefault();let bad;if(!start.value||!start.validity.valid){error.textContent='Choose a departure date in June 2027.';bad=start}else if(!end.value||!end.validity.valid){error.textContent='Choose a return date in June 2027.';bad=end}else if(end.value<start.value){error.textContent='Return must be on or after departure.';bad=end}if(bad){bad.setAttribute('aria-invalid','true');bad.focus();result.textContent='';return}const days=(Date.parse(end.value+'T00:00:00Z')-Date.parse(start.value+'T00:00:00Z'))/86400000+1;result.textContent=days+' calendar '+(days===1?'day':'days')+', including departure and return. Local draft: '+start.value+' to '+end.value+'. No policy created.'};draw();</script></html>

Kod referansı

  • Bu belge, tarayıcının yerel tarih kontrollerini kullanır. Ayrı Duet örneğinde ana sistem tarih seçicisi kullanılır; bu, bağımsız açık kaynaklı tarih seçici paketiyle karıştırılmamalıdır.

Bir çift ana sistem Date Picker bileşenini doğrulayın

Etiketli iki alan, Haziran ayı için sınırlar, sıralı başlangıç ve bitiş tarihleri, geçersiz seçiciye odaklanma ve kapsayıcı gün sayısı.

html
<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>Date range draft</title>
<link rel="stylesheet" href="https://cdn.duetds.com/api/css/5.1.4/lib/duet.min.css">
<script type="module" src="https://cdn.duetds.com/api/components/10.7.0/lib/duet/duet.esm.js"></script>
<style>main{max-width:680px;margin:auto;padding:28px}.range{display:grid;grid-template-columns:1fr 1fr;gap:20px}@media(max-width:576px){.range{grid-template-columns:1fr}}</style>
<main><h1>Choose a travel period</h1><p>Demonstration only. No insurance is quoted or purchased.</p><div class="range">
<duet-date-picker id="start" label="Departure" required expand value="2027-06-10" min="2027-06-01" max="2027-06-30"></duet-date-picker>
<duet-date-picker id="end" label="Return" required expand value="2027-06-17" min="2027-06-01" max="2027-06-30"></duet-date-picker></div>
<duet-button id="prepare" variation="primary">Prepare date range</duet-button>
<p id="result" role="status"></p></main><script type="module">
await customElements.whenDefined('duet-date-picker');
const start=document.querySelector('#start'),end=document.querySelector('#end'),result=document.querySelector('#result');
function error(picker){const v=picker.validity;if(!picker.value)return 'Choose a date.';if(v&&!v.valid)return 'Choose a valid date in June 2027.';return '';}
function validate(){start.error=error(start);end.error=error(end);if(!start.error&&!end.error&&end.value<start.value)end.error='Return must be on or after departure.';return !start.error&&!end.error;}
[start,end].forEach(p=>p.addEventListener('duetChange',()=>{result.textContent='';validate()}));
document.querySelector('#prepare').addEventListener('click',async()=>{if(!validate()){await(start.error?start:end).setFocus();return;}const a=Date.parse(start.value+'T00:00:00Z'),b=Date.parse(end.value+'T00:00:00Z');result.textContent=`Local range: ${start.value} to ${end.value}, ${(b-a)/86400000+1} calendar days inclusive. No policy created.`;});
</script></html>

Kod referansı

  • Bu örnek, ana sistem CDN'i üzerinden @duetds/components kullanır; @duetds/date-picker 1.x kullanmaz.
  • Aynı gün içeren aralıklar, kapsayıcı hesaplamada bir takvim günü sayılır.
  • UTC aritmetiği, sayımdaki yaz saati farklarını önler.
04

Duet tasarım sistemi Aracı Kurulumu

Uygulamaya Başlangıç Noktası

İncelenen entegrasyon sayfasında açıkça belirtilen sürümleri kullanan eksiksiz ana sistem CDN bileşimi. Herkese açık arama anlık görüntülerinde daha yeni sürümler de yer alıyor; bunun en yeni sürüm olduğunu varsaymak yerine uyumlu bir sürümü sabitleyin. Yazı tipleri burada yeniden dağıtılmıyor.

html
<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>Date range draft</title>
<link rel="stylesheet" href="https://cdn.duetds.com/api/css/5.1.4/lib/duet.min.css">
<script type="module" src="https://cdn.duetds.com/api/components/10.7.0/lib/duet/duet.esm.js"></script>
<style>main{max-width:680px;margin:auto;padding:28px}.range{display:grid;grid-template-columns:1fr 1fr;gap:20px}@media(max-width:576px){.range{grid-template-columns:1fr}}</style>
<main><h1>Choose a travel period</h1><p>Demonstration only. No insurance is quoted or purchased.</p><div class="range">
<duet-date-picker id="start" label="Departure" required expand value="2027-06-10" min="2027-06-01" max="2027-06-30"></duet-date-picker>
<duet-date-picker id="end" label="Return" required expand value="2027-06-17" min="2027-06-01" max="2027-06-30"></duet-date-picker></div>
<duet-button id="prepare" variation="primary">Prepare date range</duet-button>
<p id="result" role="status"></p></main><script type="module">
await customElements.whenDefined('duet-date-picker');
const start=document.querySelector('#start'),end=document.querySelector('#end'),result=document.querySelector('#result');
function error(picker){const v=picker.validity;if(!picker.value)return 'Choose a date.';if(v&&!v.valid)return 'Choose a valid date in June 2027.';return '';}
function validate(){start.error=error(start);end.error=error(end);if(!start.error&&!end.error&&end.value<start.value)end.error='Return must be on or after departure.';return !start.error&&!end.error;}
[start,end].forEach(p=>p.addEventListener('duetChange',()=>{result.textContent='';validate()}));
document.querySelector('#prepare').addEventListener('click',async()=>{if(!validate()){await(start.error?start:end).setFocus();return;}const a=Date.parse(start.value+'T00:00:00Z'),b=Date.parse(end.value+'T00:00:00Z');result.textContent=`Local range: ${start.value} to ${end.value}, ${(b-a)/86400000+1} calendar days inclusive. No policy created.`;});
</script></html>

Projeniz İçin Bir İstem

Ajan İstemi
İki etiketli tarih seçici, ISO değerleri ve geçerlilik denetimleriyle bir Duet ana sistem tarih aralığı oluşturun. Bitiş noktalarının sırasını ayrı olarak doğrulayın, hatalarda setFocus çağırın ve açıkça birincil olan yerel hazırlama eylemi kullanın. Bağımsız tarih seçici paketini aynı sayfaya eklemeyin.
05

Duet tasarım sistemi Kaynaklar ve Kapsam

Bağımsız OpenDesign başvurusu. Özgün planlayıcı; herhangi bir poliçe, rezervasyon veya teklif oluşturulmaz. Ana sistem Duet ile ayrı açık kaynaklı tarih seçicisinin sözleşmeleri farklıdır.