|
1 | 1 | <script lang="ts"> |
2 | 2 | import { TextField, DatePickerField, MenuField } from 'svelte-ux'; |
3 | | - import { format, PeriodType, type FormatNumberStyle, DateToken } from '@layerstack/utils'; |
| 3 | + import { |
| 4 | + format, |
| 5 | + type FormatNumberStyle, |
| 6 | + DateToken, |
| 7 | + type PeriodTypeCode, |
| 8 | + } from '@layerstack/utils'; |
4 | 9 |
|
5 | 10 | import Preview from '$docs/Preview.svelte'; |
6 | 11 | import Code from '$docs/Code.svelte'; |
|
12 | 17 |
|
13 | 18 | let myDate = new Date('1982-03-30T07:11:00'); |
14 | 19 |
|
| 20 | + const periodTypeCodes: PeriodTypeCode[] = [ |
| 21 | + 'day', |
| 22 | + 'daytime', |
| 23 | + 'time', |
| 24 | + 'week', |
| 25 | + 'biweek1', |
| 26 | + 'month', |
| 27 | + 'month-year', |
| 28 | + 'quarter', |
| 29 | + 'year', |
| 30 | + 'fiscal-year-october', |
| 31 | + ]; |
| 32 | + let periodType: PeriodTypeCode = 'day'; |
| 33 | +
|
15 | 34 | const locales = ['en', 'de', 'fr', 'it', 'es', 'jp', 'zh'] as const; |
16 | 35 | let locale: (typeof locales)[number] = 'en'; |
17 | 36 | </script> |
|
42 | 61 | 'percentRound', |
43 | 62 | 'metric', |
44 | 63 | ].map((value) => ({ label: value, value }))} |
| 64 | + stepper |
45 | 65 | /> |
46 | 66 |
|
47 | 67 | <MenuField |
|
51 | 71 | label: value ?? 'None', |
52 | 72 | value, |
53 | 73 | }))} |
| 74 | + stepper |
| 75 | + disabled={style !== 'currency' && style !== 'currencyRound'} |
54 | 76 | /> |
55 | 77 |
|
56 | 78 | <MenuField |
57 | 79 | label="locale" |
58 | 80 | bind:value={locale} |
59 | 81 | options={locales.map((value) => ({ label: value, value }))} |
| 82 | + stepper |
60 | 83 | /> |
61 | 84 |
|
62 | 85 | <MenuField |
|
66 | 89 | label: value, |
67 | 90 | value, |
68 | 91 | }))} |
| 92 | + stepper |
69 | 93 | /> |
70 | 94 | </div> |
71 | 95 |
|
|
78 | 102 | <div class="grid grid-cols-xs gap-2 mb-2"> |
79 | 103 | <DatePickerField format="dd/MM/yyyy" label="date" bind:value={myDate}></DatePickerField> |
80 | 104 |
|
| 105 | + <MenuField |
| 106 | + label="periodType" |
| 107 | + bind:value={periodType} |
| 108 | + options={periodTypeCodes.map((value) => ({ label: value, value }))} |
| 109 | + stepper |
| 110 | + /> |
| 111 | + |
81 | 112 | <MenuField |
82 | 113 | label="locale" |
83 | 114 | bind:value={locale} |
84 | 115 | options={locales.map((value) => ({ label: value, value }))} |
| 116 | + stepper |
85 | 117 | /> |
86 | 118 | </div> |
87 | 119 |
|
88 | 120 | <Preview> |
89 | | - <div>{format(myDate, PeriodType.Day)}</div> |
| 121 | + <div>{format(myDate, periodType)}</div> |
90 | 122 | </Preview> |
91 | 123 |
|
92 | 124 | <h1>Numbers</h1> |
|
151 | 183 | <div> |
152 | 184 | <h3>With format string</h3> |
153 | 185 | <Preview> |
154 | | - {format(myDate, PeriodType.Custom, { |
| 186 | + {format(myDate, 'custom', { |
155 | 187 | custom: 'eee, MMMM do', |
156 | 188 | })} |
157 | 189 | </Preview> |
158 | 190 | </div> |
159 | 191 | <div> |
160 | 192 | <h3>With descriptive tokens</h3> |
161 | 193 | <Preview> |
162 | | - {format(myDate, PeriodType.Custom, { |
| 194 | + {format(myDate, 'custom', { |
163 | 195 | custom: [DateToken.DayOfWeek_short, DateToken.Month_long, DateToken.DayOfMonth_withOrdinal], |
164 | 196 | })} |
165 | 197 | </Preview> |
166 | 198 | </div> |
167 | 199 | <div> |
168 | 200 | <h3>With full intl</h3> |
169 | 201 | <Preview> |
170 | | - {format(myDate, PeriodType.Custom, { |
| 202 | + {format(myDate, 'custom', { |
171 | 203 | custom: { weekday: 'short', month: 'long', day: 'numeric', withOrdinal: true }, |
172 | 204 | })} |
173 | 205 | </Preview> |
174 | 206 | </div> |
175 | 207 | </div> |
176 | 208 |
|
177 | | -{#each [PeriodType.Day, PeriodType.DayTime, PeriodType.TimeOnly, PeriodType.Week, PeriodType.BiWeek1, PeriodType.Month, PeriodType.MonthYear, PeriodType.Quarter, PeriodType.CalendarYear, PeriodType.FiscalYearOctober] as periodType} |
178 | | - <h2>PeriodType.{PeriodType[periodType]}</h2> |
| 209 | +{#each periodTypeCodes as periodType} |
| 210 | + <h2>{periodType}</h2> |
179 | 211 |
|
180 | | - {#if periodType === PeriodType.Week || periodType === PeriodType.BiWeek1} |
| 212 | + {#if periodType === 'week' || periodType === 'biweek1'} |
181 | 213 | <span> |
182 | 214 | It will take your default <b>weekStartsOn</b> |
183 | 215 | <a |
184 | 216 | class="text-accent-500" |
185 | 217 | href="https://svelte-ux.techniq.dev/customization#settings" |
186 | 218 | target="_blank">settings</a |
187 | 219 | >, if you want to be specific, you can also use |
188 | | - <b>{periodType === PeriodType.Week ? 'PeriodType.WeekSun' : 'PeriodType.BiWeek1Sun'}</b> |
| 220 | + <b>{periodType === 'week' ? 'PeriodType.WeekSun' : 'PeriodType.BiWeek1Sun'}</b> |
189 | 221 | </span> |
190 | 222 | {/if} |
191 | 223 |
|
|
0 commit comments