@crowdstrike/glide-core 0.5.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 (272) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +41 -0
  3. package/dist/accordion.d.ts +23 -0
  4. package/dist/accordion.js +1 -0
  5. package/dist/accordion.stories.d.ts +9 -0
  6. package/dist/accordion.styles.d.ts +2 -0
  7. package/dist/accordion.styles.js +98 -0
  8. package/dist/accordion.test.basics.d.ts +1 -0
  9. package/dist/accordion.test.events.d.ts +1 -0
  10. package/dist/button-group.button.d.ts +33 -0
  11. package/dist/button-group.button.js +1 -0
  12. package/dist/button-group.button.styles.d.ts +2 -0
  13. package/dist/button-group.button.styles.js +99 -0
  14. package/dist/button-group.button.test.basics.d.ts +1 -0
  15. package/dist/button-group.button.test.events.d.ts +1 -0
  16. package/dist/button-group.d.ts +26 -0
  17. package/dist/button-group.js +1 -0
  18. package/dist/button-group.stories.d.ts +16 -0
  19. package/dist/button-group.styles.d.ts +2 -0
  20. package/dist/button-group.styles.js +18 -0
  21. package/dist/button-group.test.basics.d.ts +1 -0
  22. package/dist/button-group.test.events.d.ts +1 -0
  23. package/dist/button.d.ts +29 -0
  24. package/dist/button.js +1 -0
  25. package/dist/button.stories.d.ts +17 -0
  26. package/dist/button.styles.d.ts +2 -0
  27. package/dist/button.styles.js +133 -0
  28. package/dist/button.test.basics.d.ts +1 -0
  29. package/dist/button.test.events.d.ts +1 -0
  30. package/dist/button.test.form.d.ts +1 -0
  31. package/dist/checkbox-group.d.ts +43 -0
  32. package/dist/checkbox-group.js +1 -0
  33. package/dist/checkbox-group.stories.d.ts +7 -0
  34. package/dist/checkbox-group.styles.d.ts +2 -0
  35. package/dist/checkbox-group.styles.js +20 -0
  36. package/dist/checkbox-group.test.basics.d.ts +1 -0
  37. package/dist/checkbox-group.test.events.d.ts +1 -0
  38. package/dist/checkbox-group.test.focus.d.ts +1 -0
  39. package/dist/checkbox-group.test.form.d.ts +1 -0
  40. package/dist/checkbox-group.test.validity.d.ts +1 -0
  41. package/dist/checkbox.d.ts +50 -0
  42. package/dist/checkbox.js +1 -0
  43. package/dist/checkbox.stories.d.ts +9 -0
  44. package/dist/checkbox.styles.d.ts +2 -0
  45. package/dist/checkbox.styles.js +116 -0
  46. package/dist/checkbox.test.basics.d.ts +1 -0
  47. package/dist/checkbox.test.events.d.ts +1 -0
  48. package/dist/checkbox.test.focus.d.ts +1 -0
  49. package/dist/checkbox.test.form.d.ts +1 -0
  50. package/dist/checkbox.test.states.d.ts +1 -0
  51. package/dist/checkbox.test.validity.d.ts +1 -0
  52. package/dist/drawer.d.ts +30 -0
  53. package/dist/drawer.js +15 -0
  54. package/dist/drawer.stories.d.ts +7 -0
  55. package/dist/drawer.styles.d.ts +2 -0
  56. package/dist/drawer.styles.js +34 -0
  57. package/dist/drawer.test.accessibility.d.ts +1 -0
  58. package/dist/drawer.test.basics.d.ts +1 -0
  59. package/dist/drawer.test.closing.d.ts +1 -0
  60. package/dist/drawer.test.events.d.ts +1 -0
  61. package/dist/drawer.test.methods.d.ts +1 -0
  62. package/dist/dropdown.d.ts +66 -0
  63. package/dist/dropdown.js +1 -0
  64. package/dist/dropdown.option.d.ts +33 -0
  65. package/dist/dropdown.option.js +1 -0
  66. package/dist/dropdown.option.styles.d.ts +2 -0
  67. package/dist/dropdown.option.styles.js +64 -0
  68. package/dist/dropdown.option.test.basics.d.ts +1 -0
  69. package/dist/dropdown.option.test.basics.multiple.d.ts +1 -0
  70. package/dist/dropdown.option.test.basics.single.d.ts +1 -0
  71. package/dist/dropdown.option.test.events.d.ts +1 -0
  72. package/dist/dropdown.option.test.focus.multiple.d.ts +1 -0
  73. package/dist/dropdown.option.test.focus.single.d.ts +1 -0
  74. package/dist/dropdown.option.test.interactions.multiple.d.ts +1 -0
  75. package/dist/dropdown.option.test.interactions.single.d.ts +1 -0
  76. package/dist/dropdown.stories.d.ts +15 -0
  77. package/dist/dropdown.styles.d.ts +2 -0
  78. package/dist/dropdown.styles.js +162 -0
  79. package/dist/dropdown.test.basics.d.ts +1 -0
  80. package/dist/dropdown.test.basics.filterable.d.ts +1 -0
  81. package/dist/dropdown.test.basics.multiple.d.ts +1 -0
  82. package/dist/dropdown.test.basics.single.d.ts +1 -0
  83. package/dist/dropdown.test.events.d.ts +1 -0
  84. package/dist/dropdown.test.focus.filterable.d.ts +1 -0
  85. package/dist/dropdown.test.focus.multiple.d.ts +1 -0
  86. package/dist/dropdown.test.focus.single.d.ts +1 -0
  87. package/dist/dropdown.test.form.d.ts +1 -0
  88. package/dist/dropdown.test.form.multiple.d.ts +1 -0
  89. package/dist/dropdown.test.form.single.d.ts +1 -0
  90. package/dist/dropdown.test.interactions.d.ts +1 -0
  91. package/dist/dropdown.test.interactions.filterable.d.ts +1 -0
  92. package/dist/dropdown.test.interactions.multiple.d.ts +1 -0
  93. package/dist/dropdown.test.interactions.single.d.ts +1 -0
  94. package/dist/dropdown.test.validity.d.ts +1 -0
  95. package/dist/icon-button.d.ts +22 -0
  96. package/dist/icon-button.js +1 -0
  97. package/dist/icon-button.stories.d.ts +8 -0
  98. package/dist/icon-button.styles.d.ts +2 -0
  99. package/dist/icon-button.styles.js +112 -0
  100. package/dist/icon-button.test.basics.d.ts +1 -0
  101. package/dist/icons/checked.d.ts +2 -0
  102. package/dist/icons/checked.js +1 -0
  103. package/dist/icons/magnifying-glass.d.ts +2 -0
  104. package/dist/icons/magnifying-glass.js +1 -0
  105. package/dist/input.d.ts +67 -0
  106. package/dist/input.js +1 -0
  107. package/dist/input.stories.d.ts +19 -0
  108. package/dist/input.styles.d.ts +2 -0
  109. package/dist/input.styles.js +109 -0
  110. package/dist/input.test.basics.d.ts +1 -0
  111. package/dist/input.test.events.d.ts +1 -0
  112. package/dist/input.test.focus.d.ts +1 -0
  113. package/dist/input.test.form.d.ts +1 -0
  114. package/dist/input.test.validity.d.ts +1 -0
  115. package/dist/label.d.ts +33 -0
  116. package/dist/label.js +1 -0
  117. package/dist/label.styles.d.ts +2 -0
  118. package/dist/label.styles.js +154 -0
  119. package/dist/label.test.basics.d.ts +1 -0
  120. package/dist/library/expect-argument-error.d.ts +1 -0
  121. package/dist/library/expect-argument-error.js +1 -0
  122. package/dist/library/ow.d.ts +16 -0
  123. package/dist/library/ow.js +1 -0
  124. package/dist/library/ow.test.d.ts +4 -0
  125. package/dist/menu.button.d.ts +21 -0
  126. package/dist/menu.button.js +1 -0
  127. package/dist/menu.button.styles.d.ts +2 -0
  128. package/dist/menu.button.styles.js +20 -0
  129. package/dist/menu.button.test.basics.d.ts +1 -0
  130. package/dist/menu.d.ts +27 -0
  131. package/dist/menu.js +1 -0
  132. package/dist/menu.link.d.ts +22 -0
  133. package/dist/menu.link.js +1 -0
  134. package/dist/menu.link.styles.d.ts +2 -0
  135. package/dist/menu.link.styles.js +22 -0
  136. package/dist/menu.link.test.basics.d.ts +1 -0
  137. package/dist/menu.stories.d.ts +9 -0
  138. package/dist/menu.styles.d.ts +2 -0
  139. package/dist/menu.styles.js +61 -0
  140. package/dist/menu.test.basics.d.ts +1 -0
  141. package/dist/menu.test.focus.d.ts +2 -0
  142. package/dist/menu.test.interactions.d.ts +2 -0
  143. package/dist/modal.d.ts +51 -0
  144. package/dist/modal.icon-button.d.ts +26 -0
  145. package/dist/modal.icon-button.js +1 -0
  146. package/dist/modal.icon-button.styles.d.ts +2 -0
  147. package/dist/modal.icon-button.styles.js +8 -0
  148. package/dist/modal.icon-button.test.basics.d.ts +1 -0
  149. package/dist/modal.js +15 -0
  150. package/dist/modal.stories.d.ts +14 -0
  151. package/dist/modal.styles.d.ts +2 -0
  152. package/dist/modal.styles.js +169 -0
  153. package/dist/modal.tertiary-icon.d.ts +21 -0
  154. package/dist/modal.tertiary-icon.js +1 -0
  155. package/dist/modal.tertiary-icon.test.basics.d.ts +1 -0
  156. package/dist/modal.test.accessibility.d.ts +1 -0
  157. package/dist/modal.test.basics.d.ts +3 -0
  158. package/dist/modal.test.close.d.ts +1 -0
  159. package/dist/modal.test.events.d.ts +1 -0
  160. package/dist/modal.test.lock-scroll.d.ts +1 -0
  161. package/dist/modal.test.methods.d.ts +1 -0
  162. package/dist/modal.test.scrollbars.d.ts +1 -0
  163. package/dist/radio-group.d.ts +48 -0
  164. package/dist/radio-group.js +1 -0
  165. package/dist/radio-group.stories.d.ts +8 -0
  166. package/dist/radio-group.styles.d.ts +2 -0
  167. package/dist/radio-group.styles.js +40 -0
  168. package/dist/radio-group.test.basics.d.ts +2 -0
  169. package/dist/radio-group.test.events.d.ts +2 -0
  170. package/dist/radio-group.test.focus.d.ts +2 -0
  171. package/dist/radio-group.test.form.d.ts +1 -0
  172. package/dist/radio-group.test.validity.d.ts +1 -0
  173. package/dist/radio.d.ts +23 -0
  174. package/dist/radio.js +1 -0
  175. package/dist/radio.styles.d.ts +2 -0
  176. package/dist/radio.styles.js +92 -0
  177. package/dist/status-indicator.d.ts +30 -0
  178. package/dist/status-indicator.js +1 -0
  179. package/dist/status-indicator.stories.d.ts +17 -0
  180. package/dist/status-indicator.styles.d.ts +2 -0
  181. package/dist/status-indicator.styles.js +58 -0
  182. package/dist/status-indicator.test.basics.d.ts +1 -0
  183. package/dist/styles/focus-outline.d.ts +2 -0
  184. package/dist/styles/focus-outline.js +4 -0
  185. package/dist/styles/fonts.css +1 -0
  186. package/dist/styles/variables.css +1 -0
  187. package/dist/styles/visually-hidden.d.ts +2 -0
  188. package/dist/styles/visually-hidden.js +11 -0
  189. package/dist/tab.d.ts +32 -0
  190. package/dist/tab.group.d.ts +35 -0
  191. package/dist/tab.group.js +1 -0
  192. package/dist/tab.group.styles.d.ts +2 -0
  193. package/dist/tab.group.styles.js +27 -0
  194. package/dist/tab.group.test.basics.d.ts +3 -0
  195. package/dist/tab.js +1 -0
  196. package/dist/tab.panel.d.ts +26 -0
  197. package/dist/tab.panel.js +1 -0
  198. package/dist/tab.panel.styles.d.ts +2 -0
  199. package/dist/tab.panel.styles.js +9 -0
  200. package/dist/tab.styles.d.ts +2 -0
  201. package/dist/tab.styles.js +83 -0
  202. package/dist/tab.test.basics.d.ts +1 -0
  203. package/dist/tabs.stories.d.ts +9 -0
  204. package/dist/tag.d.ts +25 -0
  205. package/dist/tag.js +1 -0
  206. package/dist/tag.stories.d.ts +9 -0
  207. package/dist/tag.styles.d.ts +2 -0
  208. package/dist/tag.styles.js +133 -0
  209. package/dist/tag.test.basics.d.ts +1 -0
  210. package/dist/tag.test.events.d.ts +1 -0
  211. package/dist/tag.test.focus.d.ts +1 -0
  212. package/dist/textarea.d.ts +49 -0
  213. package/dist/textarea.js +2 -0
  214. package/dist/textarea.stories.d.ts +13 -0
  215. package/dist/textarea.styles.d.ts +2 -0
  216. package/dist/textarea.styles.js +69 -0
  217. package/dist/textarea.test.basics.d.ts +1 -0
  218. package/dist/textarea.test.events.d.ts +1 -0
  219. package/dist/textarea.test.form.d.ts +1 -0
  220. package/dist/textarea.test.validity.d.ts +1 -0
  221. package/dist/toasts.d.ts +29 -0
  222. package/dist/toasts.js +1 -0
  223. package/dist/toasts.stories.d.ts +7 -0
  224. package/dist/toasts.styles.d.ts +2 -0
  225. package/dist/toasts.styles.js +15 -0
  226. package/dist/toasts.test.basics.d.ts +1 -0
  227. package/dist/toasts.toast.d.ts +28 -0
  228. package/dist/toasts.toast.js +1 -0
  229. package/dist/toasts.toast.styles.d.ts +2 -0
  230. package/dist/toasts.toast.styles.js +60 -0
  231. package/dist/toasts.toast.test.basics.d.ts +1 -0
  232. package/dist/toggle.d.ts +31 -0
  233. package/dist/toggle.js +1 -0
  234. package/dist/toggle.stories.d.ts +7 -0
  235. package/dist/toggle.styles.d.ts +2 -0
  236. package/dist/toggle.styles.js +81 -0
  237. package/dist/toggle.test.basics.d.ts +1 -0
  238. package/dist/toggle.test.events.d.ts +1 -0
  239. package/dist/toggle.test.focus.d.ts +1 -0
  240. package/dist/toggle.test.states.d.ts +1 -0
  241. package/dist/tooltip.d.ts +21 -0
  242. package/dist/tooltip.js +1 -0
  243. package/dist/tooltip.stories.d.ts +7 -0
  244. package/dist/tooltip.styles.d.ts +2 -0
  245. package/dist/tooltip.styles.js +66 -0
  246. package/dist/tooltip.test.basics.d.ts +1 -0
  247. package/dist/tooltip.test.interactions.d.ts +1 -0
  248. package/dist/tree.d.ts +26 -0
  249. package/dist/tree.item.d.ts +43 -0
  250. package/dist/tree.item.icon-button.d.ts +20 -0
  251. package/dist/tree.item.icon-button.js +1 -0
  252. package/dist/tree.item.icon-button.styles.d.ts +2 -0
  253. package/dist/tree.item.icon-button.styles.js +9 -0
  254. package/dist/tree.item.icon-button.test.basics.d.ts +1 -0
  255. package/dist/tree.item.js +1 -0
  256. package/dist/tree.item.menu.d.ts +21 -0
  257. package/dist/tree.item.menu.js +1 -0
  258. package/dist/tree.item.menu.styles.d.ts +2 -0
  259. package/dist/tree.item.menu.styles.js +17 -0
  260. package/dist/tree.item.menu.test.basics.d.ts +1 -0
  261. package/dist/tree.item.styles.d.ts +2 -0
  262. package/dist/tree.item.styles.js +130 -0
  263. package/dist/tree.item.test.basics.d.ts +1 -0
  264. package/dist/tree.js +1 -0
  265. package/dist/tree.stories.d.ts +17 -0
  266. package/dist/tree.styles.d.ts +2 -0
  267. package/dist/tree.styles.js +7 -0
  268. package/dist/tree.test.aria.d.ts +1 -0
  269. package/dist/tree.test.basics.d.ts +3 -0
  270. package/dist/tree.test.events.d.ts +2 -0
  271. package/dist/tree.test.focus.d.ts +1 -0
  272. package/package.json +129 -0
