@universal-material/web 3.0.69 → 3.0.71

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 (194) hide show
  1. package/app-bar/top-app-bar.js +3 -2
  2. package/app-bar/top-app-bar.js.map +1 -1
  3. package/button/button-base.d.ts +1 -0
  4. package/button/button-base.d.ts.map +1 -1
  5. package/button/button-base.js +7 -18
  6. package/button/button-base.js.map +1 -1
  7. package/button/button-base.styles.d.ts +2 -0
  8. package/button/button-base.styles.d.ts.map +1 -0
  9. package/button/button-base.styles.js +16 -0
  10. package/button/button-base.styles.js.map +1 -0
  11. package/button/button-set.d.ts +1 -1
  12. package/button/button-set.d.ts.map +1 -1
  13. package/button/button-set.js +1 -1
  14. package/button/button-set.js.map +1 -1
  15. package/button/button-set.styles.d.ts.map +1 -1
  16. package/button/button-set.styles.js +0 -19
  17. package/button/button-set.styles.js.map +1 -1
  18. package/button/button.d.ts +2 -2
  19. package/button/button.d.ts.map +1 -1
  20. package/button/button.js +1 -1
  21. package/button/button.js.map +1 -1
  22. package/button/button.styles.d.ts.map +1 -1
  23. package/button/button.styles.js +0 -100
  24. package/button/button.styles.js.map +1 -1
  25. package/button/fab.d.ts +2 -2
  26. package/button/fab.d.ts.map +1 -1
  27. package/button/fab.js +1 -1
  28. package/button/fab.js.map +1 -1
  29. package/button/fab.styles.d.ts.map +1 -1
  30. package/button/fab.styles.js +0 -100
  31. package/button/fab.styles.js.map +1 -1
  32. package/button/icon-button.d.ts +2 -2
  33. package/button/icon-button.d.ts.map +1 -1
  34. package/button/icon-button.js +1 -1
  35. package/button/icon-button.js.map +1 -1
  36. package/button/icon-button.styles.d.ts.map +1 -1
  37. package/button/icon-button.styles.js +0 -100
  38. package/button/icon-button.styles.js.map +1 -1
  39. package/card/card-content.js +1 -1
  40. package/card/card-content.js.map +1 -1
  41. package/card/card-media.js +1 -1
  42. package/card/card-media.js.map +1 -1
  43. package/card/card.js +1 -1
  44. package/card/card.js.map +1 -1
  45. package/checkbox/checkbox.js +8 -20
  46. package/checkbox/checkbox.js.map +1 -1
  47. package/chip/chip-set.d.ts +1 -1
  48. package/chip/chip-set.d.ts.map +1 -1
  49. package/chip/chip-set.js +1 -1
  50. package/chip/chip-set.js.map +1 -1
  51. package/chip/chip-set.styles.d.ts.map +1 -1
  52. package/chip/chip-set.styles.js +0 -19
  53. package/chip/chip-set.styles.js.map +1 -1
  54. package/chip/chip.d.ts +1 -1
  55. package/chip/chip.d.ts.map +1 -1
  56. package/chip/chip.js +39 -54
  57. package/chip/chip.js.map +1 -1
  58. package/chip/chip.styles.d.ts.map +1 -1
  59. package/chip/chip.styles.js +0 -87
  60. package/chip/chip.styles.js.map +1 -1
  61. package/chip-field/chip-field.js +72 -86
  62. package/chip-field/chip-field.js.map +1 -1
  63. package/custom-elements.json +3207 -2538
  64. package/dialog/confirm-dialog-builder.js +6 -22
  65. package/dialog/confirm-dialog-builder.js.map +1 -1
  66. package/dialog/dialog-builder.js +4 -17
  67. package/dialog/dialog-builder.js.map +1 -1
  68. package/dialog/dialog.js +65 -80
  69. package/dialog/dialog.js.map +1 -1
  70. package/dialog/message-dialog-builder.js +3 -19
  71. package/dialog/message-dialog-builder.js.map +1 -1
  72. package/elevation/elevation.js +1 -1
  73. package/elevation/elevation.js.map +1 -1
  74. package/field/field-base.d.ts +2 -2
  75. package/field/field-base.d.ts.map +1 -1
  76. package/field/field-base.js +13 -16
  77. package/field/field-base.js.map +1 -1
  78. package/field/field-base.styles.js +1 -1
  79. package/field/field-base.styles.js.map +1 -1
  80. package/list/list-item.js +1 -1
  81. package/list/list-item.js.map +1 -1
  82. package/list/list.js +1 -1
  83. package/list/list.js.map +1 -1
  84. package/menu/menu-item.d.ts +12 -6
  85. package/menu/menu-item.d.ts.map +1 -1
  86. package/menu/menu-item.js +49 -31
  87. package/menu/menu-item.js.map +1 -1
  88. package/menu/menu-item.styles.d.ts.map +1 -1
  89. package/menu/menu-item.styles.js +15 -90
  90. package/menu/menu-item.styles.js.map +1 -1
  91. package/menu/menu.d.ts.map +1 -1
  92. package/menu/menu.js +129 -134
  93. package/menu/menu.js.map +1 -1
  94. package/navigation/drawer-item.d.ts +1 -1
  95. package/navigation/drawer-item.d.ts.map +1 -1
  96. package/navigation/drawer-item.js +4 -5
  97. package/navigation/drawer-item.js.map +1 -1
  98. package/navigation/drawer-item.styles.d.ts.map +1 -1
  99. package/navigation/drawer-item.styles.js +0 -87
  100. package/navigation/drawer-item.styles.js.map +1 -1
  101. package/navigation/drawer.js +4 -4
  102. package/navigation/drawer.js.map +1 -1
  103. package/navigation/side-navigation.js +8 -20
  104. package/navigation/side-navigation.js.map +1 -1
  105. package/package.json +18 -18
  106. package/progress/circular-progress.d.ts +1 -2
  107. package/progress/circular-progress.d.ts.map +1 -1
  108. package/progress/circular-progress.js +19 -27
  109. package/progress/circular-progress.js.map +1 -1
  110. package/progress/progress-bar.d.ts +1 -2
  111. package/progress/progress-bar.d.ts.map +1 -1
  112. package/progress/progress-bar.js +12 -20
  113. package/progress/progress-bar.js.map +1 -1
  114. package/radio/radio.js +53 -61
  115. package/radio/radio.js.map +1 -1
  116. package/ripple/ripple.js +3 -2
  117. package/ripple/ripple.js.map +1 -1
  118. package/select/extended-option.d.ts +5 -0
  119. package/select/extended-option.d.ts.map +1 -0
  120. package/select/extended-option.js +2 -0
  121. package/select/extended-option.js.map +1 -0
  122. package/select/extended-select.d.ts +6 -0
  123. package/select/extended-select.d.ts.map +1 -0
  124. package/select/extended-select.js +2 -0
  125. package/select/extended-select.js.map +1 -0
  126. package/select/option.d.ts +10 -0
  127. package/select/option.d.ts.map +1 -1
  128. package/select/option.js +84 -74
  129. package/select/option.js.map +1 -1
  130. package/select/option.styles.d.ts.map +1 -1
  131. package/select/option.styles.js +10 -0
  132. package/select/option.styles.js.map +1 -1
  133. package/select/select-navigation-controller.d.ts +10 -2
  134. package/select/select-navigation-controller.d.ts.map +1 -1
  135. package/select/select-navigation-controller.js +66 -3
  136. package/select/select-navigation-controller.js.map +1 -1
  137. package/select/select.d.ts +10 -4
  138. package/select/select.d.ts.map +1 -1
  139. package/select/select.js +179 -68
  140. package/select/select.js.map +1 -1
  141. package/select/select.styles.d.ts.map +1 -1
  142. package/select/select.styles.js +15 -6
  143. package/select/select.styles.js.map +1 -1
  144. package/shared/button-wrapper.d.ts +2 -0
  145. package/shared/button-wrapper.d.ts.map +1 -1
  146. package/shared/button-wrapper.js +18 -22
  147. package/shared/button-wrapper.js.map +1 -1
  148. package/shared/button-wrapper.styles.d.ts +2 -0
  149. package/shared/button-wrapper.styles.d.ts.map +1 -0
  150. package/shared/button-wrapper.styles.js +63 -0
  151. package/shared/button-wrapper.styles.js.map +1 -0
  152. package/shared/compare-text.d.ts +2 -0
  153. package/shared/compare-text.d.ts.map +1 -0
  154. package/shared/compare-text.js +5 -0
  155. package/shared/compare-text.js.map +1 -0
  156. package/shared/menu-field/menu-field-navigation-controller.d.ts +11 -4
  157. package/shared/menu-field/menu-field-navigation-controller.d.ts.map +1 -1
  158. package/shared/menu-field/menu-field-navigation-controller.js +56 -31
  159. package/shared/menu-field/menu-field-navigation-controller.js.map +1 -1
  160. package/shared/mixin-attribute-properties.d.ts.map +1 -1
  161. package/shared/normalize-text.d.ts +1 -1
  162. package/shared/normalize-text.d.ts.map +1 -1
  163. package/shared/normalize-text.js +1 -1
  164. package/shared/normalize-text.js.map +1 -1
  165. package/shared/selection-control/selection-control-list-item.d.ts.map +1 -1
  166. package/shared/selection-control/selection-control-list-item.js +7 -7
  167. package/shared/selection-control/selection-control-list-item.js.map +1 -1
  168. package/shared/selection-control/selection-control.js +16 -28
  169. package/shared/selection-control/selection-control.js.map +1 -1
  170. package/shared/sets/set-base.d.ts +2 -0
  171. package/shared/sets/set-base.d.ts.map +1 -1
  172. package/shared/sets/set-base.js +2 -0
  173. package/shared/sets/set-base.js.map +1 -1
  174. package/shared/sets/set-base.styles.d.ts +2 -0
  175. package/shared/sets/set-base.styles.d.ts.map +1 -0
  176. package/shared/sets/set-base.styles.js +22 -0
  177. package/shared/sets/set-base.styles.js.map +1 -0
  178. package/shared/text-field-base/text-field-base.js +6 -6
  179. package/shared/text-field-base/text-field-base.js.map +1 -1
  180. package/snackbar/snackbar.d.ts.map +1 -1
  181. package/snackbar/snackbar.js +13 -7
  182. package/snackbar/snackbar.js.map +1 -1
  183. package/switch/switch.js +4 -4
  184. package/switch/switch.js.map +1 -1
  185. package/text-field/text-field.d.ts +2 -0
  186. package/text-field/text-field.d.ts.map +1 -1
  187. package/text-field/text-field.js +22 -30
  188. package/text-field/text-field.js.map +1 -1
  189. package/typeahead/highlight.js +7 -24
  190. package/typeahead/highlight.js.map +1 -1
  191. package/typeahead/typeahead.d.ts +3 -0
  192. package/typeahead/typeahead.d.ts.map +1 -1
  193. package/typeahead/typeahead.js +184 -180
  194. package/typeahead/typeahead.js.map +1 -1
