@oscarpalmer/oui 0.34.0 → 0.36.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 (93) hide show
  1. package/dist/css/combobox.css +1 -1
  2. package/dist/css/listbox.css +152 -0
  3. package/dist/js/combobox/constants.combobox.d.mts +2 -2
  4. package/dist/js/combobox/constants.combobox.mjs +40 -33
  5. package/dist/js/combobox/dom.combobox.d.mts +8 -91
  6. package/dist/js/combobox/dom.combobox.mjs +204 -2
  7. package/dist/js/combobox/event.combobox.d.mts +14 -8
  8. package/dist/js/combobox/event.combobox.mjs +2 -2
  9. package/dist/js/combobox/index.d.mts +1 -1
  10. package/dist/js/combobox/index.mjs +21 -18
  11. package/dist/js/combobox/misc.combobox.d.mts +2 -14
  12. package/dist/js/combobox/misc.combobox.mjs +2 -2
  13. package/dist/js/combobox/models.combobox.d.mts +44 -2
  14. package/dist/js/combobox/state.combobox.d.mts +9 -8
  15. package/dist/js/combobox/state.combobox.mjs +2 -2
  16. package/dist/js/constants.combobox-DmRAMC64.d.mts +26 -0
  17. package/dist/js/constants.listbox-DRsXUxd3.d.mts +14 -0
  18. package/dist/js/index-EfkUSals.d.mts +139 -0
  19. package/dist/js/index.d.mts +4 -2
  20. package/dist/js/index.mjs +4 -2
  21. package/dist/js/internal/attributable.mjs +4 -3
  22. package/dist/js/internal/listbox/listbox.constants.d.mts +11 -0
  23. package/dist/js/internal/listbox/listbox.constants.mjs +23 -0
  24. package/dist/js/internal/listbox/listbox.data.d.mts +20 -0
  25. package/dist/js/internal/listbox/listbox.data.mjs +2 -0
  26. package/dist/js/internal/listbox/listbox.dom.d.mts +66 -0
  27. package/dist/js/internal/listbox/listbox.dom.mjs +2 -0
  28. package/dist/js/internal/listbox/listbox.event.d.mts +5 -0
  29. package/dist/js/internal/listbox/listbox.event.mjs +63 -0
  30. package/dist/js/internal/listbox/listbox.form.d.mts +6 -0
  31. package/dist/js/internal/listbox/listbox.form.mjs +52 -0
  32. package/dist/js/internal/listbox/listbox.misc.d.mts +12 -0
  33. package/dist/js/internal/listbox/listbox.misc.mjs +2 -0
  34. package/dist/js/internal/listbox/listbox.model.d.mts +2 -0
  35. package/dist/js/internal/listbox/listbox.model.mjs +1 -0
  36. package/dist/js/internal/listbox/listbox.state.d.mts +7 -0
  37. package/dist/js/internal/listbox/listbox.state.mjs +40 -0
  38. package/dist/js/internal/misc.d.mts +6 -0
  39. package/dist/js/internal/misc.mjs +13 -0
  40. package/dist/js/l10n-Bn-7RcwR.d.mts +20 -0
  41. package/dist/js/l10n.d.mts +2 -0
  42. package/dist/js/l10n.mjs +80 -0
  43. package/dist/js/listbox/constants.listbox.d.mts +2 -0
  44. package/dist/js/listbox/constants.listbox.mjs +40 -0
  45. package/dist/js/listbox/event.listbox.d.mts +8 -0
  46. package/dist/js/listbox/event.listbox.mjs +2 -0
  47. package/dist/js/listbox/index.d.mts +116 -0
  48. package/dist/js/listbox/index.mjs +189 -0
  49. package/dist/js/listbox/misc.listbox.d.mts +2 -0
  50. package/dist/js/listbox/misc.listbox.mjs +2 -0
  51. package/dist/js/listbox/state.listbox.d.mts +11 -0
  52. package/dist/js/listbox/state.listbox.mjs +2 -0
  53. package/dist/js/listbox.data-BWd0PCy7.mjs +424 -0
  54. package/dist/js/listbox.model-CRReGOmu.d.mts +125 -0
  55. package/dist/js/misc.listbox-BI-XsTOf.mjs +197 -0
  56. package/dist/js/misc.listbox-gnoJhrTr.d.mts +20 -0
  57. package/dist/js/sortable/sortable.embedded.mjs +4 -2
  58. package/dist/js/state.combobox-4xq0FPCF.mjs +365 -0
  59. package/package.json +7 -3
  60. package/src/css/combobox.scss +1 -1
  61. package/src/css/listbox.scss +149 -0
  62. package/src/js/combobox/constants.combobox.ts +46 -25
  63. package/src/js/combobox/dom.combobox.ts +65 -452
  64. package/src/js/combobox/event.combobox.ts +129 -218
  65. package/src/js/combobox/index.ts +43 -30
  66. package/src/js/combobox/misc.combobox.ts +60 -94
  67. package/src/js/combobox/models.combobox.ts +7 -47
  68. package/src/js/combobox/state.combobox.ts +136 -125
  69. package/src/js/index.ts +1 -0
  70. package/src/js/internal/listbox/listbox.constants.ts +25 -0
  71. package/src/js/{combobox/data.combobox.ts → internal/listbox/listbox.data.ts} +94 -43
  72. package/src/js/internal/listbox/listbox.dom.ts +445 -0
  73. package/src/js/internal/listbox/listbox.event.ts +129 -0
  74. package/src/js/{combobox/form.combobox.ts → internal/listbox/listbox.form.ts} +33 -33
  75. package/src/js/internal/listbox/listbox.misc.ts +135 -0
  76. package/src/js/internal/listbox/listbox.model.ts +169 -0
  77. package/src/js/internal/listbox/listbox.state.ts +82 -0
  78. package/src/js/internal/misc.ts +27 -0
  79. package/src/js/l10n.ts +192 -0
  80. package/src/js/listbox/constants.listbox.ts +61 -0
  81. package/src/js/listbox/event.listbox.ts +106 -0
  82. package/src/js/listbox/index.ts +302 -0
  83. package/src/js/listbox/misc.listbox.ts +70 -0
  84. package/src/js/listbox/state.listbox.ts +196 -0
  85. package/dist/js/combobox/data.combobox.d.mts +0 -18
  86. package/dist/js/combobox/data.combobox.mjs +0 -2
  87. package/dist/js/combobox/form.combobox.d.mts +0 -6
  88. package/dist/js/combobox/form.combobox.mjs +0 -2
  89. package/dist/js/combobox/i18n.combobox.d.mts +0 -2
  90. package/dist/js/combobox/i18n.combobox.mjs +0 -2
  91. package/dist/js/constants.combobox-DqNUGBLS.d.mts +0 -243
  92. package/dist/js/data.combobox-8RwBv5ey.mjs +0 -1077
  93. package/src/js/combobox/i18n.combobox.ts +0 -179
