@crowdstrike/glide-core 0.26.1 → 0.28.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 (114) hide show
  1. package/dist/accordion.d.ts +2 -2
  2. package/dist/accordion.js +1 -1
  3. package/dist/button-group.button.d.ts +2 -2
  4. package/dist/button-group.button.js +1 -1
  5. package/dist/button-group.d.ts +3 -3
  6. package/dist/button-group.js +1 -1
  7. package/dist/button.d.ts +2 -2
  8. package/dist/button.js +1 -1
  9. package/dist/checkbox-group.d.ts +3 -3
  10. package/dist/checkbox-group.js +9 -9
  11. package/dist/checkbox.d.ts +2 -3
  12. package/dist/checkbox.js +3 -3
  13. package/dist/checkbox.styles.js +8 -16
  14. package/dist/drawer.d.ts +2 -2
  15. package/dist/drawer.js +1 -1
  16. package/dist/dropdown.d.ts +17 -22
  17. package/dist/dropdown.js +102 -107
  18. package/dist/dropdown.option.d.ts +9 -9
  19. package/dist/dropdown.option.js +1 -1
  20. package/dist/dropdown.option.styles.js +16 -79
  21. package/dist/dropdown.styles.js +57 -74
  22. package/dist/form-controls-layout.d.ts +3 -3
  23. package/dist/form-controls-layout.js +1 -1
  24. package/dist/icon-button.d.ts +2 -2
  25. package/dist/icon-button.js +1 -1
  26. package/dist/icons/checked.js +1 -1
  27. package/dist/inline-alert.d.ts +2 -2
  28. package/dist/inline-alert.js +1 -1
  29. package/dist/input.d.ts +2 -2
  30. package/dist/input.js +2 -2
  31. package/dist/input.styles.js +9 -7
  32. package/dist/label.d.ts +2 -2
  33. package/dist/label.js +1 -1
  34. package/dist/label.styles.js +5 -1
  35. package/dist/library/assert-slot.d.ts +1 -1
  36. package/dist/library/assert-slot.test.js +22 -22
  37. package/dist/library/expect-window-error.js +1 -1
  38. package/dist/library/final.test.js +9 -9
  39. package/dist/library/form-control.d.ts +1 -1
  40. package/dist/library/localize.d.ts +5 -0
  41. package/dist/library/localize.test.js +6 -6
  42. package/dist/library/required.test.js +5 -5
  43. package/dist/library/unique-id.d.ts +2 -0
  44. package/dist/library/unique-id.js +1 -0
  45. package/dist/link.d.ts +2 -3
  46. package/dist/link.js +1 -1
  47. package/dist/link.styles.js +1 -1
  48. package/dist/menu.button.d.ts +2 -2
  49. package/dist/menu.button.js +1 -1
  50. package/dist/menu.button.styles.js +3 -3
  51. package/dist/menu.d.ts +3 -9
  52. package/dist/menu.js +1 -1
  53. package/dist/menu.link.d.ts +2 -2
  54. package/dist/menu.link.js +1 -1
  55. package/dist/menu.link.styles.js +3 -3
  56. package/dist/menu.options.d.ts +3 -4
  57. package/dist/menu.options.js +1 -1
  58. package/dist/menu.options.styles.js +3 -20
  59. package/dist/modal.d.ts +6 -6
  60. package/dist/modal.icon-button.d.ts +2 -2
  61. package/dist/modal.icon-button.js +1 -1
  62. package/dist/modal.js +1 -1
  63. package/dist/popover.d.ts +2 -2
  64. package/dist/popover.js +1 -1
  65. package/dist/radio-group.d.ts +3 -3
  66. package/dist/radio-group.js +6 -6
  67. package/dist/radio-group.radio.d.ts +2 -2
  68. package/dist/radio-group.radio.js +1 -1
  69. package/dist/slider.d.ts +116 -0
  70. package/dist/slider.js +168 -0
  71. package/dist/slider.styles.d.ts +2 -0
  72. package/dist/slider.styles.js +168 -0
  73. package/dist/spinner.d.ts +2 -2
  74. package/dist/spinner.js +1 -1
  75. package/dist/split-button.d.ts +4 -10
  76. package/dist/split-button.js +1 -1
  77. package/dist/split-button.primary-button.d.ts +2 -2
  78. package/dist/split-button.primary-button.js +1 -1
  79. package/dist/split-button.primary-button.styles.js +4 -14
  80. package/dist/split-button.primary-link.d.ts +2 -2
  81. package/dist/split-button.primary-link.js +1 -1
  82. package/dist/split-button.secondary-button.d.ts +3 -4
  83. package/dist/split-button.secondary-button.js +1 -1
  84. package/dist/split-button.secondary-button.styles.js +4 -15
  85. package/dist/styles/variables.css +1 -1
  86. package/dist/tab.d.ts +12 -4
  87. package/dist/tab.group.d.ts +4 -5
  88. package/dist/tab.group.js +1 -1
  89. package/dist/tab.group.styles.js +14 -16
  90. package/dist/tab.js +1 -1
  91. package/dist/tab.panel.d.ts +12 -5
  92. package/dist/tab.panel.js +1 -1
  93. package/dist/tag.d.ts +2 -4
  94. package/dist/tag.js +1 -1
  95. package/dist/tag.styles.js +7 -52
  96. package/dist/textarea.d.ts +2 -2
  97. package/dist/textarea.js +7 -7
  98. package/dist/textarea.styles.js +17 -2
  99. package/dist/toast.d.ts +3 -3
  100. package/dist/toast.js +1 -1
  101. package/dist/toast.toasts.d.ts +9 -9
  102. package/dist/toast.toasts.js +17 -17
  103. package/dist/toggle.d.ts +2 -2
  104. package/dist/toggle.js +1 -1
  105. package/dist/tooltip.container.d.ts +2 -2
  106. package/dist/tooltip.container.js +1 -1
  107. package/dist/tooltip.d.ts +3 -3
  108. package/dist/tooltip.js +1 -1
  109. package/dist/translations/en.js +1 -1
  110. package/dist/translations/fr.d.ts +1 -1
  111. package/dist/translations/fr.js +1 -1
  112. package/dist/translations/ja.d.ts +1 -1
  113. package/dist/translations/ja.js +1 -1
  114. package/package.json +19 -18