package/select/select.js CHANGED
@@ -4,44 +4,25 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
- };
12
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
13
- if (kind === "m") throw new TypeError("Private method is not writable");
14
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
15
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
16
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
17
- };
18
- var _UmSelect_instances, _UmSelect_navigationController, _UmSelect_connected, _UmSelect_handleClick, _UmSelect_handleMenuClick, _UmSelect_handleSlotChange, _UmSelect_attach;
19
- import { html } from 'lit';
7
+ import { html, svg } from 'lit';
20
8
  import { customElement, query, state } from 'lit/decorators.js';
21
9
  import { html as staticHtml } from 'lit/static-html.js';
22
10
  import { styles } from './select.styles.js';
23
11
  import { UmTextFieldBase } from '../shared/text-field-base/text-field-base.js';
24
- import { UmOption } from './option.js';
25
12
  import { SelectNavigationController } from './select-navigation-controller.js';
26
13
  import './option.js';
27
14
  let UmSelect = class UmSelect extends UmTextFieldBase {
28
- constructor() {
29
- super(...arguments);
30
- _UmSelect_instances.add(this);
31
- this.nativeSelect = document.createElement('select');
32
- _UmSelect_navigationController.set(this, new SelectNavigationController(this));
33
- _UmSelect_connected.set(this, false);
34
- this._options = [];
35
- _UmSelect_handleClick.set(this, () => {
36
- this.menu.toggle();
37
- });
38
- }
15
+ static { this.styles = [UmTextFieldBase.styles, styles]; }
16
+ #list;
17
+ #navigationController;
18
+ #mutationObserver;
19
+ #connected;
39
20
  get value() {
40
21
  return this.nativeSelect.value;
41
22
  }
42
23
  set value(value) {
43
24
  this.nativeSelect.value = value;
44
- if (!__classPrivateFieldGet(this, _UmSelect_connected, "f")) {
25
+ if (!this.#connected) {
45
26
  return;
46
27
  }
47
28
  this.elementInternals.setFormValue(value);
@@ -52,82 +33,212 @@ let UmSelect = class UmSelect extends UmTextFieldBase {
52
33
  set selectedIndex(index) {
53
34
  this.nativeSelect.selectedIndex = index;
54
35
  }
55
- get selectedOption() {
56
- return this.options[this.selectedIndex] ?? null;
36
+ get selectedOptions() {
37
+ return this.nativeSelect.selectedOptions.length
38
+ ? [this.nativeSelect.selectedOptions[0]._parent]
39
+ : [];
57
40
  }
58
41
  get options() {
59
- return this._options;
42
+ const options = Array.from(this.querySelectorAll('u-option'));
43
+ return options
44
+ .filter(o => o.constructor.name === 'UmOption');
45
+ }
46
+ constructor() {
47
+ super();
48
+ this.currentOptionIndex = 1;
49
+ this.nativeSelect = (() => {
50
+ const select = document.createElement('select');
51
+ select.setAttribute('tabindex', '-1');
52
+ select.setAttribute('part', 'select');
53
+ return select;
54
+ })();
55
+ this.#list = (() => {
56
+ const list = document.createElement('div');
57
+ list.role = 'listbox';
58
+ list.id = 'list';
59
+ list.className = 'list';
60
+ return list;
61
+ })();
62
+ this.#navigationController = new SelectNavigationController(this);
63
+ this.#connected = false;
64
+ this.#handleClick = (e) => {
65
+ this.menu.toggle();
66
+ if (!this.menu.open || !this.selectedOptions.length) {
67
+ return;
68
+ }
69
+ this.#navigationController.focusMenu(this.selectedOptions[0], e.detail === 0, false);
70
+ };
71
+ this.#handleMenuOpen = () => {
72
+ this.button.setAttribute('aria-expanded', 'true');
73
+ this.#setSelectedOption();
74
+ };
75
+ this.#handleMenuOpened = () => {
76
+ if (!this.selectedOptions.length) {
77
+ return;
78
+ }
79
+ const option = this.selectedOptions[0];
80
+ option.scrollIntoView({ block: 'nearest' });
81
+ };
82
+ this.#handleMenuClose = () => {
83
+ this.button.setAttribute('aria-expanded', 'false');
84
+ this.#navigationController.blurMenu();
85
+ };
86
+ this.#mutationObserver = new MutationObserver(() => this._updateOptions());
87
+ this.#mutationObserver.observe(this, { characterData: true, childList: true, subtree: true });
88
+ }
89
+ _updateOptions() {
90
+ const options = this.options;
91
+ for (const option of options) {
92
+ option._select = this;
93
+ }
94
+ this.#updateOptions(options);
95
+ this.#updateAccessibilityList(options);
96
+ const selectedOption = this.selectedOptions[0];
97
+ if (!selectedOption) {
98
+ return;
99
+ }
100
+ // eslint-disable-next-line no-self-assign
101
+ selectedOption.selected = selectedOption.selected;
102
+ this.empty = !selectedOption.textContent?.trim();
103
+ this.button.setAttribute('aria-labelledby', selectedOption._listItem.id);
104
+ }
105
+ #updateOptions(options) {
106
+ const maxLength = Math.max(options.length, this.nativeSelect.children.length);
107
+ for (let i = 0; i < maxLength; i++) {
108
+ const option = options[i];
109
+ const nativeOption = this.nativeSelect.children[i];
110
+ if (!option) {
111
+ nativeOption.remove();
112
+ continue;
113
+ }
114
+ if (!nativeOption) {
115
+ this.nativeSelect.appendChild(option._nativeOption);
116
+ continue;
117
+ }
118
+ nativeOption.insertAdjacentElement('beforebegin', option._nativeOption);
119
+ }
120
+ }
121
+ #updateAccessibilityList(options) {
122
+ const maxLength = Math.max(options.length, this.#list.children.length);
123
+ for (let i = 0; i < maxLength; i++) {
124
+ const option = options[i];
125
+ const item = this.#list.children[i];
126
+ if (!option) {
127
+ item.remove();
128
+ continue;
129
+ }
130
+ option._listItem.id = `item-${i + 1}`;
131
+ if (!item) {
132
+ this.#list.appendChild(option._listItem);
133
+ continue;
134
+ }
135
+ item.insertAdjacentElement('beforebegin', option._listItem);
136
+ }
137
+ }
138
+ #setSelectedOption() {
139
+ const options = this.options;
140
+ const selectedClassOptions = options.filter(o => o.classList.contains('selected'));
141
+ let found = false;
142
+ for (const option of selectedClassOptions) {
143
+ if (option.selected) {
144
+ found = true;
145
+ continue;
146
+ }
147
+ option.classList.remove('selected');
148
+ }
149
+ if (found) {
150
+ return;
151
+ }
152
+ const selectedOption = this.selectedOptions[0];
153
+ if (selectedOption) {
154
+ selectedOption.classList.add('selected');
155
+ }
60
156
  }
