@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.
- package/dist/accordion.d.ts +2 -2
- package/dist/accordion.js +1 -1
- package/dist/button-group.button.d.ts +2 -2
- package/dist/button-group.button.js +1 -1
- package/dist/button-group.d.ts +3 -3
- package/dist/button-group.js +1 -1
- package/dist/button.d.ts +2 -2
- package/dist/button.js +1 -1
- package/dist/checkbox-group.d.ts +3 -3
- package/dist/checkbox-group.js +9 -9
- package/dist/checkbox.d.ts +2 -3
- package/dist/checkbox.js +3 -3
- package/dist/checkbox.styles.js +8 -16
- package/dist/drawer.d.ts +2 -2
- package/dist/drawer.js +1 -1
- package/dist/dropdown.d.ts +17 -22
- package/dist/dropdown.js +102 -107
- package/dist/dropdown.option.d.ts +9 -9
- package/dist/dropdown.option.js +1 -1
- package/dist/dropdown.option.styles.js +16 -79
- package/dist/dropdown.styles.js +57 -74
- package/dist/form-controls-layout.d.ts +3 -3
- package/dist/form-controls-layout.js +1 -1
- package/dist/icon-button.d.ts +2 -2
- package/dist/icon-button.js +1 -1
- package/dist/icons/checked.js +1 -1
- package/dist/inline-alert.d.ts +2 -2
- package/dist/inline-alert.js +1 -1
- package/dist/input.d.ts +2 -2
- package/dist/input.js +2 -2
- package/dist/input.styles.js +9 -7
- package/dist/label.d.ts +2 -2
- package/dist/label.js +1 -1
- package/dist/label.styles.js +5 -1
- package/dist/library/assert-slot.d.ts +1 -1
- package/dist/library/assert-slot.test.js +22 -22
- package/dist/library/expect-window-error.js +1 -1
- package/dist/library/final.test.js +9 -9
- package/dist/library/form-control.d.ts +1 -1
- package/dist/library/localize.d.ts +5 -0
- package/dist/library/localize.test.js +6 -6
- package/dist/library/required.test.js +5 -5
- package/dist/library/unique-id.d.ts +2 -0
- package/dist/library/unique-id.js +1 -0
- package/dist/link.d.ts +2 -3
- package/dist/link.js +1 -1
- package/dist/link.styles.js +1 -1
- package/dist/menu.button.d.ts +2 -2
- package/dist/menu.button.js +1 -1
- package/dist/menu.button.styles.js +3 -3
- package/dist/menu.d.ts +3 -9
- package/dist/menu.js +1 -1
- package/dist/menu.link.d.ts +2 -2
- package/dist/menu.link.js +1 -1
- package/dist/menu.link.styles.js +3 -3
- package/dist/menu.options.d.ts +3 -4
- package/dist/menu.options.js +1 -1
- package/dist/menu.options.styles.js +3 -20
- package/dist/modal.d.ts +6 -6
- package/dist/modal.icon-button.d.ts +2 -2
- package/dist/modal.icon-button.js +1 -1
- package/dist/modal.js +1 -1
- package/dist/popover.d.ts +2 -2
- package/dist/popover.js +1 -1
- package/dist/radio-group.d.ts +3 -3
- package/dist/radio-group.js +6 -6
- package/dist/radio-group.radio.d.ts +2 -2
- package/dist/radio-group.radio.js +1 -1
- package/dist/slider.d.ts +116 -0
- package/dist/slider.js +168 -0
- package/dist/slider.styles.d.ts +2 -0
- package/dist/slider.styles.js +168 -0
- package/dist/spinner.d.ts +2 -2
- package/dist/spinner.js +1 -1
- package/dist/split-button.d.ts +4 -10
- package/dist/split-button.js +1 -1
- package/dist/split-button.primary-button.d.ts +2 -2
- package/dist/split-button.primary-button.js +1 -1
- package/dist/split-button.primary-button.styles.js +4 -14
- package/dist/split-button.primary-link.d.ts +2 -2
- package/dist/split-button.primary-link.js +1 -1
- package/dist/split-button.secondary-button.d.ts +3 -4
- package/dist/split-button.secondary-button.js +1 -1
- package/dist/split-button.secondary-button.styles.js +4 -15
- package/dist/styles/variables.css +1 -1
- package/dist/tab.d.ts +12 -4
- package/dist/tab.group.d.ts +4 -5
- package/dist/tab.group.js +1 -1
- package/dist/tab.group.styles.js +14 -16
- package/dist/tab.js +1 -1
- package/dist/tab.panel.d.ts +12 -5
- package/dist/tab.panel.js +1 -1
- package/dist/tag.d.ts +2 -4
- package/dist/tag.js +1 -1
- package/dist/tag.styles.js +7 -52
- package/dist/textarea.d.ts +2 -2
- package/dist/textarea.js +7 -7
- package/dist/textarea.styles.js +17 -2
- package/dist/toast.d.ts +3 -3
- package/dist/toast.js +1 -1
- package/dist/toast.toasts.d.ts +9 -9
- package/dist/toast.toasts.js +17 -17
- package/dist/toggle.d.ts +2 -2
- package/dist/toggle.js +1 -1
- package/dist/tooltip.container.d.ts +2 -2
- package/dist/tooltip.container.js +1 -1
- package/dist/tooltip.d.ts +3 -3
- package/dist/tooltip.js +1 -1
- package/dist/translations/en.js +1 -1
- package/dist/translations/fr.d.ts +1 -1
- package/dist/translations/fr.js +1 -1
- package/dist/translations/ja.d.ts +1 -1
- package/dist/translations/ja.js +1 -1
- 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,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':
|
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
|
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,
|
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;
|
package/dist/split-button.d.ts
CHANGED
@@ -1,28 +1,22 @@
|
|
1
1
|
import { LitElement } from 'lit';
|
2
2
|
declare global {
|
3
3
|
interface HTMLElementTagNameMap {
|
4
|
-
'glide-core-split-button':
|
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 {
|
15
|
-
* @slot {
|
13
|
+
* @slot {SplitButtonPrimaryButton | SplitButtonPrimaryLink}
|
14
|
+
* @slot {SplitButtonSecondaryButton} [secondary-button]
|
16
15
|
*/
|
17
|
-
export default class
|
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
|
*/
|
package/dist/split-button.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
var __decorate=this&&this.__decorate||function(t,e,o,
|
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':
|
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
|
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
|
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':
|
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
|
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,
|
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':
|
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 {
|
17
|
+
* @slot {MenuButton | MenuLink}
|
18
18
|
*/
|
19
|
-
export default class
|
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,
|
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;
|