package/dist/slider.js ADDED
@@ -0,0 +1,168 @@
1
+ var __decorate=this&&this.__decorate||function(e,i,t,a){var s,n=arguments.length,l=n<3?i:null===a?a=Object.getOwnPropertyDescriptor(i,t):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(e,i,t,a);else for(var m=e.length-1;m>=0;m--)(s=e[m])&&(l=(n<3?s(l):n>3?s(i,t,l):s(i,t))||l);return n>3&&l&&Object.defineProperty(i,t,l),l};import"./label.js";import{html,LitElement}from"lit";import{classMap}from"lit/directives/class-map.js";import{createRef,ref}from"lit/directives/ref.js";import{customElement,property,state}from"lit/decorators.js";import{ifDefined}from"lit/directives/if-defined.js";import{unsafeHTML}from"lit/directives/unsafe-html.js";import{when}from"lit/directives/when.js";import packageJson from"../package.json"with{type:"json"};import{LocalizeController}from"./library/localize.js";import styles from"./slider.styles.js";import shadowRootMode from"./library/shadow-root-mode.js";import final from"./library/final.js";import required from"./library/required.js";let Slider=class Slider extends LitElement{static{this.formAssociated=!0}static{this.shadowRootOptions={...LitElement.shadowRootOptions,mode:shadowRootMode,delegatesFocus:!0}}static{this.styles=styles}get value(){return this.multiple&&void 0!==this.minimumValue&&void 0!==this.maximumValue?[this.minimumValue,this.maximumValue]:void 0!==this.minimumValue?[this.minimumValue]:[]}set value(e){if(0===e.length){const e=this.max-this.min;return this.minimumValue=this.min+Math.floor(.25*e),this.maximumValue=this.multiple?this.min+Math.ceil(.75*e):void 0,void this.#e()}if(this.multiple&&2===e.length&&void 0!==e[0]&&void 0!==e[1]){if(e[0]>e[1])throw new Error("The first value must be less than the second.");const i=Math.round(e[0]/this.step)*this.step,t=Math.round(e[1]/this.step)*this.step;return this.minimumValue=Math.max(i,this.min),this.maximumValue=Math.min(t,this.max),void this.#e()}if(this.multiple&&e.length>2)throw new Error("Only two values are allowed when `multiple`.");if(!this.multiple&&e.length>0&&void 0!==e[0]){const i=Math.round(e[0]/this.step)*this.step;return this.minimumValue=Math.max(Math.min(i,this.max),this.min),this.maximumValue=void 0,void this.#e()}}get max(){return this.#i}set max(e){this.#i=e,this.maximumValue=Math.min(this.maximumValue??this.#i,e),void 0!==this.minimumValue&&this.minimumValue>e&&(this.minimumValue=this.multiple&&void 0!==this.maximumValue?Math.min(e,this.maximumValue-this.step):e),this.#e()}get min(){return this.#t}set min(e){this.#t=e,this.minimumValue=Math.max(this.minimumValue??this.#t,e),this.multiple?void 0!==this.maximumValue&&this.maximumValue<e&&(this.maximumValue=Math.max(e,this.minimumValue+this.step)):this.maximumValue=void 0,this.#e()}get multiple(){return this.#a}set multiple(e){const i=this.#a;if(this.#a=e,i&&!e)return this.maximumValue=void 0,void this.updateComplete.then((()=>{this.#e()}));if(!i&&e&&void 0!==this.minimumValue){const e=this.max-this.min,i=this.min+Math.ceil(.75*e);this.minimumValue>=i?(this.maximumValue=this.max,this.minimumValue>=this.maximumValue&&(this.minimumValue=this.maximumValue-this.step)):this.maximumValue=i,this.updateComplete.then((()=>{this.#e()}))}}get step(){return this.#s}set step(e){this.#s=e>0?e:1}get form(){return this.#n.form}get validity(){return this.#n.validity}checkValidity(){this.isCheckingValidity=!0;const e=this.#n.checkValidity();return this.isCheckingValidity=!1,e}disconnectedCallback(){super.disconnectedCallback(),this.form?.removeEventListener("formdata",this.#l),document.removeEventListener("mousemove",this.#m),document.removeEventListener("mouseup",this.#h)}firstUpdated(){if(!this.multiple&&1===this.value.length)return this.minimumValue=this.value.at(0),this.#d=this.value,void this.#e();if(this.multiple&&2===this.value.length)return this.minimumValue=this.value.at(0),this.maximumValue=this.value.at(1),void 0!==this.minimumValue&&void 0!==this.maximumValue&&(this.#d=[this.minimumValue,this.maximumValue]),void this.#e();if(!this.value||0===this.value.length){const e=this.max-this.min;this.minimumValue=this.min+Math.floor(.25*e),this.maximumValue=this.multiple?this.min+Math.ceil(.75*e):void 0,this.#d=this.multiple&&void 0!==this.maximumValue?[this.minimumValue,this.maximumValue]:[this.minimumValue],this.#e()}}formAssociatedCallback(){this.form?.addEventListener("formdata",this.#l.bind(this))}formResetCallback(){this.value=this.#d}render(){return html`
2
+ <glide-core-private-label
3
+ class=${classMap({left:"left"===this.privateSplit,middle:"middle"===this.privateSplit})}
4
+ label=${ifDefined(this.label)}
5
+ orientation=${this.orientation}
6
+ split=${ifDefined(this.privateSplit??void 0)}
7
+ tooltip=${ifDefined(this.tooltip)}
8
+ ?disabled=${this.disabled}
9
+ ?error=${this.#u}
10
+ ?hide=${this.hideLabel}
11
+ ?required=${this.required}
12
+ >
13
+ <label>${this.label}</label>
14
+
15
+ <div
16
+ class=${classMap({"slider-container":!0,disabled:this.disabled,readonly:this.readonly&&!this.disabled,error:this.#u})}
17
+ slot="control"
18
+ >
19
+ ${when(this.multiple,(()=>html`<input
20
+ aria-describedby="meta"
21
+ aria-label=${this.#r.term("setMinimum",this.label)}
22
+ aria-invalid=${this.#u}
23
+ class=${classMap({input:!0,disabled:this.disabled,error:this.#u,readonly:this.readonly&&!this.disabled})}
24
+ data-test="minimum-input"
25
+ max=${ifDefined(this.maximumValue?this.maximumValue-this.step:void 0)}
26
+ min=${this.min}
27
+ step=${this.step}
28
+ type="number"
29
+ .value=${this.minimumValue?.toString()??""}
30
+ ?disabled=${this.disabled}
31
+ ?readonly=${this.readonly}
32
+ @change=${this.#o.bind(this)}
33
+ @input=${this.#p}
34
+ @keydown=${this.#c}
35
+ ${ref(this.#v)}
36
+ />
37
+
38
+ <div class="track-container">
39
+ <div
40
+ class=${classMap({"unfilled-track":!0,disabled:this.disabled})}
41
+ data-test="slider"
42
+ role="group"
43
+ @click=${this.#f.bind(this)}
44
+ ${ref(this.#b)}
45
+ >
46
+ <div
47
+ class=${classMap({"filled-track":!0,disabled:this.disabled})}
48
+ ${ref(this.#g)}
49
+ ></div>
50
+
51
+ <div
52
+ aria-disabled=${this.disabled}
53
+ aria-label=${this.#r.term("minimum",this.label)}
54
+ aria-readonly=${this.readonly}
55
+ aria-valuemin=${this.min}
56
+ aria-valuemax=${this.max}
57
+ aria-valuenow=${ifDefined(this.minimumValue)}
58
+ class=${classMap({handle:!0,disabled:this.disabled,readonly:this.readonly&&!this.disabled})}
59
+ data-test="minimum-handle"
60
+ role="slider"
61
+ tabindex="0"
62
+ @mousedown=${this.#y.bind(this)}
63
+ @keydown=${this.#V.bind(this)}
64
+ ${ref(this.#x)}
65
+ ></div>
66
+
67
+ <div
68
+ aria-disabled=${this.disabled}
69
+ aria-label=${this.#r.term("maximum",this.label)}
70
+ aria-readonly=${this.readonly}
71
+ aria-valuemin=${this.min}
72
+ aria-valuemax=${this.max}
73
+ aria-valuenow=${ifDefined(this.maximumValue)}
74
+ class=${classMap({handle:!0,disabled:this.disabled,readonly:this.readonly&&!this.disabled})}
75
+ data-test="maximum-handle"
76
+ role="slider"
77
+ tabindex="0"
78
+ @mousedown=${this.#E.bind(this)}
79
+ @keydown=${this.#M.bind(this)}
80
+ ${ref(this.#$)}
81
+ ></div>
82
+ </div>
83
+ </div>
84
+
85
+ <input
86
+ aria-label=${this.#r.term("setMaximum",this.label)}
87
+ aria-invalid=${this.#u}
88
+ class=${classMap({input:!0,disabled:this.disabled,error:this.#u,readonly:this.readonly&&!this.disabled})}
89
+ data-test="maximum-input"
90
+ max=${this.max}
91
+ min=${ifDefined(this.minimumValue?this.minimumValue+this.step:void 0)}
92
+ step=${this.step}
93
+ type="number"
94
+ .value=${this.maximumValue?.toString()??""}
95
+ ?disabled=${this.disabled}
96
+ ?readonly=${this.readonly}
97
+ @change=${this.#R.bind(this)}
98
+ @input=${this.#w}
99
+ @keydown=${this.#c}
100
+ ${ref(this.#k)}
101
+ />`),(()=>html`<div class="track-container single">
102
+ <div
103
+ class=${classMap({"unfilled-track":!0,disabled:this.disabled})}
104
+ data-test="slider"
105
+ role="group"
106
+ @click=${this.#f.bind(this)}
107
+ ${ref(this.#b)}
108
+ >
109
+ <div
110
+ class=${classMap({"filled-track":!0,disabled:this.disabled})}
111
+ ${ref(this.#g)}
112
+ ></div>
113
+
114
+ <div
115
+ aria-describedby="meta"
116
+ aria-disabled=${this.disabled}
117
+ aria-label=${ifDefined(this.label)}
118
+ aria-readonly=${this.readonly}
119
+ aria-valuemin=${this.min}
120
+ aria-valuemax=${this.max}
121
+ aria-valuenow=${ifDefined(this.minimumValue)}
122
+ class=${classMap({handle:!0,disabled:this.disabled,readonly:this.readonly&&!this.disabled})}
123
+ data-test="single-handle"
124
+ role="slider"
125
+ tabindex="0"
126
+ @mousedown=${this.#H.bind(this)}
127
+ @keydown=${this.#S.bind(this)}
128
+ ${ref(this.#D)}
129
+ ></div>
130
+ </div>
131
+ </div>
132
+
133
+ <input
134
+ aria-label=${ifDefined(this.label)}
135
+ aria-invalid=${this.#u}
136
+ class=${classMap({input:!0,disabled:this.disabled,error:this.#u,readonly:this.readonly&&!this.disabled})}
137
+ data-test="single-input"
138
+ max=${this.max}
139
+ min=${this.min}
140
+ step=${this.step}
141
+ type="number"
142
+ .value=${this.minimumValue?.toString()??""}
143
+ ?disabled=${this.disabled}
144
+ ?readonly=${this.readonly}
145
+ @change=${this.#_.bind(this)}
146
+ @input=${this.#I.bind(this)}
147
+ @keydown=${this.#c}
148
+ ${ref(this.#A)}
149
+ />`))}
150
+ </div>
151
+
152
+ <div class="meta" id="meta" slot="description">
153
+ <slot
154
+ class=${classMap({description:!0,hidden:Boolean(this.#u&&this.validityMessage)})}
155
+ name="description"
156
+ >
157
+ <!--
158
+ Additional information or context
159
+ @type {Element | string}
160
+ -->
161
+ </slot>
162
+
163
+ ${when(this.#u&&this.validityMessage,(()=>html`<span class="validity-message" data-test="validity-message"
164
+ >${unsafeHTML(this.validityMessage)}</span
165
+ >`))}
166
+ </div>
167
+ </glide-core-private-label>
168
+ `}reportValidity(){this.isReportValidityOrSubmit=!0;const e=this.#n.reportValidity();return this.requestUpdate(),e}resetValidityFeedback(){this.isReportValidityOrSubmit=!1}setCustomValidity(e){this.validityMessage=e,""===e?this.#n.setValidity({customError:!1},"",this.#C.value):this.#n.setValidity({customError:!0,patternMismatch:this.#n.validity.patternMismatch,valueMissing:this.#n.validity.valueMissing}," ",this.#C.value)}setValidity(e,i){this.validityMessage=i,this.#n.setValidity(e," ",this.#C.value)}constructor(){super(),this.name="",this.orientation="horizontal",this.hideLabel=!1,this.required=!1,this.readonly=!1,this.disabled=!1,this.version=packageJson.version,this.isBlurring=!1,this.isCheckingValidity=!1,this.isReportValidityOrSubmit=!1,this.#T=!1,this.#d=[],this.#C=createRef(),this.#r=new LocalizeController(this),this.#i=100,this.#$=createRef(),this.#k=createRef(),this.#t=0,this.#x=createRef(),this.#v=createRef(),this.#a=!1,this.#D=createRef(),this.#A=createRef(),this.#b=createRef(),this.#g=createRef(),this.#s=1,this.#m=e=>{e.preventDefault();const i=this.#b.value;if(i&&this.#F){const{clientX:t}=e;if(void 0!==t){const e=i.getBoundingClientRect();this.#L(t,this.#F,e)}}},this.#h=()=>{this.#F&&(document.removeEventListener("mousemove",this.#m),document.removeEventListener("mouseup",this.#h),this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0})),this.#T=!0,this.#F=void 0,setTimeout((()=>{this.#T=!1})))},this.#n=this.attachInternals(),this.addEventListener("invalid",(e=>{if(e?.preventDefault(),this.isCheckingValidity||this.isBlurring)return;this.isReportValidityOrSubmit=!0;this.form?.querySelector(":invalid")===this&&this.focus()}))}#F;#T;#d;#C;#n;#r;#i;#$;#k;#t;#x;#v;#a;#D;#A;#b;#g;#s;get#u(){return!this.disabled&&!this.validity?.valid&&this.isReportValidityOrSubmit}#m;#h;#L(e,i,t){const a=(e-t.left)/t.width*(this.max-this.min)+this.min,s=Math.round(a/this.step)*this.step;if(this.multiple){if(i===this.#x.value&&void 0!==this.maximumValue){const e=Math.min(Math.max(s,this.min),this.maximumValue-this.step);if(e!==this.minimumValue)return this.minimumValue=e,this.#e(),void this.dispatchEvent(new Event("input",{bubbles:!0,composed:!0}))}if(i===this.#$.value&&void 0!==this.minimumValue){const e=Math.min(Math.max(s,this.minimumValue+this.step),this.max);if(e!==this.maximumValue)return this.maximumValue=e,this.#e(),void this.dispatchEvent(new Event("input",{bubbles:!0,composed:!0}))}}else{const e=Math.min(Math.max(s,this.min),this.max);e!==this.minimumValue&&(this.minimumValue=e,this.#e(),this.dispatchEvent(new Event("input",{bubbles:!0,composed:!0})))}}#l(e){this.name&&this.value&&!this.disabled&&e.formData.append(this.name,JSON.stringify(this.value))}#c(e){"Enter"===e.key&&this.form?.requestSubmit()}#M(e){this.#$.value&&this.#j(e,this.#$.value)}#E(e){this.#$.value&&this.#K(e,this.#$.value)}#R(){if(this.#k.value&&void 0!==this.minimumValue){const e=Number(this.#k.value.value),i=Math.round(e/this.step)*this.step;this.maximumValue=Math.min(Math.max(i,this.minimumValue+this.step),this.max),this.#e(),this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0}))}}#w(){if(this.#k.value){const e=Number(this.#k.value.value);void 0!==this.minimumValue&&e>=this.minimumValue&&(this.maximumValue=Math.min(e,this.max),this.#e())}}#V(e){this.#x.value&&this.#j(e,this.#x.value)}#y(e){this.#x.value&&this.#K(e,this.#x.value)}#o(){if(this.#v.value&&void 0!==this.maximumValue){const e=Number(this.#v.value.value),i=Math.round(e/this.step)*this.step;this.minimumValue=Math.min(Math.max(i,this.min),this.maximumValue-this.step),this.#e(),this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0}))}}#p(){if(this.#v.value){const e=Number(this.#v.value.value);void 0!==this.maximumValue&&e<=this.maximumValue&&(this.minimumValue=Math.max(e,this.min),this.#e())}}#j(e,i){if(!this.disabled&&!this.readonly&&void 0!==this.minimumValue&&void 0!==this.maximumValue){const t=i===this.#x.value;let a=t?this.minimumValue:this.maximumValue;switch(e.key){case"ArrowLeft":case"ArrowDown":a-=this.step;break;case"ArrowRight":case"ArrowUp":a+=this.step;break;case"PageDown":a-=10*this.step;break;case"PageUp":a+=10*this.step;break;case"Home":a=t?this.min:this.minimumValue+this.step;break;case"End":a=t?this.maximumValue-this.step:this.max;break;case"Enter":return void this.form?.requestSubmit();default:return}e.preventDefault(),t?this.minimumValue=Math.min(Math.max(a,this.min),this.maximumValue-this.step):this.maximumValue=Math.min(Math.max(a,this.minimumValue+this.step),this.max),this.#e(),this.dispatchEvent(new Event("input",{bubbles:!0,composed:!0})),this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0}))}}#S(e){if(this.disabled||this.readonly)return;if(this.#D.value&&void 0!==this.minimumValue){let i=this.minimumValue;switch(e.key){case"ArrowLeft":case"ArrowDown":i-=this.step;break;case"ArrowRight":case"ArrowUp":i+=this.step;break;case"PageDown":i-=10*this.step;break;case"PageUp":i+=10*this.step;break;case"Home":i=this.min;break;case"End":i=this.max;break;case"Enter":return void this.form?.requestSubmit();default:return}e.preventDefault(),this.minimumValue=Math.min(Math.max(i,this.min),this.max),this.#e(),this.dispatchEvent(new Event("input",{bubbles:!0,composed:!0})),this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0}))}}#H(e){this.#D.value&&this.#K(e,this.#D.value)}#_(){if(this.#A.value){const e=Number(this.#A.value.value),i=Math.round(e/this.step)*this.step;this.minimumValue=Math.min(Math.max(i,this.min),this.max),this.#e(),this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0}))}}#I(){if(this.#A.value){const e=Number(this.#A.value.value);e>=0&&(this.minimumValue=Math.min(e,this.max),this.#e())}}#f(e){if(this.disabled||this.readonly)return;if(e.target===this.#x.value||e.target===this.#$.value||e.target===this.#D.value||this.#T)return;const i=this.#b.value;if(i){const t=i.getBoundingClientRect(),a=(e.clientX-t.left)/t.width*(this.max-this.min)+this.min,s=Math.round(a/this.step)*this.step;if(this.multiple&&void 0!==this.minimumValue&&void 0!==this.maximumValue){return Math.abs(s-this.minimumValue)<=Math.abs(s-this.maximumValue)?this.minimumValue=Math.min(Math.max(s,this.min),this.maximumValue-this.step):this.maximumValue=Math.min(Math.max(s,this.minimumValue+this.step),this.max),this.#e(),this.dispatchEvent(new Event("input",{bubbles:!0,composed:!0})),void this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0}))}this.minimumValue=Math.min(Math.max(s,this.min),this.max),this.#e(),this.dispatchEvent(new Event("input",{bubbles:!0,composed:!0})),this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0}))}}#K(e,i){if(this.disabled||this.readonly)return;e.preventDefault();const t=this.#b.value;t&&(this.#F=i,document.addEventListener("mousemove",this.#m),document.addEventListener("mouseup",this.#h),this.#L(e.clientX,i,t.getBoundingClientRect()))}#e(){const e=this.#g.value,i=this.#D.value,t=this.#x.value,a=this.#$.value;if(e&&void 0!==this.minimumValue){if(!this.multiple&&i){const t=this.max-this.min,a=(this.minimumValue-this.min)/t*100;return i.style.left=`${a}%`,e.style.left="0",void(e.style.width=`${a}%`)}if(void 0!==this.maximumValue&&t&&a){const i=this.max-this.min,s=(this.minimumValue-this.min)/i*100,n=(this.maximumValue-this.min)/i*100;t.style.left=`${s}%`,a.style.left=`${n}%`,e.style.left=`${s}%`,e.style.width=n-s+"%"}}}};__decorate([property({reflect:!0,useDefault:!0})],Slider.prototype,"name",void 0),__decorate([property({type:Array})],Slider.prototype,"value",null),__decorate([property({reflect:!0}),required],Slider.prototype,"label",void 0),__decorate([property({reflect:!0,useDefault:!0})],Slider.prototype,"orientation",void 0),__decorate([property({attribute:"hide-label",type:Boolean})],Slider.prototype,"hideLabel",void 0),__decorate([property({reflect:!0,type:Boolean})],Slider.prototype,"required",void 0),__decorate([property({type:Boolean})],Slider.prototype,"readonly",void 0),__decorate([property({reflect:!0,type:Boolean})],Slider.prototype,"disabled",void 0),__decorate([property({reflect:!0,type:Number})],Slider.prototype,"max",null),__decorate([property({reflect:!0,type:Number})],Slider.prototype,"min",null),__decorate([property({type:Boolean})],Slider.prototype,"multiple",null),__decorate([property({reflect:!0,type:Number,useDefault:!0})],Slider.prototype,"step",null),__decorate([property()],Slider.prototype,"privateSplit",void 0),__decorate([property({reflect:!0})],Slider.prototype,"version",void 0),__decorate([property({reflect:!0})],Slider.prototype,"tooltip",void 0),__decorate([state()],Slider.prototype,"isBlurring",void 0),__decorate([state()],Slider.prototype,"isCheckingValidity",void 0),__decorate([state()],Slider.prototype,"isReportValidityOrSubmit",void 0),__decorate([state()],Slider.prototype,"maximumValue",void 0),__decorate([state()],Slider.prototype,"minimumValue",void 0),__decorate([state()],Slider.prototype,"validityMessage",void 0),Slider=__decorate([customElement("glide-core-slider"),final],Slider);export default Slider;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("lit").CSSResult[];
2
+ export default _default;
@@ -0,0 +1,168 @@
1
+ import{css}from"lit";import focusOutline from"./styles/focus-outline.js";export default[css`
2
+ ${focusOutline(".handle:focus-visible")}
3
+ `,css`
4
+ /* The designs call for a bit more spacing than the default when vertical. */
5
+ glide-core-private-label[orientation='vertical']::part(private-tooltips) {
6
+ margin-block-end: var(--glide-core-spacing-base-xxs);
7
+ }
8
+
9
+ .slider-container {
10
+ --private-track-size: 0.375rem;
11
+
12
+ align-items: center;
13
+ display: flex;
14
+ gap: var(--glide-core-spacing-base-md);
15
+ inline-size: 100%;
16
+ justify-content: space-between;
17
+ }
18
+
19
+ .input {
20
+ /* stylelint-disable-next-line property-no-vendor-prefix */
21
+ -moz-appearance: textfield;
22
+ background-color: var(--glide-core-color-interactive-surface-container);
23
+ block-size: 2.125rem;
24
+ border: 1px solid var(--glide-core-color-interactive-stroke-primary);
25
+ border-radius: var(--glide-core-rounding-base-radius-sm);
26
+ box-sizing: border-box;
27
+ inline-size: 2.125rem;
28
+ text-align: center;
29
+
30
+ &::-webkit-outer-spin-button,
31
+ &::-webkit-inner-spin-button {
32
+ appearance: none;
33
+ }
34
+
35
+ &:focus,
36
+ &:hover {
37
+ border-color: var(--glide-core-color-interactive-stroke-primary--hover);
38
+ outline: none;
39
+ transition: border-color 200ms ease-in-out;
40
+ }
41
+
42
+ &.disabled {
43
+ background-color: var(
44
+ --glide-core-color-interactive-surface-container--disabled
45
+ );
46
+ border-color: var(
47
+ --glide-core-color-interactive-stroke-primary--disabled
48
+ );
49
+ color: var(--glide-core-color-interactive-text-default--disabled);
50
+ }
51
+
52
+ &.error {
53
+ border-color: var(--glide-core-color-advisory-stroke-error-primary);
54
+ }
55
+
56
+ /*
57
+ We had to resort to a class selector because there may be a
58
+ bug in Chrome and Safari with ":read-only":
59
+ https://bugs.chromium.org/p/chromium/issues/detail?id=1519649
60
+ */
61
+ &.readonly {
62
+ background-color: transparent;
63
+ border: 1px solid transparent;
64
+ padding-inline-start: 0;
65
+ }
66
+ }
67
+
68
+ .track-container {
69
+ flex-grow: 1;
70
+ min-inline-size: 0;
71
+
72
+ &.single {
73
+ /*
74
+ Without this suggestion from design, when the handle is
75
+ at the min, it would overflow the container and not
76
+ align with label. This isn't needed in multiple mode
77
+ because we have an input to help prevent this from
78
+ happening.
79
+ */
80
+ padding-inline-start: var(--glide-core-spacing-base-sm);
81
+ }
82
+ }
83
+
84
+ .filled-track {
85
+ background-color: var(
86
+ --glide-core-color-interactive-surface-container-active
87
+ );
88
+ block-size: var(--private-track-size);
89
+ border-radius: var(--glide-core-rounding-base-radius-round);
90
+
91
+ /*
92
+ Absolute positioning is required here, as JavaScript is
93
+ used to fill it as the user interacts with the component.
94
+ */
95
+ position: absolute;
96
+
97
+ &.disabled {
98
+ background-color: var(
99
+ --glide-core-color-interactive-surface-container-inactive
100
+ );
101
+ }
102
+ }
103
+
104
+ .unfilled-track {
105
+ background-color: var(--glide-core-color-static-stroke-primary);
106
+ block-size: var(--private-track-size);
107
+ border-radius: var(--glide-core-rounding-base-radius-round);
108
+ inline-size: 100%;
109
+ position: relative;
110
+
111
+ &.disabled {
112
+ background-color: var(--glide-core-color-static-stroke-secondary);
113
+ }
114
+ }
115
+
116
+ .handle {
117
+ background-color: var(
118
+ --glide-core-private-color-slider-and-scrollbar-surface-handle
119
+ );
120
+ block-size: 1.5rem;
121
+ border: 2px solid var(--glide-core-color-interactive-stroke-active);
122
+ border-radius: var(--glide-core-rounding-base-radius-round);
123
+ box-sizing: border-box;
124
+ cursor: pointer;
125
+ inline-size: 1.5rem;
126
+ inset-block-start: 50%;
127
+ position: absolute;
128
+ transform: translate(-50%, -50%);
129
+ transition:
130
+ border 150ms ease-in-out,
131
+ box-shadow 150ms ease-in-out;
132
+
133
+ &:not(.disabled, .readonly):is(:active, :hover) {
134
+ border: 4px solid var(--glide-core-color-interactive-stroke-active);
135
+ box-shadow: var(--glide-core-effect-hovered);
136
+ }
137
+
138
+ &.disabled {
139
+ border-color: var(--glide-core-color-interactive-stroke-primary);
140
+ cursor: not-allowed;
141
+ transition: none;
142
+ }
143
+
144
+ &.readonly {
145
+ transition: none;
146
+ }
147
+ }
148
+
149
+ .meta {
150
+ column-gap: var(--glide-core-spacing-base-xs);
151
+ display: flex;
152
+ font-size: var(--glide-core-typography-size-body-small);
153
+ grid-column: 2;
154
+ justify-content: space-between;
155
+ }
156
+
157
+ .description {
158
+ display: block;
159
+
160
+ &.hidden {
161
+ display: none;
162
+ }
163
+ }
164
+
165
+ .validity-message {
166
+ display: block;
167
+ }
168
+ `];
package/dist/spinner.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { LitElement } from 'lit';
2
2
  declare global {
3
3
  interface HTMLElementTagNameMap {
4
- 'glide-core-spinner': GlideCoreSpinner;
4
+ 'glide-core-spinner': Spinner;
5
5
  }
6
6
  }
7
7
  /**
@@ -11,7 +11,7 @@ declare global {
11
11
  * @readonly
12
12
  * @attr {string} [version]
13
13
  */
14
- export default class GlideCoreSpinner extends LitElement {
14
+ export default class Spinner extends LitElement {
15
15
  static shadowRootOptions: ShadowRootInit;
16
16
  static styles: import("lit").CSSResult[];
17
17
  /**
package/dist/spinner.js CHANGED
@@ -1 +1 @@
1
- var __decorate=this&&this.__decorate||function(e,r,t,o){var i,s=arguments.length,l=s<3?r:null===o?o=Object.getOwnPropertyDescriptor(r,t):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(e,r,t,o);else for(var n=e.length-1;n>=0;n--)(i=e[n])&&(l=(s<3?i(l):s>3?i(r,t,l):i(r,t))||l);return s>3&&l&&Object.defineProperty(r,t,l),l};import{html,LitElement}from"lit";import{classMap}from"lit/directives/class-map.js";import{customElement,property}from"lit/decorators.js";import{ifDefined}from"lit/directives/if-defined.js";import packageJson from"../package.json"with{type:"json"};import styles from"./spinner.styles.js";import shadowRootMode from"./library/shadow-root-mode.js";import final from"./library/final.js";import required from"./library/required.js";let GlideCoreSpinner=class GlideCoreSpinner extends LitElement{constructor(){super(...arguments),this.size="medium",this.version=packageJson.version}static{this.shadowRootOptions={...LitElement.shadowRootOptions,delegatesFocus:!0,mode:shadowRootMode}}static{this.styles=styles}render(){return html`<div aria-label="${ifDefined(this.label)}" class="${classMap({component:!0,[this.size]:!0})}" role="progressbar"></div>`}};__decorate([property({reflect:!0}),required],GlideCoreSpinner.prototype,"label",void 0),__decorate([property({reflect:!0,useDefault:!0})],GlideCoreSpinner.prototype,"size",void 0),__decorate([property({reflect:!0})],GlideCoreSpinner.prototype,"version",void 0),GlideCoreSpinner=__decorate([customElement("glide-core-spinner"),final],GlideCoreSpinner);export default GlideCoreSpinner;
1
+ var __decorate=this&&this.__decorate||function(e,t,r,o){var i,s=arguments.length,n=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,r,o);else for(var p=e.length-1;p>=0;p--)(i=e[p])&&(n=(s<3?i(n):s>3?i(t,r,n):i(t,r))||n);return s>3&&n&&Object.defineProperty(t,r,n),n};import{html,LitElement}from"lit";import{classMap}from"lit/directives/class-map.js";import{customElement,property}from"lit/decorators.js";import{ifDefined}from"lit/directives/if-defined.js";import packageJson from"../package.json"with{type:"json"};import styles from"./spinner.styles.js";import shadowRootMode from"./library/shadow-root-mode.js";import final from"./library/final.js";import required from"./library/required.js";let Spinner=class Spinner extends LitElement{constructor(){super(...arguments),this.size="medium",this.version=packageJson.version}static{this.shadowRootOptions={...LitElement.shadowRootOptions,delegatesFocus:!0,mode:shadowRootMode}}static{this.styles=styles}render(){return html`<div aria-label="${ifDefined(this.label)}" class="${classMap({component:!0,[this.size]:!0})}" role="progressbar"></div>`}};__decorate([property({reflect:!0}),required],Spinner.prototype,"label",void 0),__decorate([property({reflect:!0,useDefault:!0})],Spinner.prototype,"size",void 0),__decorate([property({reflect:!0})],Spinner.prototype,"version",void 0),Spinner=__decorate([customElement("glide-core-spinner"),final],Spinner);export default Spinner;
@@ -1,28 +1,22 @@
1
1
  import { LitElement } from 'lit';
2
2
  declare global {
3
3
  interface HTMLElementTagNameMap {
4
- 'glide-core-split-button': GlideCoreSplitButton;
4
+ 'glide-core-split-button': SplitButton;
5
5
  }
6
6
  }
7
7
  /**
8
- * @attr {'large'|'small'} [size='large']
9
8
  * @attr {'primary'|'secondary'} [variant='primary']
10
9
  *
11
10
  * @readonly
12
11
  * @attr {string} [version]
13
12
  *
14
- * @slot {GlideCoreSplitButtonPrimaryButton | GlideCoreSplitButtonPrimaryLink}
15
- * @slot {GlideCoreSplitButtonSecondaryButton} [secondary-button]
13
+ * @slot {SplitButtonPrimaryButton | SplitButtonPrimaryLink}
14
+ * @slot {SplitButtonSecondaryButton} [secondary-button]
16
15
  */
17
- export default class GlideCoreSplitButton extends LitElement {
16
+ export default class SplitButton extends LitElement {
18
17
  #private;
19
18
  static shadowRootOptions: ShadowRootInit;
20
19
  static styles: import("lit").CSSResult[];
21
- /**
22
- * @default 'large'
23
- */
24
- get size(): 'large' | 'small';
25
- set size(size: 'large' | 'small');
26
20
  /**
27
21
  * @default 'primary'
28
22
  */
@@ -1 +1 @@
1
- var __decorate=this&&this.__decorate||function(t,e,o,r){var i,n=arguments.length,l=n<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,o):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(t,e,o,r);else for(var s=t.length-1;s>=0;s--)(i=t[s])&&(l=(n<3?i(l):n>3?i(e,o,l):i(e,o))||l);return n>3&&l&&Object.defineProperty(e,o,l),l};import{html,LitElement}from"lit";import{createRef,ref}from"lit/directives/ref.js";import{customElement,property}from"lit/decorators.js";import packageJson from"../package.json"with{type:"json"};import GlideCoreSplitButtonPrimaryButton from"./split-button.primary-button.js";import GlideCoreSplitButtonPrimaryLink from"./split-button.primary-link.js";import GlideCoreSplitButtonSecondaryButton from"./split-button.secondary-button.js";import styles from"./split-button.styles.js";import assertSlot from"./library/assert-slot.js";import shadowRootMode from"./library/shadow-root-mode.js";import final from"./library/final.js";let GlideCoreSplitButton=class GlideCoreSplitButton extends LitElement{constructor(){super(...arguments),this.version=packageJson.version,this.#t=createRef(),this.#e=createRef(),this.#o="large",this.#r="primary"}static{this.shadowRootOptions={...LitElement.shadowRootOptions,mode:shadowRootMode}}static{this.styles=styles}get size(){return this.#o}set size(t){this.#o=t,this.primaryButtonElement&&(this.primaryButtonElement.privateSize=t),this.secondaryButtonElement&&(this.secondaryButtonElement.privateSize=t)}get variant(){return this.#r}set variant(t){this.#r=t,this.primaryButtonElement&&(this.primaryButtonElement.privateVariant=t),this.secondaryButtonElement&&(this.secondaryButtonElement.privateVariant=t)}get secondaryButtonElement(){const t=this.#e.value?.assignedElements().at(0);if(t instanceof GlideCoreSplitButtonSecondaryButton)return t}get primaryButtonElement(){const t=this.#t.value?.assignedElements().at(0);if(t instanceof GlideCoreSplitButtonPrimaryButton||t instanceof GlideCoreSplitButtonPrimaryLink)return t}render(){return html`<div class="component"><slot @slotchange="${this.#i}" ${assertSlot([GlideCoreSplitButtonPrimaryButton,GlideCoreSplitButtonPrimaryLink])} ${ref(this.#t)}></slot><slot name="secondary-button" @slotchange="${this.#n}" ${assertSlot([GlideCoreSplitButtonSecondaryButton])} ${ref(this.#e)}></slot></div>`}#t;#e;#o;#r;#i(){this.primaryButtonElement&&(this.primaryButtonElement.privateSize=this.size,this.primaryButtonElement.privateVariant=this.variant)}#n(){this.secondaryButtonElement&&(this.secondaryButtonElement.privateSize=this.size,this.secondaryButtonElement.privateVariant=this.variant)}};__decorate([property({reflect:!0})],GlideCoreSplitButton.prototype,"size",null),__decorate([property({reflect:!0})],GlideCoreSplitButton.prototype,"variant",null),__decorate([property({reflect:!0})],GlideCoreSplitButton.prototype,"version",void 0),GlideCoreSplitButton=__decorate([customElement("glide-core-split-button"),final],GlideCoreSplitButton);export default GlideCoreSplitButton;
1
+ var __decorate=this&&this.__decorate||function(t,e,o,n){var r,i=arguments.length,a=i<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,o,n);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(a=(i<3?r(a):i>3?r(e,o,a):r(e,o))||a);return i>3&&a&&Object.defineProperty(e,o,a),a};import{html,LitElement}from"lit";import{createRef,ref}from"lit/directives/ref.js";import{customElement,property}from"lit/decorators.js";import packageJson from"../package.json"with{type:"json"};import SplitButtonPrimaryButton from"./split-button.primary-button.js";import SplitButtonPrimaryLink from"./split-button.primary-link.js";import SplitButtonSecondaryButton from"./split-button.secondary-button.js";import styles from"./split-button.styles.js";import assertSlot from"./library/assert-slot.js";import shadowRootMode from"./library/shadow-root-mode.js";import final from"./library/final.js";let SplitButton=class SplitButton extends LitElement{constructor(){super(...arguments),this.version=packageJson.version,this.#t=createRef(),this.#e=createRef(),this.#o="primary"}static{this.shadowRootOptions={...LitElement.shadowRootOptions,mode:shadowRootMode}}static{this.styles=styles}get variant(){return this.#o}set variant(t){this.#o=t,this.primaryButtonElement&&(this.primaryButtonElement.privateVariant=t),this.secondaryButtonElement&&(this.secondaryButtonElement.privateVariant=t)}get secondaryButtonElement(){const t=this.#e.value?.assignedElements().at(0);if(t instanceof SplitButtonSecondaryButton)return t}get primaryButtonElement(){const t=this.#t.value?.assignedElements().at(0);if(t instanceof SplitButtonPrimaryButton||t instanceof SplitButtonPrimaryLink)return t}render(){return html`<div class="component"><slot @slotchange="${this.#n}" ${assertSlot([SplitButtonPrimaryButton,SplitButtonPrimaryLink])} ${ref(this.#t)}></slot><slot name="secondary-button" @slotchange="${this.#r}" ${assertSlot([SplitButtonSecondaryButton])} ${ref(this.#e)}></slot></div>`}#t;#e;#o;#n(){this.primaryButtonElement&&(this.primaryButtonElement.privateVariant=this.variant)}#r(){this.secondaryButtonElement&&(this.secondaryButtonElement.privateVariant=this.variant)}};__decorate([property({reflect:!0})],SplitButton.prototype,"variant",null),__decorate([property({reflect:!0})],SplitButton.prototype,"version",void 0),SplitButton=__decorate([customElement("glide-core-split-button"),final],SplitButton);export default SplitButton;
@@ -1,7 +1,7 @@
1
1
  import { LitElement } from 'lit';
2
2
  declare global {
3
3
  interface HTMLElementTagNameMap {
4
- 'glide-core-split-button-primary-button': GlideCoreSplitButtonPrimaryButton;
4
+ 'glide-core-split-button-primary-button': SplitButtonPrimaryButton;
5
5
  }
6
6
  }
7
7
  /**
@@ -16,7 +16,7 @@ declare global {
16
16
  *
17
17
  * @slot {Element} [icon] - An icon before the label
18
18
  */
19
- export default class GlideCoreSplitButtonPrimaryButton extends LitElement {
19
+ export default class SplitButtonPrimaryButton extends LitElement {
20
20
  static shadowRootOptions: ShadowRootInit;
21
21
  static styles: import("lit").CSSResult[];
22
22
  label?: string;
@@ -1 +1 @@
1
- var __decorate=this&&this.__decorate||function(t,e,o,r){var i,a=arguments.length,p=a<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,o):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)p=Reflect.decorate(t,e,o,r);else for(var l=t.length-1;l>=0;l--)(i=t[l])&&(p=(a<3?i(p):a>3?i(e,o,p):i(e,o))||p);return a>3&&p&&Object.defineProperty(e,o,p),p};import{html,LitElement}from"lit";import{classMap}from"lit/directives/class-map.js";import{customElement,property}from"lit/decorators.js";import{ifDefined}from"lit/directives/if-defined.js";import packageJson from"../package.json"with{type:"json"};import styles from"./split-button.primary-button.styles.js";import shadowRootMode from"./library/shadow-root-mode.js";import final from"./library/final.js";import required from"./library/required.js";let GlideCoreSplitButtonPrimaryButton=class GlideCoreSplitButtonPrimaryButton extends LitElement{constructor(){super(...arguments),this.ariaControls=null,this.ariaExpanded=null,this.ariaHasPopup=null,this.disabled=!1,this.privateSize="large",this.privateVariant="primary",this.version=packageJson.version}static{this.shadowRootOptions={...LitElement.shadowRootOptions,delegatesFocus:!0,mode:shadowRootMode}}static{this.styles=styles}render(){return html`<button aria-controls="${ifDefined(this.ariaControls??void 0)}" aria-expanded="${ifDefined(this.ariaExpanded??void 0)}" aria-haspopup="${ifDefined(this.ariaHasPopup??void 0)}" class="${classMap({component:!0,disabled:this.disabled,[this.privateVariant]:!0,[this.privateSize]:!0})}" data-test="component" type="button" ?disabled="${this.disabled}"><slot name="icon"></slot>${this.label}</button>`}};__decorate([property({reflect:!0}),required],GlideCoreSplitButtonPrimaryButton.prototype,"label",void 0),__decorate([property({attribute:"aria-controls",reflect:!0,useDefault:!0})],GlideCoreSplitButtonPrimaryButton.prototype,"ariaControls",void 0),__decorate([property({attribute:"aria-expanded",reflect:!0,useDefault:!0})],GlideCoreSplitButtonPrimaryButton.prototype,"ariaExpanded",void 0),__decorate([property({attribute:"aria-haspopup",reflect:!0,useDefault:!0})],GlideCoreSplitButtonPrimaryButton.prototype,"ariaHasPopup",void 0),__decorate([property({reflect:!0,type:Boolean})],GlideCoreSplitButtonPrimaryButton.prototype,"disabled",void 0),__decorate([property()],GlideCoreSplitButtonPrimaryButton.prototype,"privateSize",void 0),__decorate([property()],GlideCoreSplitButtonPrimaryButton.prototype,"privateVariant",void 0),__decorate([property({reflect:!0})],GlideCoreSplitButtonPrimaryButton.prototype,"version",void 0),GlideCoreSplitButtonPrimaryButton=__decorate([customElement("glide-core-split-button-primary-button"),final],GlideCoreSplitButtonPrimaryButton);export default GlideCoreSplitButtonPrimaryButton;
1
+ var __decorate=this&&this.__decorate||function(t,e,o,r){var i,a=arguments.length,p=a<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,o):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)p=Reflect.decorate(t,e,o,r);else for(var s=t.length-1;s>=0;s--)(i=t[s])&&(p=(a<3?i(p):a>3?i(e,o,p):i(e,o))||p);return a>3&&p&&Object.defineProperty(e,o,p),p};import{html,LitElement}from"lit";import{classMap}from"lit/directives/class-map.js";import{customElement,property}from"lit/decorators.js";import{ifDefined}from"lit/directives/if-defined.js";import packageJson from"../package.json"with{type:"json"};import styles from"./split-button.primary-button.styles.js";import shadowRootMode from"./library/shadow-root-mode.js";import final from"./library/final.js";import required from"./library/required.js";let SplitButtonPrimaryButton=class SplitButtonPrimaryButton extends LitElement{constructor(){super(...arguments),this.ariaControls=null,this.ariaExpanded=null,this.ariaHasPopup=null,this.disabled=!1,this.privateSize="large",this.privateVariant="primary",this.version=packageJson.version}static{this.shadowRootOptions={...LitElement.shadowRootOptions,delegatesFocus:!0,mode:shadowRootMode}}static{this.styles=styles}render(){return html`<button aria-controls="${ifDefined(this.ariaControls??void 0)}" aria-expanded="${ifDefined(this.ariaExpanded??void 0)}" aria-haspopup="${ifDefined(this.ariaHasPopup??void 0)}" class="${classMap({component:!0,disabled:this.disabled,[this.privateVariant]:!0,[this.privateSize]:!0})}" data-test="component" type="button" ?disabled="${this.disabled}"><slot name="icon"></slot>${this.label}</button>`}};__decorate([property({reflect:!0}),required],SplitButtonPrimaryButton.prototype,"label",void 0),__decorate([property({attribute:"aria-controls",reflect:!0,useDefault:!0})],SplitButtonPrimaryButton.prototype,"ariaControls",void 0),__decorate([property({attribute:"aria-expanded",reflect:!0,useDefault:!0})],SplitButtonPrimaryButton.prototype,"ariaExpanded",void 0),__decorate([property({attribute:"aria-haspopup",reflect:!0,useDefault:!0})],SplitButtonPrimaryButton.prototype,"ariaHasPopup",void 0),__decorate([property({reflect:!0,type:Boolean})],SplitButtonPrimaryButton.prototype,"disabled",void 0),__decorate([property()],SplitButtonPrimaryButton.prototype,"privateSize",void 0),__decorate([property()],SplitButtonPrimaryButton.prototype,"privateVariant",void 0),__decorate([property({reflect:!0})],SplitButtonPrimaryButton.prototype,"version",void 0),SplitButtonPrimaryButton=__decorate([customElement("glide-core-split-button-primary-button"),final],SplitButtonPrimaryButton);export default SplitButtonPrimaryButton;
@@ -3,16 +3,20 @@ import{css}from"lit";import focusOutline from"./styles/focus-outline.js";export
3
3
  `,css`
4
4
  .component {
5
5
  align-items: center;
6
+ block-size: 2.125rem;
6
7
  border-radius: var(--glide-core-rounding-base-radius-md) 0 0
7
8
  var(--glide-core-rounding-base-radius-md);
8
9
  border-style: solid;
9
10
  border-width: 1px 0 1px 1px;
11
+ box-sizing: border-box;
10
12
  cursor: pointer;
11
13
  display: inline-flex;
12
14
  font-family: var(--glide-core-typography-family-primary);
15
+ font-size: var(--glide-core-typography-size-body-large);
13
16
  font-weight: var(--glide-core-typography-weight-bold);
14
17
  gap: 0.625rem;
15
18
  justify-content: center;
19
+ line-height: 1.5rem;
16
20
  padding-block: var(--glide-core-spacing-base-xs);
17
21
  padding-inline: var(--glide-core-spacing-base-md);
18
22
  position: relative;
@@ -61,20 +65,6 @@ import{css}from"lit";import focusOutline from"./styles/focus-outline.js";export
61
65
  }
62
66
  }
63
67
 
64
- &.small {
65
- block-size: 1.75rem;
66
- box-sizing: border-box;
67
- font-size: var(--glide-core-typography-size-body-small);
68
- line-height: 1rem;
69
- }
70
-
71
- &.large {
72
- block-size: 2.125rem;
73
- box-sizing: border-box;
74
- font-size: var(--glide-core-typography-size-body-large);
75
- line-height: 1.5rem;
76
- }
77
-
78
68
  /*
79
69
  A "disabled" class is used instead of ":disabled" because these styles are
80
70
  shared between Split Button Primary Button and Split Button Primary Link.
@@ -1,7 +1,7 @@
1
1
  import { LitElement } from 'lit';
2
2
  declare global {
3
3
  interface HTMLElementTagNameMap {
4
- 'glide-core-split-button-primary-link': GlideCoreSplitButtonPrimaryLink;
4
+ 'glide-core-split-button-primary-link': SplitButtonPrimaryLink;
5
5
  }
6
6
  }
7
7
  /**
@@ -14,7 +14,7 @@ declare global {
14
14
  *
15
15
  * @slot {Element} [icon] - An icon before the label
16
16
  */
17
- export default class GlideCoreSplitButtonPrimaryLink extends LitElement {
17
+ export default class SplitButtonPrimaryLink extends LitElement {
18
18
  static shadowRootOptions: ShadowRootInit;
19
19
  static styles: import("lit").CSSResult[];
20
20
  label?: string;
@@ -1 +1 @@
1
- var __decorate=this&&this.__decorate||function(t,e,r,i){var o,a=arguments.length,l=a<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(t,e,r,i);else for(var s=t.length-1;s>=0;s--)(o=t[s])&&(l=(a<3?o(l):a>3?o(e,r,l):o(e,r))||l);return a>3&&l&&Object.defineProperty(e,r,l),l};import{html,LitElement}from"lit";import{classMap}from"lit/directives/class-map.js";import{customElement,property}from"lit/decorators.js";import{ifDefined}from"lit/directives/if-defined.js";import packageJson from"../package.json"with{type:"json"};import styles from"./split-button.primary-button.styles.js";import shadowRootMode from"./library/shadow-root-mode.js";import final from"./library/final.js";import required from"./library/required.js";let GlideCoreSplitButtonPrimaryLink=class GlideCoreSplitButtonPrimaryLink extends LitElement{constructor(){super(...arguments),this.disabled=!1,this.privateSize="large",this.privateVariant="primary",this.version=packageJson.version}static{this.shadowRootOptions={...LitElement.shadowRootOptions,delegatesFocus:!0,mode:shadowRootMode}}static{this.styles=styles}render(){return this.disabled?html`<span aria-disabled="true" class="${classMap({component:!0,disabled:!0,[this.privateVariant]:!0,[this.privateSize]:!0})}" role="link"><slot name="icon"></slot>${this.label}</span>`:html`<a class="${classMap({component:!0,[this.privateVariant]:!0,[this.privateSize]:!0})}" data-test="component" href="${ifDefined(this.href)}"><slot name="icon"></slot>${this.label}</a>`}};__decorate([property({reflect:!0}),required],GlideCoreSplitButtonPrimaryLink.prototype,"label",void 0),__decorate([property({reflect:!0,type:Boolean})],GlideCoreSplitButtonPrimaryLink.prototype,"disabled",void 0),__decorate([property({reflect:!0})],GlideCoreSplitButtonPrimaryLink.prototype,"href",void 0),__decorate([property()],GlideCoreSplitButtonPrimaryLink.prototype,"privateSize",void 0),__decorate([property()],GlideCoreSplitButtonPrimaryLink.prototype,"privateVariant",void 0),__decorate([property({reflect:!0})],GlideCoreSplitButtonPrimaryLink.prototype,"version",void 0),GlideCoreSplitButtonPrimaryLink=__decorate([customElement("glide-core-split-button-primary-link"),final],GlideCoreSplitButtonPrimaryLink);export default GlideCoreSplitButtonPrimaryLink;
1
+ var __decorate=this&&this.__decorate||function(t,e,r,i){var o,a=arguments.length,s=a<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,r,i);else for(var p=t.length-1;p>=0;p--)(o=t[p])&&(s=(a<3?o(s):a>3?o(e,r,s):o(e,r))||s);return a>3&&s&&Object.defineProperty(e,r,s),s};import{html,LitElement}from"lit";import{classMap}from"lit/directives/class-map.js";import{customElement,property}from"lit/decorators.js";import{ifDefined}from"lit/directives/if-defined.js";import packageJson from"../package.json"with{type:"json"};import styles from"./split-button.primary-button.styles.js";import shadowRootMode from"./library/shadow-root-mode.js";import final from"./library/final.js";import required from"./library/required.js";let SplitButtonPrimaryLink=class SplitButtonPrimaryLink extends LitElement{constructor(){super(...arguments),this.disabled=!1,this.privateSize="large",this.privateVariant="primary",this.version=packageJson.version}static{this.shadowRootOptions={...LitElement.shadowRootOptions,delegatesFocus:!0,mode:shadowRootMode}}static{this.styles=styles}render(){return this.disabled?html`<span aria-disabled="true" class="${classMap({component:!0,disabled:!0,[this.privateVariant]:!0,[this.privateSize]:!0})}" role="link"><slot name="icon"></slot>${this.label}</span>`:html`<a class="${classMap({component:!0,[this.privateVariant]:!0,[this.privateSize]:!0})}" data-test="component" href="${ifDefined(this.href)}"><slot name="icon"></slot>${this.label}</a>`}};__decorate([property({reflect:!0}),required],SplitButtonPrimaryLink.prototype,"label",void 0),__decorate([property({reflect:!0,type:Boolean})],SplitButtonPrimaryLink.prototype,"disabled",void 0),__decorate([property({reflect:!0})],SplitButtonPrimaryLink.prototype,"href",void 0),__decorate([property()],SplitButtonPrimaryLink.prototype,"privateSize",void 0),__decorate([property()],SplitButtonPrimaryLink.prototype,"privateVariant",void 0),__decorate([property({reflect:!0})],SplitButtonPrimaryLink.prototype,"version",void 0),SplitButtonPrimaryLink=__decorate([customElement("glide-core-split-button-primary-link"),final],SplitButtonPrimaryLink);export default SplitButtonPrimaryLink;
@@ -2,7 +2,7 @@ import './menu.options.js';
2
2
  import { LitElement } from 'lit';
3
3
  declare global {
4
4
  interface HTMLElementTagNameMap {
5
- 'glide-core-split-button-secondary-button': GlideCoreSplitButtonSecondaryButton;
5
+ 'glide-core-split-button-secondary-button': SplitButtonSecondaryButton;
6
6
  }
7
7
  }
8
8
  /**
@@ -14,9 +14,9 @@ declare global {
14
14
  * @readonly
15
15
  * @attr {string} [version]
16
16
  *
17
- * @slot {GlideCoreMenuButton | GlideCoreMenuLink}
17
+ * @slot {MenuButton | MenuLink}
18
18
  */
19
- export default class GlideCoreSplitButtonSecondaryButton extends LitElement {
19
+ export default class SplitButtonSecondaryButton extends LitElement {
20
20
  #private;
21
21
  static shadowRootOptions: ShadowRootInit;
22
22
  static styles: import("lit").CSSResult[];
@@ -25,7 +25,6 @@ export default class GlideCoreSplitButtonSecondaryButton extends LitElement {
25
25
  menuOpen: boolean;
26
26
  menuPlacement: 'bottom-end' | 'top-end';
27
27
  privateActive: boolean;
28
- privateSize: 'large' | 'small';
29
28
  privateVariant: 'primary' | 'secondary';
30
29
  readonly version: string;
31
30
  click(): void;
@@ -1 +1 @@
1
- var __decorate=this&&this.__decorate||function(e,t,o,r){var i,n=arguments.length,l=n<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,o):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(e,t,o,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(l=(n<3?i(l):n>3?i(t,o,l):i(t,o))||l);return n>3&&l&&Object.defineProperty(t,o,l),l};import"./menu.options.js";import{html,LitElement}from"lit";import{classMap}from"lit/directives/class-map.js";import{createRef,ref}from"lit/directives/ref.js";import{customElement,property}from"lit/decorators.js";import{ifDefined}from"lit/directives/if-defined.js";import packageJson from"../package.json"with{type:"json"};import GlideCoreMenu from"./menu.js";import GlideCoreMenuButton from"./menu.button.js";import GlideCoreMenuLink from"./menu.link.js";import chevronIcon from"./icons/chevron.js";import styles from"./split-button.secondary-button.styles.js";import assertSlot from"./library/assert-slot.js";import shadowRootMode from"./library/shadow-root-mode.js";import final from"./library/final.js";import required from"./library/required.js";let GlideCoreSplitButtonSecondaryButton=class GlideCoreSplitButtonSecondaryButton extends LitElement{constructor(){super(...arguments),this.disabled=!1,this.menuOpen=!1,this.menuPlacement="bottom-end",this.privateActive=!1,this.privateSize="large",this.privateVariant="primary",this.version=packageJson.version,this.#e=createRef(),this.#t=createRef()}static{this.shadowRootOptions={...LitElement.shadowRootOptions,delegatesFocus:!0,mode:shadowRootMode}}static{this.styles=styles}click(){this.#e.value?.click()}firstUpdated(){const e=new MutationObserver((()=>{this.#t.value&&(this.menuOpen=this.#t.value.open)}));this.#t.value&&e.observe(this.#t.value,{attributes:!0,attributeFilter:["open"]})}render(){return html`<glide-core-menu placement="${this.menuPlacement}" size="${this.privateSize}" ?open="${this.menuOpen}" ${ref(this.#t)}><button aria-label="${ifDefined(this.label)}" class="${classMap({component:!0,active:this.menuOpen,disabled:this.disabled,[this.privateVariant]:!0,[this.privateSize]:!0})}" data-test="button" slot="target" type="button" ?disabled="${this.disabled}" ${ref(this.#e)}>${chevronIcon}</button><glide-core-menu-options><slot ${assertSlot([GlideCoreMenuButton,GlideCoreMenuLink])}></slot></glide-core-menu-options></glide-core-menu>`}#e;#t};__decorate([property({reflect:!0}),required],GlideCoreSplitButtonSecondaryButton.prototype,"label",void 0),__decorate([property({reflect:!0,type:Boolean})],GlideCoreSplitButtonSecondaryButton.prototype,"disabled",void 0),__decorate([property({attribute:"menu-open",reflect:!0,type:Boolean})],GlideCoreSplitButtonSecondaryButton.prototype,"menuOpen",void 0),__decorate([property({attribute:"menu-placement",reflect:!0,useDefault:!0})],GlideCoreSplitButtonSecondaryButton.prototype,"menuPlacement",void 0),__decorate([property({type:Boolean})],GlideCoreSplitButtonSecondaryButton.prototype,"privateActive",void 0),__decorate([property()],GlideCoreSplitButtonSecondaryButton.prototype,"privateSize",void 0),__decorate([property()],GlideCoreSplitButtonSecondaryButton.prototype,"privateVariant",void 0),__decorate([property({reflect:!0})],GlideCoreSplitButtonSecondaryButton.prototype,"version",void 0),GlideCoreSplitButtonSecondaryButton=__decorate([customElement("glide-core-split-button-secondary-button"),final],GlideCoreSplitButtonSecondaryButton);export default GlideCoreSplitButtonSecondaryButton;
1
+ var __decorate=this&&this.__decorate||function(t,e,o,n){var r,i=arguments.length,s=i<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(t,e,o,n);else for(var a=t.length-1;a>=0;a--)(r=t[a])&&(s=(i<3?r(s):i>3?r(e,o,s):r(e,o))||s);return i>3&&s&&Object.defineProperty(e,o,s),s};import"./menu.options.js";import{html,LitElement}from"lit";import{classMap}from"lit/directives/class-map.js";import{createRef,ref}from"lit/directives/ref.js";import{customElement,property}from"lit/decorators.js";import{ifDefined}from"lit/directives/if-defined.js";import packageJson from"../package.json"with{type:"json"};import Menu from"./menu.js";import MenuButton from"./menu.button.js";import MenuLink from"./menu.link.js";import chevronIcon from"./icons/chevron.js";import styles from"./split-button.secondary-button.styles.js";import assertSlot from"./library/assert-slot.js";import shadowRootMode from"./library/shadow-root-mode.js";import final from"./library/final.js";import required from"./library/required.js";let SplitButtonSecondaryButton=class SplitButtonSecondaryButton extends LitElement{constructor(){super(...arguments),this.disabled=!1,this.menuOpen=!1,this.menuPlacement="bottom-end",this.privateActive=!1,this.privateVariant="primary",this.version=packageJson.version,this.#t=createRef(),this.#e=createRef()}static{this.shadowRootOptions={...LitElement.shadowRootOptions,delegatesFocus:!0,mode:shadowRootMode}}static{this.styles=styles}click(){this.#t.value?.click()}firstUpdated(){const t=new MutationObserver((()=>{this.#e.value&&(this.menuOpen=this.#e.value.open)}));this.#e.value&&t.observe(this.#e.value,{attributes:!0,attributeFilter:["open"]})}render(){return html`<glide-core-menu placement="${this.menuPlacement}" ?open="${this.menuOpen}" ${ref(this.#e)}><button aria-label="${ifDefined(this.label)}" class="${classMap({component:!0,active:this.menuOpen,disabled:this.disabled,[this.privateVariant]:!0})}" data-test="button" slot="target" type="button" ?disabled="${this.disabled}" ${ref(this.#t)}>${chevronIcon}</button><glide-core-menu-options><slot ${assertSlot([MenuButton,MenuLink])}></slot></glide-core-menu-options></glide-core-menu>`}#t;#e};__decorate([property({reflect:!0}),required],SplitButtonSecondaryButton.prototype,"label",void 0),__decorate([property({reflect:!0,type:Boolean})],SplitButtonSecondaryButton.prototype,"disabled",void 0),__decorate([property({attribute:"menu-open",reflect:!0,type:Boolean})],SplitButtonSecondaryButton.prototype,"menuOpen",void 0),__decorate([property({attribute:"menu-placement",reflect:!0,useDefault:!0})],SplitButtonSecondaryButton.prototype,"menuPlacement",void 0),__decorate([property({type:Boolean})],SplitButtonSecondaryButton.prototype,"privateActive",void 0),__decorate([property()],SplitButtonSecondaryButton.prototype,"privateVariant",void 0),__decorate([property({reflect:!0})],SplitButtonSecondaryButton.prototype,"version",void 0),SplitButtonSecondaryButton=__decorate([customElement("glide-core-split-button-secondary-button"),final],SplitButtonSecondaryButton);export default SplitButtonSecondaryButton;