@@ -1,179 +0,0 @@
1
- import type {GenericCallback} from '@oscarpalmer/atoms/models';
2
- import {
3
- updateComboboxAnchor,
4
- updateComboboxMessage,
5
- updateComboboxSelectionItems,
6
- } from './dom.combobox';
7
- import {getComboboxVisibleOptions} from './misc.combobox';
8
- import type {OuiComboboxLocalizations, OuiComboboxState} from './models.combobox';
9
- import {comboboxStates} from './state.combobox';
10
-
11
- // #region Functions
12
-
13
- export function getComboboxLanguage(state: OuiComboboxState): string {
14
- return (
15
- state.host.closest('[lang]')?.getAttribute('lang') ?? document.documentElement.lang
16
- ).toLowerCase();
17
- }
18
-
19
- export function getComboboxLocalization<Key extends keyof OuiComboboxLocalizations>(
20
- key: Key,
21
- state: OuiComboboxState,
22
- ): OuiComboboxLocalizations[Key] {
23
- const language = getComboboxLanguage(state);
24
-
25
- const allLocalizations = [state.localizations, LOCALIZATIONS.globals];
26
- const {length} = allLocalizations;
27
-
28
- let localization: OuiComboboxLocalizations[Key] | undefined;
29
- let shortLanguage: string | undefined;
30
-
31
- for (let index = 0; index < length; index += 1) {
32
- const localizations = allLocalizations[index];
33
-
34
- localization = localizations?.[language]?.[key];
35
-
36
- if (localization != null) {
37
- break;
38
- }
39
-
40
- shortLanguage ??= language.split('-')[0];
41
-
42
- if (shortLanguage === language) {
43
- continue;
44
- }
45
-
46
- localization = localizations?.[shortLanguage]?.[key];
47
-
48
- if (localization != null) {
49
- break;
50
- }
51
- }
52
-
53
- return localization ?? LOCALIZATIONS.defaults[key];
54
- }
55
-
56
- /**
57
- * Set combobox localizations for a specific language
58
- *
59
- * @param language Language code
60
- * @param localizations Localizations for language
61
- */
62
- export function setComboboxLocalizations(
63
- language: string,
64
- localizations: Partial<OuiComboboxLocalizations>,
65
- ): void;
66
-
67
- /**
68
- * Set combobox localizations for one or more languages
69
- *
70
- * @param localizations Localizations for one or more languages
71
- */
72
- export function setComboboxLocalizations(
73
- localizations: Record<string, Partial<OuiComboboxLocalizations>>,
74
- ): void;
75
-
76
- export function setComboboxLocalizations(
77
- first: string | Record<string, Partial<OuiComboboxLocalizations>>,
78
- second?: Partial<OuiComboboxLocalizations>,
79
- ): void {
80
- updateComboboxLocalizations(
81
- typeof first === 'string'
82
- ? {
83
- [first]: second!,
84
- }
85
- : first,
86
- );
87
- }
88
-
89
- export function updateComboboxLocalizations(
90
- values: Record<string, Partial<Record<string, string | GenericCallback>>>,
91
- destination?: Record<string, Partial<OuiComboboxLocalizations>>,
92
- ): void {
93
- if (typeof values !== 'object' || values == null) {
94
- return;
95
- }
96
-
97
- const localizations = destination ?? LOCALIZATIONS.globals;
98
-
99
- const languages = Object.keys(values);
100
- const languagesLength = languages.length;
101
-
102
- let updated = false;
103
-
104
- for (let languagesIndex = 0; languagesIndex < languagesLength; languagesIndex += 1) {
105
- const language = languages[languagesIndex];
106
- const languageValue = values[language];
107
-
108
- if (typeof languageValue !== 'object' || languageValue == null) {
109
- continue;
110
- }
111
-
112
- const normalizedLanguage = language.toLowerCase();
113
-
114
- localizations[normalizedLanguage] ??= {};
115
-
116
- const keys = Object.keys(languageValue);
117
- const keysLength = keys.length;
118
-
119
- for (let keysIndex = 0; keysIndex < keysLength; keysIndex += 1) {
120
- const key = keys[keysIndex];
121
- const keyValue = languageValue[key];
122
-
123
- const normalizedKey = key.toLowerCase() as keyof OuiComboboxLocalizations;
124
-
125
- if (
126
- LOCALIZATIONS.keys.has(normalizedKey) &&
127
- (typeof keyValue === 'string' || typeof keyValue === 'function')
128
- ) {
129
- updated = true;
130
-
131
- localizations[normalizedLanguage][normalizedKey] = keyValue as never;
132
- }
133
- }
134
- }
135
-
136
- if (!updated) {
137
- return;
138
- }
139
-
140
- for (const state of comboboxStates.set) {
141
- updateComboboxAnchor(state);
142
- updateComboboxMessage(state, getComboboxVisibleOptions(state).length);
143
- updateComboboxSelectionItems(state);
144
- }
145
- }
146
-
147
- // #endregion
148
-
149
- // #region Variables
150
-
151
- const LOCALIZATIONS: {
152
- defaults: OuiComboboxLocalizations;
153
- globals: Record<string, Partial<OuiComboboxLocalizations>>;
154
- keys: Set<keyof OuiComboboxLocalizations>;
155
- } = {
156
- defaults: {
157
- empty: 'No results found',
158
- input: 'Please enter a value',
159
- invalid: 'Please select an option from the list',
160
- max: max => `Please select fewer options (maximum is ${max})`,
161
- min: min => `Please select more options (minimum is ${min})`,
162
- remove: label => `Remove ${label}`,
163
- results: amount => `${amount} results available`,
164
- selected: amount => `${amount} selected`,
165
- },
166
- globals: {},
167
- keys: new Set<keyof OuiComboboxLocalizations>([
168
- 'empty',
169
- 'input',
170
- 'invalid',
171
- 'max',
172
- 'min',
173
- 'remove',
174
- 'results',
175
- 'selected',
176
- ]),
177
- };
178
-
179
- // #endregion