@odx/foundation 1.0.0-alpha.6 → 1.0.0-alpha.7

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 (248) hide show
  1. package/README.md +7 -7
  2. package/dist/cdk.js +345 -0
  3. package/dist/components/accordion/accordion-header.component.d.ts +1 -1
  4. package/dist/components/button/base-button.d.ts +1 -1
  5. package/dist/components/button/button.component.d.ts +1 -1
  6. package/dist/components/button-group/button-group.component.d.ts +1 -1
  7. package/dist/components/card/card.component.d.ts +1 -1
  8. package/dist/components/chip/chip.component.d.ts +1 -1
  9. package/dist/components/dropdown/dropdown.component.d.ts +2 -2
  10. package/dist/components/format/format-date.component.d.ts +1 -1
  11. package/dist/components/format/format-number.component.d.ts +1 -1
  12. package/dist/components/format/format.component.d.ts +2 -2
  13. package/dist/components/format/relative-time.component.d.ts +1 -1
  14. package/dist/components/input/input.component.d.ts +1 -1
  15. package/dist/components/link/base-link.d.ts +1 -1
  16. package/dist/components/loading-overlay/loading-overlay.component.d.ts +1 -1
  17. package/dist/components/menu/menu.component.d.ts +2 -2
  18. package/dist/components/slider/slider-handle.component.d.ts +2 -2
  19. package/dist/components/slider/slider.component.d.ts +1 -1
  20. package/dist/components/spinbox/spinbox.component.d.ts +1 -1
  21. package/dist/components/tooltip/tooltip.element.d.ts +2 -2
  22. package/dist/components.js +4284 -0
  23. package/dist/i18n/lib/translate.d.ts +5 -1
  24. package/dist/i18n.js +140 -0
  25. package/dist/main.js +1448 -0
  26. package/dist/vendor.js +3660 -0
  27. package/package.json +13 -22
  28. package/dist/cdk/drag-drop/drag.controller.js +0 -90
  29. package/dist/cdk/drag-drop/is-draggable.js +0 -42
  30. package/dist/cdk/main.js +0 -5
  31. package/dist/cdk/popover/popover-host.mixin.css.js +0 -3
  32. package/dist/cdk/popover/popover-host.mixin.js +0 -115
  33. package/dist/cdk/popover/popover.component.css.js +0 -3
  34. package/dist/cdk/popover/popover.component.js +0 -38
  35. package/dist/cdk/popover/popover.models.js +0 -32
  36. package/dist/cdk/popover/popover.utils.js +0 -48
  37. package/dist/components/accordion/accordion-header.component.css.js +0 -3
  38. package/dist/components/accordion/accordion-header.component.js +0 -69
  39. package/dist/components/accordion/accordion-panel.component.css.js +0 -3
  40. package/dist/components/accordion/accordion-panel.component.js +0 -29
  41. package/dist/components/accordion/accordion.component.css.js +0 -3
  42. package/dist/components/accordion/accordion.component.js +0 -83
  43. package/dist/components/area-header/area-header.component.css.js +0 -3
  44. package/dist/components/area-header/area-header.component.js +0 -37
  45. package/dist/components/area-header/area-header.models.js +0 -11
  46. package/dist/components/avatar/avatar.component.css.js +0 -3
  47. package/dist/components/avatar/avatar.component.js +0 -31
  48. package/dist/components/avatar/avatar.models.js +0 -12
  49. package/dist/components/avatar-group/avatar-group.component.css.js +0 -3
  50. package/dist/components/avatar-group/avatar-group.component.js +0 -31
  51. package/dist/components/badge/badge.component.css.js +0 -3
  52. package/dist/components/badge/badge.component.js +0 -32
  53. package/dist/components/badge/badge.models.js +0 -10
  54. package/dist/components/breadcrumbs/breadcrumbs-item.component.css.js +0 -3
  55. package/dist/components/breadcrumbs/breadcrumbs-item.component.js +0 -56
  56. package/dist/components/breadcrumbs/breadcrumbs.component.css.js +0 -3
  57. package/dist/components/breadcrumbs/breadcrumbs.component.js +0 -88
  58. package/dist/components/button/base-button.css.js +0 -3
  59. package/dist/components/button/base-button.js +0 -72
  60. package/dist/components/button/button.component.css.js +0 -3
  61. package/dist/components/button/button.component.js +0 -66
  62. package/dist/components/button/button.models.js +0 -16
  63. package/dist/components/button-group/button-group.component.css.js +0 -3
  64. package/dist/components/button-group/button-group.component.js +0 -47
  65. package/dist/components/card/card.component.css.js +0 -3
  66. package/dist/components/card/card.component.js +0 -30
  67. package/dist/components/checkbox/checkbox.component.css.js +0 -3
  68. package/dist/components/checkbox/checkbox.component.js +0 -57
  69. package/dist/components/checkbox-group/checkbox-group.component.css.js +0 -3
  70. package/dist/components/checkbox-group/checkbox-group.component.js +0 -54
  71. package/dist/components/checkbox-group/checkbox-group.models.js +0 -5
  72. package/dist/components/chip/chip.component.css.js +0 -3
  73. package/dist/components/chip/chip.component.js +0 -94
  74. package/dist/components/chip/chip.models.js +0 -10
  75. package/dist/components/circular-progress-bar/circular-progress-bar.component.css.js +0 -3
  76. package/dist/components/circular-progress-bar/circular-progress-bar.component.js +0 -123
  77. package/dist/components/circular-progress-bar/circular-progress-bar.models.js +0 -7
  78. package/dist/components/content-box/content-box.component.css.js +0 -3
  79. package/dist/components/content-box/content-box.component.js +0 -26
  80. package/dist/components/dropdown/dropdown.component.css.js +0 -3
  81. package/dist/components/dropdown/dropdown.component.js +0 -121
  82. package/dist/components/dropdown/dropdown.models.js +0 -8
  83. package/dist/components/form-field/form-field.element.css.js +0 -3
  84. package/dist/components/form-field/form-field.element.js +0 -62
  85. package/dist/components/format/format-bytes.component.js +0 -46
  86. package/dist/components/format/format-date.component.js +0 -36
  87. package/dist/components/format/format-number.component.js +0 -59
  88. package/dist/components/format/format.component.js +0 -34
  89. package/dist/components/format/relative-time.component.js +0 -80
  90. package/dist/components/header/header-actions.component.css.js +0 -3
  91. package/dist/components/header/header-actions.component.js +0 -22
  92. package/dist/components/header/header.component.css.js +0 -3
  93. package/dist/components/header/header.component.js +0 -58
  94. package/dist/components/headline/headline.component.css.js +0 -3
  95. package/dist/components/headline/headline.component.js +0 -31
  96. package/dist/components/headline/headline.models.js +0 -8
  97. package/dist/components/icon-button/icon-button.component.js +0 -34
  98. package/dist/components/inline-message/inline-message.component.css.js +0 -3
  99. package/dist/components/inline-message/inline-message.component.js +0 -39
  100. package/dist/components/inline-message/inline-message.models.js +0 -9
  101. package/dist/components/input/input.component.css.js +0 -3
  102. package/dist/components/input/input.component.js +0 -72
  103. package/dist/components/input/input.models.js +0 -7
  104. package/dist/components/line-clamp/line-clamp.component.css.js +0 -3
  105. package/dist/components/line-clamp/line-clamp.component.js +0 -37
  106. package/dist/components/link/base-link.js +0 -70
  107. package/dist/components/link/link.component.css.js +0 -3
  108. package/dist/components/link/link.component.js +0 -33
  109. package/dist/components/list/list-item.component.css.js +0 -3
  110. package/dist/components/list/list-item.component.js +0 -33
  111. package/dist/components/list/list.component.css.js +0 -3
  112. package/dist/components/list/list.component.js +0 -25
  113. package/dist/components/loading-overlay/loading-overlay.component.css.js +0 -3
  114. package/dist/components/loading-overlay/loading-overlay.component.js +0 -78
  115. package/dist/components/loading-spinner/loading-spinner.component.css.js +0 -3
  116. package/dist/components/loading-spinner/loading-spinner.component.js +0 -58
  117. package/dist/components/logo/logo.component.css.js +0 -3
  118. package/dist/components/logo/logo.component.js +0 -38
  119. package/dist/components/logo/logo.models.js +0 -9
  120. package/dist/components/main-menu/main-menu-button.component.js +0 -38
  121. package/dist/components/main-menu/main-menu-link.component.css.js +0 -3
  122. package/dist/components/main-menu/main-menu-link.component.js +0 -20
  123. package/dist/components/main-menu/main-menu-subtitle.component.js +0 -29
  124. package/dist/components/main-menu/main-menu-title.component.js +0 -29
  125. package/dist/components/main-menu/main-menu.component.css.js +0 -3
  126. package/dist/components/main-menu/main-menu.component.js +0 -82
  127. package/dist/components/main.js +0 -102
  128. package/dist/components/menu/menu-label.component.css.js +0 -3
  129. package/dist/components/menu/menu-label.component.js +0 -18
  130. package/dist/components/menu/menu.component.css.js +0 -3
  131. package/dist/components/menu/menu.component.js +0 -111
  132. package/dist/components/menu-item/menu-item.component.css.js +0 -3
  133. package/dist/components/menu-item/menu-item.component.js +0 -45
  134. package/dist/components/navigation-item/navigation-item.component.css.js +0 -3
  135. package/dist/components/navigation-item/navigation-item.component.js +0 -43
  136. package/dist/components/navigation-item/navigation-item.models.js +0 -6
  137. package/dist/components/option/option.component.css.js +0 -3
  138. package/dist/components/option/option.component.js +0 -37
  139. package/dist/components/page/page.component.css.js +0 -3
  140. package/dist/components/page/page.component.js +0 -53
  141. package/dist/components/page/page.models.js +0 -9
  142. package/dist/components/page-layout/page-layout.component.css.js +0 -3
  143. package/dist/components/page-layout/page-layout.component.js +0 -28
  144. package/dist/components/progress-bar/progress-bar.component.css.js +0 -3
  145. package/dist/components/progress-bar/progress-bar.component.js +0 -89
  146. package/dist/components/progress-bar/progress-bar.models.js +0 -7
  147. package/dist/components/radio-button/radio-button.component.css.js +0 -3
  148. package/dist/components/radio-button/radio-button.component.js +0 -39
  149. package/dist/components/radio-group/radio-group.component.css.js +0 -3
  150. package/dist/components/radio-group/radio-group.component.js +0 -24
  151. package/dist/components/radio-group/radio-group.models.js +0 -5
  152. package/dist/components/rail-navigation/rail-navigation.component.css.js +0 -3
  153. package/dist/components/rail-navigation/rail-navigation.component.js +0 -65
  154. package/dist/components/search-bar/search-bar.component.css.js +0 -3
  155. package/dist/components/search-bar/search-bar.component.js +0 -100
  156. package/dist/components/search-bar/search-bar.events.js +0 -7
  157. package/dist/components/search-bar/search-bar.models.js +0 -6
  158. package/dist/components/select/select.component.css.js +0 -3
  159. package/dist/components/select/select.component.js +0 -101
  160. package/dist/components/separator/separator.component.css.js +0 -3
  161. package/dist/components/separator/separator.component.js +0 -49
  162. package/dist/components/skeleton/skeleton.component.css.js +0 -3
  163. package/dist/components/skeleton/skeleton.component.js +0 -32
  164. package/dist/components/slider/slider-handle.component.css.js +0 -3
  165. package/dist/components/slider/slider-handle.component.js +0 -168
  166. package/dist/components/slider/slider-marks.component.css.js +0 -3
  167. package/dist/components/slider/slider-marks.component.js +0 -61
  168. package/dist/components/slider/slider.component.css.js +0 -3
  169. package/dist/components/slider/slider.component.js +0 -119
  170. package/dist/components/slider/slider.models.js +0 -17
  171. package/dist/components/spacer/spacer.component.css.js +0 -3
  172. package/dist/components/spacer/spacer.component.js +0 -39
  173. package/dist/components/spinbox/spinbox.component.css.js +0 -3
  174. package/dist/components/spinbox/spinbox.component.js +0 -94
  175. package/dist/components/stack/stack.component.css.js +0 -3
  176. package/dist/components/stack/stack.component.js +0 -45
  177. package/dist/components/stack/stack.models.js +0 -23
  178. package/dist/components/switch/switch.component.css.js +0 -3
  179. package/dist/components/switch/switch.component.js +0 -36
  180. package/dist/components/table/table-body.element.css.js +0 -3
  181. package/dist/components/table/table-body.element.js +0 -26
  182. package/dist/components/table/table-cell.element.css.js +0 -3
  183. package/dist/components/table/table-cell.element.js +0 -26
  184. package/dist/components/table/table-checkbox-cell.element.css.js +0 -3
  185. package/dist/components/table/table-checkbox-cell.element.js +0 -66
  186. package/dist/components/table/table-header-cell.element.css.js +0 -3
  187. package/dist/components/table/table-header-cell.element.js +0 -40
  188. package/dist/components/table/table-header.element.css.js +0 -3
  189. package/dist/components/table/table-header.element.js +0 -52
  190. package/dist/components/table/table-row.element.css.js +0 -3
  191. package/dist/components/table/table-row.element.js +0 -111
  192. package/dist/components/table/table.element.css.js +0 -3
  193. package/dist/components/table/table.element.js +0 -97
  194. package/dist/components/text/text.component.css.js +0 -3
  195. package/dist/components/text/text.component.js +0 -34
  196. package/dist/components/text/text.models.js +0 -13
  197. package/dist/components/title/title.component.css.js +0 -3
  198. package/dist/components/title/title.component.js +0 -31
  199. package/dist/components/title/title.models.js +0 -10
  200. package/dist/components/toast/toast.element.css.js +0 -3
  201. package/dist/components/toast/toast.element.js +0 -31
  202. package/dist/components/toast/toast.models.js +0 -5
  203. package/dist/components/toggle-button/toggle-button.component.css.js +0 -3
  204. package/dist/components/toggle-button/toggle-button.component.js +0 -52
  205. package/dist/components/tooltip/tooltip.element.css.js +0 -3
  206. package/dist/components/tooltip/tooltip.element.js +0 -120
  207. package/dist/components/tooltip/tooltip.models.js +0 -10
  208. package/dist/components/visually-hidden/visually-hidden.component.css.js +0 -3
  209. package/dist/components/visually-hidden/visually-hidden.component.js +0 -22
  210. package/dist/i18n/lib/config.js +0 -16
  211. package/dist/i18n/lib/format.js +0 -55
  212. package/dist/i18n/lib/is-localized.mixin.js +0 -41
  213. package/dist/i18n/lib/localization.js +0 -28
  214. package/dist/i18n/lib/translate.js +0 -18
  215. package/dist/i18n/main.js +0 -5
  216. package/dist/lib/controllers/focus-trap.controller.js +0 -55
  217. package/dist/lib/custom-element.css.js +0 -3
  218. package/dist/lib/custom-element.js +0 -27
  219. package/dist/lib/decorators/request-update-on-aria-change.js +0 -15
  220. package/dist/lib/directives/aria-boolean-attr.js +0 -9
  221. package/dist/lib/directives/optional-attr.js +0 -8
  222. package/dist/lib/directives/optional-slot.js +0 -14
  223. package/dist/lib/directives/slot-fallback.js +0 -16
  224. package/dist/lib/external/roving-tabindex.js +0 -386
  225. package/dist/lib/facade/checkbox-form-control.js +0 -78
  226. package/dist/lib/facade/checkbox-group-form-control.js +0 -109
  227. package/dist/lib/facade/option-control.js +0 -49
  228. package/dist/lib/facade/radio-group-form-control.js +0 -87
  229. package/dist/lib/facade/select-form-control.js +0 -108
  230. package/dist/lib/main.js +0 -30
  231. package/dist/lib/mixins/can-be-disabled.js +0 -60
  232. package/dist/lib/mixins/can-be-readonly.js +0 -33
  233. package/dist/lib/mixins/can-be-required.js +0 -33
  234. package/dist/lib/mixins/can-be-validated.js +0 -32
  235. package/dist/lib/mixins/dedupe-mixin.js +0 -23
  236. package/dist/lib/mixins/form-control.js +0 -61
  237. package/dist/lib/mixins/number-control.js +0 -63
  238. package/dist/lib/mixins/with-aria-controls.js +0 -43
  239. package/dist/lib/mixins/with-loading-state.js +0 -33
  240. package/dist/lib/utils/date.js +0 -10
  241. package/dist/lib/utils/dom.js +0 -48
  242. package/dist/lib/utils/get-unique-id.js +0 -15
  243. package/dist/lib/utils/keyboard-events.js +0 -42
  244. package/dist/lib/utils/object.js +0 -7
  245. package/dist/lib/utils/shared-intersection-observer.js +0 -37
  246. package/dist/lib/utils/shared-resize-observer.js +0 -38
  247. package/dist/lib/utils/string.js +0 -7
  248. /package/dist/{lib/main.css → styles.css} +0 -0