61
157
  renderControl() {
62
158
  return staticHtml `
63
- <button class="button"></button>
159
+ <button
160
+ class="button"
161
+ role="combobox"
162
+ aria-expanded="false"
163
+ aria-owns="select"
164
+ ?disabled=${this.disabled}></button>
64
165
  <div class="input"></div>`;
65
166
  }
66
167
  renderAfterContent() {
67
168
  return html `
68
169
  <u-menu>
69
- <slot @slotchange=${__classPrivateFieldGet(this, _UmSelect_instances, "m", _UmSelect_handleSlotChange)}></slot>
170
+ <slot></slot>
70
171
  </u-menu>
71
172
  `;
72
173
  }
174
+ renderDefaultTrailingIcon() {
175
+ return svg `
176
+ <svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 -960 960 960" width="1em" fill="currentColor">
177
+ <path d="M480-360 280-560h400L480-360Z"/>
178
+ </svg>`;
179
+ }
73
180
  updated(changedProperties) {
74
181
  super.updated(changedProperties);
75
- this.empty = !this.selectedOption?.textContent?.trim();
182
+ this.empty = !this.selectedOptions[0]?.textContent?.trim();
76
183
  this.elementInternals.setFormValue(this.nativeSelect.value || null);
77
184
  }
185
+ attributeChangedCallback(name, _old, value) {
186
+ super.attributeChangedCallback(name, _old, value);
187
+ if (name !== 'disabled') {
188
+ return;
189
+ }
190
+ this.nativeSelect.disabled = value === null;
191
+ }
78
192
  connectedCallback() {
79
193
  super.connectedCallback();
80
- __classPrivateFieldSet(this, _UmSelect_connected, true, "f");
81
- __classPrivateFieldGet(this, _UmSelect_instances, "m", _UmSelect_attach).call(this);
194
+ this.#connected = true;
195
+ this.#attach();
82
196
  }
