@crowdstrike/glide-core 0.21.0 → 0.22.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/checkbox-group.js +4 -3
- package/dist/checkbox.js +6 -4
- package/dist/checkbox.styles.js +4 -0
- package/dist/dropdown.js +11 -10
- package/dist/dropdown.option.d.ts +1 -0
- package/dist/dropdown.option.js +1 -1
- package/dist/dropdown.styles.js +15 -1
- package/dist/input.d.ts +2 -2
- package/dist/input.js +10 -10
- package/dist/library/localize.d.ts +0 -1
- package/dist/radio-group.js +15 -15
- package/dist/tag.js +1 -1
- package/dist/tag.styles.js +24 -21
- package/dist/textarea.d.ts +0 -2
- package/dist/textarea.js +1 -2
- package/dist/translations/en.js +1 -1
- package/dist/translations/fr.js +1 -1
- package/dist/translations/ja.js +1 -1
- package/package.json +10 -11
- package/dist/tree.d.ts +0 -29
- package/dist/tree.item.d.ts +0 -55
- package/dist/tree.item.icon-button.d.ts +0 -22
- package/dist/tree.item.icon-button.js +0 -1
- package/dist/tree.item.icon-button.styles.d.ts +0 -2
- package/dist/tree.item.icon-button.styles.js +0 -9
- package/dist/tree.item.js +0 -1
- package/dist/tree.item.menu.d.ts +0 -29
- package/dist/tree.item.menu.js +0 -1
- package/dist/tree.item.menu.styles.d.ts +0 -2
- package/dist/tree.item.menu.styles.js +0 -17
- package/dist/tree.item.styles.d.ts +0 -2
- package/dist/tree.item.styles.js +0 -151
- package/dist/tree.js +0 -1
- package/dist/tree.styles.d.ts +0 -2
- package/dist/tree.styles.js +0 -7
package/dist/tag.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
var __decorate=this&&this.__decorate||function(e,t,o,i){var s,a=arguments.length,l=a<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(e,t,o,i);else for(var r=e.length-1;r>=0;r--)(s=e[r])&&(l=(a<3?s(l):a>3?s(t,o,l):s(t,o))||l);return a>3&&l&&Object.defineProperty(t,o,l),l};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{when}from"lit/directives/when.js";import packageJson from"../package.json"with{type:"json"};import{LocalizeController}from"./library/localize.js";import pencilIcon from"./icons/pencil.js";import styles from"./tag.styles.js";import xIcon from"./icons/x.js";import shadowRootMode from"./library/shadow-root-mode.js";import final from"./library/final.js";import required from"./library/required.js";let GlideCoreTag=class GlideCoreTag extends LitElement{constructor(){super(...arguments),this.disabled=!1,this.privateEditable=!1,this.removable=!1,this.size="medium",this.version=packageJson.version,this.#e=100,this.#t=createRef(),this.#o=!1,this.#i=new LocalizeController(this),this.#s=createRef()}static{this.shadowRootOptions={...LitElement.shadowRootOptions,delegatesFocus:!0,mode:shadowRootMode}}static{this.styles=styles}click(){this.#s.value?.click()}firstUpdated(){this.#t.value?.addEventListener("animationend",(()=>{this.#t.value?.classList.remove("added")}),{once:!0})}focus(){this.#s.value?.focus()}render(){return html`<div class="${classMap({component:!0,added:!0,disabled:this.disabled,[this.size]:!0})}" data-test="component" data-animation-duration="${this.#e}" style="--private-animation-duration: ${this.#e}ms" ${ref(this.#t)}><slot class="${classMap({"icon-slot":!0,[this.size]:!0})}" name="icon"></slot>${this.label}
|
1
|
+
var __decorate=this&&this.__decorate||function(e,t,o,i){var s,a=arguments.length,l=a<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(e,t,o,i);else for(var r=e.length-1;r>=0;r--)(s=e[r])&&(l=(a<3?s(l):a>3?s(t,o,l):s(t,o))||l);return a>3&&l&&Object.defineProperty(t,o,l),l};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{when}from"lit/directives/when.js";import packageJson from"../package.json"with{type:"json"};import{LocalizeController}from"./library/localize.js";import pencilIcon from"./icons/pencil.js";import styles from"./tag.styles.js";import xIcon from"./icons/x.js";import shadowRootMode from"./library/shadow-root-mode.js";import final from"./library/final.js";import required from"./library/required.js";let GlideCoreTag=class GlideCoreTag extends LitElement{constructor(){super(...arguments),this.disabled=!1,this.privateEditable=!1,this.removable=!1,this.size="medium",this.version=packageJson.version,this.#e=100,this.#t=createRef(),this.#o=!1,this.#i=new LocalizeController(this),this.#s=createRef()}static{this.shadowRootOptions={...LitElement.shadowRootOptions,delegatesFocus:!0,mode:shadowRootMode}}static{this.styles=styles}click(){this.#s.value?.click()}firstUpdated(){this.#t.value?.addEventListener("animationend",(()=>{this.#t.value?.classList.remove("added")}),{once:!0})}focus(){this.#s.value?.focus()}render(){return html`<div class="${classMap({component:!0,added:!0,disabled:this.disabled,[this.size]:!0})}" data-test="component" data-animation-duration="${this.#e}" style="--private-animation-duration: ${this.#e}ms" ${ref(this.#t)}><slot class="${classMap({"icon-slot":!0,[this.size]:!0})}" name="icon"></slot><div class="label">${this.label}</div>${when(this.privateEditable,(()=>html`<button aria-label="${this.#i.term("editTag",this.label)}" class="${classMap({"edit-button":!0,[this.size]:!0,disabled:this.disabled})}" data-test="edit-button" type="button" ?disabled="${this.disabled}" @click="${this.#a}" @keydown="${this.#l}">${pencilIcon}</button>`))} ${when(this.removable,(()=>html`<button aria-label="${this.#i.term("removeTag",this.label)}" class="${classMap({"removal-button":!0,[this.size]:!0,disabled:this.disabled})}" data-test="removal-button" type="button" ?disabled="${this.disabled}" @click="${this.#r}" @keydown="${this.#n}" ${ref(this.#s)}>${xIcon}</button>`))}</div>`}#e;#t;#o;#i;#s;#a(){this.#o?this.#o=!1:this.dispatchEvent(new Event("edit",{bubbles:!0,composed:!0}))}#l(e){["Enter"," "].includes(e.key)&&(this.#o=!0,this.dispatchEvent(new Event("edit",{bubbles:!0,composed:!0})))}#r(){this.#o?this.#o=!1:(setTimeout((()=>{this.remove()}),this.#e),this.#t.value?.classList.add("removed"),this.dispatchEvent(new Event("remove",{bubbles:!0,composed:!0})))}#n(e){["Enter"," "].includes(e.key)&&(this.#o=!0,setTimeout((()=>{this.remove()}),this.#e),this.#t.value?.classList.add("removed"),this.dispatchEvent(new Event("remove",{bubbles:!0,composed:!0})))}};__decorate([property({reflect:!0,type:Boolean})],GlideCoreTag.prototype,"disabled",void 0),__decorate([property({reflect:!0}),required],GlideCoreTag.prototype,"label",void 0),__decorate([property({attribute:"private-editable",reflect:!0,type:Boolean})],GlideCoreTag.prototype,"privateEditable",void 0),__decorate([property({reflect:!0,type:Boolean})],GlideCoreTag.prototype,"removable",void 0),__decorate([property({reflect:!0})],GlideCoreTag.prototype,"size",void 0),__decorate([property({reflect:!0})],GlideCoreTag.prototype,"version",void 0),GlideCoreTag=__decorate([customElement("glide-core-tag"),final],GlideCoreTag);export default GlideCoreTag;
|
package/dist/tag.styles.js
CHANGED
@@ -2,6 +2,26 @@ import{css}from"lit";import focusOutline from"./styles/focus-outline.js";export
|
|
2
2
|
${focusOutline(".edit-button:focus-visible")}
|
3
3
|
${focusOutline(".removal-button:focus-visible")}
|
4
4
|
`,css`
|
5
|
+
@keyframes fade-in {
|
6
|
+
0% {
|
7
|
+
opacity: 0;
|
8
|
+
}
|
9
|
+
|
10
|
+
100% {
|
11
|
+
opacity: 1;
|
12
|
+
}
|
13
|
+
}
|
14
|
+
|
15
|
+
@keyframes fade-out {
|
16
|
+
0% {
|
17
|
+
opacity: 1;
|
18
|
+
}
|
19
|
+
|
20
|
+
100% {
|
21
|
+
opacity: 0;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
|
5
25
|
.component {
|
6
26
|
align-items: center;
|
7
27
|
background: var(--glide-core-surface-base-gray-lighter);
|
@@ -14,13 +34,10 @@ import{css}from"lit";import focusOutline from"./styles/focus-outline.js";export
|
|
14
34
|
font-weight: var(--glide-core-body-xs-font-weight);
|
15
35
|
justify-content: center;
|
16
36
|
line-height: 1;
|
17
|
-
margin: 0;
|
18
37
|
max-inline-size: max-content;
|
19
38
|
min-block-size: var(--glide-core-spacing-md);
|
20
39
|
opacity: 1;
|
21
|
-
overflow: hidden;
|
22
40
|
padding: var(--glide-core-spacing-xxxs) var(--glide-core-spacing-xs);
|
23
|
-
white-space: nowrap;
|
24
41
|
|
25
42
|
&.large {
|
26
43
|
min-block-size: 0.875rem;
|
@@ -53,24 +70,10 @@ import{css}from"lit";import focusOutline from"./styles/focus-outline.js";export
|
|
53
70
|
}
|
54
71
|
}
|
55
72
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
100% {
|
62
|
-
opacity: 1;
|
63
|
-
}
|
64
|
-
}
|
65
|
-
|
66
|
-
@keyframes fade-out {
|
67
|
-
0% {
|
68
|
-
opacity: 1;
|
69
|
-
}
|
70
|
-
|
71
|
-
100% {
|
72
|
-
opacity: 0;
|
73
|
-
}
|
73
|
+
.label {
|
74
|
+
overflow: hidden;
|
75
|
+
text-overflow: ellipsis;
|
76
|
+
white-space: nowrap;
|
74
77
|
}
|
75
78
|
|
76
79
|
.removal-button {
|
package/dist/textarea.d.ts
CHANGED
@@ -18,7 +18,6 @@ declare global {
|
|
18
18
|
* @attr {string} [placeholder='']
|
19
19
|
* @attr {boolean} [readonly=false]
|
20
20
|
* @attr {boolean} [required=false]
|
21
|
-
* @attr {number} [rows=2]
|
22
21
|
* @attr {boolean} [spellcheck=false]
|
23
22
|
* @attr {string} [tooltip]
|
24
23
|
* @attr {string} [value='']
|
@@ -65,7 +64,6 @@ export default class GlideCoreTextarea extends LitElement implements FormControl
|
|
65
64
|
hideLabel: boolean;
|
66
65
|
orientation: 'horizontal' | 'vertical';
|
67
66
|
placeholder?: string;
|
68
|
-
rows: number;
|
69
67
|
required: boolean;
|
70
68
|
readonly: boolean;
|
71
69
|
disabled: boolean;
|
package/dist/textarea.js
CHANGED
@@ -19,7 +19,6 @@ var __decorate=this&&this.__decorate||function(e,t,i,a){var r,o=arguments.length
|
|
19
19
|
id="textarea"
|
20
20
|
name=${ifDefined(this.name)}
|
21
21
|
placeholder=${ifDefined(this.placeholder)}
|
22
|
-
rows=${this.rows}
|
23
22
|
autocapitalize=${this.autocapitalize}
|
24
23
|
autocomplete=${this.autocomplete}
|
25
24
|
spellcheck=${this.spellcheck}
|
@@ -63,4 +62,4 @@ var __decorate=this&&this.__decorate||function(e,t,i,a){var r,o=arguments.length
|
|
63
62
|
>
|
64
63
|
</div>`:nothing}
|
65
64
|
</div></glide-core-private-label
|
66
|
-
>`}reportValidity(){this.isReportValidityOrSubmit=!0;const e=this.#e.reportValidity();return this.requestUpdate(),e}resetValidityFeedback(){this.isReportValidityOrSubmit=!1}setCustomValidity(e){this.validityMessage=e,""===e?this.#e.setValidity({customError:!1},"",this.#i.value):this.#e.setValidity({customError:!0,valueMissing:this.#e.validity.valueMissing}," ",this.#i.value)}setValidity(e,t){this.validityMessage=t,this.#e.setValidity(e," ",this.#i.value)}constructor(){super(),this.value="",this.hideLabel=!1,this.orientation="horizontal",this.placeholder="",this.
|
65
|
+
>`}reportValidity(){this.isReportValidityOrSubmit=!0;const e=this.#e.reportValidity();return this.requestUpdate(),e}resetValidityFeedback(){this.isReportValidityOrSubmit=!1}setCustomValidity(e){this.validityMessage=e,""===e?this.#e.setValidity({customError:!1},"",this.#i.value):this.#e.setValidity({customError:!0,valueMissing:this.#e.validity.valueMissing}," ",this.#i.value)}setValidity(e,t){this.validityMessage=t,this.#e.setValidity(e," ",this.#i.value)}constructor(){super(),this.value="",this.hideLabel=!1,this.orientation="horizontal",this.placeholder="",this.required=!1,this.readonly=!1,this.disabled=!1,this.name="",this.spellcheck=!1,this.autocapitalize="on",this.autocomplete="on",this.version=packageJson.version,this.isBlurring=!1,this.isCheckingValidity=!1,this.isReportValidityOrSubmit=!1,this.#n=new LocalizeController(this),this.#i=createRef(),this.#t=({formData:e})=>{this.name&&this.value&&!this.disabled&&e.append(this.name,this.value)},this.#e=this.attachInternals(),this.addEventListener("invalid",(e=>{if(e?.preventDefault(),this.isCheckingValidity||this.isBlurring)return;this.isReportValidityOrSubmit=!0;this.form?.querySelector(":invalid")===this&&this.focus()}))}#e;#n;#i;#t;get#a(){return!this.disabled&&!this.readonly&&!this.validity.valid&&this.isReportValidityOrSubmit}get#h(){return this.value.length}get#r(){return Boolean(!this.disabled&&!this.readonly&&this.maxlength&&this.#h>this.maxlength)}#o(){this.isBlurring=!0,this.reportValidity(),this.isBlurring=!1}#s(){this.#i.value&&(this.value=this.#i.value.value),this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0}))}#l(){this.#i.value&&(this.value=this.#i.value.value)}#d(e){"Enter"===e.key&&(e.metaKey||e.ctrlKey)&&this.form?.requestSubmit()}};__decorate([property()],GlideCoreTextarea.prototype,"value",void 0),__decorate([property({reflect:!0}),required],GlideCoreTextarea.prototype,"label",void 0),__decorate([property({attribute:"hide-label",reflect:!0,type:Boolean})],GlideCoreTextarea.prototype,"hideLabel",void 0),__decorate([property({reflect:!0})],GlideCoreTextarea.prototype,"orientation",void 0),__decorate([property({reflect:!0})],GlideCoreTextarea.prototype,"placeholder",void 0),__decorate([property({reflect:!0,type:Boolean})],GlideCoreTextarea.prototype,"required",void 0),__decorate([property({reflect:!0,type:Boolean})],GlideCoreTextarea.prototype,"readonly",void 0),__decorate([property({reflect:!0,type:Boolean})],GlideCoreTextarea.prototype,"disabled",void 0),__decorate([property({type:Number,converter:e=>e&&Number.parseInt(e,10),reflect:!0})],GlideCoreTextarea.prototype,"maxlength",void 0),__decorate([property({reflect:!0})],GlideCoreTextarea.prototype,"name",void 0),__decorate([property({reflect:!0,type:Boolean})],GlideCoreTextarea.prototype,"spellcheck",void 0),__decorate([property({reflect:!0})],GlideCoreTextarea.prototype,"autocapitalize",void 0),__decorate([property({reflect:!0})],GlideCoreTextarea.prototype,"autocomplete",void 0),__decorate([property()],GlideCoreTextarea.prototype,"privateSplit",void 0),__decorate([property({reflect:!0})],GlideCoreTextarea.prototype,"tooltip",void 0),__decorate([property({reflect:!0})],GlideCoreTextarea.prototype,"version",void 0),__decorate([state()],GlideCoreTextarea.prototype,"isBlurring",void 0),__decorate([state()],GlideCoreTextarea.prototype,"isCheckingValidity",void 0),__decorate([state()],GlideCoreTextarea.prototype,"isReportValidityOrSubmit",void 0),__decorate([state()],GlideCoreTextarea.prototype,"validityMessage",void 0),GlideCoreTextarea=__decorate([customElement("glide-core-textarea"),final],GlideCoreTextarea);export default GlideCoreTextarea;
|
package/dist/translations/en.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
const translation={$code:"en",$name:"English",$dir:"ltr",close:"Close",dismiss:"Dismiss",selectAll:"Select all",notifications:"Notifications",nextTab:"Next tab",previousTab:"Previous tab",noResults:"No results found",tooltip:"Tooltip:",severityInformational:"Severity: Informational",severityCritical:"Severity: Critical",severityMedium:"Severity: Medium",success:"Success:",error:"Error:",informational:"Informational:",announcedCharacterCount:(t,e)=>`Character count ${t} of ${e}`,displayedCharacterCount:(t,e)=>`${t}/${e}`,clearEntry:t=>`Clear ${t} entry`,editOption:t=>`Edit option: ${t}`,editTag:t=>`Edit tag: ${t}`,removeTag:t=>`Remove tag: ${t}`,
|
1
|
+
const translation={$code:"en",$name:"English",$dir:"ltr",close:"Close",dismiss:"Dismiss",selectAll:"Select all",notifications:"Notifications",nextTab:"Next tab",previousTab:"Previous tab",noResults:"No results found",tooltip:"Tooltip:",severityInformational:"Severity: Informational",severityCritical:"Severity: Critical",severityMedium:"Severity: Medium",success:"Success:",error:"Error:",informational:"Informational:",announcedCharacterCount:(t,e)=>`Character count ${t} of ${e}`,displayedCharacterCount:(t,e)=>`${t}/${e}`,clearEntry:t=>`Clear ${t} entry`,editOption:t=>`Edit option: ${t}`,editTag:t=>`Edit tag: ${t}`,removeTag:t=>`Remove tag: ${t}`,itemCount:t=>`${t} items`,closeInlineAlert:t=>`Close ${t} alert`};export default translation;
|
package/dist/translations/fr.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export const PENDING_STRINGS=["severityInformational","severityCritical","severityMedium","success","error","informational"];const translation={$code:"fr",$name:"French",$dir:"ltr",close:"FERMER",dismiss:"Ignorer",selectAll:"Tout sélectionner",notifications:"Notifications",nextTab:"Onglet suivant",previousTab:"Onglet précédent",noResults:"Aucun résultat trouvé",tooltip:"Info-bulle :",announcedCharacterCount:(e,t)=>`Nombre de caractères ${e} sur ${t}`,displayedCharacterCount:(e,t)=>`${e}/${t}`,clearEntry:e=>`Effacer l'entrée ${e}`,editOption:e=>`Modifier l'option : ${e}`,editTag:e=>`Modifier la balise : ${e}`,removeTag:e=>`Enlever la balise : ${e}`,
|
1
|
+
export const PENDING_STRINGS=["severityInformational","severityCritical","severityMedium","success","error","informational"];const translation={$code:"fr",$name:"French",$dir:"ltr",close:"FERMER",dismiss:"Ignorer",selectAll:"Tout sélectionner",notifications:"Notifications",nextTab:"Onglet suivant",previousTab:"Onglet précédent",noResults:"Aucun résultat trouvé",tooltip:"Info-bulle :",announcedCharacterCount:(e,t)=>`Nombre de caractères ${e} sur ${t}`,displayedCharacterCount:(e,t)=>`${e}/${t}`,clearEntry:e=>`Effacer l'entrée ${e}`,editOption:e=>`Modifier l'option : ${e}`,editTag:e=>`Modifier la balise : ${e}`,removeTag:e=>`Enlever la balise : ${e}`,itemCount:e=>`${e} éléments`,closeInlineAlert:e=>`Fermer l'alerte ${e}`};export default translation;
|
package/dist/translations/ja.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export const PENDING_STRINGS=["severityInformational","severityCritical","severityMedium","success","error","informational"];const translation={$code:"ja",$name:"Japanese",$dir:"ltr",close:"閉じる",dismiss:"閉じる",selectAll:"すべて選択",notifications:"通知",nextTab:"Onglet suivant",previousTab:"Onglet précédent",noResults:"結果が見つかりません",tooltip:"ツールチップ:",announcedCharacterCount:(t
|
1
|
+
export const PENDING_STRINGS=["severityInformational","severityCritical","severityMedium","success","error","informational"];const translation={$code:"ja",$name:"Japanese",$dir:"ltr",close:"閉じる",dismiss:"閉じる",selectAll:"すべて選択",notifications:"通知",nextTab:"Onglet suivant",previousTab:"Onglet précédent",noResults:"結果が見つかりません",tooltip:"ツールチップ:",announcedCharacterCount:(e,t)=>`文字数 ${e}/${t}`,displayedCharacterCount:(e,t)=>`${e}/${t}`,clearEntry:e=>`${e}入力をクリア`,editOption:e=>`編集オプション:${e}`,editTag:e=>`タグの編集:${e}`,removeTag:e=>`タグの削除:${e}`,itemCount:e=>`${e}件`,closeInlineAlert:e=>`${e}アラートを閉じる`};export default translation;
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@crowdstrike/glide-core",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.22.0",
|
4
4
|
"description": "A Web Component design system",
|
5
5
|
"author": "CrowdStrike UX Team",
|
6
6
|
"license": "Apache-2.0",
|
@@ -62,8 +62,8 @@
|
|
62
62
|
"@changesets/cli": "^2.27.10",
|
63
63
|
"@crowdstrike/design-tokens": "^2.0.1",
|
64
64
|
"@custom-elements-manifest/analyzer": "^0.10.4",
|
65
|
-
"@eslint/eslintrc": "^3.
|
66
|
-
"@eslint/js": "^9.
|
65
|
+
"@eslint/eslintrc": "^3.3.0",
|
66
|
+
"@eslint/js": "^9.22.0",
|
67
67
|
"@figma/rest-api-spec": "^0.24.0",
|
68
68
|
"@open-wc/testing": "^4.0.0",
|
69
69
|
"@playwright/test": "^1.50.1",
|
@@ -78,13 +78,13 @@
|
|
78
78
|
"@storybook/theming": "^8.6.3",
|
79
79
|
"@storybook/web-components": "^8.6.3",
|
80
80
|
"@storybook/web-components-vite": "^8.6.3",
|
81
|
-
"@stylistic/eslint-plugin": "^2.
|
81
|
+
"@stylistic/eslint-plugin": "^2.13.0",
|
82
82
|
"@types/eslint": "^8.56.12",
|
83
83
|
"@types/mocha": "^10.0.10",
|
84
84
|
"@types/sinon": "^17.0.3",
|
85
|
-
"@typescript-eslint/rule-tester": "^8.26.
|
86
|
-
"@typescript-eslint/types": "^8.26.
|
87
|
-
"@typescript-eslint/utils": "^8.26.
|
85
|
+
"@typescript-eslint/rule-tester": "^8.26.1",
|
86
|
+
"@typescript-eslint/types": "^8.26.1",
|
87
|
+
"@typescript-eslint/utils": "^8.26.1",
|
88
88
|
"@web/dev-server-esbuild": "^1.0.4",
|
89
89
|
"@web/dev-server-rollup": "^0.6.4",
|
90
90
|
"@web/test-runner": "^0.19.0",
|
@@ -95,8 +95,8 @@
|
|
95
95
|
"comment-parser": "^1.4.1",
|
96
96
|
"custom-elements-manifest": "^2.1.0",
|
97
97
|
"esbuild": "^0.25.0",
|
98
|
-
"eslint": "^9.
|
99
|
-
"eslint-config-prettier": "^10.
|
98
|
+
"eslint": "^9.22.0",
|
99
|
+
"eslint-config-prettier": "^10.1.1",
|
100
100
|
"eslint-plugin-import": "^2.31.0",
|
101
101
|
"eslint-plugin-lit": "^1.15.0",
|
102
102
|
"eslint-plugin-lit-a11y": "^4.1.4",
|
@@ -134,7 +134,7 @@
|
|
134
134
|
"ts-morph": "^25.0.1",
|
135
135
|
"tsx": "^4.19.2",
|
136
136
|
"typescript": "^5.8.2",
|
137
|
-
"typescript-eslint": "^8.26.
|
137
|
+
"typescript-eslint": "^8.26.1",
|
138
138
|
"vite": "^6.2.1",
|
139
139
|
"vitest": "^3.0.8",
|
140
140
|
"yocto-spinner": "^0.2.0"
|
@@ -151,7 +151,6 @@
|
|
151
151
|
"start:development:storybook": "storybook dev --config-dir .storybook --no-open --no-version-updates --port 6006",
|
152
152
|
"start:development:ts-morph": "chokidar ./custom-elements.json './src/ts-morph/**' --initial --silent --command 'tsx ./src/ts-morph/run.ts'",
|
153
153
|
"start:development:ts-morph:comment:tsx": "Remove `tsx` once Node.js type stripping is available.",
|
154
|
-
"start:development:ts-morph:comment:watching": "It would be helpful to also watch './custom-elements.json`. But doing so would create a loop between this script and `start:development:cem-analyze`.",
|
155
154
|
"start:production": "rimraf ./dist && npm-run-all --aggregate-output --print-label --parallel start:production:typescript start:production:storybook start:production:esbuild",
|
156
155
|
"start:production:esbuild": "node ./esbuild.js",
|
157
156
|
"start:production:cem-analyze": "tsc --noCheck --outDir ./dist && NODE_OPTIONS=--no-warnings=ExperimentalWarning cem analyze --config ./custom-elements.config.js --quiet && git diff --quiet -- || { echo ERROR: Uncommitted elements manifest changes. Run this command locally and commit the changes.; exit 1; }",
|
package/dist/tree.d.ts
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
import { LitElement } from 'lit';
|
2
|
-
import GlideCoreTreeItem from './tree.item.js';
|
3
|
-
declare global {
|
4
|
-
interface HTMLElementTagNameMap {
|
5
|
-
'glide-core-tree': GlideCoreTree;
|
6
|
-
}
|
7
|
-
}
|
8
|
-
/**
|
9
|
-
* @readonly
|
10
|
-
* @attr {string} [version]
|
11
|
-
*
|
12
|
-
* @slot {GlideCoreTreeItem}
|
13
|
-
*
|
14
|
-
* @method selectItem
|
15
|
-
* @param {GlideCoreTreeItem} item
|
16
|
-
*/
|
17
|
-
export default class GlideCoreTree extends LitElement {
|
18
|
-
#private;
|
19
|
-
static shadowRootOptions: ShadowRootInit;
|
20
|
-
static styles: import("lit").CSSResult[];
|
21
|
-
readonly version: string;
|
22
|
-
disconnectedCallback(): void;
|
23
|
-
render(): import("lit").TemplateResult<1>;
|
24
|
-
selectItem(item: GlideCoreTreeItem): void;
|
25
|
-
constructor();
|
26
|
-
private focusedItem?;
|
27
|
-
private privateTabIndex;
|
28
|
-
private selectedItem?;
|
29
|
-
}
|
package/dist/tree.item.d.ts
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
import { LitElement } from 'lit';
|
2
|
-
declare global {
|
3
|
-
interface HTMLElementTagNameMap {
|
4
|
-
'glide-core-tree-item': GlideCoreTreeItem;
|
5
|
-
}
|
6
|
-
}
|
7
|
-
/**
|
8
|
-
* @attr {string} label
|
9
|
-
* @attr {boolean} [expanded=false]
|
10
|
-
* @attr {number} [level=1]
|
11
|
-
* @attr {boolean} [non-collapsible=false]
|
12
|
-
* @attr {boolean} [remove-indentation=false]
|
13
|
-
* @attr {boolean} [selected=false]
|
14
|
-
*
|
15
|
-
* @readonly
|
16
|
-
* @attr {string} [version]
|
17
|
-
*
|
18
|
-
* @slot {GlideCoreTreeItem}
|
19
|
-
* @slot {GlideCoreTreeItemMenu} [menu] - Visible on hover and focus
|
20
|
-
* @slot {Element} [prefix] - An icon before the label
|
21
|
-
* @slot {Element} [suffix] - An icon after the label
|
22
|
-
*
|
23
|
-
* @fires {Event} selected
|
24
|
-
*
|
25
|
-
* @method selectItem - Traverses down the tree, selects the item, then deselects all other items.
|
26
|
-
* @param {GlideCoreTreeItem} item
|
27
|
-
* @returns GlideCoreTreeItem | undefined
|
28
|
-
*/
|
29
|
-
export default class GlideCoreTreeItem extends LitElement {
|
30
|
-
#private;
|
31
|
-
static shadowRootOptions: ShadowRootInit;
|
32
|
-
static styles: import("lit").CSSResult[];
|
33
|
-
expanded: boolean;
|
34
|
-
label?: string;
|
35
|
-
level: number;
|
36
|
-
/**
|
37
|
-
* @default false
|
38
|
-
*/
|
39
|
-
get selected(): boolean;
|
40
|
-
set selected(isSelected: boolean);
|
41
|
-
removeIndentation: boolean;
|
42
|
-
nonCollapsible: boolean;
|
43
|
-
readonly version: string;
|
44
|
-
focus(options?: FocusOptions): void;
|
45
|
-
get privateHasChildTreeItems(): boolean;
|
46
|
-
private get hasExpandIcon();
|
47
|
-
privateToggleExpand(): void;
|
48
|
-
render(): import("lit").TemplateResult<1>;
|
49
|
-
/**
|
50
|
-
* Traverses down the tree, selects the item, then deselects all other items.
|
51
|
-
*/
|
52
|
-
selectItem(item: GlideCoreTreeItem): GlideCoreTreeItem | undefined;
|
53
|
-
private childTreeItems;
|
54
|
-
private hasPrefixIcon;
|
55
|
-
}
|
@@ -1,22 +0,0 @@
|
|
1
|
-
import './icon-button.js';
|
2
|
-
import { LitElement } from 'lit';
|
3
|
-
declare global {
|
4
|
-
interface HTMLElementTagNameMap {
|
5
|
-
'glide-core-tree-item-icon-button': GlideCoreTreeItemIconButton;
|
6
|
-
}
|
7
|
-
}
|
8
|
-
/**
|
9
|
-
* @attr {string} label
|
10
|
-
*
|
11
|
-
* @readonly
|
12
|
-
* @attr {string} [version]
|
13
|
-
*
|
14
|
-
* @slot {Element} - An icon
|
15
|
-
*/
|
16
|
-
export default class GlideCoreTreeItemIconButton extends LitElement {
|
17
|
-
static shadowRootOptions: ShadowRootInit;
|
18
|
-
static styles: import("lit").CSSResult[];
|
19
|
-
label?: string;
|
20
|
-
readonly version: string;
|
21
|
-
render(): import("lit").TemplateResult<1>;
|
22
|
-
}
|
@@ -1 +0,0 @@
|
|
1
|
-
var __decorate=this&&this.__decorate||function(e,t,o,r){var i,n=arguments.length,s=n<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,o):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,r);else for(var l=e.length-1;l>=0;l--)(i=e[l])&&(s=(n<3?i(s):n>3?i(t,o,s):i(t,o))||s);return n>3&&s&&Object.defineProperty(t,o,s),s};import"./icon-button.js";import{html,LitElement}from"lit";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"./tree.item.icon-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 GlideCoreTreeItemIconButton=class GlideCoreTreeItemIconButton extends LitElement{constructor(){super(...arguments),this.version=packageJson.version}static{this.shadowRootOptions={...LitElement.shadowRootOptions,mode:shadowRootMode}}static{this.styles=styles}render(){return html`<glide-core-icon-button class="component" variant="tertiary" tabindex="-1" label="${ifDefined(this.label)}"><slot ${assertSlot()}></slot></glide-core-icon-button>`}};__decorate([property(),required],GlideCoreTreeItemIconButton.prototype,"label",void 0),__decorate([property({reflect:!0})],GlideCoreTreeItemIconButton.prototype,"version",void 0),GlideCoreTreeItemIconButton=__decorate([customElement("glide-core-tree-item-icon-button"),final],GlideCoreTreeItemIconButton);export default GlideCoreTreeItemIconButton;
|
package/dist/tree.item.js
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
var _a,GlideCoreTreeItem_1,__decorate=this&&this.__decorate||function(e,t,o,i){var r,s=arguments.length,l=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,o):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(e,t,o,i);else for(var n=e.length-1;n>=0;n--)(r=e[n])&&(l=(s<3?r(l):s>3?r(t,o,l):r(t,o))||l);return s>3&&l&&Object.defineProperty(t,o,l),l};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{styleMap}from"lit/directives/style-map.js";import{when}from"lit/directives/when.js";import packageJson from"../package.json"with{type:"json"};import{LocalizeController}from"./library/localize.js";import GlideCoreTreeItemMenu from"./tree.item.menu.js";import GlideCoreIconButton from"./icon-button.js";import chevronIcon from"./icons/chevron.js";import styles from"./tree.item.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 GlideCoreTreeItem=class GlideCoreTreeItem extends LitElement{constructor(){super(...arguments),this.expanded=!1,this.level=1,this.removeIndentation=!1,this.nonCollapsible=!1,this.version=packageJson.version,this.childTreeItems=[],this.hasPrefixIcon=!1,this.#e=createRef(),this.#t=!1,this.#o=createRef(),this.#i=new LocalizeController(this),this.#r=createRef(),this.#s=createRef()}static{GlideCoreTreeItem_1=this}static{this.shadowRootOptions={...LitElement.shadowRootOptions,delegatesFocus:!0,mode:shadowRootMode}}static{this.styles=styles}get selected(){return this.#t}set selected(e){const t=e!==this.#t;this.#t=e,e&&t&&this.dispatchEvent(new Event("selected",{bubbles:!0,composed:!0}))}focus(e){this.#o.value?.focus(e),this.#l(0)}get privateHasChildTreeItems(){return this.childTreeItems.length>0}get hasExpandIcon(){return this.privateHasChildTreeItems&&!this.nonCollapsible}privateToggleExpand(){this.expanded=!this.expanded}render(){return html`<div aria-label="${ifDefined(this.label)}" aria-selected="${ifDefined(this.#n)}" aria-expanded="${ifDefined(this.#a)}" class="${classMap({component:!0,expanded:this.expanded,selected:this.selected})}" data-test="component" role="treeitem"><div class="${classMap({"label-container":!0,"prefix-icon":this.hasPrefixIcon,selected:this.selected})}" tabindex="-1" @focusout="${this.#d}" @focusin="${this.#c}" ${ref(this.#o)}><div style="${styleMap({flexShrink:0,width:this.#m})}"></div>${when(!this.removeIndentation||this.hasExpandIcon,(()=>html`<div class="${classMap({"expand-icon-container":!0,expanded:this.expanded})}" data-test="expand-icon-container">${when(this.hasExpandIcon,(()=>chevronIcon))}</div>`))}<slot name="prefix" class="prefix-slot" ${ref(this.#s)} @slotchange="${this.#h}"></slot><div class="${classMap({label:!0,"prefix-icon":this.hasPrefixIcon})}">${this.label}</div><div class="icon-container"><slot name="menu" ${ref(this.#r)} @slotchange="${this.#p}" ${assertSlot([GlideCoreTreeItemMenu],!0)}></slot><slot name="suffix"></slot></div></div><div class="${classMap({"default-slot-container":!0,expanded:this.expanded})}" role="group"><slot @slotchange="${this.#f}" ${ref(this.#e)}></slot></div></div>`}selectItem(e){let t;if(this.#u)for(const o of this.#u)if(e===o)o.setAttribute("selected","true"),t=o;else{o.removeAttribute("selected");const i=o.selectItem(e);i&&(t=i)}return t}#e;#t;#o;#i;#r;#s;get#u(){return this.#e.value?.assignedElements().filter((e=>e instanceof GlideCoreTreeItem_1))}get#a(){return this.privateHasChildTreeItems?this.expanded?"true":"false":void 0}get#n(){return this.privateHasChildTreeItems?void 0:this.selected?"true":"false"}get#m(){return 20*(this.level-1)+"px"}#v(e){return e&&e instanceof HTMLElement&&!(e instanceof GlideCoreTreeItem_1)&&this.contains(e)}#f(){this.#I()}#c(e){this.#v(e.target)&&e.stopPropagation()}#d(e){this.#v(e.relatedTarget)?e.stopPropagation():this.#l(-1)}#p(){if(this.#r.value)for(const e of this.#r.value.assignedElements())e instanceof GlideCoreTreeItemMenu&&this.label&&(e.label=this.#i.term("actionsFor",this.label))}#h(){const e=this.#s.value?.assignedNodes();this.hasPrefixIcon=Boolean(e&&e.length>0)}#l(e){this.#o.value&&(this.#o.value.tabIndex=e);for(const t of this.querySelectorAll("& > glide-core-tree-item-icon-button"))t.tabIndex=e}#I(){const e=[];if(this.#u){for(const t of this.#u)t.level=this.level+1,e.push(t);this.childTreeItems=e}}};__decorate([property({reflect:!0,type:Boolean})],GlideCoreTreeItem.prototype,"expanded",void 0),__decorate([property({reflect:!0}),required],GlideCoreTreeItem.prototype,"label",void 0),__decorate([property({reflect:!0,type:Number})],GlideCoreTreeItem.prototype,"level",void 0),__decorate([property({reflect:!0,type:Boolean})],GlideCoreTreeItem.prototype,"selected",null),__decorate([property({reflect:!0,type:Boolean,attribute:"remove-indentation"})],GlideCoreTreeItem.prototype,"removeIndentation",void 0),__decorate([property({reflect:!0,type:Boolean,attribute:"non-collapsible"})],GlideCoreTreeItem.prototype,"nonCollapsible",void 0),__decorate([property({reflect:!0})],GlideCoreTreeItem.prototype,"version",void 0),__decorate([state()],GlideCoreTreeItem.prototype,"childTreeItems",void 0),__decorate([state()],GlideCoreTreeItem.prototype,"hasPrefixIcon",void 0),GlideCoreTreeItem=GlideCoreTreeItem_1=__decorate([customElement("glide-core-tree-item"),final],GlideCoreTreeItem);export default GlideCoreTreeItem;
|
package/dist/tree.item.menu.d.ts
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
import './menu.js';
|
2
|
-
import './menu.options.js';
|
3
|
-
import { LitElement } from 'lit';
|
4
|
-
declare global {
|
5
|
-
interface HTMLElementTagNameMap {
|
6
|
-
'glide-core-tree-item-menu': GlideCoreTreeItemMenu;
|
7
|
-
}
|
8
|
-
}
|
9
|
-
/**
|
10
|
-
* @attr {string} [label]
|
11
|
-
* @attr {'bottom-start'|'top-start'} [placement='bottom-start']
|
12
|
-
*
|
13
|
-
* @readonly
|
14
|
-
* @attr {string} [version]
|
15
|
-
*
|
16
|
-
* @slot {GlideCoreMenuButton | GlideCoreMenuLink}
|
17
|
-
* @slot {Element} [icon]
|
18
|
-
*/
|
19
|
-
export default class GlideCoreTreeItemMenu extends LitElement {
|
20
|
-
#private;
|
21
|
-
static shadowRootOptions: ShadowRootInit;
|
22
|
-
static styles: import("lit").CSSResult[];
|
23
|
-
placement: 'bottom-start' | 'top-start';
|
24
|
-
label?: string;
|
25
|
-
readonly version: string;
|
26
|
-
click(): void;
|
27
|
-
render(): import("lit").TemplateResult<1>;
|
28
|
-
private hasCustomIcon;
|
29
|
-
}
|
package/dist/tree.item.menu.js
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
var __decorate=this&&this.__decorate||function(e,t,o,r){var i,n=arguments.length,s=n<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,o):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,o,r);else for(var l=e.length-1;l>=0;l--)(i=e[l])&&(s=(n<3?i(s):n>3?i(t,o,s):i(t,o))||s);return n>3&&s&&Object.defineProperty(t,o,s),s};import"./menu.js";import"./menu.options.js";import{html,LitElement}from"lit";import{createRef,ref}from"lit/directives/ref.js";import{customElement,property,state}from"lit/decorators.js";import{styleMap}from"lit/directives/style-map.js";import{when}from"lit/directives/when.js";import{ifDefined}from"lit/directives/if-defined.js";import packageJson from"../package.json"with{type:"json"};import styles from"./tree.item.menu.styles.js";import GlideCoreIconButton from"./icon-button.js";import GlideCoreMenuLink from"./menu.link.js";import GlideCoreMenuButton from"./menu.button.js";import assertSlot from"./library/assert-slot.js";import shadowRootMode from"./library/shadow-root-mode.js";import final from"./library/final.js";let GlideCoreTreeItemMenu=class GlideCoreTreeItemMenu extends LitElement{constructor(){super(...arguments),this.placement="bottom-start",this.version=packageJson.version,this.hasCustomIcon=!1,this.#e=createRef(),this.#t=createRef(),this.#o=createRef()}static{this.shadowRootOptions={...LitElement.shadowRootOptions,mode:shadowRootMode}}static{this.styles=styles}click(){this.#e.value?.click()}render(){return html`<glide-core-menu class="component" placement="${this.placement}" ${ref(this.#o)}><glide-core-menu-options><slot ${assertSlot([GlideCoreMenuButton,GlideCoreMenuLink])}></slot></glide-core-menu-options><glide-core-icon-button data-test="icon-button" slot="target" variant="tertiary" label="${ifDefined(this.label)}" ${ref(this.#e)}><slot name="icon" @slotchange="${this.#r}" ${ref(this.#t)}></slot>${when(!this.hasCustomIcon,(()=>icons.dots))}</glide-core-icon-button></glide-core-menu>`}#e;#t;#o;#r(){const e=this.#t.value?.assignedNodes();this.hasCustomIcon=Boolean(e&&e.length>0)}};__decorate([property({reflect:!0})],GlideCoreTreeItemMenu.prototype,"placement",void 0),__decorate([property()],GlideCoreTreeItemMenu.prototype,"label",void 0),__decorate([property({reflect:!0})],GlideCoreTreeItemMenu.prototype,"version",void 0),__decorate([state()],GlideCoreTreeItemMenu.prototype,"hasCustomIcon",void 0),GlideCoreTreeItemMenu=__decorate([customElement("glide-core-tree-item-menu"),final],GlideCoreTreeItemMenu);export default GlideCoreTreeItemMenu;const icons={dots:html`<svg aria-hidden="true" style="${styleMap({height:"0.875rem",width:"0.25rem"})}" viewBox="0 0 4 18" fill="none" stroke="currentColor" stroke-width="2"><path d="M2 15C2.55228 15 3 15.4477 3 16C3 16.5523 2.55228 17 2 17C1.44772 17 1 16.5523 1 16C1 15.4477 1.44772 15 2 15Z"/><path d="M2 8C2.55228 8 3 8.44772 3 9C3 9.55228 2.55228 10 2 10C1.44772 10 1 9.55228 1 9C1 8.44772 1.44772 8 2 8Z"/><path d="M2 1C2.55228 1 3 1.44772 3 2C3 2.55228 2.55228 3 2 3C1.44772 3 1 2.55228 1 2C1 1.44772 1.44772 1 2 1Z"/></svg>`};
|
@@ -1,17 +0,0 @@
|
|
1
|
-
import{css}from"lit";export default[css`
|
2
|
-
:host {
|
3
|
-
display: contents;
|
4
|
-
}
|
5
|
-
|
6
|
-
.component {
|
7
|
-
display: flex;
|
8
|
-
}
|
9
|
-
|
10
|
-
glide-core-icon-button {
|
11
|
-
display: flex;
|
12
|
-
|
13
|
-
--private-icon-color: var(--private-icon-button-color);
|
14
|
-
--private-hovered-icon-color: var(--private-hovered-icon-button-color);
|
15
|
-
--private-size: 1rem;
|
16
|
-
}
|
17
|
-
`];
|
package/dist/tree.item.styles.js
DELETED
@@ -1,151 +0,0 @@
|
|
1
|
-
import{css}from"lit";import focusOutline from"./styles/focus-outline.js";export default[css`
|
2
|
-
${focusOutline(".label-container:not(.selected):focus-visible")}
|
3
|
-
`,css`
|
4
|
-
:host {
|
5
|
-
cursor: pointer;
|
6
|
-
display: flex;
|
7
|
-
flex-direction: column;
|
8
|
-
}
|
9
|
-
|
10
|
-
.component {
|
11
|
-
display: contents;
|
12
|
-
font-family: var(--glide-core-body-sm-font-family);
|
13
|
-
font-style: var(--glide-core-body-sm-font-style);
|
14
|
-
font-weight: var(--glide-core-body-sm-font-weight);
|
15
|
-
grid-template-columns: repeat(auto-fill, 2.5rem);
|
16
|
-
line-height: 1.25rem;
|
17
|
-
|
18
|
-
--private-color: var(--glide-core-text-body-1);
|
19
|
-
|
20
|
-
&.selected {
|
21
|
-
--private-color: var(--glide-core-text-selected);
|
22
|
-
|
23
|
-
::slotted([slot='prefix']),
|
24
|
-
::slotted([slot='menu']),
|
25
|
-
::slotted([slot='suffix']) {
|
26
|
-
--private-hovered-icon-button-color: var(--glide-core-icon-hover);
|
27
|
-
}
|
28
|
-
}
|
29
|
-
}
|
30
|
-
|
31
|
-
.expand-icon-container {
|
32
|
-
flex-shrink: 0;
|
33
|
-
min-inline-size: 1.5625rem;
|
34
|
-
|
35
|
-
&.expanded {
|
36
|
-
svg {
|
37
|
-
rotate: 0deg;
|
38
|
-
}
|
39
|
-
}
|
40
|
-
|
41
|
-
svg {
|
42
|
-
align-items: center;
|
43
|
-
cursor: pointer;
|
44
|
-
display: flex;
|
45
|
-
justify-content: center;
|
46
|
-
rotate: -90deg;
|
47
|
-
|
48
|
-
@media (prefers-reduced-motion: no-preference) {
|
49
|
-
transition: 250ms rotate ease;
|
50
|
-
}
|
51
|
-
}
|
52
|
-
}
|
53
|
-
|
54
|
-
.prefix-slot {
|
55
|
-
align-items: center;
|
56
|
-
display: flex;
|
57
|
-
}
|
58
|
-
|
59
|
-
.label-and-children {
|
60
|
-
display: flex;
|
61
|
-
flex-direction: column;
|
62
|
-
}
|
63
|
-
|
64
|
-
.label-container {
|
65
|
-
align-items: center;
|
66
|
-
border-radius: 0.5rem;
|
67
|
-
color: var(--private-color);
|
68
|
-
display: flex;
|
69
|
-
font-size: var(--glide-core-body-sm-font-size);
|
70
|
-
padding-block: var(--glide-core-spacing-xxs);
|
71
|
-
padding-inline: var(--glide-core-spacing-xs);
|
72
|
-
|
73
|
-
@media (prefers-reduced-motion: no-preference) {
|
74
|
-
transition: background-color 150ms ease-in-out;
|
75
|
-
}
|
76
|
-
|
77
|
-
&.selected {
|
78
|
-
background-color: var(--glide-core-surface-selected);
|
79
|
-
}
|
80
|
-
|
81
|
-
&:hover {
|
82
|
-
background-color: var(--glide-core-surface-hover);
|
83
|
-
|
84
|
-
&.selected {
|
85
|
-
background-color: var(--glide-core-surface-selected-hover);
|
86
|
-
}
|
87
|
-
}
|
88
|
-
|
89
|
-
&:focus-visible {
|
90
|
-
&:not(&.selected) {
|
91
|
-
/* The outline is inside the component since children have overflow hidden */
|
92
|
-
outline-offset: -2px;
|
93
|
-
}
|
94
|
-
|
95
|
-
&.selected {
|
96
|
-
outline: 1px solid var(--glide-core-icon-selected);
|
97
|
-
outline-offset: -3px;
|
98
|
-
}
|
99
|
-
}
|
100
|
-
}
|
101
|
-
|
102
|
-
::slotted([slot='menu']) {
|
103
|
-
visibility: hidden;
|
104
|
-
}
|
105
|
-
|
106
|
-
::slotted([slot='prefix']),
|
107
|
-
::slotted([slot='menu']),
|
108
|
-
::slotted([slot='suffix']) {
|
109
|
-
--private-icon-button-color: var(--private-color);
|
110
|
-
}
|
111
|
-
|
112
|
-
.label-container:hover,
|
113
|
-
.label-container:focus,
|
114
|
-
.label-container:focus-within,
|
115
|
-
.label-container:focus-visible {
|
116
|
-
::slotted([slot='menu']) {
|
117
|
-
visibility: visible;
|
118
|
-
}
|
119
|
-
}
|
120
|
-
|
121
|
-
.label {
|
122
|
-
margin-inline-end: auto;
|
123
|
-
min-inline-size: 0;
|
124
|
-
overflow: hidden;
|
125
|
-
text-overflow: ellipsis;
|
126
|
-
white-space: nowrap;
|
127
|
-
|
128
|
-
&.prefix-icon {
|
129
|
-
padding-inline-start: var(--glide-core-spacing-xs);
|
130
|
-
}
|
131
|
-
}
|
132
|
-
|
133
|
-
.default-slot-container {
|
134
|
-
block-size: 0;
|
135
|
-
display: flex;
|
136
|
-
flex-direction: column;
|
137
|
-
overflow: hidden;
|
138
|
-
visibility: hidden;
|
139
|
-
|
140
|
-
&.expanded {
|
141
|
-
block-size: auto;
|
142
|
-
visibility: visible;
|
143
|
-
}
|
144
|
-
}
|
145
|
-
|
146
|
-
.icon-container {
|
147
|
-
display: flex;
|
148
|
-
gap: var(--glide-core-spacing-xxs);
|
149
|
-
padding-inline: var(--glide-core-spacing-xxs);
|
150
|
-
}
|
151
|
-
`];
|
package/dist/tree.js
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
var __decorate=this&&this.__decorate||function(e,t,o,r){var s,i=arguments.length,n=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,o):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,o,r);else for(var l=e.length-1;l>=0;l--)(s=e[l])&&(n=(i<3?s(n):i>3?s(t,o,n):s(t,o))||n);return i>3&&n&&Object.defineProperty(t,o,n),n};import{html,LitElement}from"lit";import{createRef,ref}from"lit/directives/ref.js";import{customElement,property,state}from"lit/decorators.js";import packageJson from"../package.json"with{type:"json"};import GlideCoreTreeItem from"./tree.item.js";import styles from"./tree.styles.js";import assertSlot from"./library/assert-slot.js";import shadowRootMode from"./library/shadow-root-mode.js";import final from"./library/final.js";let GlideCoreTree=class GlideCoreTree extends LitElement{static{this.shadowRootOptions={...LitElement.shadowRootOptions,mode:shadowRootMode}}static{this.styles=styles}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("focusin",this.#e),this.removeEventListener("focusout",this.#t)}render(){return html`<div class="component" role="tree" tabindex="${this.privateTabIndex}" @click="${this.#o}" @keydown="${this.#r}"><slot ${ref(this.#s)} ${assertSlot([GlideCoreTreeItem])}></slot></div>`}selectItem(e){if(this.#i)for(const t of this.#i){e===t?(t.setAttribute("selected","true"),this.selectedItem=t):t.removeAttribute("selected");const o=t.selectItem(e);o&&(this.selectedItem=o)}}constructor(){super(),this.version=packageJson.version,this.privateTabIndex=0,this.#s=createRef(),this.addEventListener("focusin",this.#e),this.addEventListener("focusout",this.#t)}#s;get#i(){return this.#s.value?.assignedElements().filter((e=>e instanceof GlideCoreTreeItem))}#n(e){e?.focus(),this.focusedItem=e}#l(){const e=new Set;return[...this.querySelectorAll("glide-core-tree-item")].filter((t=>{const o=t.parentElement?.closest("glide-core-tree-item");return!o||o.expanded&&!e.has(o)||e.add(t),!e.has(t)}))}#o(e){const t=e.target;if(t.closest("glide-core-tree-item-icon-button")??t.closest("glide-core-tree-item-menu"))return;const o=t.closest("glide-core-tree-item");o&&(o.privateHasChildTreeItems&&!o.nonCollapsible?o.privateToggleExpand():this.selectItem(o))}#r(e){if(!["ArrowRight","ArrowLeft","ArrowDown","ArrowUp","Home","End","Enter"].includes(e.key))return;if(["ArrowRight","ArrowLeft","ArrowDown","ArrowUp","Home","End"].includes(e.key)&&e.preventDefault(),e.target&&e.target instanceof HTMLElement&&(e.target.closest("glide-core-tree-item-icon-button")??e.target.closest("glide-core-tree-item-menu")))return;const t=this.#l(),{focusedItem:o}=this,r=t.findIndex((e=>e.matches(":focus")));if("ArrowRight"===e.key&&o?.privateHasChildTreeItems&&(o.expanded?this.#n(o.querySelector("glide-core-tree-item")):o.privateToggleExpand()),"ArrowLeft"===e.key)if(o?.expanded&&!o.nonCollapsible)o.privateToggleExpand();else{const e=o?.parentElement?.closest("glide-core-tree-item");this.#n(e)}"ArrowDown"===e.key&&-1!==r&&r<t.length-1&&this.#n(t[r+1]),"ArrowUp"===e.key&&r>0&&this.#n(t[r-1]),"Home"===e.key&&this.#n(t[0]),"End"===e.key&&this.#n(t.at(-1)),"Enter"===e.key&&o&&(o.privateHasChildTreeItems&&!o.nonCollapsible?o.privateToggleExpand():this.selectItem(o))}#e(e){let t;e.target===this?t=this.selectedItem?.checkVisibility({visibilityProperty:!0})?this.selectedItem:this.#i?.[0]:e.target instanceof GlideCoreTreeItem&&(t=e.target,this.privateTabIndex=-1),this.#n(t)}#t(e){e.relatedTarget&&e.relatedTarget instanceof HTMLElement&&this.contains(e.relatedTarget)||(this.privateTabIndex=0,this.focusedItem=void 0)}};__decorate([property({reflect:!0})],GlideCoreTree.prototype,"version",void 0),__decorate([state()],GlideCoreTree.prototype,"focusedItem",void 0),__decorate([state()],GlideCoreTree.prototype,"privateTabIndex",void 0),__decorate([state()],GlideCoreTree.prototype,"selectedItem",void 0),GlideCoreTree=__decorate([customElement("glide-core-tree"),final],GlideCoreTree);export default GlideCoreTree;
|
package/dist/tree.styles.d.ts
DELETED