@flux-ui/components 3.0.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. package/README.md +45 -0
  2. package/package.json +77 -0
  3. package/src/component/FluxAction.vue +27 -0
  4. package/src/component/FluxActionBar.vue +94 -0
  5. package/src/component/FluxActionPane.vue +40 -0
  6. package/src/component/FluxActions.vue +27 -0
  7. package/src/component/FluxAlert.vue +37 -0
  8. package/src/component/FluxAnimatedColors.vue +141 -0
  9. package/src/component/FluxAspectRatio.vue +21 -0
  10. package/src/component/FluxAutoGrid.vue +27 -0
  11. package/src/component/FluxAvatar.vue +119 -0
  12. package/src/component/FluxBadge.vue +84 -0
  13. package/src/component/FluxBadgeStack.vue +18 -0
  14. package/src/component/FluxBorderShine.vue +36 -0
  15. package/src/component/FluxBoxedIcon.vue +36 -0
  16. package/src/component/FluxButton.vue +110 -0
  17. package/src/component/FluxButtonGroup.vue +15 -0
  18. package/src/component/FluxButtonStack.vue +28 -0
  19. package/src/component/FluxCalendar.vue +254 -0
  20. package/src/component/FluxCalendarEvent.vue +41 -0
  21. package/src/component/FluxCheckbox.vue +60 -0
  22. package/src/component/FluxChip.vue +57 -0
  23. package/src/component/FluxClickablePane.vue +61 -0
  24. package/src/component/FluxColorPicker.vue +265 -0
  25. package/src/component/FluxColorSelect.vue +81 -0
  26. package/src/component/FluxComment.vue +71 -0
  27. package/src/component/FluxConfirm.vue +42 -0
  28. package/src/component/FluxContainer.vue +23 -0
  29. package/src/component/FluxDataTable.vue +96 -0
  30. package/src/component/FluxDatePicker.vue +353 -0
  31. package/src/component/FluxDestructiveButton.vue +28 -0
  32. package/src/component/FluxDisabled.vue +22 -0
  33. package/src/component/FluxDivider.vue +37 -0
  34. package/src/component/FluxDotPattern.vue +72 -0
  35. package/src/component/FluxDropZone.vue +202 -0
  36. package/src/component/FluxDynamicView.vue +16 -0
  37. package/src/component/FluxExpandable.vue +119 -0
  38. package/src/component/FluxExpandableGroup.vue +53 -0
  39. package/src/component/FluxFader.vue +64 -0
  40. package/src/component/FluxFaderItem.vue +15 -0
  41. package/src/component/FluxFilter.vue +133 -0
  42. package/src/component/FluxFilterDate.vue +58 -0
  43. package/src/component/FluxFilterDateRange.vue +59 -0
  44. package/src/component/FluxFilterOption.vue +49 -0
  45. package/src/component/FluxFilterOptionAsync.vue +103 -0
  46. package/src/component/FluxFilterOptions.vue +62 -0
  47. package/src/component/FluxFilterOptionsAsync.vue +113 -0
  48. package/src/component/FluxFilterRange.vue +91 -0
  49. package/src/component/FluxFlickeringGrid.vue +141 -0
  50. package/src/component/FluxFlyout.vue +205 -0
  51. package/src/component/FluxFocalPointEditor.vue +137 -0
  52. package/src/component/FluxFocalPointImage.vue +29 -0
  53. package/src/component/FluxForm.vue +35 -0
  54. package/src/component/FluxFormColumn.vue +15 -0
  55. package/src/component/FluxFormDateInput.vue +92 -0
  56. package/src/component/FluxFormDateRangeInput.vue +87 -0
  57. package/src/component/FluxFormDateTimeInput.vue +120 -0
  58. package/src/component/FluxFormField.vue +98 -0
  59. package/src/component/FluxFormFieldAddition.vue +37 -0
  60. package/src/component/FluxFormInput.vue +223 -0
  61. package/src/component/FluxFormInputAddition.vue +31 -0
  62. package/src/component/FluxFormInputGroup.vue +25 -0
  63. package/src/component/FluxFormPinInput.vue +135 -0
  64. package/src/component/FluxFormRangeSlider.vue +179 -0
  65. package/src/component/FluxFormRow.vue +15 -0
  66. package/src/component/FluxFormSection.vue +23 -0
  67. package/src/component/FluxFormSelect.vue +59 -0
  68. package/src/component/FluxFormSelectAsync.vue +118 -0
  69. package/src/component/FluxFormSlider.vue +123 -0
  70. package/src/component/FluxFormTextArea.vue +53 -0
  71. package/src/component/FluxFormTimeZonePicker.vue +713 -0
  72. package/src/component/FluxGallery.vue +99 -0
  73. package/src/component/FluxGalleryItem.vue +49 -0
  74. package/src/component/FluxGrid.vue +28 -0
  75. package/src/component/FluxGridColumn.vue +31 -0
  76. package/src/component/FluxGridPattern.vue +60 -0
  77. package/src/component/FluxIcon.vue +79 -0
  78. package/src/component/FluxInfo.vue +28 -0
  79. package/src/component/FluxInfoStack.vue +17 -0
  80. package/src/component/FluxLegend.vue +27 -0
  81. package/src/component/FluxLink.vue +35 -0
  82. package/src/component/FluxMenu.vue +31 -0
  83. package/src/component/FluxMenuGroup.vue +21 -0
  84. package/src/component/FluxMenuItem.vue +84 -0
  85. package/src/component/FluxMenuOptions.vue +38 -0
  86. package/src/component/FluxMenuSubHeader.vue +33 -0
  87. package/src/component/FluxMenuTitle.vue +17 -0
  88. package/src/component/FluxNotice.vue +79 -0
  89. package/src/component/FluxNoticeStack.vue +17 -0
  90. package/src/component/FluxOverlay.vue +31 -0
  91. package/src/component/FluxPagination.vue +148 -0
  92. package/src/component/FluxPaginationBar.vue +81 -0
  93. package/src/component/FluxPane.vue +45 -0
  94. package/src/component/FluxPaneBody.vue +15 -0
  95. package/src/component/FluxPaneDeck.vue +24 -0
  96. package/src/component/FluxPaneFooter.vue +15 -0
  97. package/src/component/FluxPaneGroup.vue +15 -0
  98. package/src/component/FluxPaneHeader.vue +44 -0
  99. package/src/component/FluxPaneIllustration.vue +68 -0
  100. package/src/component/FluxPaneMedia.vue +31 -0
  101. package/src/component/FluxPercentageBar.vue +45 -0
  102. package/src/component/FluxPersona.vue +48 -0
  103. package/src/component/FluxPlaceholder.vue +56 -0
  104. package/src/component/FluxPressable.vue +77 -0
  105. package/src/component/FluxPrimaryButton.vue +28 -0
  106. package/src/component/FluxProgressBar.vue +75 -0
  107. package/src/component/FluxPrompt.vue +77 -0
  108. package/src/component/FluxPublishButton.vue +59 -0
  109. package/src/component/FluxQuantitySelector.vue +109 -0
  110. package/src/component/FluxRemove.vue +34 -0
  111. package/src/component/FluxRoot.vue +60 -0
  112. package/src/component/FluxSecondaryButton.vue +28 -0
  113. package/src/component/FluxSegmentedControl.vue +77 -0
  114. package/src/component/FluxSegmentedView.vue +15 -0
  115. package/src/component/FluxSeparator.vue +19 -0
  116. package/src/component/FluxSlideOver.vue +25 -0
  117. package/src/component/FluxSnackbar.vue +154 -0
  118. package/src/component/FluxSnackbarProvider.vue +34 -0
  119. package/src/component/FluxSpacer.vue +9 -0
  120. package/src/component/FluxSpacing.vue +32 -0
  121. package/src/component/FluxSpinner.vue +48 -0
  122. package/src/component/FluxSplitButton.vue +61 -0
  123. package/src/component/FluxStack.vue +40 -0
  124. package/src/component/FluxStatistic.vue +68 -0
  125. package/src/component/FluxStepper.vue +69 -0
  126. package/src/component/FluxStepperStep.vue +15 -0
  127. package/src/component/FluxStepperSteps.vue +62 -0
  128. package/src/component/FluxTab.vue +23 -0
  129. package/src/component/FluxTabBar.vue +87 -0
  130. package/src/component/FluxTabBarItem.vue +104 -0
  131. package/src/component/FluxTable.vue +68 -0
  132. package/src/component/FluxTableActions.vue +16 -0
  133. package/src/component/FluxTableCell.vue +47 -0
  134. package/src/component/FluxTableHeader.vue +111 -0
  135. package/src/component/FluxTableRow.vue +15 -0
  136. package/src/component/FluxTabs.vue +91 -0
  137. package/src/component/FluxTag.vue +85 -0
  138. package/src/component/FluxTagStack.vue +18 -0
  139. package/src/component/FluxTicks.vue +44 -0
  140. package/src/component/FluxTimeline.vue +17 -0
  141. package/src/component/FluxTimelineItem.vue +73 -0
  142. package/src/component/FluxToggle.vue +64 -0
  143. package/src/component/FluxToolbar.vue +32 -0
  144. package/src/component/FluxToolbarGroup.vue +18 -0
  145. package/src/component/FluxTooltip.vue +56 -0
  146. package/src/component/FluxTooltipProvider.vue +176 -0
  147. package/src/component/FluxWindow.vue +47 -0
  148. package/src/component/index.ts +142 -0
  149. package/src/component/primitive/Anchor.vue +17 -0
  150. package/src/component/primitive/AnchorPopup.vue +194 -0
  151. package/src/component/primitive/CoordinatePicker.vue +155 -0
  152. package/src/component/primitive/CoordinatePickerThumb.vue +71 -0
  153. package/src/component/primitive/FilterItem.vue +44 -0
  154. package/src/component/primitive/FilterMenuRenderer.ts +233 -0
  155. package/src/component/primitive/FilterOptionBase.vue +67 -0
  156. package/src/component/primitive/SelectBase.vue +340 -0
  157. package/src/component/primitive/SliderBase.vue +89 -0
  158. package/src/component/primitive/SliderThumb.vue +64 -0
  159. package/src/component/primitive/SliderTrack.vue +22 -0
  160. package/src/component/primitive/VNodeRenderer.ts +11 -0
  161. package/src/component/primitive/index.ts +10 -0
  162. package/src/composable/index.ts +9 -0
  163. package/src/composable/private/index.ts +3 -0
  164. package/src/composable/private/useFormSelect.ts +66 -0
  165. package/src/composable/private/useLoaded.ts +21 -0
  166. package/src/composable/private/useTranslate.ts +35 -0
  167. package/src/composable/useBreakpoints.ts +54 -0
  168. package/src/composable/useDisabled.ts +9 -0
  169. package/src/composable/useDisabledInjection.ts +6 -0
  170. package/src/composable/useExpandableGroupInjection.ts +10 -0
  171. package/src/composable/useFilterInjection.ts +22 -0
  172. package/src/composable/useFlyoutInjection.ts +10 -0
  173. package/src/composable/useFormFieldInjection.ts +8 -0
  174. package/src/composable/useTableInjection.ts +11 -0
  175. package/src/css/base.scss +33 -0
  176. package/src/css/component/Action.module.scss +107 -0
  177. package/src/css/component/Avatar.module.scss +177 -0
  178. package/src/css/component/Badge.module.scss +189 -0
  179. package/src/css/component/Button.module.scss +293 -0
  180. package/src/css/component/Calendar.module.scss +171 -0
  181. package/src/css/component/Chip.module.scss +58 -0
  182. package/src/css/component/Color.module.scss +184 -0
  183. package/src/css/component/Comment.module.scss +123 -0
  184. package/src/css/component/DatePicker.module.scss +193 -0
  185. package/src/css/component/Divider.module.scss +79 -0
  186. package/src/css/component/DropZone.module.scss +99 -0
  187. package/src/css/component/Expandable.module.scss +112 -0
  188. package/src/css/component/Fader.module.scss +38 -0
  189. package/src/css/component/Filter.module.scss +80 -0
  190. package/src/css/component/Flyout.module.scss +63 -0
  191. package/src/css/component/FocalPoint.module.scss +84 -0
  192. package/src/css/component/Form.module.scss +812 -0
  193. package/src/css/component/Gallery.module.scss +64 -0
  194. package/src/css/component/Grid.module.scss +24 -0
  195. package/src/css/component/Icon.module.scss +104 -0
  196. package/src/css/component/Info.module.scss +15 -0
  197. package/src/css/component/Layout.module.scss +63 -0
  198. package/src/css/component/Legend.module.scss +32 -0
  199. package/src/css/component/Menu.module.scss +314 -0
  200. package/src/css/component/Notice.module.scss +279 -0
  201. package/src/css/component/Overlay.module.scss +149 -0
  202. package/src/css/component/Pagination.module.scss +59 -0
  203. package/src/css/component/Pane.module.scss +218 -0
  204. package/src/css/component/PercentageBar.module.scss +31 -0
  205. package/src/css/component/Placeholder.module.scss +72 -0
  206. package/src/css/component/Progress.module.scss +84 -0
  207. package/src/css/component/Remove.module.scss +29 -0
  208. package/src/css/component/Root.module.scss +8 -0
  209. package/src/css/component/SegmentedControl.module.scss +82 -0
  210. package/src/css/component/Snackbar.module.scss +227 -0
  211. package/src/css/component/Spinner.module.scss +36 -0
  212. package/src/css/component/Statistic.module.scss +118 -0
  213. package/src/css/component/Stepper.module.scss +103 -0
  214. package/src/css/component/Tab.module.scss +162 -0
  215. package/src/css/component/Table.module.scss +164 -0
  216. package/src/css/component/Timeline.module.scss +173 -0
  217. package/src/css/component/Toolbar.module.scss +82 -0
  218. package/src/css/component/Tooltip.module.scss +62 -0
  219. package/src/css/component/Transition.module.scss +142 -0
  220. package/src/css/component/Visual.module.scss +70 -0
  221. package/src/css/component/base/Button.module.scss +87 -0
  222. package/src/css/component/base/Effect.module.scss +139 -0
  223. package/src/css/component/base/Grid.module.scss +8 -0
  224. package/src/css/component/base/Pane.module.scss +54 -0
  225. package/src/css/component/primitive/CoordinatePicker.module.scss +24 -0
  226. package/src/css/component/primitive/Slider.module.scss +116 -0
  227. package/src/css/index.scss +5 -0
  228. package/src/css/layers.scss +1 -0
  229. package/src/css/mixin/breakpoints.scss +112 -0
  230. package/src/css/mixin/focus-ring.scss +56 -0
  231. package/src/css/mixin/hover.scss +7 -0
  232. package/src/css/mixin/index.scss +3 -0
  233. package/src/css/reset.scss +169 -0
  234. package/src/css/typography.scss +87 -0
  235. package/src/css/variables.scss +214 -0
  236. package/src/data/di.ts +42 -0
  237. package/src/data/filter.ts +9 -0
  238. package/src/data/helper.ts +9 -0
  239. package/src/data/i18n.ts +55 -0
  240. package/src/data/iconRegistry.ts +21 -0
  241. package/src/data/index.ts +8 -0
  242. package/src/data/inputMask.ts +34 -0
  243. package/src/data/store.ts +233 -0
  244. package/src/image/avatar-mask.svg +3 -0
  245. package/src/index.ts +25 -0
  246. package/src/transition/FluxAutoHeightTransition.vue +59 -0
  247. package/src/transition/FluxAutoWidthTransition.vue +59 -0
  248. package/src/transition/FluxBreakthroughTransition.vue +23 -0
  249. package/src/transition/FluxFadeTransition.vue +24 -0
  250. package/src/transition/FluxOverlayTransition.vue +22 -0
  251. package/src/transition/FluxRouteTransition.vue +23 -0
  252. package/src/transition/FluxSlideOverTransition.vue +22 -0
  253. package/src/transition/FluxTooltipTransition.vue +22 -0
  254. package/src/transition/FluxVerticalWindowTransition.vue +23 -0
  255. package/src/transition/FluxWindowTransition.vue +23 -0
  256. package/src/transition/index.ts +10 -0
  257. package/src/util/createDialogRenderer.ts +64 -0
  258. package/src/util/createLabelForDateRange.ts +61 -0
  259. package/src/util/index.ts +2 -0
  260. package/src/vite.d.ts +13 -0
  261. package/tsconfig.json +45 -0