@@ -1,5 +1,9 @@
1
1
  import { Signal } from '@lit-labs/signals';
2
2
  import { Locale } from './models.js';
3
- export declare function setTranslation(locale: Locale, translation: Record<string, string>): void;
3
+ type Translation = {
4
+ [key: string]: Translation | string;
5
+ };
6
+ export declare function setTranslation(locale: Locale, translation: Translation): void;
4
7
  export declare function translate(key: string, context?: Record<string, string | number> | null, locale?: Locale | null): Signal.Computed<string>;
8
+ export {};
5
9
  //# sourceMappingURL=translate.d.ts.map
package/dist/i18n.js ADDED
@@ -0,0 +1,140 @@
1
+ import { signal, SignalWatcher, computed } from '@lit-labs/signals';
2
+ import { createOptions, parseDate, createMutationObserver, dedupeMixin, interpolate } from '@odx/foundation';
3
+ import { property } from 'lit/decorators.js';
4
+ import { k as flattenObject } from './vendor.js';
5
+
6
+ const I18nOptions = createOptions({
7
+ defaultLocale: () => navigator.language,
8
+ relativeTimeFormatOptions: { minUnit: "minute" }
9
+ });
10
+ const i18nOptions = signal(null);
11
+ function setI18nOptions(options) {
12
+ i18nOptions.set(getI18nOptions(options));
13
+ }
14
+ function getI18nOptions(options) {
15
+ return I18nOptions(options ?? i18nOptions.get() ?? {});
16
+ }
17
+
18
+ function formatDate(input, options) {
19
+ const value = parseDate(input);
20
+ if (!value) return "";
21
+ const { dateTimeFormatOptions } = getI18nOptions({ dateTimeFormatOptions: options });
22
+ if (dateTimeFormatOptions?.dateStyle === "iso8601") {
23
+ return new Intl.DateTimeFormat("sv-SE", { dateStyle: "short" }).format(value);
24
+ }
25
+ return new Intl.DateTimeFormat(options?.locale, dateTimeFormatOptions).format(value);
26
+ }
27
+ function formatNumber(input, options) {
28
+ const value = Number(input);
29
+ if (Number.isNaN(value)) return "";
30
+ const { numberFormatOptions } = getI18nOptions({ numberFormatOptions: options });
31
+ if (numberFormatOptions?.currency) {
32
+ numberFormatOptions.style = "currency";
33
+ }
34
+ return new Intl.NumberFormat(numberFormatOptions?.locale, numberFormatOptions).format(value);
35
+ }
36
+ function formatList(input, options) {
37
+ if (input.length === 0) return "";
38
+ const { listFormatOptions } = getI18nOptions({ listFormatOptions: options });
39
+ return new Intl.ListFormat(options?.locale, listFormatOptions).format(input);
40
+ }
41
+ const TIME_UNITS = [
42
+ { max: 59e3, value: 1e3, unit: "second" },
43
+ // max 59 seconds
44
+ { max: 276e4, value: 6e4, unit: "minute" },
45
+ // max 46 minutes
46
+ { max: 72e6, value: 36e5, unit: "hour" },
47
+ // max 20 hours
48
+ { max: 5184e5, value: 864e5, unit: "day" },
49
+ // max 6 days
50
+ { max: 24192e5, value: 6048e5, unit: "week" },
51
+ // max 28 days
52
+ { max: 28512e6, value: 2592e6, unit: "month" },
53
+ // max 11 months
54
+ { max: Number.POSITIVE_INFINITY, value: 31536e6, unit: "year" }
55
+ ];
56
+ function findTimeUnit(value, minUnit) {
57
+ const minTimeUnit = TIME_UNITS.find(({ unit }) => unit === minUnit) ?? TIME_UNITS[0];
58
+ return TIME_UNITS.find((config) => value < config.max && config.value >= minTimeUnit.value);
59
+ }
60
+ function formatRelativeTime(input, options) {
61
+ const value = parseDate(input);
62
+ if (!value) return "";
63
+ const { relativeTimeFormatOptions } = getI18nOptions({ relativeTimeFormatOptions: options });
64
+ const relativeTime = value.getTime() - (/* @__PURE__ */ new Date()).getTime();
65
+ const timeUnit = findTimeUnit(Math.abs(relativeTime), relativeTimeFormatOptions?.minUnit);
66
+ return new Intl.RelativeTimeFormat(options?.locale, relativeTimeFormatOptions).format(Math.round(relativeTime / timeUnit.value), timeUnit.unit);
67
+ }
68
+
69
+ const activeLocale = signal(null, { equals: (t, t2) => t?.toString() === t2?.toString() });
70
+ function watchLocaleChanges(root = document.documentElement) {
71
+ const updateLocale = () => activeLocale.set(getLocale(root.lang));
72
+ const observer = createMutationObserver(updateLocale);
73
+ observer.observe(root, { attributes: true, attributeFilter: ["lang"] });
74
+ updateLocale();
75
+ }
76
+ function setLocale(locale) {
77
+ if (locale === null) {
78
+ document.documentElement.lang = getI18nOptions().defaultLocale().toString();
79
+ } else {
80
+ document.documentElement.lang = getLocale(locale).toString();
81
+ }
82
+ }
83
+ function getLocale(locale) {
84
+ const fallbackLocale = activeLocale.get() || getI18nOptions().defaultLocale();
85
+ try {
86
+ return new Intl.Locale(locale || fallbackLocale);
87
+ } catch {
88
+ return new Intl.Locale(fallbackLocale);
89
+ }
90
+ }
91
+
92
+ var __defProp = Object.defineProperty;
93
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
94
+ var __decorateClass = (decorators, target, key, kind) => {
95
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
96
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
97
+ if (decorator = decorators[i])
98
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
99
+ if (kind && result) __defProp(target, key, result);
100
+ return result;
101
+ };
102
+ const IsLocalized = dedupeMixin((superClass) => {
103
+ class IsLocalizedElement extends SignalWatcher(superClass) {
104
+ constructor() {
105
+ super(...arguments);
106
+ this.locale = computed(() => getLocale(this.lang));
107
+ }
108
+ formatDate(...[input, options]) {
109
+ return formatDate(input, { ...options, locale: options?.locale ?? this.locale.get() });
110
+ }
111
+ formatNumber(...[input, options]) {
112
+ return formatNumber(input, { ...options, locale: options?.locale ?? this.locale.get() });
113
+ }
114
+ formatList(...[input, options]) {
115
+ return formatList(input, { ...options, locale: options?.locale ?? this.locale.get() });
116
+ }
117
+ formatRelativeTime(...[input, options]) {
118
+ return formatRelativeTime(input, { ...options, locale: options?.locale ?? this.locale.get() });
119
+ }
120
+ }
121
+ __decorateClass([
122
+ property()
123
+ ], IsLocalizedElement.prototype, "lang", 2);
124
+ return IsLocalizedElement;
125
+ });
126
+
127
+ const translations = signal({});
128
+ function setTranslation(locale, translation) {
129
+ const { language } = getLocale(locale);
130
+ translations.set({ ...translations.get(), [language]: { ...translations.get()[language], ...flattenObject(translation, { delimiter: "." }) } });
131
+ }
132
+ function translate(key, context, locale) {
133
+ return computed(() => {
134
+ const translation = translations.get()[getLocale(locale).language];
135
+ if (typeof translation?.[key] !== "string") return key;
136
+ return interpolate(translation[key], { ...translation, ...context });
137
+ });
138
+ }
139
+
140
+ export { IsLocalized, formatDate, formatList, formatNumber, formatRelativeTime, getI18nOptions, getLocale, setI18nOptions, setLocale, setTranslation, translate, watchLocaleChanges };