@@ -0,0 +1,66 @@
1
+ import './checkbox.js';
2
+ import './dropdown.option.js';
3
+ import './label.js';
4
+ import { LitElement } from 'lit';
5
+ declare global {
6
+ interface HTMLElementTagNameMap {
7
+ 'glide-core-dropdown': GlideCoreDropdown;
8
+ }
9
+ }
10
+ /**
11
+ * @description A dropdown with optional description and tooltip. Participates in forms and validation via `FormData` and various methods.
12
+ *
13
+ * @event change - Dispatched when an option is selected. An array of the selected option values is assigned to `event.detail`.
14
+ * @event input - Dispatched when an option is selected. An array of the selected option values is assigned to `event.detail`.
15
+ *
16
+ * @slot - One or more of `<glide-core-dropdown-option>`.
17
+ * @slot tooltip - Content for the tooltip.
18
+ * @slot description - Additional information or context.
19
+ */
20
+ export default class GlideCoreDropdown extends LitElement {
21
+ #private;
22
+ static formAssociated: boolean;
23
+ static shadowRootOptions: ShadowRootInit;
24
+ static styles: import("lit").CSSResult[];
25
+ disabled: boolean;
26
+ hideLabel: boolean;
27
+ label?: string;
28
+ name?: string;
29
+ open: boolean;
30
+ orientation: 'horizontal' | 'vertical';
31
+ placeholder?: string;
32
+ selectAll: boolean;
33
+ get size(): 'small' | 'large';
34
+ set size(size: 'small' | 'large');
35
+ get multiple(): boolean;
36
+ set multiple(isMultiple: boolean);
37
+ required: boolean;
38
+ value: string[];
39
+ variant?: 'quiet';
40
+ private get selectedOptions();
41
+ private get lastSelectedOptionWithValue();
42
+ private get isAllSelected();
43
+ private get isSomeSelected();
44
+ private get activeOption();
45
+ private get internalLabel();
46
+ checkValidity(): boolean;
47
+ connectedCallback(): void;
48
+ createRenderRoot(): ShadowRoot;
49
+ disconnectedCallback(): void;
50
+ firstUpdated(): void;
51
+ focus(): void;
52
+ get form(): HTMLFormElement | null;
53
+ get validity(): ValidityState;
54
+ get willValidate(): boolean;
55
+ formAssociatedCallback(): void;
56
+ formResetCallback(): void;
57
+ render(): import("lit").TemplateResult<1>;
58
+ reportValidity(): boolean;
59
+ constructor();
60
+ private ariaActivedescendant;
61
+ private isCheckingValidity;
62
+ private isEveryOptionFilteredOut;
63
+ private isFilterable;
64
+ private isFiltering;
65
+ private isReportValidityOrSubmit;
66
+ }
@@ -0,0 +1 @@
1
+ "use strict";var Lt=Object.defineProperty;var Rt=Object.getOwnPropertyDescriptor;var o=(c,h,t,i)=>{for(var l=i>1?void 0:i?Rt(h,t):h,a=c.length-1,ot;a>=0;a--)(ot=c[a])&&(l=(i?ot(h,t,l):ot(l))||l);return i&&l&&Lt(h,t,l),l};var ht=(c,h,t)=>{if(!h.has(c))throw TypeError("Cannot "+t)};var e=(c,h,t)=>(ht(c,h,"read from private field"),t?t.call(c):h.get(c)),s=(c,h,t)=>{if(h.has(c))throw TypeError("Cannot add the same private member more than once");h instanceof WeakSet?h.add(c):h.set(c,t)},y=(c,h,t,i)=>(ht(c,h,"write to private field"),i?i.call(c,t):h.set(c,t),t);var r=(c,h,t)=>(ht(c,h,"access private method"),t);var V,E,p,A,R,x,I,K,d,T,N,L,U,P,j,f,g,$,k,B,Q,v,b,O,S,W,X,J,ct,Y,pt,Z,vt,C,gt,D,mt,_,bt,G,Ot,tt,yt,et,At,it,St,st,Et,at,$t,lt,Ft,nt,kt,rt,Vt;import"./checkbox.js";import"./dropdown.option.js";import"./label.js";import{LitElement as ut,html as F}from"lit";import{classMap as z}from"lit/directives/class-map.js";import{createRef as q,ref as H}from"lit/directives/ref.js";import{customElement as xt,property as m,state as M}from"lit/decorators.js";import{owSlotType as dt}from"./library/ow.js";import{repeat as It}from"lit/directives/repeat.js";import{svg as Mt}from"lit/static-html.js";import{when as w}from"lit/directives/when.js";import u from"./dropdown.option.js";import ft from"./tag.js";import wt from"./icons/magnifying-glass.js";import Tt from"./dropdown.styles.js";let n=class extends ut{constructor(){super();s(this,f);s(this,$);s(this,B);s(this,v);s(this,O);s(this,W);s(this,J);s(this,Y);s(this,Z);s(this,C);s(this,D);s(this,_);s(this,G);s(this,tt);s(this,et);s(this,it);s(this,st);s(this,at);s(this,lt);s(this,nt);s(this,rt);this.disabled=!1;this.hideLabel=!1;this.open=!1;this.orientation="horizontal";this.selectAll=!1;this.required=!1;this.value=[];this.ariaActivedescendant="";this.isCheckingValidity=!1;this.isEveryOptionFilteredOut=!1;this.isFilterable=!1;this.isFiltering=!1;this.isReportValidityOrSubmit=!1;s(this,V,q());s(this,E,q());s(this,p,q());s(this,A,void 0);s(this,R,!1);s(this,x,!1);s(this,I,!1);s(this,K,!1);s(this,d,q());s(this,T,void 0);s(this,N,"large");s(this,L,3);s(this,U,q());s(this,P,t=>{this.multiple&&!(t.target instanceof n||t.target instanceof u)?this.open=!1:!this.multiple&&!(t.target instanceof n)&&(this.open=!1)});s(this,j,({formData:t})=>{this.name&&this.value.length>0&&!this.disabled&&t.append(this.name,JSON.stringify(this.value))});y(this,A,this.attachInternals()),this.addEventListener("invalid",t=>{t?.preventDefault(),this.isCheckingValidity||(this.isReportValidityOrSubmit=!0,this.focus())})}get size(){return e(this,N)}set size(t){if(y(this,N,t),e(this,$,k))for(const i of e(this,$,k))i.privateSize=t}get multiple(){return e(this,x)}set multiple(t){const i=e(this,x)&&!t,l=!e(this,x)&&t;y(this,x,t);for(const a of e(this,f,g))a.privateMultiple=t,i&&a!==this.lastSelectedOptionWithValue&&(a.selected=!1);i&&this.lastSelectedOptionWithValue?this.value=[this.lastSelectedOptionWithValue.value]:l&&this.lastSelectedOptionWithValue&&this.lastSelectedOptionWithValue.privateUpdateCheckbox()}get selectedOptions(){return e(this,f,g).filter(t=>t instanceof u&&t.selected)}get lastSelectedOptionWithValue(){return e(this,f,g).findLast(t=>t.selected&&t.value)}get isAllSelected(){return e(this,f,g).filter(({selected:t})=>t).length===e(this,f,g).length}get isSomeSelected(){return e(this,f,g).some(({selected:t})=>t)}get activeOption(){return e(this,$,k)?.find(({privateActive:t})=>t)}get internalLabel(){return!this.isFilterable&&this.selectedOptions.length===0?this.placeholder:!this.multiple&&!this.isFilterable&&this.selectedOptions.at(-1)?.label?this.selectedOptions.at(-1)?.label:""}checkValidity(){return this.isCheckingValidity=!0,e(this,A).checkValidity()}connectedCallback(){super.connectedCallback(),document.addEventListener("click",e(this,P),{capture:!0})}createRenderRoot(){return y(this,T,super.createRenderRoot()),e(this,T)}disconnectedCallback(){super.disconnectedCallback(),this.form?.removeEventListener("formdata",e(this,j)),document.removeEventListener("click",e(this,P),{capture:!0})}firstUpdated(){dt(e(this,E).value,[u,Text])}focus(){this.isFilterable?e(this,p).value?.focus():e(this,V).value?.focus()}get form(){return e(this,A).form}get validity(){return this.required&&this.selectedOptions.length===0?e(this,A).setValidity({valueMissing:!0}," ",e(this,p).value):e(this,A).setValidity({}),e(this,A).validity}get willValidate(){return e(this,A).willValidate}formAssociatedCallback(){this.form?.addEventListener("formdata",e(this,j))}formResetCallback(){for(const l of e(this,f,g))l.hasAttribute("selected")||(l.selected=!1);const t=e(this,f,g).filter(l=>l.hasAttribute("selected")),i=t.at(-1)?.value;this.value=this.multiple&&t.length>0?t.map(({value:l})=>l):!this.multiple&&i?[i]:[]}render(){return F`<div class="${z({component:!0,horizontal:this.orientation==="horizontal",vertical:this.orientation==="vertical"})}"><glide-core-label orientation="${this.orientation}" ?disabled="${this.disabled}" ?error="${e(this,J,ct)}" ?hide="${this.hideLabel}" ?required="${this.required}"><label id="label">${this.label}</label><slot name="tooltip" slot="tooltip"></slot><div class="dropdown-and-options" slot="control" @focusout="${r(this,Z,vt)}" @keydown="${r(this,C,gt)}"><div class="${z({dropdown:!0,quiet:this.variant==="quiet",disabled:this.disabled,error:e(this,J,ct),multiple:this.multiple})}" @click="${r(this,D,mt)}" @mousedown="${r(this,_,bt)}">${w(this.multiple&&this.selectedOptions.length>0,()=>F`<ul aria-describedby="tag-overflow-text" class="tags" ${H(e(this,U))}>${w(this.multiple&&this.selectedOptions.length>0,()=>F`${It(this.selectedOptions,({id:t})=>t,({id:t,label:i},l)=>F`<li class="${z({"tag-container":!0,hidden:l>e(this,L)-1})}" data-test="tag-container" data-test-hidden="${l>e(this,L)-1}"><glide-core-tag data-test="tag" data-id="${t}" removable-label="${i??""}" @remove="${r(this,rt,Vt).bind(this,t)}">${i}</glide-core-tag></li>`)}`)}</ul>`)} ${w(this.isFilterable,()=>F`<input aria-activedescendant="${this.ariaActivedescendant}" aria-controls="options" aria-describedby="description" aria-expanded="${this.open}" aria-labelledby="label" autocapitalize="off" autocomplete="off" class="${z({input:!0,selection:!!this.selectedOptions.at(0),single:!this.multiple})}" data-test="input" id="input" placeholder="${this.multiple||!this.selectedOptions.at(-1)?.label?this.placeholder??"":this.selectedOptions.at(-1)?.label??""}" role="combobox" spellcheck="false" @input="${r(this,G,Ot)}" @keydown="${r(this,tt,yt)}" ${H(e(this,p))}>`)} ${w(this.internalLabel,()=>F`<div data-test="internal-label">${this.internalLabel}</div>`)} ${w(this.selectedOptions.length>e(this,L),()=>F`<div class="tag-overflow-text" id="tag-overflow-text" data-test="tag-overflow-text">+ <span data-test="tag-overflow-count">${this.selectedOptions.length-e(this,L)} </span>more</div>`)} <button aria-hidden="${this.isFilterable}" aria-expanded="${this.open}" aria-haspopup="listbox" aria-labelledby="label" aria-describedby="description" class="button" data-test="button" id="button" tabindex="${this.isFilterable?"-1":"0"}" type="button" ${H(e(this,V))}>${w(this.isFiltering,()=>F`<div data-test="magnifying-glass-icon">${wt}</div>`,()=>Mt`<svg aria-label="Open" width="16" height="16" viewBox="0 0 24 24" fill="none"><path d="M6 9L12 15L18 9" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>`)}</button></div><div aria-labelledby="${this.isFilterable?"input":"button"}" class="${z({options:!0,visible:this.open&&!this.disabled&&!this.isEveryOptionFilteredOut})}" data-test="options" data-test-visible="${this.open&&!this.disabled&&!this.isEveryOptionFilteredOut}" role="listbox" @mousedown="${r(this,it,St)}" @mouseover="${r(this,st,Et)}"><glide-core-dropdown-option class="select-all" data-test="select-all" label="Select All" ?hidden="${!this.selectAll||!this.multiple||this.isFiltering}" @private-selected-change="${r(this,nt,kt)}" ${H(e(this,d))}></glide-core-dropdown-option><slot @focusin="${r(this,et,At)}" @private-selected-change="${r(this,at,$t)}" @private-value-change="${r(this,lt,Ft)}" @slotchange="${r(this,Y,pt)}" ${H(e(this,E))}></slot></div></div><slot id="description" name="description" slot="description"></slot></glide-core-label></div>`}reportValidity(){return e(this,A).reportValidity()}};V=new WeakMap,E=new WeakMap,p=new WeakMap,A=new WeakMap,R=new WeakMap,x=new WeakMap,I=new WeakMap,K=new WeakMap,d=new WeakMap,T=new WeakMap,N=new WeakMap,L=new WeakMap,U=new WeakMap,P=new WeakMap,j=new WeakMap,f=new WeakSet,g=function(){return e(this,E).value?.assignedElements().filter(t=>t instanceof u)??[]},$=new WeakSet,k=function(){const t=e(this,E).value?.assignedElements().filter(i=>i instanceof u);if(t&&e(this,d).value)return[e(this,d).value,...t]},B=new WeakSet,Q=function(){return e(this,E).value?.assignedElements().filter(t=>t instanceof u&&!t.hidden)},v=new WeakSet,b=function(){const t=e(this,E).value?.assignedElements().filter(i=>i instanceof u&&!i.hidden);return e(this,d).value&&!e(this,d).value.hidden&&t?[e(this,d).value,...t]:t},O=new WeakSet,S=function(){if(e(this,$,k))for(const t of e(this,$,k))t.privateActive=!1},W=new WeakSet,X=async function(){this.activeOption&&(await this.updateComplete,this.activeOption.focus())},J=new WeakSet,ct=function(){return this.required&&!this.disabled&&!this.validity.valid&&this.isReportValidityOrSubmit},Y=new WeakSet,pt=function(){if(dt(e(this,E).value,[u,Text]),this.isFilterable=e(this,f,g).length>10,e(this,$,k))for(const i of e(this,$,k))i.privateIsFocusable=!this.isFilterable,i.privateSize=this.size,i.privateMultiple=this.multiple;this.lastSelectedOptionWithValue?.value&&(r(this,O,S).call(this),this.lastSelectedOptionWithValue.privateActive=!0,this.ariaActivedescendant=this.lastSelectedOptionWithValue.id),e(this,d).value&&(y(this,R,!0),e(this,d).value.selected=this.isAllSelected,e(this,d).value.privateIndeterminate=this.isSomeSelected&&!this.isAllSelected);const t=e(this,v,b)?.at(0);t&&(r(this,O,S).call(this),t.privateActive=!0,this.ariaActivedescendant=t.id),this.multiple?this.value=this.selectedOptions.filter(i=>!!i.value).map(({value:i})=>i):this.lastSelectedOptionWithValue?.value&&(this.value=[this.lastSelectedOptionWithValue.value])},Z=new WeakSet,vt=function(t){t.relatedTarget===null&&!e(this,I)&&(this.open=!1)},C=new WeakSet,gt=function(t){if(t.key==="Escape"){this.open=!1,this.focus();return}const i=t.target===e(this,V).value||t.target===e(this,p).value||t.target instanceof u;if(!(this.multiple&&!i)){if(!this.open&&[" ","ArrowUp","ArrowDown"].includes(t.key)){t.preventDefault(),this.open=!0,this.isFilterable||r(this,W,X).call(this);return}if(this.activeOption&&this.open){if(t.key==="Enter"||t.key===" "){if(!this.isFilterable&&e(this,T)?.activeElement===e(this,V).value)return;if(this.multiple||y(this,K,!0),t.key==="Enter"){this.activeOption.selected=!this.activeOption?.selected;return}if(t.key===" "&&!this.isFilterable){this.activeOption.selected=!this.activeOption?.selected;return}}const l=e(this,v,b)?.indexOf(this.activeOption);if(t.key==="ArrowUp"&&!t.metaKey&&e(this,v,b)&&typeof l=="number"){t.preventDefault();const a=e(this,v,b).at(l-1);a&&l!==0&&(r(this,O,S).call(this),a.privateActive=!0,this.ariaActivedescendant=a.id,this.isFilterable?this.ariaActivedescendant=a.id:a.focus());return}if(t.key==="ArrowDown"&&!t.metaKey&&e(this,v,b)&&typeof l=="number"){t.preventDefault();const a=e(this,v,b).at(l+1);a&&(r(this,O,S).call(this),a.privateActive=!0,this.isFilterable?this.ariaActivedescendant=a.id:a.focus());return}if((t.key==="ArrowUp"&&t.metaKey||t.key==="Home"||t.key==="PageUp")&&e(this,v,b)){t.preventDefault();const a=e(this,v,b).at(0);a&&(r(this,O,S).call(this),a.privateActive=!0,this.isFilterable?this.ariaActivedescendant=a.id:a.focus());return}if((t.key==="ArrowDown"&&t.metaKey||t.key==="End"||t.key==="PageDown")&&e(this,v,b)){t.preventDefault();const a=e(this,v,b).at(-1);a&&(r(this,O,S).call(this),a.privateActive=!0,this.isFilterable?this.ariaActivedescendant=a.id:a.focus());return}}}},D=new WeakSet,mt=function(t){if(e(this,I)){y(this,I,!1);return}t.target instanceof Node&&e(this,V).value?.contains(t.target)&&!e(this,K)&&this.open?this.open=!1:!this.open&&t.detail!==0&&(this.open=!0,this.isFilterable||r(this,W,X).call(this))},_=new WeakSet,bt=function(t){!(t.target instanceof ft)&&this.isFilterable?(t.preventDefault(),this.focus()):t.target instanceof ft||(t.preventDefault(),r(this,W,X).call(this))},G=new WeakSet,Ot=function(){if(e(this,p).value){this.open=!0,this.isFiltering=e(this,p).value.value.trim()!=="";for(const i of e(this,f,g))i.hidden=!i.label?.toLowerCase().includes(e(this,p).value?.value.toLowerCase().trim());const t=e(this,B,Q)?.at(0);t&&this.activeOption?.hidden&&(r(this,O,S).call(this),t.privateActive=!0,this.ariaActivedescendant=t.id),this.isEveryOptionFilteredOut=!e(this,B,Q)||e(this,B,Q).length===0}},tt=new WeakSet,yt=function(t){const i=this.selectedOptions.filter((l,a)=>a<=e(this,L)-1).at(-1);i&&t.key==="Backspace"&&this.multiple&&e(this,p).value&&e(this,p).value.selectionStart===0&&(i.selected=!1)},et=new WeakSet,At=function(t){t.target instanceof u&&(r(this,O,S).call(this),t.target.privateActive=!0)},it=new WeakSet,St=function(t){this.isFilterable&&t.preventDefault()},st=new WeakSet,Et=function(t){if(t.target instanceof u&&e(this,v,b)){r(this,O,S).call(this),t.target.privateActive=!0;for(const i of e(this,v,b))this.isFilterable&&i.privateActive?this.ariaActivedescendant=i.id:!this.isFilterable&&i===t.target&&i.focus()}},at=new WeakSet,$t=function(t){if(e(this,d).value&&t.target!==e(this,d).value&&(y(this,R,!0),e(this,d).value.selected=this.isAllSelected,e(this,d).value.privateIndeterminate=this.isSomeSelected&&!this.isAllSelected),this.isFilterable&&e(this,p).value){e(this,p).value.value="",this.isFiltering=!1;for(const i of e(this,f,g))i.hidden=!1}t.target instanceof u&&(this.multiple?this.value=t.target.selected&&t.target.value?[...this.value,t.target.value]:this.value.filter(i=>t.target instanceof u&&i!==t.target.value):t.target.selected&&(this.value=t.target.value?[t.target.value]:[],this.open=!1,this.focus(),this.isFilterable&&e(this,p).value&&(this.isFiltering=!1))),this.dispatchEvent(new Event("change",{bubbles:!0})),this.dispatchEvent(new Event("input",{bubbles:!0}))},lt=new WeakSet,Ft=function(t){t.target instanceof u&&this.multiple&&t.target.selected&&t.target.value?this.value=[...this.value.filter(i=>i!==t.detail),t.target.value]:t.target instanceof u&&this.multiple?this.value=this.value.filter(i=>t.target instanceof u&&i!==t.detail):t.target instanceof u&&(this.value=t.target.value?[t.target.value]:[],this.open=!1,this.focus())},nt=new WeakSet,kt=function(){if(e(this,R)){y(this,R,!1);return}const t=this.isAllSelected;for(const i of e(this,f,g))i.selected=!t},rt=new WeakSet,Vt=async function(t){y(this,I,!0);for(const l of e(this,f,g))l.id===t&&(l.selected=!1,this.value=this.value.filter(a=>a!==l.value));const i=e(this,U).value?.querySelectorAll("glide-core-tag");if(i&&this.value.length>0){const l=[...i].findIndex(a=>a.dataset.id===t);await this.updateComplete,i[l<i.length-1?l+1:l-1]?.focus()}else this.focus()},n.formAssociated=!0,n.shadowRootOptions={...ut.shadowRootOptions,mode:"closed"},n.styles=Tt,o([m({reflect:!0,type:Boolean})],n.prototype,"disabled",2),o([m({attribute:"hide-label",reflect:!0,type:Boolean})],n.prototype,"hideLabel",2),o([m({reflect:!0})],n.prototype,"label",2),o([m({reflect:!0})],n.prototype,"name",2),o([m({reflect:!0,type:Boolean})],n.prototype,"open",2),o([m({reflect:!0})],n.prototype,"orientation",2),o([m({reflect:!0})],n.prototype,"placeholder",2),o([m({attribute:"select-all",reflect:!0,type:Boolean})],n.prototype,"selectAll",2),o([m({reflect:!0})],n.prototype,"size",1),o([m({reflect:!0,type:Boolean})],n.prototype,"multiple",1),o([m({reflect:!0,type:Boolean})],n.prototype,"required",2),o([m({type:Array})],n.prototype,"value",2),o([m({reflect:!0})],n.prototype,"variant",2),o([M()],n.prototype,"ariaActivedescendant",2),o([M()],n.prototype,"isCheckingValidity",2),o([M()],n.prototype,"isEveryOptionFilteredOut",2),o([M()],n.prototype,"isFilterable",2),o([M()],n.prototype,"isFiltering",2),o([M()],n.prototype,"isReportValidityOrSubmit",2),n=o([xt("glide-core-dropdown")],n);export{n as default};
@@ -0,0 +1,33 @@
1
+ import { LitElement } from 'lit';
2
+ declare global {
3
+ interface HTMLElementTagNameMap {
4
+ 'glide-core-dropdown-option': GlideCoreDropdownOption;
5
+ }
6
+ }
7
+ /**
8
+ * @description An individual option for use with <glide-core-dropdown>.
9
+ *
10
+ * @slot icon - An icon.
11
+ */
12
+ export default class GlideCoreDropdownOption extends LitElement {
13
+ #private;
14
+ static shadowRootOptions: ShadowRootInit;
15
+ static styles: import("lit").CSSResult[];
16
+ label?: string;
17
+ privateMultiple: boolean;
18
+ get selected(): boolean;
19
+ set selected(isSelected: boolean);
20
+ privateSize: 'small' | 'large';
21
+ privateActive: boolean;
22
+ privateIndeterminate: boolean;
23
+ privateIsFocusable: boolean;
24
+ private get isMultiple();
25
+ click(): void;
26
+ firstUpdated(): void;
27
+ get value(): string;
28
+ set value(value: string);
29
+ focus(): void;
30
+ privateUpdateCheckbox(): Promise<void>;
31
+ render(): import("lit").TemplateResult<1>;
32
+ constructor();
33
+ }
@@ -0,0 +1 @@
1
+ "use strict";var F=Object.defineProperty;var L=Object.getOwnPropertyDescriptor;var r=(i,t,e,a)=>{for(var o=a>1?void 0:a?L(t,e):t,k=i.length-1,$;k>=0;k--)($=i[k])&&(o=(a?$(t,e,o):$(o))||o);return a&&o&&F(t,e,o),o};var x=(i,t,e)=>{if(!t.has(i))throw TypeError("Cannot "+e)};var l=(i,t,e)=>(x(i,t,"read from private field"),e?e.call(i):t.get(i)),h=(i,t,e)=>{if(t.has(i))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(i):t.set(i,e)},E=(i,t,e,a)=>(x(i,t,"write to private field"),a?a.call(i,e):t.set(i,e),e);var M=(i,t,e)=>(x(i,t,"access private method"),e);var c,d,n,u,f,S,b,A,g,U;import{LitElement as I,html as y}from"lit";import{classMap as m}from"lit/directives/class-map.js";import{createRef as R,ref as z}from"lit/directives/ref.js";import{customElement as T,property as v,state as p}from"lit/decorators.js";import{when as B}from"lit/directives/when.js";import"./checkbox.js";import H from"./icons/checked.js";import q from"./dropdown.option.styles.js";let s=class extends I{constructor(){super();h(this,f);h(this,b);h(this,g);this.privateMultiple=!1;this.privateSize="large";this.privateActive=!1;this.privateIndeterminate=!1;this.privateIsFocusable=!0;h(this,c,R());h(this,d,R());h(this,n,!1);h(this,u,"");this.id=window.crypto.randomUUID()}get selected(){return l(this,n)}set selected(e){if(E(this,n,e),this.isMultiple)l(this,c).value&&(l(this,c).value.checked=e);else for(const a of l(this,f,S))a!==this&&this.selected&&a.selected&&(a.selected=!1);this.dispatchEvent(new Event("private-selected-change",{bubbles:!0}))}get isMultiple(){return this.privateMultiple||this.closest("glide-core-dropdown")?.multiple}click(){this.isMultiple?this.selected=!this.selected:this.selected||(this.selected=!0)}firstUpdated(){l(this,c).value&&(l(this,c).value.checked=this.selected)}get value(){return l(this,u)}set value(e){const a=l(this,u);E(this,u,e),this.dispatchEvent(new CustomEvent("private-value-change",{bubbles:!0,detail:a}))}focus(){l(this,d).value?.focus()}async privateUpdateCheckbox(){await this.updateComplete,l(this,c).value&&(l(this,c).value.checked=this.selected)}render(){return y`<div aria-selected="${this.selected?"true":"false"}" class="${m({component:!0,active:this.privateActive,[this.privateSize]:!0})}" data-test="component" tabindex="${this.privateActive&&this.privateIsFocusable?"0":"-1"}" role="option" @click="${M(this,g,U)}" ${z(l(this,d))}>${B(this.isMultiple,()=>y`<glide-core-checkbox class="${m({checkbox:!0,[this.privateSize]:!0})}" data-test="checkbox" label="${this.label??""}" tabindex="-1" private-variant="minimal" value="${this.value}" ?indeterminate="${this.privateIndeterminate}" ?internally-inert="${!this.privateIsFocusable}" @change="${M(this,b,A)}" ${z(l(this,c))}></glide-core-checkbox>`,()=>y`<div class="${m({option:!0,[this.privateSize]:!0})}"><div class="${m({"checked-icon":!0,visible:this.selected})}">${H}</div><slot name="icon"></slot>${this.label}</div>`)}</div>`}};c=new WeakMap,d=new WeakMap,n=new WeakMap,u=new WeakMap,f=new WeakSet,S=function(){return[...this.closest("glide-core-dropdown")?.querySelectorAll("glide-core-dropdown-option")??[]]},b=new WeakSet,A=function(){this.selected=!this.selected},g=new WeakSet,U=function(e){e.target!==l(this,c).value&&!this.isMultiple&&!this.selected&&(this.selected=!0)},s.shadowRootOptions={...I.shadowRootOptions,mode:"closed"},s.styles=q,r([v({reflect:!0})],s.prototype,"label",2),r([v({attribute:"private-multiple",type:Boolean})],s.prototype,"privateMultiple",2),r([v({type:Boolean})],s.prototype,"selected",1),r([v({attribute:"private-size",reflect:!0})],s.prototype,"privateSize",2),r([p()],s.prototype,"privateActive",2),r([p()],s.prototype,"privateIndeterminate",2),r([p()],s.prototype,"privateIsFocusable",2),r([p()],s.prototype,"isMultiple",1),r([v()],s.prototype,"value",1),s=r([T("glide-core-dropdown-option")],s);export{s as default};
@@ -0,0 +1,2 @@
1
+ declare const _default: import("lit").CSSResult[];
2
+ export default _default;
@@ -0,0 +1,64 @@
1
+ "use strict";import{css as e}from"lit";export default[e`
2
+ .component {
3
+ align-items: center;
4
+ border-radius: var(--glide-core-spacing-sm);
5
+
6
+ &.active {
7
+ background-color: var(--glide-core-surface-hover);
8
+ }
9
+
10
+ &.large {
11
+ --height: 1.75rem;
12
+ --gap: var(--glide-core-spacing-sm);
13
+ --padding-inline: var(--glide-core-spacing-sm);
14
+
15
+ font-family: var(--glide-core-body-sm-font-family);
16
+ font-size: var(--glide-core-body-sm-font-size);
17
+ font-style: var(--glide-core-body-sm-font-style);
18
+ font-weight: var(--glide-core-body-sm-font-weight);
19
+ line-height: var(--glide-core-body-sm-line-height);
20
+ }
21
+
22
+ &.small {
23
+ --height: 1.25rem;
24
+ --gap: var(--glide-core-spacing-xs);
25
+ --padding-inline: var(--glide-core-spacing-xs);
26
+
27
+ font-family: var(--glide-core-body-xs-font-family);
28
+ font-size: var(--glide-core-body-xs-font-size);
29
+ font-style: var(--glide-core-body-xs-font-style);
30
+ font-weight: var(--glide-core-body-xs-font-weight);
31
+ line-height: var(--glide-core-body-xs-line-height);
32
+ }
33
+ }
34
+
35
+ .option {
36
+ align-items: center;
37
+ block-size: var(--height);
38
+ display: flex;
39
+ gap: var(--gap);
40
+ padding-inline: var(--padding-inline);
41
+ user-select: none;
42
+ }
43
+
44
+ glide-core-checkbox {
45
+ &::part(private-label-and-input-and-checkbox) {
46
+ block-size: var(--height);
47
+ padding-inline: var(--padding-inline);
48
+ }
49
+ }
50
+
51
+ .checked-icon {
52
+ display: inline-flex;
53
+ justify-content: center;
54
+ opacity: 0;
55
+
56
+ &.visible {
57
+ opacity: 1;
58
+ }
59
+ }
60
+
61
+ .indeterminate-icon {
62
+ display: none;
63
+ }
64
+ `];
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ import './dropdown.option.js';
2
+ import './icons/storybook.js';
3
+ import type { Meta, StoryObj } from '@storybook/web-components';
4
+ declare const meta: Meta;
5
+ export default meta;
6
+ export declare const SingleSelectionHorizontal: StoryObj;
7
+ export declare const SingleSelectionHorizontalWithIcon: StoryObj;
8
+ export declare const SingleSelectionHorizontalWithTooltip: StoryObj;
9
+ export declare const SingleSelectionHorizontalWithError: StoryObj;
10
+ export declare const SingleSelectionVerticalWithIcon: StoryObj;
11
+ export declare const SingleSelectionVerticalWithTooltip: StoryObj;
12
+ export declare const SingleSelectionVerticalWithError: StoryObj;
13
+ export declare const SingleSelectionHorizontalWithFiltering: StoryObj;
14
+ export declare const MultipleSelectionHorizontal: StoryObj;
15
+ export declare const MultipleSelectionHorizontalWithFiltering: StoryObj;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("lit").CSSResult[];
2
+ export default _default;
@@ -0,0 +1,162 @@
1
+ "use strict";import{css as e}from"lit";import i from"./styles/focus-outline.js";export default[e`
2
+ .component {
3
+ --min-inline-size: 9.375rem;
4
+
5
+ font-family: var(--glide-core-font-sans);
6
+ }
7
+
8
+ .dropdown-and-options {
9
+ display: flex;
10
+ position: relative;
11
+ }
12
+
13
+ .dropdown {
14
+ --button-and-input-height: 1.25rem;
15
+
16
+ align-items: center;
17
+ block-size: 2.125rem;
18
+ border: 1px solid var(--glide-core-border-base-lighter);
19
+ border-radius: var(--glide-core-spacing-xs);
20
+ box-sizing: border-box;
21
+ color: var(--glide-core-text-body-1);
22
+ cursor: inherit;
23
+ display: inline-flex;
24
+ flex-grow: 1;
25
+ font-size: var(--glide-core-body-sm-font-size);
26
+ font-style: var(--glide-core-body-sm-font-style);
27
+ font-weight: var(--glide-core-body-sm-font-weight);
28
+ gap: var(--glide-core-spacing-xs);
29
+ justify-content: space-between;
30
+ min-inline-size: var(--min-inline-size);
31
+ padding-inline: var(--glide-core-spacing-xs);
32
+ text-align: start;
33
+ user-select: none;
34
+ white-space: nowrap;
35
+
36
+ &.quiet:not(.multiple) {
37
+ background-color: transparent;
38
+ border: unset;
39
+ font-size: var(--glide-core-heading-xxxs-font-size);
40
+ font-style: var(--glide-core-heading-xxxs-font-style);
41
+ font-weight: var(--glide-core-heading-xxxs-font-weight);
42
+ gap: var(--glide-core-spacing-xxs);
43
+ min-inline-size: 3.75rem;
44
+ padding-block: 0;
45
+ padding-inline: 0.375rem;
46
+ }
47
+
48
+ &.disabled {
49
+ background: var(--glide-core-surface-base-gray-light);
50
+ color: var(--glide-core-text-tertiary-disabled);
51
+ }
52
+
53
+ &.error {
54
+ border-color: var(--glide-core-status-error);
55
+ color: var(--glide-core-status-error);
56
+ }
57
+
58
+ &:has(.button:focus-visible, .input:focus-visible) {
59
+ ${i};
60
+ }
61
+
62
+ &:hover:not(&.error, &.disabled) {
63
+ border-color: var(--glide-core-border-base);
64
+ }
65
+
66
+ &.quiet:hover:not(&.error, &.disabled, &.multiple) {
67
+ background-color: var(--glide-core-surface-hover);
68
+ }
69
+ }
70
+
71
+ .options {
72
+ background-color: var(--glide-core-surface-modal);
73
+ border: 1px solid var(--glide-core-surface-modal);
74
+ border-radius: var(--glide-core-spacing-xs);
75
+ box-shadow: var(--glide-core-shadow-lg);
76
+ box-sizing: border-box;
77
+ inset-block-start: 100%;
78
+ inset-inline-start: 0;
79
+ margin-block: var(--glide-core-spacing-xxs) 0;
80
+ min-inline-size: var(--min-inline-size);
81
+ padding: var(--glide-core-spacing-xxxs);
82
+ position: absolute;
83
+ visibility: hidden;
84
+
85
+ /*
86
+ ".combobox-and-options" is relative and many Dropdowns may be stacked in a column.
87
+ This ensures that the ".options" of Dropdowns earlier in the column aren't obscured
88
+ by the ".combobox-and-options" that come after.
89
+ */
90
+ z-index: 1;
91
+
92
+ &.visible {
93
+ visibility: visible;
94
+ }
95
+ }
96
+
97
+ .select-all {
98
+ border-block-end: 1px solid var(--glide-core-border-base-light);
99
+ margin-block-end: var(--glide-core-spacing-xxxs);
100
+ padding-block-end: var(--glide-core-spacing-xxxs);
101
+
102
+ &:not([hidden]) {
103
+ display: block;
104
+ }
105
+ }
106
+
107
+ .tags {
108
+ display: flex;
109
+ gap: var(--glide-core-spacing-xs);
110
+ list-style-type: none;
111
+ margin-block: 0;
112
+ padding-inline-start: 0;
113
+ }
114
+
115
+ .tag-container {
116
+ display: block;
117
+
118
+ &.hidden {
119
+ display: none;
120
+ }
121
+ }
122
+
123
+ .tag-overflow-text {
124
+ color: var(--glide-core-text-link);
125
+ margin-inline-end: var(--glide-core-spacing-md);
126
+ }
127
+
128
+ .button {
129
+ align-items: center;
130
+ background: none;
131
+ block-size: var(--button-and-input-height);
132
+ border: none;
133
+ display: flex;
134
+ padding: 0;
135
+
136
+ &:focus {
137
+ outline: none;
138
+ }
139
+ }
140
+
141
+ .input {
142
+ block-size: var(--button-and-input-height);
143
+ border: none;
144
+ font-size: inherit;
145
+ min-inline-size: var(--min-inline-size);
146
+ padding: 0;
147
+
148
+ &:focus {
149
+ outline: none;
150
+ }
151
+
152
+ &.single.selection:not(:focus) {
153
+ &::placeholder {
154
+ color: inherit;
155
+ }
156
+ }
157
+
158
+ &::placeholder {
159
+ font-family: var(--glide-core-font-sans);
160
+ }
161
+ }
162
+ `];
@@ -0,0 +1 @@
1
+ import './dropdown.option.js';
@@ -0,0 +1 @@
1
+ import './dropdown.option.js';
@@ -0,0 +1 @@
1
+ import './dropdown.option.js';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ import './dropdown.option.js';
@@ -0,0 +1 @@
1
+ import './dropdown.option.js';
@@ -0,0 +1 @@
1
+ import './dropdown.option.js';
@@ -0,0 +1 @@
1
+ import './dropdown.option.js';
@@ -0,0 +1 @@
1
+ import './dropdown.option.js';
@@ -0,0 +1 @@
1
+ import './dropdown.option.js';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ import './dropdown.option.js';
@@ -0,0 +1,22 @@
1
+ import { LitElement } from 'lit';
2
+ declare global {
3
+ interface HTMLElementTagNameMap {
4
+ 'glide-core-icon-button': GlideCoreIconButton;
5
+ }
6
+ }
7
+ /**
8
+ * @slot - Reserved for the icon to display inside of the button.
9
+ */
10
+ export default class GlideCoreIconButton extends LitElement {
11
+ #private;
12
+ static shadowRootOptions: ShadowRootInit;
13
+ static styles: import("lit").CSSResult[];
14
+ ariaExpanded: string | null;
15
+ ariaHasPopup: string | null;
16
+ disabled: boolean;
17
+ /** Text read aloud for screenreaders. For accessibility, this should always be provided. */
18
+ label: string;
19
+ variant: 'primary' | 'secondary' | 'tertiary';
20
+ firstUpdated(): void;
21
+ render(): import("lit").TemplateResult<1>;
22
+ }
@@ -0,0 +1 @@
1
+ "use strict";var g=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var s=(t,e,r,m)=>{for(var l=m>1?void 0:m?E(e,r):e,n=t.length-1,f;n>=0;n--)(f=t[n])&&(l=(m?f(e,r,l):f(l))||l);return m&&l&&g(e,r,l),l};var h=(t,e,r)=>{if(!e.has(t))throw TypeError("Cannot "+r)};var p=(t,e,r)=>(h(t,e,"read from private field"),r?r.call(t):e.get(t)),c=(t,e,r)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,r)};var u=(t,e,r)=>(h(t,e,"access private method"),r);var i,d,v;import{LitElement as y,html as R}from"lit";import{classMap as S}from"lit/directives/class-map.js";import{createRef as $,ref as w}from"lit/directives/ref.js";import{customElement as M,property as o}from"lit/decorators.js";import{owSlot as b}from"./library/ow.js";import x from"./icon-button.styles.js";let a=class extends y{constructor(){super(...arguments);c(this,d);this.ariaExpanded=null;this.ariaHasPopup=null;this.disabled=!1;this.label="";this.variant="primary";c(this,i,$())}firstUpdated(){b(p(this,i).value)}render(){return R`<button aria-label="${this.label}" class="${S({component:!0,primary:this.variant==="primary",secondary:this.variant==="secondary",tertiary:this.variant==="tertiary"})}" type="button" ?disabled="${this.disabled}"><slot @slotchange="${u(this,d,v)}" ${w(p(this,i))}></slot></button>`}};i=new WeakMap,d=new WeakSet,v=function(){b(p(this,i).value)},a.shadowRootOptions={...y.shadowRootOptions,delegatesFocus:!0,mode:"closed"},a.styles=x,s([o({reflect:!0})],a.prototype,"ariaExpanded",2),s([o({reflect:!0})],a.prototype,"ariaHasPopup",2),s([o({type:Boolean,reflect:!0})],a.prototype,"disabled",2),s([o()],a.prototype,"label",2),s([o({reflect:!0})],a.prototype,"variant",2),a=s([M("glide-core-icon-button")],a);export{a as default};
@@ -0,0 +1,8 @@
1
+ import './icon-button.js';
2
+ import './icons/storybook.js';
3
+ import type { Meta, StoryObj } from '@storybook/web-components';
4
+ declare const meta: Meta;
5
+ export default meta;
6
+ export declare const Primary: StoryObj;
7
+ export declare const Secondary: StoryObj;
8
+ export declare const Tertiary: StoryObj;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("lit").CSSResult[];
2
+ export default _default;
@@ -0,0 +1,112 @@
1
+ "use strict";import{css as r}from"lit";import o from"./styles/focus-outline.js";export default[r`
2
+ :host {
3
+ /* Contains elements with "padding" and "width". Inline by default. */
4
+ display: inline-block;
5
+ }
6
+
7
+ .component {
8
+ align-items: center;
9
+ block-size: var(--size, 1.625rem);
10
+ border-color: transparent;
11
+ border-radius: var(--glide-core-spacing-xs);
12
+ border-style: solid;
13
+ border-width: 1px;
14
+ cursor: pointer;
15
+ display: inline-flex;
16
+ inline-size: var(--size, 1.625rem);
17
+ justify-content: center;
18
+ padding-inline: 0;
19
+ transition-duration: 150ms;
20
+ transition-property: color, background-color, border-color, fill, stroke;
21
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
22
+
23
+ &:focus {
24
+ outline: none;
25
+ }
26
+
27
+ &:focus-visible {
28
+ ${o};
29
+ outline-offset: 3px;
30
+ }
31
+
32
+ &:disabled {
33
+ cursor: default;
34
+ opacity: 1;
35
+ }
36
+
37
+ &.primary {
38
+ background-color: var(--glide-core-surface-primary);
39
+ border-color: transparent;
40
+ color: var(--icon-color, var(--glide-core-icon-selected));
41
+
42
+ &:disabled {
43
+ background-color: var(--glide-core-surface-base-gray-light);
44
+ border-color: transparent;
45
+ color: var(--glide-core-icon-tertiary-disabled);
46
+ }
47
+
48
+ &:not(:disabled):active {
49
+ background-color: var(--glide-core-surface-selected);
50
+ border-color: transparent;
51
+ color: var(--glide-core-icon-selected);
52
+ }
53
+
54
+ &:not(:active):hover:not(:disabled) {
55
+ background-color: var(--glide-core-surface-hover);
56
+ border-color: transparent;
57
+ box-shadow: var(--glide-core-glow-sm);
58
+ color: var(--glide-core-icon-primary);
59
+ }
60
+ }
61
+
62
+ &.secondary {
63
+ background-color: var(--glide-core-surface-page);
64
+ border-color: var(--glide-core-border-primary);
65
+ color: var(--icon-color, var(--glide-core-icon-primary));
66
+
67
+ &:disabled {
68
+ background-color: transparent;
69
+ border-color: var(--glide-core-border-base-light);
70
+ color: var(--glide-core-icon-tertiary-disabled);
71
+ }
72
+
73
+ &:not(:disabled):active {
74
+ background-color: var(--glide-core-surface-selected);
75
+ border-color: transparent;
76
+ color: var(--glide-core-icon-selected);
77
+ }
78
+
79
+ &:not(:active):hover:not(:disabled) {
80
+ background-color: var(--glide-core-surface-hover);
81
+ border-color: transparent;
82
+ box-shadow: var(--glide-core-glow-sm);
83
+ color: var(--glide-core-icon-primary);
84
+ }
85
+ }
86
+
87
+ &.tertiary {
88
+ background-color: transparent;
89
+ border-color: transparent;
90
+ color: var(--icon-color, var(--glide-core-icon-default));
91
+
92
+ &:focus-visible {
93
+ outline-offset: 0;
94
+ }
95
+
96
+ &:disabled {
97
+ color: var(--glide-core-icon-tertiary-disabled);
98
+ }
99
+
100
+ &:not(:disabled):active {
101
+ color: var(--glide-core-icon-active);
102
+ }
103
+
104
+ &:not(:active):hover:not(:disabled) {
105
+ color: var(
106
+ --hovered-icon-color,
107
+ var(--glide-core-icon-primary-hover)
108
+ );
109
+ }
110
+ }
111
+ }
112
+ `];
@@ -0,0 +1 @@
1
+ import './icon-button.js';
@@ -0,0 +1,2 @@
1
+ declare const _default: import("lit").TemplateResult;
2
+ export default _default;
@@ -0,0 +1 @@
1
+ "use strict";import{svg as e}from"lit/static-html.js";export default e`<svg fill="none" viewBox="0 0 24 24" style="height: var(--size, 0.875rem); width: var(--size, 0.875rem);"><path d="M20 6L9 17L4 12" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>`;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("lit").TemplateResult;
2
+ export default _default;