@@ -0,0 +1,713 @@
1
+ <template>
2
+ <FluxFormSelect
3
+ v-model="modelValue"
4
+ :disabled="disabled"
5
+ is-searchable
6
+ :options="options"
7
+ :placeholder="placeholder"/>
8
+ </template>
9
+
10
+ <script
11
+ lang="ts"
12
+ setup>
13
+ import type { FluxFormSelectEntry } from '@flux-ui/types';
14
+ import { upperFirst } from 'lodash-es';
15
+ import { computed, toRef } from 'vue';
16
+ import { useDisabled } from '$flux/composable';
17
+ import { useTranslate } from '$flux/composable/private';
18
+ import type { FluxTranslation } from '$flux/data';
19
+ import FluxFormSelect from './FluxFormSelect.vue';
20
+
21
+ const timeZones = [
22
+ 'Africa/Abidjan',
23
+ 'Africa/Accra',
24
+ 'Africa/Addis_Ababa',
25
+ 'Africa/Algiers',
26
+ 'Africa/Asmara',
27
+ 'Africa/Asmera',
28
+ 'Africa/Bamako',
29
+ 'Africa/Bangui',
30
+ 'Africa/Banjul',
31
+ 'Africa/Bissau',
32
+ 'Africa/Blantyre',
33
+ 'Africa/Brazzaville',
34
+ 'Africa/Bujumbura',
35
+ 'Africa/Cairo',
36
+ 'Africa/Casablanca',
37
+ 'Africa/Ceuta',
38
+ 'Africa/Conakry',
39
+ 'Africa/Dakar',
40
+ 'Africa/Dar_es_Salaam',
41
+ 'Africa/Djibouti',
42
+ 'Africa/Douala',
43
+ 'Africa/El_Aaiun',
44
+ 'Africa/Freetown',
45
+ 'Africa/Gaborone',
46
+ 'Africa/Harare',
47
+ 'Africa/Johannesburg',
48
+ 'Africa/Juba',
49
+ 'Africa/Kampala',
50
+ 'Africa/Khartoum',
51
+ 'Africa/Kigali',
52
+ 'Africa/Kinshasa',
53
+ 'Africa/Lagos',
54
+ 'Africa/Libreville',
55
+ 'Africa/Lome',
56
+ 'Africa/Luanda',
57
+ 'Africa/Lubumbashi',
58
+ 'Africa/Lusaka',
59
+ 'Africa/Malabo',
60
+ 'Africa/Maputo',
61
+ 'Africa/Maseru',
62
+ 'Africa/Mbabane',
63
+ 'Africa/Mogadishu',
64
+ 'Africa/Monrovia',
65
+ 'Africa/Nairobi',
66
+ 'Africa/Ndjamena',
67
+ 'Africa/Niamey',
68
+ 'Africa/Nouakchott',
69
+ 'Africa/Ouagadougou',
70
+ 'Africa/Porto-Novo',
71
+ 'Africa/Sao_Tome',
72
+ 'Africa/Timbuktu',
73
+ 'Africa/Tripoli',
74
+ 'Africa/Tunis',
75
+ 'Africa/Windhoek',
76
+ 'America/Adak',
77
+ 'America/Anchorage',
78
+ 'America/Anguilla',
79
+ 'America/Antigua',
80
+ 'America/Araguaina',
81
+ 'America/Argentina/Buenos_Aires',
82
+ 'America/Argentina/Catamarca',
83
+ 'America/Argentina/ComodRivadavia',
84
+ 'America/Argentina/Cordoba',
85
+ 'America/Argentina/Jujuy',
86
+ 'America/Argentina/La_Rioja',
87
+ 'America/Argentina/Mendoza',
88
+ 'America/Argentina/Rio_Gallegos',
89
+ 'America/Argentina/Salta',
90
+ 'America/Argentina/San_Juan',
91
+ 'America/Argentina/San_Luis',
92
+ 'America/Argentina/Tucuman',
93
+ 'America/Argentina/Ushuaia',
94
+ 'America/Aruba',
95
+ 'America/Asuncion',
96
+ 'America/Atikokan',
97
+ 'America/Atka',
98
+ 'America/Bahia',
99
+ 'America/Bahia_Banderas',
100
+ 'America/Barbados',
101
+ 'America/Belem',
102
+ 'America/Belize',
103
+ 'America/Blanc-Sablon',
104
+ 'America/Boa_Vista',
105
+ 'America/Bogota',
106
+ 'America/Boise',
107
+ 'America/Buenos_Aires',
108
+ 'America/Cambridge_Bay',
109
+ 'America/Campo_Grande',
110
+ 'America/Cancun',
111
+ 'America/Caracas',
112
+ 'America/Catamarca',
113
+ 'America/Cayenne',
114
+ 'America/Cayman',
115
+ 'America/Chicago',
116
+ 'America/Chihuahua',
117
+ 'America/Ciudad_Juarez',
118
+ 'America/Coral_Harbour',
119
+ 'America/Cordoba',
120
+ 'America/Costa_Rica',
121
+ 'America/Creston',
122
+ 'America/Cuiaba',
123
+ 'America/Curacao',
124
+ 'America/Danmarkshavn',
125
+ 'America/Dawson',
126
+ 'America/Dawson_Creek',
127
+ 'America/Denver',
128
+ 'America/Detroit',
129
+ 'America/Dominica',
130
+ 'America/Edmonton',
131
+ 'America/Eirunepe',
132
+ 'America/El_Salvador',
133
+ 'America/Ensenada',
134
+ 'America/Fort_Nelson',
135
+ 'America/Fort_Wayne',
136
+ 'America/Fortaleza',
137
+ 'America/Glace_Bay',
138
+ 'America/Godthab',
139
+ 'America/Goose_Bay',
140
+ 'America/Grand_Turk',
141
+ 'America/Grenada',
142
+ 'America/Guadeloupe',
143
+ 'America/Guatemala',
144
+ 'America/Guayaquil',
145
+ 'America/Guyana',
146
+ 'America/Halifax',
147
+ 'America/Havana',
148
+ 'America/Hermosillo',
149
+ 'America/Indiana/Indianapolis',
150
+ 'America/Indiana/Knox',
151
+ 'America/Indiana/Marengo',
152
+ 'America/Indiana/Petersburg',
153
+ 'America/Indiana/Tell_City',
154
+ 'America/Indiana/Vevay',
155
+ 'America/Indiana/Vincennes',
156
+ 'America/Indiana/Winamac',
157
+ 'America/Indianapolis',
158
+ 'America/Inuvik',
159
+ 'America/Iqaluit',
160
+ 'America/Jamaica',
161
+ 'America/Jujuy',
162
+ 'America/Juneau',
163
+ 'America/Kentucky/Louisville',
164
+ 'America/Kentucky/Monticello',
165
+ 'America/Knox_IN',
166
+ 'America/Kralendijk',
167
+ 'America/La_Paz',
168
+ 'America/Lima',
169
+ 'America/Los_Angeles',
170
+ 'America/Louisville',
171
+ 'America/Lower_Princes',
172
+ 'America/Maceio',
173
+ 'America/Managua',
174
+ 'America/Manaus',
175
+ 'America/Marigot',
176
+ 'America/Martinique',
177
+ 'America/Matamoros',
178
+ 'America/Mazatlan',
179
+ 'America/Mendoza',
180
+ 'America/Menominee',
181
+ 'America/Merida',
182
+ 'America/Metlakatla',
183
+ 'America/Mexico_City',
184
+ 'America/Miquelon',
185
+ 'America/Moncton',
186
+ 'America/Monterrey',
187
+ 'America/Montevideo',
188
+ 'America/Montreal',
189
+ 'America/Montserrat',
190
+ 'America/Nassau',
191
+ 'America/New_York',
192
+ 'America/Nipigon',
193
+ 'America/Nome',
194
+ 'America/Noronha',
195
+ 'America/North_Dakota/Beulah',
196
+ 'America/North_Dakota/Center',
197
+ 'America/North_Dakota/New_Salem',
198
+ 'America/Nuuk',
199
+ 'America/Ojinaga',
200
+ 'America/Panama',
201
+ 'America/Pangnirtung',
202
+ 'America/Paramaribo',
203
+ 'America/Phoenix',
204
+ 'America/Port-au-Prince',
205
+ 'America/Port_of_Spain',
206
+ 'America/Porto_Acre',
207
+ 'America/Porto_Velho',
208
+ 'America/Puerto_Rico',
209
+ 'America/Punta_Arenas',
210
+ 'America/Rainy_River',
211
+ 'America/Rankin_Inlet',
212
+ 'America/Recife',
213
+ 'America/Regina',
214
+ 'America/Resolute',
215
+ 'America/Rio_Branco',
216
+ 'America/Rosario',
217
+ 'America/Santa_Isabel',
218
+ 'America/Santarem',
219
+ 'America/Santiago',
220
+ 'America/Santo_Domingo',
221
+ 'America/Sao_Paulo',
222
+ 'America/Scoresbysund',
223
+ 'America/Shiprock',
224
+ 'America/Sitka',
225
+ 'America/St_Barthelemy',
226
+ 'America/St_Johns',
227
+ 'America/St_Kitts',
228
+ 'America/St_Lucia',
229
+ 'America/St_Thomas',
230
+ 'America/St_Vincent',
231
+ 'America/Swift_Current',
232
+ 'America/Tegucigalpa',
233
+ 'America/Thule',
234
+ 'America/Thunder_Bay',
235
+ 'America/Tijuana',
236
+ 'America/Toronto',
237
+ 'America/Tortola',
238
+ 'America/Vancouver',
239
+ 'America/Virgin',
240
+ 'America/Whitehorse',
241
+ 'America/Winnipeg',
242
+ 'America/Yakutat',
243
+ 'America/Yellowknife',
244
+ 'Antarctica/Casey',
245
+ 'Antarctica/Davis',
246
+ 'Antarctica/DumontDUrville',
247
+ 'Antarctica/Macquarie',
248
+ 'Antarctica/Mawson',
249
+ 'Antarctica/McMurdo',
250
+ 'Antarctica/Palmer',
251
+ 'Antarctica/Rothera',
252
+ 'Antarctica/South_Pole',
253
+ 'Antarctica/Syowa',
254
+ 'Antarctica/Troll',
255
+ 'Antarctica/Vostok',
256
+ 'Arctic/Longyearbyen',
257
+ 'Asia/Aden',
258
+ 'Asia/Almaty',
259
+ 'Asia/Amman',
260
+ 'Asia/Anadyr',
261
+ 'Asia/Aqtau',
262
+ 'Asia/Aqtobe',
263
+ 'Asia/Ashgabat',
264
+ 'Asia/Ashkhabad',
265
+ 'Asia/Atyrau',
266
+ 'Asia/Baghdad',
267
+ 'Asia/Bahrain',
268
+ 'Asia/Baku',
269
+ 'Asia/Bangkok',
270
+ 'Asia/Barnaul',
271
+ 'Asia/Beirut',
272
+ 'Asia/Bishkek',
273
+ 'Asia/Brunei',
274
+ 'Asia/Calcutta',
275
+ 'Asia/Chita',
276
+ 'Asia/Choibalsan',
277
+ 'Asia/Chongqing',
278
+ 'Asia/Chungking',
279
+ 'Asia/Colombo',
280
+ 'Asia/Dacca',
281
+ 'Asia/Damascus',
282
+ 'Asia/Dhaka',
283
+ 'Asia/Dili',
284
+ 'Asia/Dubai',
285
+ 'Asia/Dushanbe',
286
+ 'Asia/Famagusta',
287
+ 'Asia/Gaza',
288
+ 'Asia/Harbin',
289
+ 'Asia/Hebron',
290
+ 'Asia/Ho_Chi_Minh',
291
+ 'Asia/Hong_Kong',
292
+ 'Asia/Hovd',
293
+ 'Asia/Irkutsk',
294
+ 'Asia/Istanbul',
295
+ 'Asia/Jakarta',
296
+ 'Asia/Jayapura',
297
+ 'Asia/Jerusalem',
298
+ 'Asia/Kabul',
299
+ 'Asia/Kamchatka',
300
+ 'Asia/Karachi',
301
+ 'Asia/Kashgar',
302
+ 'Asia/Kathmandu',
303
+ 'Asia/Katmandu',
304
+ 'Asia/Khandyga',
305
+ 'Asia/Kolkata',
306
+ 'Asia/Krasnoyarsk',
307
+ 'Asia/Kuala_Lumpur',
308
+ 'Asia/Kuching',
309
+ 'Asia/Kuwait',
310
+ 'Asia/Macao',
311
+ 'Asia/Macau',
312
+ 'Asia/Magadan',
313
+ 'Asia/Makassar',
314
+ 'Asia/Manila',
315
+ 'Asia/Muscat',
316
+ 'Asia/Nicosia',
317
+ 'Asia/Novokuznetsk',
318
+ 'Asia/Novosibirsk',
319
+ 'Asia/Omsk',
320
+ 'Asia/Oral',
321
+ 'Asia/Phnom_Penh',
322
+ 'Asia/Pontianak',
323
+ 'Asia/Pyongyang',
324
+ 'Asia/Qatar',
325
+ 'Asia/Qostanay',
326
+ 'Asia/Qyzylorda',
327
+ 'Asia/Rangoon',
328
+ 'Asia/Riyadh',
329
+ 'Asia/Saigon',
330
+ 'Asia/Sakhalin',
331
+ 'Asia/Samarkand',
332
+ 'Asia/Seoul',
333
+ 'Asia/Shanghai',
334
+ 'Asia/Singapore',
335
+ 'Asia/Srednekolymsk',
336
+ 'Asia/Taipei',
337
+ 'Asia/Tashkent',
338
+ 'Asia/Tbilisi',
339
+ 'Asia/Tehran',
340
+ 'Asia/Tel_Aviv',
341
+ 'Asia/Thimbu',
342
+ 'Asia/Thimphu',
343
+ 'Asia/Tokyo',
344
+ 'Asia/Tomsk',
345
+ 'Asia/Ujung_Pandang',
346
+ 'Asia/Ulaanbaatar',
347
+ 'Asia/Ulan_Bator',
348
+ 'Asia/Urumqi',
349
+ 'Asia/Ust-Nera',
350
+ 'Asia/Vientiane',
351
+ 'Asia/Vladivostok',
352
+ 'Asia/Yakutsk',
353
+ 'Asia/Yangon',
354
+ 'Asia/Yekaterinburg',
355
+ 'Asia/Yerevan',
356
+ 'Atlantic/Azores',
357
+ 'Atlantic/Bermuda',
358
+ 'Atlantic/Canary',
359
+ 'Atlantic/Cape_Verde',
360
+ 'Atlantic/Faeroe',
361
+ 'Atlantic/Faroe',
362
+ 'Atlantic/Jan_Mayen',
363
+ 'Atlantic/Madeira',
364
+ 'Atlantic/Reykjavik',
365
+ 'Atlantic/South_Georgia',
366
+ 'Atlantic/St_Helena',
367
+ 'Atlantic/Stanley',
368
+ 'Australia/ACT',
369
+ 'Australia/Adelaide',
370
+ 'Australia/Brisbane',
371
+ 'Australia/Broken_Hill',
372
+ 'Australia/Canberra',
373
+ 'Australia/Currie',
374
+ 'Australia/Darwin',
375
+ 'Australia/Eucla',
376
+ 'Australia/Hobart',
377
+ 'Australia/LHI',
378
+ 'Australia/Lindeman',
379
+ 'Australia/Lord_Howe',
380
+ 'Australia/Melbourne',
381
+ 'Australia/North',
382
+ 'Australia/NSW',
383
+ 'Australia/Perth',
384
+ 'Australia/Queensland',
385
+ 'Australia/South',
386
+ 'Australia/Sydney',
387
+ 'Australia/Tasmania',
388
+ 'Australia/Victoria',
389
+ 'Australia/West',
390
+ 'Australia/Yancowinna',
391
+ 'Brazil/Acre',
392
+ 'Brazil/DeNoronha',
393
+ 'Brazil/East',
394
+ 'Brazil/West',
395
+ 'Canada/Atlantic',
396
+ 'Canada/Central',
397
+ 'Canada/Eastern',
398
+ 'Canada/Mountain',
399
+ 'Canada/Newfoundland',
400
+ 'Canada/Pacific',
401
+ 'Canada/Saskatchewan',
402
+ 'Canada/Yukon',
403
+ 'CET',
404
+ 'Chile/Continental',
405
+ 'Chile/EasterIsland',
406
+ 'CST6CDT',
407
+ 'Cuba',
408
+ 'EET',
409
+ 'Egypt',
410
+ 'Eire',
411
+ 'EST',
412
+ 'EST5EDT',
413
+ 'Etc/GMT',
414
+ 'Etc/GMT+0',
415
+ 'Etc/GMT+1',
416
+ 'Etc/GMT+10',
417
+ 'Etc/GMT+11',
418
+ 'Etc/GMT+12',
419
+ 'Etc/GMT+2',
420
+ 'Etc/GMT+3',
421
+ 'Etc/GMT+4',
422
+ 'Etc/GMT+5',
423
+ 'Etc/GMT+6',
424
+ 'Etc/GMT+7',
425
+ 'Etc/GMT+8',
426
+ 'Etc/GMT+9',
427
+ 'Etc/GMT-0',
428
+ 'Etc/GMT-1',
429
+ 'Etc/GMT-10',
430
+ 'Etc/GMT-11',
431
+ 'Etc/GMT-12',
432
+ 'Etc/GMT-13',
433
+ 'Etc/GMT-14',
434
+ 'Etc/GMT-2',
435
+ 'Etc/GMT-3',
436
+ 'Etc/GMT-4',
437
+ 'Etc/GMT-5',
438
+ 'Etc/GMT-6',
439
+ 'Etc/GMT-7',
440
+ 'Etc/GMT-8',
441
+ 'Etc/GMT-9',
442
+ 'Etc/GMT0',
443
+ 'Etc/Greenwich',
444
+ 'Etc/UCT',
445
+ 'Etc/Universal',
446
+ 'Etc/UTC',
447
+ 'Etc/Zulu',
448
+ 'Europe/Amsterdam',
449
+ 'Europe/Andorra',
450
+ 'Europe/Astrakhan',
451
+ 'Europe/Athens',
452
+ 'Europe/Belfast',
453
+ 'Europe/Belgrade',
454
+ 'Europe/Berlin',
455
+ 'Europe/Bratislava',
456
+ 'Europe/Brussels',
457
+ 'Europe/Bucharest',
458
+ 'Europe/Budapest',
459
+ 'Europe/Busingen',
460
+ 'Europe/Chisinau',
461
+ 'Europe/Copenhagen',
462
+ 'Europe/Dublin',
463
+ 'Europe/Gibraltar',
464
+ 'Europe/Guernsey',
465
+ 'Europe/Helsinki',
466
+ 'Europe/Isle_of_Man',
467
+ 'Europe/Istanbul',
468
+ 'Europe/Jersey',
469
+ 'Europe/Kaliningrad',
470
+ 'Europe/Kiev',
471
+ 'Europe/Kirov',
472
+ 'Europe/Lisbon',
473
+ 'Europe/Ljubljana',
474
+ 'Europe/London',
475
+ 'Europe/Luxembourg',
476
+ 'Europe/Madrid',
477
+ 'Europe/Malta',
478
+ 'Europe/Mariehamn',
479
+ 'Europe/Minsk',
480
+ 'Europe/Monaco',
481
+ 'Europe/Moscow',
482
+ 'Europe/Nicosia',
483
+ 'Europe/Oslo',
484
+ 'Europe/Paris',
485
+ 'Europe/Podgorica',
486
+ 'Europe/Prague',
487
+ 'Europe/Riga',
488
+ 'Europe/Rome',
489
+ 'Europe/Samara',
490
+ 'Europe/San_Marino',
491
+ 'Europe/Sarajevo',
492
+ 'Europe/Saratov',
493
+ 'Europe/Simferopol',
494
+ 'Europe/Skopje',
495
+ 'Europe/Sofia',
496
+ 'Europe/Stockholm',
497
+ 'Europe/Tallinn',
498
+ 'Europe/Tirane',
499
+ 'Europe/Tiraspol',
500
+ 'Europe/Ulyanovsk',
501
+ 'Europe/Uzhgorod',
502
+ 'Europe/Vaduz',
503
+ 'Europe/Vatican',
504
+ 'Europe/Vienna',
505
+ 'Europe/Vilnius',
506
+ 'Europe/Volgograd',
507
+ 'Europe/Warsaw',
508
+ 'Europe/Zagreb',
509
+ 'Europe/Zaporozhye',
510
+ 'Europe/Zurich',
511
+ 'Factory',
512
+ 'GB',
513
+ 'GB-Eire',
514
+ 'GMT',
515
+ 'GMT+0',
516
+ 'GMT-0',
517
+ 'GMT0',
518
+ 'Greenwich',
519
+ 'Hongkong',
520
+ 'HST',
521
+ 'Iceland',
522
+ 'Indian/Antananarivo',
523
+ 'Indian/Chagos',
524
+ 'Indian/Christmas',
525
+ 'Indian/Cocos',
526
+ 'Indian/Comoro',
527
+ 'Indian/Kerguelen',
528
+ 'Indian/Mahe',
529
+ 'Indian/Maldives',
530
+ 'Indian/Mauritius',
531
+ 'Indian/Mayotte',
532
+ 'Indian/Reunion',
533
+ 'Iran',
534
+ 'Israel',
535
+ 'Jamaica',
536
+ 'Japan',
537
+ 'Kwajalein',
538
+ 'Libya',
539
+ 'MET',
540
+ 'Mexico/BajaNorte',
541
+ 'Mexico/BajaSur',
542
+ 'Mexico/General',
543
+ 'MST',
544
+ 'MST7MDT',
545
+ 'Navajo',
546
+ 'NZ',
547
+ 'NZ-CHAT',
548
+ 'Pacific/Apia',
549
+ 'Pacific/Auckland',
550
+ 'Pacific/Bougainville',
551
+ 'Pacific/Chatham',
552
+ 'Pacific/Chuuk',
553
+ 'Pacific/Easter',
554
+ 'Pacific/Efate',
555
+ 'Pacific/Enderbury',
556
+ 'Pacific/Fakaofo',
557
+ 'Pacific/Fiji',
558
+ 'Pacific/Funafuti',
559
+ 'Pacific/Galapagos',
560
+ 'Pacific/Gambier',
561
+ 'Pacific/Guadalcanal',
562
+ 'Pacific/Guam',
563
+ 'Pacific/Honolulu',
564
+ 'Pacific/Johnston',
565
+ 'Pacific/Kiritimati',
566
+ 'Pacific/Kosrae',
567
+ 'Pacific/Kwajalein',
568
+ 'Pacific/Majuro',
569
+ 'Pacific/Marquesas',
570
+ 'Pacific/Midway',
571
+ 'Pacific/Nauru',
572
+ 'Pacific/Niue',
573
+ 'Pacific/Norfolk',
574
+ 'Pacific/Noumea',
575
+ 'Pacific/Pago_Pago',
576
+ 'Pacific/Palau',
577
+ 'Pacific/Pitcairn',
578
+ 'Pacific/Pohnpei',
579
+ 'Pacific/Ponape',
580
+ 'Pacific/Port_Moresby',
581
+ 'Pacific/Rarotonga',
582
+ 'Pacific/Saipan',
583
+ 'Pacific/Samoa',
584
+ 'Pacific/Tahiti',
585
+ 'Pacific/Tarawa',
586
+ 'Pacific/Tongatapu',
587
+ 'Pacific/Truk',
588
+ 'Pacific/Wake',
589
+ 'Pacific/Wallis',
590
+ 'Pacific/Yap',
591
+ 'Poland',
592
+ 'Portugal',
593
+ 'PRC',
594
+ 'PST8PDT',
595
+ 'ROC',
596
+ 'ROK',
597
+ 'Singapore',
598
+ 'Turkey',
599
+ 'UCT',
600
+ 'Universal',
601
+ 'US/Alaska',
602
+ 'US/Aleutian',
603
+ 'US/Arizona',
604
+ 'US/Central',
605
+ 'US/East-Indiana',
606
+ 'US/Eastern',
607
+ 'US/Hawaii',
608
+ 'US/Indiana-Starke',
609
+ 'US/Michigan',
610
+ 'US/Mountain',
611
+ 'US/Pacific',
612
+ 'US/Samoa',
613
+ 'UTC',
614
+ 'W-SU',
615
+ 'WET',
616
+ 'Zulu'
617
+ ];
618
+
619
+ const timeZoneGroupOrder: FluxTranslation[] = [
620
+ 'flux.timezoneEurope',
621
+ 'flux.timezoneAmerica',
622
+ 'flux.timezoneUs',
623
+ 'flux.timezoneAustralia',
624
+ 'flux.timezoneCanada',
625
+ 'flux.timezoneMexico',
626
+ 'flux.timezoneAfrica',
627
+ 'flux.timezoneAntarctica',
628
+ 'flux.timezoneArctic',
629
+ 'flux.timezoneAsia',
630
+ 'flux.timezoneAtlantic',
631
+ 'flux.timezoneBrazil',
632
+ 'flux.timezoneChile',
633
+ 'flux.timezoneEtc',
634
+ 'flux.timezoneOther',
635
+ 'flux.timezoneIndian',
636
+ 'flux.timezonePacific'
637
+ ];
638
+
639
+ const modelValue = defineModel<string | null>({
640
+ default: null
641
+ });
642
+
643
+ const {
644
+ disabled: componentDisabled
645
+ } = defineProps<{
646
+ readonly disabled?: boolean;
647
+ readonly placeholder?: string;
648
+ }>();
649
+
650
+ const disabled = useDisabled(toRef(() => componentDisabled));
651
+ const translate = useTranslate();
652
+
653
+ const options = computed<FluxFormSelectEntry[]>(() => {
654
+ const groups: Record<string, FluxFormSelectEntry[]> = {};
655
+ const options: FluxFormSelectEntry[] = [];
656
+
657
+ for (const timeZone of timeZones) {
658
+ const timeZoneOptions = Intl.DateTimeFormat(navigator.language, {timeZone}).resolvedOptions();
659
+ const timeZoneOffset = new Intl.DateTimeFormat(navigator.language, {timeZone, timeZoneName: 'longOffset'}).formatToParts().find(p => p.type === 'timeZoneName')!.value.substring(3);
660
+ const label = timeZoneOptions.timeZone
661
+ .replaceAll('_', ' ')
662
+ .replaceAll('/', ' / ');
663
+
664
+ let group = 'flux.timezoneOther';
665
+
666
+ if (label.includes('/')) {
667
+ group = `flux.timezone${upperFirst(label.split('/')[0].trim().toLowerCase())}`;
668
+ }
669
+
670
+ groups[group] ??= [];
671
+
672
+ if (groups[group].find(go => go.label === label)) {
673
+ continue;
674
+ }
675
+
676
+ groups[group].push({
677
+ command: timeZoneOffset,
678
+ label: label,
679
+ value: timeZone
680
+ });
681
+ }
682
+
683
+ const sortedGroups = Object.fromEntries(
684
+ Object.entries(groups)
685
+ .sort(([a], [b]) => {
686
+ const ai = timeZoneGroupOrder.indexOf(a as FluxTranslation);
687
+ const bi = timeZoneGroupOrder.indexOf(b as FluxTranslation);
688
+
689
+ if (ai > bi) {
690
+ return 1;
691
+ }
692
+
693
+ if (bi > ai) {
694
+ return -1;
695
+ }
696
+
697
+ return 0;
698
+ })
699
+ );
700
+
701
+ for (const group in sortedGroups) {
702
+ const groupOptions = sortedGroups[group].sort(({label: labelA}, {label: labelB}) => labelA.localeCompare(labelB));
703
+
704
+ options.push({
705
+ label: translate(group as FluxTranslation)
706
+ });
707
+
708
+ groupOptions.forEach(go => options.push(go));
709
+ }
710
+
711
+ return options;
712
+ });
713
+ </script>