83
197
  disconnectedCallback() {
84
198
  super.disconnectedCallback();
85
- __classPrivateFieldGet(this, _UmSelect_navigationController, "f").detach();
86
- __classPrivateFieldSet(this, _UmSelect_connected, false, "f");
199
+ this.#navigationController.detach();
200
+ this.#connected = false;
87
201
  this.nativeSelect.remove();
88
- this.container.removeEventListener('click', __classPrivateFieldGet(this, _UmSelect_handleClick, "f"));
89
- this.menu.removeEventListener('click', __classPrivateFieldGet(this, _UmSelect_instances, "m", _UmSelect_handleMenuClick));
202
+ this.button.removeEventListener('click', this.#handleClick);
203
+ this.menu.removeEventListener('click', this.#handleMenuClick);
204
+ this.menu.removeEventListener('open', this.#handleMenuOpen);
205
+ this.menu.removeEventListener('opened', this.#handleMenuOpened);
206
+ this.menu.removeEventListener('close', this.#handleMenuClose);
207
+ }
208
+ #handleClick;
209
+ #handleMenuClick(e) {
210
+ e.stopPropagation();
211
+ }
212
+ #handleMenuOpen;
213
+ #handleMenuOpened;
214
+ #handleMenuClose;
215
+ async #attach() {
216
+ await this.updateComplete;
217
+ this.nativeSelect.disabled = this.hasAttribute('disabled');
218
+ this.#navigationController.attach(this);
219
+ this._updateOptions();
220
+ this.input.appendChild(this.nativeSelect);
221
+ this.input.appendChild(this.#list);
222
+ this.button.addEventListener('click', this.#handleClick);
223
+ this.menu.anchorElement = this.container;
224
+ this.menu.addEventListener('click', this.#handleMenuClick);
225
+ this.menu.addEventListener('open', this.#handleMenuOpen);
226
+ this.menu.addEventListener('opened', this.#handleMenuOpened);
227
+ this.menu.addEventListener('close', this.#handleMenuClose);
90
228
  }
91
229
  get menuItems() {
92
230
  return this.options;
93
231
  }
94
232
  };
95
- _UmSelect_navigationController = new WeakMap();
96
- _UmSelect_connected = new WeakMap();
97
- _UmSelect_handleClick = new WeakMap();
98
- _UmSelect_instances = new WeakSet();
99
- _UmSelect_handleMenuClick = function _UmSelect_handleMenuClick(e) {
100
- e.stopPropagation();
101
- };
102
- _UmSelect_handleSlotChange = function _UmSelect_handleSlotChange(e) {
103
- const slot = e.target;
104
- const elements = slot.assignedElements({
105
- flatten: true
106
- });
107
- this.options.length = 0;
108
- for (const element of elements) {
109
- if (element instanceof UmOption) {
110
- this.options.push(element);
111
- }
112
- }
113
- this.requestUpdate();
114
- };
115
- _UmSelect_attach = async function _UmSelect_attach() {
116
- await this.updateComplete;
117
- __classPrivateFieldGet(this, _UmSelect_navigationController, "f").attach(this);
118
- this.nativeSelect.setAttribute('tabindex', '-1');
119
- this.input.appendChild(this.nativeSelect);
120
- this.container.addEventListener('click', __classPrivateFieldGet(this, _UmSelect_handleClick, "f"));
121
- this.menu.anchorElement = this.container;
122
- this.menu.addEventListener('click', __classPrivateFieldGet(this, _UmSelect_instances, "m", _UmSelect_handleMenuClick));
123
- };
124
- UmSelect.styles = [UmTextFieldBase.styles, styles];
125
233
  __decorate([
126
234
  state()
127
235
  ], UmSelect.prototype, "value", null);
128
236
  __decorate([
129
237
  query('u-menu')
130
238
  ], UmSelect.prototype, "menu", void 0);
239
+ __decorate([
240
+ query('.button')
241
+ ], UmSelect.prototype, "button", void 0);
131
242
  __decorate([
132
243
  query('.input')
133
244
  ], UmSelect.prototype, "input", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/select/select.ts"],"names":[],"mappings":"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","sourcesContent":["import { PropertyValues } from '@lit/reactive-element';\nimport { html } from 'lit';\nimport { TemplateResult } from 'lit-html';\nimport { customElement, query, state } from 'lit/decorators.js';\nimport { html as staticHtml } from 'lit/static-html.js';\n\nimport { styles } from './select.styles.js';\n\nimport { UmMenu } from '../menu/menu.js';\nimport { UmMenuField } from '../shared/menu-field/menu-field.js';\nimport { UmTextFieldBase } from '../shared/text-field-base/text-field-base.js';\nimport { UmOption } from './option.js';\nimport { SelectNavigationController } from './select-navigation-controller.js';\n\nimport './option.js';\n\n@customElement('u-select')\nexport class UmSelect extends UmTextFieldBase implements UmMenuField {\n static override styles = [UmTextFieldBase.styles, styles];\n\n nativeSelect: HTMLSelectElement = document.createElement('select');\n #navigationController = new SelectNavigationController(this);\n #connected = false;\n\n @state()\n get value(): string {\n return this.nativeSelect.value;\n }\n set value(value: string) {\n this.nativeSelect.value = value;\n\n if (!this.#connected) {\n return;\n }\n\n this.elementInternals.setFormValue(value);\n }\n\n @query('u-menu') menu!: UmMenu;\n @query('.input') input!: HTMLElement;\n\n @state()\n get selectedIndex(): number {\n return this.nativeSelect.selectedIndex;\n }\n set selectedIndex(index: number) {\n this.nativeSelect.selectedIndex = index;\n }\n\n get selectedOption(): UmOption | null {\n return this.options[this.selectedIndex] ?? null;\n }\n\n private _options: UmOption[] = [];\n get options(): UmOption[] {\n return this._options;\n }\n\n protected override renderControl(): TemplateResult {\n return staticHtml`\n <button class=\"button\"></button>\n <div class=\"input\"></div>`;\n }\n\n protected override renderAfterContent(): TemplateResult {\n return html`\n <u-menu>\n <slot @slotchange=${this.#handleSlotChange}></slot>\n </u-menu>\n `;\n }\n\n protected override updated(changedProperties: PropertyValues) {\n super.updated(changedProperties);\n this.empty = !this.selectedOption?.textContent?.trim();\n this.elementInternals.setFormValue(this.nativeSelect.value || null);\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n this.#connected = true;\n this.#attach();\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n\n this.#navigationController.detach();\n this.#connected = false;\n this.nativeSelect.remove();\n this.container.removeEventListener('click', this.#handleClick);\n this.menu.removeEventListener('click', this.#handleMenuClick);\n }\n\n #handleClick = () => {\n this.menu.toggle();\n };\n\n #handleMenuClick(e: Event) {\n e.stopPropagation();\n }\n\n #handleSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n const elements = slot.assignedElements({\n flatten: true\n });\n\n this.options.length = 0;\n\n for (const element of elements) {\n if (element instanceof UmOption) {\n this.options.push(element)\n }\n }\n\n this.requestUpdate();\n }\n\n async #attach(): Promise<void> {\n await this.updateComplete;\n\n this.#navigationController.attach(this);\n this.nativeSelect.setAttribute('tabindex', '-1');\n this.input.appendChild(this.nativeSelect);\n this.container.addEventListener('click', this.#handleClick);\n\n this.menu.anchorElement = this.container;\n this.menu.addEventListener('click', this.#handleMenuClick);\n }\n\n get menuItems(): UmOption[] {\n return this.options;\n }\n\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-select': UmSelect;\n }\n}\n"]}
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/select/select.ts"],"names":[],"mappings":"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","sourcesContent":["import { PropertyValues } from '@lit/reactive-element';\nimport { html, svg, TemplateResult } from 'lit';\nimport { customElement, query, state } from 'lit/decorators.js';\nimport { html as staticHtml } from 'lit/static-html.js';\n\nimport { styles } from './select.styles.js';\n\nimport { UmMenu } from '../menu/menu.js';\nimport { UmMenuField } from '../shared/menu-field/menu-field.js';\nimport { UmTextFieldBase } from '../shared/text-field-base/text-field-base.js';\nimport { ExtendedSelect } from './extended-select.js';\nimport { UmOption } from './option.js';\nimport { SelectNavigationController } from './select-navigation-controller.js';\n\nimport './option.js';\n\n@customElement('u-select')\nexport class UmSelect extends UmTextFieldBase implements UmMenuField {\n currentOptionIndex = 1;\n\n static override styles = [UmTextFieldBase.styles, styles];\n\n nativeSelect: ExtendedSelect = (() => {\n const select = <ExtendedSelect>document.createElement('select');\n select.setAttribute('tabindex', '-1');\n select.setAttribute('part', 'select');\n\n return select;\n })();\n\n #list: HTMLElement = (() => {\n const list = document.createElement('div');\n list.role = 'listbox';\n list.id = 'list';\n list.className = 'list';\n\n return list;\n })();\n\n #navigationController = new SelectNavigationController(this);\n readonly #mutationObserver: MutationObserver;\n #connected = false;\n\n @state()\n get value(): string {\n return this.nativeSelect.value;\n }\n set value(value: string) {\n this.nativeSelect.value = value;\n\n if (!this.#connected) {\n return;\n }\n\n this.elementInternals.setFormValue(value);\n }\n\n @query('u-menu') menu!: UmMenu;\n @query('.button') button!: HTMLButtonElement;\n @query('.input') input!: HTMLElement;\n\n @state()\n get selectedIndex(): number {\n return this.nativeSelect.selectedIndex;\n }\n set selectedIndex(index: number) {\n this.nativeSelect.selectedIndex = index;\n }\n\n get selectedOptions(): UmOption[] {\n return this.nativeSelect.selectedOptions.length\n ? [this.nativeSelect.selectedOptions[0]._parent]\n : [];\n }\n\n get options(): UmOption[] {\n const options = Array.from(this.querySelectorAll<UmOption>('u-option'));\n\n return options\n .filter(o => o.constructor.name === 'UmOption');\n }\n\n constructor() {\n super();\n\n this.#mutationObserver = new MutationObserver(() => this._updateOptions())\n this.#mutationObserver.observe(this, {characterData: true, childList: true, subtree: true});\n }\n\n _updateOptions() {\n\n const options = this.options;\n\n for (const option of options) {\n option._select = this;\n }\n\n this.#updateOptions(options);\n this.#updateAccessibilityList(options);\n\n const selectedOption = this.selectedOptions[0];\n\n if (!selectedOption) {\n return;\n }\n\n // eslint-disable-next-line no-self-assign\n selectedOption.selected = selectedOption.selected;\n this.empty = !selectedOption.textContent?.trim();\n this.button.setAttribute('aria-labelledby', selectedOption._listItem.id)\n }\n\n #updateOptions(options: UmOption[]) {\n const maxLength = Math.max(options.length, this.nativeSelect.children.length);\n\n for (let i = 0; i < maxLength; i++) {\n const option = options[i];\n const nativeOption = this.nativeSelect.children[i];\n\n if (!option) {\n nativeOption.remove();\n continue;\n }\n\n if (!nativeOption) {\n this.nativeSelect.appendChild(option._nativeOption);\n continue;\n }\n\n nativeOption.insertAdjacentElement('beforebegin', option._nativeOption);\n }\n }\n\n #updateAccessibilityList(options: UmOption[]) {\n\n const maxLength = Math.max(options.length, this.#list.children.length);\n\n for (let i = 0; i < maxLength; i++) {\n const option = options[i];\n const item = this.#list.children[i];\n\n if (!option) {\n item.remove();\n continue;\n }\n\n option._listItem.id = `item-${i + 1}`;\n\n if (!item) {\n this.#list.appendChild(option._listItem);\n continue;\n }\n\n item.insertAdjacentElement('beforebegin', option._listItem);\n }\n }\n\n #setSelectedOption() {\n const options = this.options;\n\n const selectedClassOptions = options.filter(o => o.classList.contains('selected'));\n\n let found = false;\n\n for (const option of selectedClassOptions) {\n if (option.selected) {\n found = true;\n continue;\n }\n \n option.classList.remove('selected');\n }\n\n if (found) {\n return;\n }\n\n const selectedOption = this.selectedOptions[0];\n\n if (selectedOption) {\n selectedOption.classList.add('selected');\n }\n }\n\n protected override renderControl(): TemplateResult {\n return staticHtml`\n <button \n class=\"button\"\n role=\"combobox\"\n aria-expanded=\"false\"\n aria-owns=\"select\"\n ?disabled=${this.disabled}></button>\n <div class=\"input\"></div>`;\n }\n\n protected override renderAfterContent(): TemplateResult {\n return html`\n <u-menu>\n <slot></slot>\n </u-menu>\n `;\n }\n\n protected override renderDefaultTrailingIcon(): TemplateResult {\n return svg`\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"1em\" viewBox=\"0 -960 960 960\" width=\"1em\" fill=\"currentColor\">\n <path d=\"M480-360 280-560h400L480-360Z\"/>\n </svg>`;\n }\n\n protected override updated(changedProperties: PropertyValues) {\n super.updated(changedProperties);\n this.empty = !this.selectedOptions[0]?.textContent?.trim();\n this.elementInternals.setFormValue(this.nativeSelect.value || null);\n }\n\n override attributeChangedCallback(name: string, _old: string | null, value: string | null) {\n super.attributeChangedCallback(name, _old, value);\n\n if (name !== 'disabled') {\n return;\n }\n\n this.nativeSelect.disabled = value === null;\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n this.#connected = true;\n this.#attach();\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n\n this.#navigationController.detach();\n this.#connected = false;\n this.nativeSelect.remove();\n this.button.removeEventListener('click', this.#handleClick);\n this.menu.removeEventListener('click', this.#handleMenuClick);\n this.menu.removeEventListener('open', this.#handleMenuOpen);\n this.menu.removeEventListener('opened', this.#handleMenuOpened);\n this.menu.removeEventListener('close', this.#handleMenuClose);\n }\n\n #handleClick = (e: MouseEvent) => {\n this.menu.toggle();\n\n if (!this.menu.open || !this.selectedOptions.length) {\n return;\n }\n\n this.#navigationController.focusMenu(this.selectedOptions[0], e.detail === 0, false);\n };\n\n #handleMenuClick(e: Event) {\n e.stopPropagation();\n }\n\n #handleMenuOpen = () => {\n this.button.setAttribute('aria-expanded', 'true');\n this.#setSelectedOption();\n };\n\n #handleMenuOpened = () => {\n if (!this.selectedOptions.length) {\n return;\n }\n\n const option = this.selectedOptions[0];\n option.scrollIntoView({block: 'nearest'});\n };\n\n #handleMenuClose = () => {\n this.button.setAttribute('aria-expanded', 'false');\n this.#navigationController.blurMenu();\n };\n\n async #attach(): Promise<void> {\n await this.updateComplete;\n\n this.nativeSelect.disabled = this.hasAttribute('disabled');\n\n this.#navigationController.attach(this);\n this._updateOptions();\n\n this.input.appendChild(this.nativeSelect);\n this.input.appendChild(this.#list);\n this.button.addEventListener('click', this.#handleClick);\n\n this.menu.anchorElement = this.container;\n this.menu.addEventListener('click', this.#handleMenuClick);\n this.menu.addEventListener('open', this.#handleMenuOpen);\n this.menu.addEventListener('opened', this.#handleMenuOpened);\n this.menu.addEventListener('close', this.#handleMenuClose);\n }\n\n get menuItems(): UmOption[] {\n return this.options;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-select': UmSelect;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"select.styles.d.ts","sourceRoot":"","sources":["../../src/select/select.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBA2BlB,CAAC"}
1
+ {"version":3,"file":"select.styles.d.ts","sourceRoot":"","sources":["../../src/select/select.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBAoClB,CAAC"}
@@ -1,16 +1,16 @@
1
1
  import { css } from 'lit';
2
2
  export const styles = css `
3
- .container {
4
- cursor: pointer;
5
- }
6
-
7
3
  u-menu {
8
4
  display: block;
9
5
  width: 100%;
10
6
  }
11
7
  u-menu::part(menu) {
12
- width: 100%;
13
- max-width: 100%;
8
+ min-width: 100%;
9
+ max-width: 50vw;
10
+ }
11
+
12
+ :host(:not([disabled])) .button {
13
+ cursor: pointer;
14
14
  }
15
15
 
16
16
  .button {
@@ -25,6 +25,15 @@ export const styles = css `
25
25
 
26
26
  select {
27
27
  pointer-events: none;
28
+ white-space: nowrap;
29
+ text-overflow: ellipsis;
30
+ }
31
+
32
+ .list {
33
+ width: 2px;
34
+ height: 2px;
35
+ margin: -1px;
36
+ overflow: hidden;
28
37
  }
29
38
  `;
30
39
  //# sourceMappingURL=select.styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"select.styles.js","sourceRoot":"","sources":["../../src/select/select.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BzB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css `\n .container {\n cursor: pointer;\n }\n\n u-menu {\n display: block;\n width: 100%;\n }\n u-menu::part(menu) {\n width: 100%;\n max-width: 100%;\n }\n\n .button {\n position: absolute;\n inset: 0;\n margin: 0;\n padding: 0;\n background: transparent;\n border: none;\n appearance: none;\n }\n\n select {\n pointer-events: none;\n }\n`;\n"]}
1
+ {"version":3,"file":"select.styles.js","sourceRoot":"","sources":["../../src/select/select.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCzB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css `\n u-menu {\n display: block;\n width: 100%;\n }\n u-menu::part(menu) {\n min-width: 100%;\n max-width: 50vw;\n }\n\n :host(:not([disabled])) .button {\n cursor: pointer;\n }\n\n .button {\n position: absolute;\n inset: 0;\n margin: 0;\n padding: 0;\n background: transparent;\n border: none;\n appearance: none;\n }\n\n select {\n pointer-events: none;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n .list {\n width: 2px;\n height: 2px;\n margin: -1px;\n overflow: hidden;\n }\n`;\n"]}
@@ -1,8 +1,10 @@
1
+ import { CSSResultGroup } from '@lit/reactive-element/css-tag';
1
2
  import { HTMLTemplateResult, LitElement } from 'lit';
2
3
  import '../elevation/elevation.js';
3
4
  import '../ripple/ripple.js';
4
5
  export declare abstract class UmButtonWrapper extends LitElement {
5
6
  #private;
7
+ static styles: CSSResultGroup;
6
8
  /**
7
9
  * Whether the button is disabled or not.
8
10
  */
@@ -1 +1 @@
1
- {"version":3,"file":"button-wrapper.d.ts","sourceRoot":"","sources":["../../src/shared/button-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,kBAAkB,EAAE,UAAU,EAAW,MAAM,KAAK,CAAC;AAMpE,OAAO,2BAA2B,CAAC;AACnC,OAAO,qBAAqB,CAAC;AAE7B,8BAAsB,eAAgB,SAAQ,UAAU;;IAEtD;;OAEG;IACuC,QAAQ,UAAS;IAElD,YAAY,UAAQ;IAE7B;;OAEG;IACS,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAErC;;;OAGG;IACS,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAE3B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAEnB,QAAQ,CAAC,aAAa,EAAG,WAAW,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IAEtD,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE1C,IAAI,QAAQ,IAAI,MAAM,CAErB;cAEkB,MAAM,IAAI,kBAAkB;IAM/C,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,UAAU;IAiBlB,SAAS,CAAC,QAAQ,CAAC,aAAa,IAAI,kBAAkB;IAE7C,iBAAiB;IAMjB,oBAAoB;IAMpB,KAAK;IAIL,IAAI;IAKb,SAAS,CAAC,YAAY,IAAI,MAAM,GAAG,IAAI;IAIvC,OAAO,CAAC,iBAAiB;IA8BzB,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;CAGxC"}
1
+ {"version":3,"file":"button-wrapper.d.ts","sourceRoot":"","sources":["../../src/shared/button-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAQ,kBAAkB,EAAE,UAAU,EAAW,MAAM,KAAK,CAAC;AASpE,OAAO,2BAA2B,CAAC;AACnC,OAAO,qBAAqB,CAAC;AAE7B,8BAAsB,eAAgB,SAAQ,UAAU;;IAEtD,OAAgB,MAAM,EAAE,cAAc,CAAuB;IAE7D;;OAEG;IACuC,QAAQ,UAAS;IAElD,YAAY,UAAQ;IAE7B;;OAEG;IACS,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAErC;;;OAGG;IACS,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAE3B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAEnB,QAAQ,CAAC,aAAa,EAAG,WAAW,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IAEtD,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE1C,IAAI,QAAQ,IAAI,MAAM,CAErB;cAEkB,MAAM,IAAI,kBAAkB;IAM/C,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,UAAU;IAiBlB,SAAS,CAAC,QAAQ,CAAC,aAAa,IAAI,kBAAkB;IAE7C,iBAAiB;IAMjB,oBAAoB;IAMpB,KAAK;IAIL,IAAI;IAKb,SAAS,CAAC,YAAY,IAAI,MAAM,GAAG,IAAI;IAIvC,OAAO,CAAC,iBAAiB;IA8BzB,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;CAGxC"}
@@ -4,21 +4,16 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
- };
12
- var _UmButtonWrapper_instances, _UmButtonWrapper_innerClickHandler;
13
7
  import { html, LitElement, nothing } from 'lit';
14
8
  import { property, query, state } from 'lit/decorators.js';
9
+ import { styles as baseStyles } from './base.styles.js';
10
+ import { styles } from './button-wrapper.styles';
15
11
  import { redispatchEvent } from './redispatch-event.js';
16
12
  import '../elevation/elevation.js';
17
13
  import '../ripple/ripple.js';
18
14
  export class UmButtonWrapper extends LitElement {
19
15
  constructor() {
20
16
  super(...arguments);
21
- _UmButtonWrapper_instances.add(this);
22
17
  /**
23
18
  * Whether the button is disabled or not.
24
19
  */
@@ -26,6 +21,7 @@ export class UmButtonWrapper extends LitElement {
26
21
  this.renderRipple = true;
27
22
  this.innerRole = null;
28
23
  }
24
+ static { this.styles = [baseStyles, styles]; }
29
25
  get pathname() {
30
26
  return this.buttonElement?.pathname;
31
27
  }
@@ -44,7 +40,7 @@ export class UmButtonWrapper extends LitElement {
44
40
  aria-labelledby="${this.getAriaLabel() ? nothing : 'text'}"
45
41
  .role=${this.innerRole}
46
42
  type="button"
47
- @click=${__classPrivateFieldGet(this, _UmButtonWrapper_instances, "m", _UmButtonWrapper_innerClickHandler)}>
43
+ @click=${this.#innerClickHandler}>
48
44
  <u-ripple ?disabled=${this.disabled || !this.renderRipple}></u-ripple>
49
45
  <u-elevation></u-elevation>
50
46
  </button>
@@ -60,7 +56,7 @@ export class UmButtonWrapper extends LitElement {
60
56
  aria-labelledby="${this.ariaLabel ? nothing : 'text'}"
61
57
  .role=${this.innerRole}
62
58
  target=${this.target || nothing}
63
- @click=${__classPrivateFieldGet(this, _UmButtonWrapper_instances, "m", _UmButtonWrapper_innerClickHandler)}>
59
+ @click=${this.#innerClickHandler}>
64
60
  <u-elevation></u-elevation>
65
61
  <u-ripple ?disabled=${this.disabled || !this.renderRipple}></u-ripple>
66
62
  </a>
@@ -91,22 +87,22 @@ export class UmButtonWrapper extends LitElement {
91
87
  this.removeAttribute('tabindex');
92
88
  setTimeout(() => this.buttonElement?.focus());
93
89
  }
90
+ #innerClickHandler(event) {
91
+ if (this.disabled) {
92
+ return;
93
+ }
94
+ const preventDefault = !redispatchEvent(this, event);
95
+ if (preventDefault) {
96
+ return;
97
+ }
98
+ if (!event.pointerType) {
99
+ this.ripple.createRipple();
100
+ }
101
+ this.handleClick(event);
102
+ }
94
103
  handleClick(_) {
95
104
  }
96
105
  }
97
- _UmButtonWrapper_instances = new WeakSet(), _UmButtonWrapper_innerClickHandler = function _UmButtonWrapper_innerClickHandler(event) {
98
- if (this.disabled) {
99
- return;
100
- }
101
- const preventDefault = !redispatchEvent(this, event);
102
- if (preventDefault) {
103
- return;
104
- }
105
- if (!event.pointerType) {
106
- this.ripple.createRipple();
107
- }
108
- this.handleClick(event);
109
- };
110
106
  __decorate([
111
107
  property({ type: Boolean, reflect: true })
112
108
  ], UmButtonWrapper.prototype, "disabled", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"button-wrapper.js","sourceRoot":"","sources":["../../src/shared/button-wrapper.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, HTMLTemplateResult, LitElement, nothing } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\n\nimport { UmRipple } from '../ripple/ripple.js';\nimport { redispatchEvent } from './redispatch-event.js';\n\nimport '../elevation/elevation.js';\nimport '../ripple/ripple.js';\n\nexport abstract class UmButtonWrapper extends LitElement {\n\n /**\n * Whether the button is disabled or not.\n */\n @property({type: Boolean, reflect: true}) disabled = false;\n\n @state() renderRipple = true;\n\n /**\n * The URL that the link button points to.\n */\n @property() href: string | undefined;\n\n /**\n * Where to display the linked `href` URL for a link button. Common options\n * include `_blank` to open in a new tab.\n */\n @property() target: string | undefined;\n\n @property() name: string | undefined;\n\n @query('.button') readonly buttonElement!: HTMLElement;\n @query('u-ripple') private readonly ripple!: UmRipple;\n\n protected innerRole: string | null = null;\n\n get pathname(): string {\n return (<HTMLAnchorElement>this.buttonElement)?.pathname\n }\n\n protected override render(): HTMLTemplateResult {\n return typeof this.href === 'string'\n ? this.renderLink()\n : this.renderButton();\n }\n\n private renderButton() {\n return html`\n <button\n id=\"button\"\n class=\"button focus-ring\"\n ?disabled=${this.disabled}\n aria-label=${this.getAriaLabel() || nothing}\n aria-labelledby=\"${this.getAriaLabel() ? nothing : 'text'}\"\n .role=${this.innerRole}\n type=\"button\"\n @click=${this.#innerClickHandler}>\n <u-ripple ?disabled=${this.disabled || !this.renderRipple}></u-ripple>\n <u-elevation></u-elevation>\n </button>\n <div class=\"content\">${this.renderContent()}</div>`;\n }\n\n private renderLink() {\n return html`<a\n id=\"link\"\n class=\"button\"\n href=${this.disabled ? nothing : this.href}\n aria-disabled=${this.disabled || nothing}\n aria-label=${this.ariaLabel || nothing}\n aria-labelledby=\"${this.ariaLabel ? nothing : 'text'}\"\n .role=${this.innerRole}\n target=${this.target || nothing}\n @click=${this.#innerClickHandler}>\n <u-elevation></u-elevation>\n <u-ripple ?disabled=${this.disabled || !this.renderRipple}></u-ripple>\n </a>\n <div class=\"content\">${this.renderContent()}</div>`;\n }\n\n protected abstract renderContent(): HTMLTemplateResult;\n\n override connectedCallback() {\n super.connectedCallback();\n\n this.addEventListener('focus', this.innerFocusHandler)\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n\n this.removeEventListener('focus', this.innerFocusHandler);\n }\n\n override focus() {\n this.buttonElement?.focus();\n }\n\n override blur() {\n\n this.buttonElement?.blur();\n }\n\n protected getAriaLabel(): string | null {\n return this.ariaLabel;\n }\n\n private innerFocusHandler(): void {\n const tabIndexAttributeValue = this.getAttribute('tabindex');\n\n if (tabIndexAttributeValue !== \"0\") {\n return;\n }\n \n this.removeAttribute('tabindex');\n setTimeout(() => this.buttonElement?.focus());\n }\n\n #innerClickHandler(event: MouseEvent): void {\n \n if (this.disabled) {\n return;\n }\n\n const preventDefault = !redispatchEvent(this, event);\n\n if (preventDefault) {\n return;\n }\n\n if (!(<PointerEvent>event).pointerType) {\n this.ripple.createRipple();\n }\n\n this.handleClick(event);\n }\n\n protected handleClick(_: UIEvent): void {\n\n }\n}\n"]}
1
+ {"version":3,"file":"button-wrapper.js","sourceRoot":"","sources":["../../src/shared/button-wrapper.ts"],"names":[],"mappings":"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","sourcesContent":["import { CSSResultGroup } from '@lit/reactive-element/css-tag';\nimport { html, HTMLTemplateResult, LitElement, nothing } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\n\nimport { styles as baseStyles } from './base.styles.js';\n\nimport { UmRipple } from '../ripple/ripple.js';\nimport { styles } from './button-wrapper.styles';\nimport { redispatchEvent } from './redispatch-event.js';\n\nimport '../elevation/elevation.js';\nimport '../ripple/ripple.js';\n\nexport abstract class UmButtonWrapper extends LitElement {\n\n static override styles: CSSResultGroup = [baseStyles, styles]\n\n /**\n * Whether the button is disabled or not.\n */\n @property({type: Boolean, reflect: true}) disabled = false;\n\n @state() renderRipple = true;\n\n /**\n * The URL that the link button points to.\n */\n @property() href: string | undefined;\n\n /**\n * Where to display the linked `href` URL for a link button. Common options\n * include `_blank` to open in a new tab.\n */\n @property() target: string | undefined;\n\n @property() name: string | undefined;\n\n @query('.button') readonly buttonElement!: HTMLElement;\n @query('u-ripple') private readonly ripple!: UmRipple;\n\n protected innerRole: string | null = null;\n\n get pathname(): string {\n return (<HTMLAnchorElement>this.buttonElement)?.pathname\n }\n\n protected override render(): HTMLTemplateResult {\n return typeof this.href === 'string'\n ? this.renderLink()\n : this.renderButton();\n }\n\n private renderButton() {\n return html`\n <button\n id=\"button\"\n class=\"button focus-ring\"\n ?disabled=${this.disabled}\n aria-label=${this.getAriaLabel() || nothing}\n aria-labelledby=\"${this.getAriaLabel() ? nothing : 'text'}\"\n .role=${this.innerRole}\n type=\"button\"\n @click=${this.#innerClickHandler}>\n <u-ripple ?disabled=${this.disabled || !this.renderRipple}></u-ripple>\n <u-elevation></u-elevation>\n </button>\n <div class=\"content\">${this.renderContent()}</div>`;\n }\n\n private renderLink() {\n return html`<a\n id=\"link\"\n class=\"button\"\n href=${this.disabled ? nothing : this.href}\n aria-disabled=${this.disabled || nothing}\n aria-label=${this.ariaLabel || nothing}\n aria-labelledby=\"${this.ariaLabel ? nothing : 'text'}\"\n .role=${this.innerRole}\n target=${this.target || nothing}\n @click=${this.#innerClickHandler}>\n <u-elevation></u-elevation>\n <u-ripple ?disabled=${this.disabled || !this.renderRipple}></u-ripple>\n </a>\n <div class=\"content\">${this.renderContent()}</div>`;\n }\n\n protected abstract renderContent(): HTMLTemplateResult;\n\n override connectedCallback() {\n super.connectedCallback();\n\n this.addEventListener('focus', this.innerFocusHandler)\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n\n this.removeEventListener('focus', this.innerFocusHandler);\n }\n\n override focus() {\n this.buttonElement?.focus();\n }\n\n override blur() {\n\n this.buttonElement?.blur();\n }\n\n protected getAriaLabel(): string | null {\n return this.ariaLabel;\n }\n\n private innerFocusHandler(): void {\n const tabIndexAttributeValue = this.getAttribute('tabindex');\n\n if (tabIndexAttributeValue !== \"0\") {\n return;\n }\n \n this.removeAttribute('tabindex');\n setTimeout(() => this.buttonElement?.focus());\n }\n\n #innerClickHandler(event: MouseEvent): void {\n \n if (this.disabled) {\n return;\n }\n\n const preventDefault = !redispatchEvent(this, event);\n\n if (preventDefault) {\n return;\n }\n\n if (!(<PointerEvent>event).pointerType) {\n this.ripple.createRipple();\n }\n\n this.handleClick(event);\n }\n\n protected handleClick(_: UIEvent): void {\n\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const styles: import("lit").CSSResult;
2
+ //# sourceMappingURL=button-wrapper.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button-wrapper.styles.d.ts","sourceRoot":"","sources":["../../src/shared/button-wrapper.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBA4DlB,CAAC"}
@@ -0,0 +1,63 @@
1
+ import { css } from 'lit';
2
+ export const styles = css `
3
+ :host {
4
+ --_color-primary: var(--u-color-primary, rgb(103, 80, 164));
5
+ -webkit-tap-highlight-color: transparent;
6
+ --u-elevation-level: 0;
7
+ position: relative;
8
+ display: inline-block;
9
+ font-family: var(--u-font-family, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");
10
+ appearance: none !important;
11
+ }
12
+
13
+ :host([disabled]) {
14
+ --u-elevation-level: 0 !important;
15
+ background-color: var(--u-button-disabled-background-color, rgba(var(--u-color-on-surface-rgb, 29, 27, 32), var(--u-button-disabled-background-opacity, 0.12))) !important;
16
+ color: var(--u-button-disabled-text-color, rgba(var(--u-color-on-surface-rgb, 29, 27, 32), var(--u-button-disabled-color, 0.38))) !important;
17
+ }
18
+
19
+ :host([disabled]) .button {
20
+ cursor: default;
21
+ }
22
+
23
+ * {
24
+ color: inherit;
25
+ }
26
+
27
+ u-elevation {
28
+ z-index: -1;
29
+ }
30
+
31
+ .button {
32
+ cursor: pointer;
33
+ position: absolute;
34
+ inset-inline-start: 0;
35
+ inset-block-start: 0;
36
+ width: 100%;
37
+ height: 100%;
38
+ font-family: inherit;
39
+ border-radius: inherit;
40
+ color: inherit;
41
+ border: none;
42
+ margin: 0;
43
+ padding: 0;
44
+ text-align: center;
45
+ white-space: nowrap;
46
+ background: transparent;
47
+ user-select: none;
48
+ text-decoration: none;
49
+ outline: 0;
50
+ z-index: 0;
51
+ }
52
+
53
+ .content {
54
+ display: inline-flex;
55
+ align-items: center;
56
+ justify-content: center;
57
+ white-space: nowrap;
58
+ border-radius: inherit;
59
+ width: 100%;
60
+ height: 100%;
61
+ }
62
+ `;
63
+ //# sourceMappingURL=button-wrapper.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button-wrapper.styles.js","sourceRoot":"","sources":["../../src/shared/button-wrapper.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4DzB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css `\n :host {\n --_color-primary: var(--u-color-primary, rgb(103, 80, 164));\n -webkit-tap-highlight-color: transparent;\n --u-elevation-level: 0;\n position: relative;\n display: inline-block;\n font-family: var(--u-font-family, system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n appearance: none !important;\n }\n\n :host([disabled]) {\n --u-elevation-level: 0 !important;\n background-color: var(--u-button-disabled-background-color, rgba(var(--u-color-on-surface-rgb, 29, 27, 32), var(--u-button-disabled-background-opacity, 0.12))) !important;\n color: var(--u-button-disabled-text-color, rgba(var(--u-color-on-surface-rgb, 29, 27, 32), var(--u-button-disabled-color, 0.38))) !important;\n }\n\n :host([disabled]) .button {\n cursor: default;\n }\n\n * {\n color: inherit;\n }\n\n u-elevation {\n z-index: -1;\n }\n\n .button {\n cursor: pointer;\n position: absolute;\n inset-inline-start: 0;\n inset-block-start: 0;\n width: 100%;\n height: 100%;\n font-family: inherit;\n border-radius: inherit;\n color: inherit;\n border: none;\n margin: 0;\n padding: 0;\n text-align: center;\n white-space: nowrap;\n background: transparent;\n user-select: none;\n text-decoration: none;\n outline: 0;\n z-index: 0;\n }\n\n .content {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n white-space: nowrap;\n border-radius: inherit;\n width: 100%;\n height: 100%;\n }\n`;\n"]}
@@ -0,0 +1,2 @@
1
+ export declare function normalizedStartsWith(text: string | null, term: string | null): boolean;
2
+ //# sourceMappingURL=compare-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare-text.d.ts","sourceRoot":"","sources":["../../src/shared/compare-text.ts"],"names":[],"mappings":"AAEA,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAEtF"}
@@ -0,0 +1,5 @@
1
+ import { normalizeText } from './normalize-text.js';
2
+ export function normalizedStartsWith(text, term) {
3
+ return normalizeText(text).toLowerCase().startsWith(normalizeText(term).toLowerCase());
4
+ }
5
+ //# sourceMappingURL=compare-text.js.map