diff --git a/.changeset/neat-carpets-applaud.md b/.changeset/neat-carpets-applaud.md new file mode 100644 index 000000000..a52421c1f --- /dev/null +++ b/.changeset/neat-carpets-applaud.md @@ -0,0 +1,5 @@ +--- +'@crowdstrike/glide-core': patch +--- + +Each component now includes a JSDoc comment at the top with its attributes, slots, custom properties, events, properties, and methods. diff --git a/custom-elements.config.js b/custom-elements.config.js new file mode 100644 index 000000000..94f78197f --- /dev/null +++ b/custom-elements.config.js @@ -0,0 +1,34 @@ +// The analyzer expects plugins to be JavaScript. But writing plugins in +// JavaScript is unruly and error prone. So we write them in TypeScript, +// then compile and import them as JavaScript. +import addCustomProperties from './dist/cem-analyzer-plugins/add-custom-properties.js'; +import addEvents from './dist/cem-analyzer-plugins/add-events.js'; +import addRequiredToAttributes from './dist/cem-analyzer-plugins/add-required-to-attributes.js'; +import addSlots from './dist/cem-analyzer-plugins/add-slots.js'; +import modifyVersionAttribute from './dist/cem-analyzer-plugins/modify-version-attribute.js'; +import removeBlockComments from './dist/cem-analyzer-plugins/remove-block-comments.js'; + +export default { + exclude: [ + './src/**/*stories*', + './src/**/*test*', + './src/cem-analzyer-plugins/**', + './src/eslint/**', + './src/icons/**', + './src/library/**', + './src/stylelint/**', + './src/styles/**', + './src/translations/**', + './src/ts-morph/**', + ], + globs: ['./src/*.ts'], + litelement: true, + plugins: [ + removeBlockComments(), + addCustomProperties(), + addEvents(), + addRequiredToAttributes(), + addSlots(), + modifyVersionAttribute(), + ], +}; diff --git a/custom-elements.json b/custom-elements.json new file mode 100644 index 000000000..7a990bb81 --- /dev/null +++ b/custom-elements.json @@ -0,0 +1,12771 @@ +{ + "schemaVersion": "1.0.0", + "readme": "", + "modules": [ + { + "kind": "javascript-module", + "path": "src/accordion.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/accordion.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/accordion.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreAccordion", + "slots": [ + { + "name": "prefix-icon", + "description": "An icon before the label", + "type": { + "text": "Element" + } + }, + { + "name": "suffix-icons", + "description": "Icons after the label", + "type": { + "text": "Element" + } + }, + { + "name": "", + "description": "The content of the accordion", + "required": { + "tag": "required", + "name": "", + "type": "", + "optional": false, + "description": "", + "problems": [], + "source": [ + { + "number": 4, + "source": " @required", + "tokens": { + "start": " ", + "delimiter": "", + "postDelimiter": "", + "tag": "@required", + "postTag": "", + "name": "", + "postName": "", + "type": "", + "postType": "", + "description": "", + "end": "", + "lineEnd": "" + } + } + ] + }, + "type": { + "text": "Element | string" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, delegatesFocus: true, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label", + "reflects": true + }, + { + "kind": "field", + "name": "open", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "open", + "reflects": true + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "method", + "name": "click" + }, + { + "kind": "field", + "name": "hasPrefixIcon", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "hasSuffixIcons", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isClosing", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "#defaultSlotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#detailsElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#isOpen", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#prefixIconSlotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#suffixIconsSlotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#summaryElementRef", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onPrefixIconSlotChange", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onSuffixIconsSlotChange", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onSummaryClick", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "MouseEvent" + } + } + ] + } + ], + "events": [ + { + "name": "toggle", + "type": { + "text": "Event" + } + } + ], + "attributes": [ + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label", + "required": true + }, + { + "name": "open", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "open" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-accordion", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreAccordion", + "module": "src/accordion.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-accordion", + "declaration": { + "name": "GlideCoreAccordion", + "module": "src/accordion.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/button-group.button.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/button-group.button.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/button-group.button.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreButtonGroupButton", + "slots": [ + { + "name": "icon", + "description": "", + "type": { + "text": "Element" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label", + "reflects": true + }, + { + "kind": "field", + "name": "selected", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "selected", + "reflects": true + }, + { + "kind": "field", + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "disabled", + "reflects": true + }, + { + "kind": "field", + "name": "value", + "type": { + "text": "string" + }, + "default": "''", + "attribute": "value", + "reflects": true + }, + { + "kind": "field", + "name": "privateOrientation", + "type": { + "text": "'horizontal' | 'vertical'" + }, + "default": "'horizontal'", + "attribute": "privateOrientation" + }, + { + "kind": "field", + "name": "privateVariant", + "type": { + "text": "'icon-only' | undefined" + }, + "attribute": "privateVariant" + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "method", + "name": "click" + }, + { + "kind": "method", + "name": "focus", + "parameters": [ + { + "name": "options", + "optional": true, + "type": { + "text": "FocusOptions" + } + } + ] + }, + { + "kind": "method", + "name": "privateSelect" + }, + { + "kind": "field", + "name": "hasIcon", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "#componentElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#iconSlotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#isSelected", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "method", + "name": "#onIconSlotChange", + "privacy": "private" + } + ], + "events": [ + { + "name": "selected", + "type": { + "text": "Event" + } + }, + { + "name": "private-selected", + "type": { + "text": "Event" + } + } + ], + "attributes": [ + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label", + "required": true + }, + { + "name": "selected", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "selected" + }, + { + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "disabled" + }, + { + "name": "value", + "type": { + "text": "string" + }, + "default": "''", + "fieldName": "value" + }, + { + "name": "privateOrientation", + "type": { + "text": "'horizontal' | 'vertical'" + }, + "default": "'horizontal'", + "fieldName": "privateOrientation" + }, + { + "name": "privateVariant", + "type": { + "text": "'icon-only' | undefined" + }, + "fieldName": "privateVariant" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-button-group-button", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreButtonGroupButton", + "module": "src/button-group.button.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-button-group-button", + "declaration": { + "name": "GlideCoreButtonGroupButton", + "module": "src/button-group.button.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/button-group.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/button-group.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/button-group.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreButtonGroup", + "slots": [ + { + "name": "", + "description": "", + "required": { + "tag": "required", + "name": "", + "type": "", + "optional": false, + "description": "", + "problems": [], + "source": [ + { + "number": 2, + "source": " @required", + "tokens": { + "start": " ", + "delimiter": "", + "postDelimiter": "", + "tag": "@required", + "postTag": "", + "name": "", + "postName": "", + "type": "", + "postType": "", + "description": "", + "end": "", + "lineEnd": "" + } + } + ] + }, + "type": { + "text": "GlideCoreButtonGroupButton" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label", + "reflects": true + }, + { + "kind": "field", + "name": "variant", + "type": { + "text": "'icon-only' | undefined" + }, + "default": "undefined", + "attribute": "variant", + "reflects": true + }, + { + "kind": "field", + "name": "orientation", + "type": { + "text": "'horizontal' | 'vertical'" + }, + "default": "'horizontal'", + "attribute": "orientation", + "reflects": true + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "field", + "name": "#orientation", + "privacy": "private", + "type": { + "text": "'horizontal' | 'vertical'" + }, + "default": "'horizontal'" + }, + { + "kind": "field", + "name": "#slotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#variant", + "privacy": "private", + "type": { + "text": "'icon-only' | undefined" + } + }, + { + "kind": "field", + "name": "#buttonElements", + "privacy": "private", + "readonly": true + }, + { + "kind": "method", + "name": "#onSlotChange", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onSlotClick", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "PointerEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onSlotKeydown", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "KeyboardEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onSlotSelected", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "Event" + } + } + ] + } + ], + "attributes": [ + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label", + "required": true + }, + { + "name": "variant", + "type": { + "text": "'icon-only' | undefined" + }, + "default": "undefined", + "fieldName": "variant" + }, + { + "name": "orientation", + "type": { + "text": "'horizontal' | 'vertical'" + }, + "default": "'horizontal'", + "fieldName": "orientation" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-button-group", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreButtonGroup", + "module": "src/button-group.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-button-group", + "declaration": { + "name": "GlideCoreButtonGroup", + "module": "src/button-group.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/button.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/button.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/button.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreButton", + "slots": [ + { + "name": "prefix-icon", + "description": "An icon before the label", + "type": { + "text": "Element" + } + }, + { + "name": "suffix-icon", + "description": "An icon after the label", + "type": { + "text": "Element" + } + } + ], + "members": [ + { + "kind": "field", + "name": "formAssociated", + "type": { + "text": "boolean" + }, + "static": true, + "default": "true" + }, + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, delegatesFocus: true, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "disabled", + "reflects": true + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label", + "reflects": true + }, + { + "kind": "field", + "name": "name", + "type": { + "text": "string" + }, + "default": "''", + "attribute": "name", + "reflects": true + }, + { + "kind": "field", + "name": "size", + "type": { + "text": "'large' | 'small'" + }, + "default": "'large'", + "attribute": "size", + "reflects": true + }, + { + "kind": "field", + "name": "type", + "type": { + "text": "'button' | 'submit' | 'reset'" + }, + "default": "'button'", + "attribute": "type", + "reflects": true + }, + { + "kind": "field", + "name": "value", + "type": { + "text": "string" + }, + "default": "''", + "attribute": "value", + "reflects": true + }, + { + "kind": "field", + "name": "variant", + "type": { + "text": "'primary' | 'secondary' | 'tertiary'" + }, + "default": "'primary'", + "attribute": "variant", + "reflects": true + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "field", + "name": "form", + "type": { + "text": "HTMLFormElement | null" + }, + "readonly": true + }, + { + "kind": "method", + "name": "click" + }, + { + "kind": "field", + "name": "hasPrefixIcon", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "hasSuffixIcon", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "#buttonElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#internals", + "privacy": "private", + "type": { + "text": "ElementInternals" + } + }, + { + "kind": "field", + "name": "#prefixIconSlotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#suffixIconSlotElementRef", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onClick", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onPrefixIconSlotChange", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onSuffixIconSlotChange", + "privacy": "private" + } + ], + "attributes": [ + { + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "disabled" + }, + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label", + "required": true + }, + { + "name": "name", + "type": { + "text": "string" + }, + "default": "''", + "fieldName": "name" + }, + { + "name": "size", + "type": { + "text": "'large' | 'small'" + }, + "default": "'large'", + "fieldName": "size" + }, + { + "name": "type", + "type": { + "text": "'button' | 'submit' | 'reset'" + }, + "default": "'button'", + "fieldName": "type" + }, + { + "name": "value", + "type": { + "text": "string" + }, + "default": "''", + "fieldName": "value" + }, + { + "name": "variant", + "type": { + "text": "'primary' | 'secondary' | 'tertiary'" + }, + "default": "'primary'", + "fieldName": "variant" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-button", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreButton", + "module": "src/button.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-button", + "declaration": { + "name": "GlideCoreButton", + "module": "src/button.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/checkbox-group.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/checkbox-group.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/checkbox-group.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreCheckboxGroup", + "slots": [ + { + "name": "", + "description": "", + "required": { + "tag": "required", + "name": "", + "type": "", + "optional": false, + "description": "", + "problems": [], + "source": [ + { + "number": 3, + "source": " @required", + "tokens": { + "start": " ", + "delimiter": "", + "postDelimiter": "", + "tag": "@required", + "postTag": "", + "name": "", + "postName": "", + "type": "", + "postType": "", + "description": "", + "end": "", + "lineEnd": "" + } + }, + { + "number": 4, + "source": " ", + "tokens": { + "start": " ", + "delimiter": "", + "postDelimiter": "", + "tag": "", + "postTag": "", + "name": "", + "postName": "", + "type": "", + "postType": "", + "description": "", + "end": "", + "lineEnd": "" + } + }, + { + "number": 5, + "source": " */", + "tokens": { + "start": " ", + "delimiter": "", + "postDelimiter": "", + "tag": "", + "postTag": "", + "name": "", + "postName": "", + "type": "", + "postType": "", + "description": "", + "end": "*/", + "lineEnd": "" + } + } + ] + }, + "type": { + "text": "GlideCoreCheckbox" + } + }, + { + "name": "description", + "description": "Additional information or context", + "type": { + "text": "Element | string" + } + } + ], + "members": [ + { + "kind": "field", + "name": "formAssociated", + "type": { + "text": "boolean" + }, + "static": true, + "default": "true" + }, + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "disabled", + "reflects": true + }, + { + "kind": "field", + "name": "hideLabel", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "hide-label" + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label", + "reflects": true + }, + { + "kind": "field", + "name": "name", + "type": { + "text": "string" + }, + "default": "''", + "attribute": "name", + "reflects": true + }, + { + "kind": "field", + "name": "orientation", + "default": "'horizontal'", + "type": { + "text": "'horizontal'" + }, + "attribute": "orientation", + "reflects": true + }, + { + "kind": "field", + "name": "privateSplit", + "type": { + "text": "'left' | 'middle' | undefined" + }, + "attribute": "privateSplit" + }, + { + "kind": "field", + "name": "required", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "required", + "reflects": true + }, + { + "kind": "field", + "name": "summary", + "type": { + "text": "string | undefined" + }, + "attribute": "summary", + "reflects": true + }, + { + "kind": "field", + "name": "tooltip", + "type": { + "text": "string | undefined" + }, + "attribute": "tooltip", + "reflects": true + }, + { + "kind": "field", + "name": "value", + "type": { + "text": "string[]" + }, + "default": "[]", + "attribute": "value", + "reflects": true + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "method", + "name": "checkValidity", + "return": { + "type": { + "text": "boolean" + } + } + }, + { + "kind": "field", + "name": "form", + "type": { + "text": "HTMLFormElement | null" + }, + "readonly": true + }, + { + "kind": "field", + "name": "validity", + "type": { + "text": "ValidityState" + }, + "readonly": true + }, + { + "kind": "method", + "name": "focus", + "parameters": [ + { + "name": "options", + "optional": true, + "type": { + "text": "FocusOptions" + } + } + ] + }, + { + "kind": "method", + "name": "formAssociatedCallback", + "return": { + "type": { + "text": "void" + } + } + }, + { + "kind": "method", + "name": "formResetCallback", + "return": { + "type": { + "text": "void" + } + } + }, + { + "kind": "method", + "name": "reportValidity", + "return": { + "type": { + "text": "boolean" + } + } + }, + { + "kind": "method", + "name": "resetValidityFeedback", + "return": { + "type": { + "text": "void" + } + } + }, + { + "kind": "method", + "name": "setCustomValidity", + "return": { + "type": { + "text": "void" + } + }, + "parameters": [ + { + "name": "message", + "type": { + "text": "string" + } + } + ] + }, + { + "kind": "method", + "name": "setValidity", + "return": { + "type": { + "text": "void" + } + }, + "parameters": [ + { + "name": "flags", + "optional": true, + "type": { + "text": "ValidityStateFlags" + } + }, + { + "name": "message", + "optional": true, + "type": { + "text": "string" + } + } + ] + }, + { + "kind": "field", + "name": "isBlurring", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isCheckingValidity", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isReportValidityOrSubmit", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "validityMessage", + "type": { + "text": "string | undefined" + }, + "privacy": "private" + }, + { + "kind": "field", + "name": "#componentElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#defaultSlotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#internals", + "privacy": "private", + "type": { + "text": "ElementInternals" + } + }, + { + "kind": "field", + "name": "#isDisabled", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#isRequired", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#value", + "privacy": "private", + "type": { + "text": "string[]" + }, + "default": "[]" + }, + { + "kind": "field", + "name": "#checkboxes", + "privacy": "private", + "readonly": true + }, + { + "kind": "field", + "name": "#onFormdata", + "privacy": "private" + }, + { + "kind": "field", + "name": "#isShowValidationFeedback", + "privacy": "private", + "readonly": true + }, + { + "kind": "method", + "name": "#onBlur", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onCheckboxBlur", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "FocusEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onCheckboxChange", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "Event" + } + } + ] + }, + { + "kind": "method", + "name": "#onCheckboxesValueChange", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "CustomEvent<{ new: string; old: string }>" + } + } + ] + } + ], + "events": [ + { + "name": "invalid", + "type": { + "text": "Event" + } + } + ], + "attributes": [ + { + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "disabled" + }, + { + "name": "hide-label", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "hideLabel" + }, + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label", + "required": true + }, + { + "name": "name", + "type": { + "text": "string" + }, + "default": "''", + "fieldName": "name" + }, + { + "name": "orientation", + "default": "'horizontal'", + "type": { + "text": "'horizontal'" + }, + "fieldName": "orientation" + }, + { + "name": "privateSplit", + "type": { + "text": "'left' | 'middle' | undefined" + }, + "fieldName": "privateSplit" + }, + { + "name": "required", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "required" + }, + { + "name": "summary", + "type": { + "text": "string | undefined" + }, + "fieldName": "summary" + }, + { + "name": "tooltip", + "type": { + "text": "string | undefined" + }, + "fieldName": "tooltip" + }, + { + "name": "value", + "type": { + "text": "string[]" + }, + "default": "[]", + "fieldName": "value" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-checkbox-group", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreCheckboxGroup", + "module": "src/checkbox-group.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-checkbox-group", + "declaration": { + "name": "GlideCoreCheckboxGroup", + "module": "src/checkbox-group.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/checkbox.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/checkbox.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/checkbox.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreCheckbox", + "slots": [ + { + "name": "private-icon", + "description": "", + "type": { + "text": "Element" + } + }, + { + "name": "description", + "description": "Additional information or context", + "type": { + "text": "Element | string" + } + } + ], + "members": [ + { + "kind": "field", + "name": "formAssociated", + "type": { + "text": "boolean" + }, + "static": true, + "default": "true" + }, + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "checked", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "checked" + }, + { + "kind": "field", + "name": "privateInternallyInert", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "private-internally-inert" + }, + { + "kind": "field", + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "disabled", + "reflects": true + }, + { + "kind": "field", + "name": "hideLabel", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "hide-label" + }, + { + "kind": "field", + "name": "indeterminate", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "indeterminate" + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "default": "undefined", + "attribute": "label", + "reflects": true + }, + { + "kind": "field", + "name": "orientation", + "type": { + "text": "'horizontal' | 'vertical'" + }, + "default": "'horizontal'", + "attribute": "orientation", + "reflects": true + }, + { + "kind": "field", + "name": "name", + "type": { + "text": "string" + }, + "default": "''", + "attribute": "name", + "reflects": true + }, + { + "kind": "field", + "name": "privateLabelTooltipOffset", + "type": { + "text": "number" + }, + "default": "4", + "attribute": "private-label-tooltip-offset", + "reflects": true + }, + { + "kind": "field", + "name": "privateShowLabelTooltip", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "private-show-label-tooltip", + "reflects": true + }, + { + "kind": "field", + "name": "privateDisableLabelTooltip", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "private-disable-label-tooltip", + "reflects": true + }, + { + "kind": "field", + "name": "privateSize", + "type": { + "text": "'large' | 'small'" + }, + "default": "'large'", + "attribute": "private-size" + }, + { + "kind": "field", + "name": "privateSplit", + "type": { + "text": "'left' | 'middle' | undefined" + }, + "attribute": "privateSplit" + }, + { + "kind": "field", + "name": "privateVariant", + "type": { + "text": "'minimal' | undefined" + }, + "attribute": "private-variant" + }, + { + "kind": "field", + "name": "required", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "required", + "reflects": true + }, + { + "kind": "field", + "name": "summary", + "type": { + "text": "string | undefined" + }, + "attribute": "summary", + "reflects": true + }, + { + "kind": "field", + "name": "tooltip", + "type": { + "text": "string | undefined" + }, + "attribute": "tooltip", + "reflects": true + }, + { + "kind": "field", + "name": "value", + "type": { + "text": "string" + }, + "default": "undefined", + "attribute": "value", + "reflects": true + }, + { + "kind": "field", + "name": "privateIsReportValidityOrSubmit", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "privateIsReportValidityOrSubmit" + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "field", + "name": "form", + "type": { + "text": "HTMLFormElement | null" + }, + "readonly": true + }, + { + "kind": "method", + "name": "checkValidity", + "return": { + "type": { + "text": "boolean" + } + } + }, + { + "kind": "method", + "name": "click" + }, + { + "kind": "field", + "name": "validity", + "type": { + "text": "ValidityState" + }, + "readonly": true + }, + { + "kind": "method", + "name": "focus", + "parameters": [ + { + "name": "options", + "optional": true, + "type": { + "text": "FocusOptions" + } + } + ] + }, + { + "kind": "method", + "name": "formAssociatedCallback", + "return": { + "type": { + "text": "void" + } + } + }, + { + "kind": "method", + "name": "formResetCallback", + "return": { + "type": { + "text": "void" + } + } + }, + { + "kind": "method", + "name": "reportValidity", + "return": { + "type": { + "text": "boolean" + } + } + }, + { + "kind": "method", + "name": "resetValidityFeedback", + "return": { + "type": { + "text": "void" + } + } + }, + { + "kind": "method", + "name": "setCustomValidity", + "return": { + "type": { + "text": "void" + } + }, + "parameters": [ + { + "name": "message", + "type": { + "text": "string" + } + } + ] + }, + { + "kind": "method", + "name": "setValidity", + "return": { + "type": { + "text": "void" + } + }, + "parameters": [ + { + "name": "flags", + "optional": true, + "type": { + "text": "ValidityStateFlags" + } + }, + { + "name": "message", + "optional": true, + "type": { + "text": "string" + } + } + ] + }, + { + "kind": "field", + "name": "isBlurring", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isCheckingValidity", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isLabelOverflow", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "validityMessage", + "type": { + "text": "string | undefined" + }, + "privacy": "private" + }, + { + "kind": "field", + "name": "#inputElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#internals", + "privacy": "private", + "type": { + "text": "ElementInternals" + } + }, + { + "kind": "field", + "name": "#intersectionObserver", + "privacy": "private", + "type": { + "text": "IntersectionObserver | undefined" + } + }, + { + "kind": "field", + "name": "#label", + "privacy": "private", + "type": { + "text": "string | undefined" + } + }, + { + "kind": "field", + "name": "#labelElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#value", + "privacy": "private", + "type": { + "text": "string" + }, + "default": "''" + }, + { + "kind": "field", + "name": "#onFormdata", + "privacy": "private" + }, + { + "kind": "field", + "name": "#isShowValidationFeedback", + "privacy": "private", + "readonly": true + }, + { + "kind": "method", + "name": "#onBlur", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onInputChangeOrInput", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "Event" + } + } + ] + }, + { + "kind": "method", + "name": "#onInputKeydown", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "KeyboardEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#updateLabelOverflow", + "privacy": "private" + } + ], + "events": [ + { + "name": "change", + "type": { + "text": "Event" + } + }, + { + "name": "invalid", + "type": { + "text": "Event" + } + }, + { + "name": "private-value-change", + "type": { + "text": "CustomEvent" + } + } + ], + "attributes": [ + { + "name": "checked", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "checked" + }, + { + "name": "private-internally-inert", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "privateInternallyInert" + }, + { + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "disabled" + }, + { + "name": "hide-label", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "hideLabel" + }, + { + "name": "indeterminate", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "indeterminate" + }, + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "default": "undefined", + "fieldName": "label", + "required": true + }, + { + "name": "orientation", + "type": { + "text": "'horizontal' | 'vertical'" + }, + "default": "'horizontal'", + "fieldName": "orientation" + }, + { + "name": "name", + "type": { + "text": "string" + }, + "default": "''", + "fieldName": "name" + }, + { + "name": "private-label-tooltip-offset", + "type": { + "text": "number" + }, + "default": "4", + "fieldName": "privateLabelTooltipOffset" + }, + { + "name": "private-show-label-tooltip", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "privateShowLabelTooltip" + }, + { + "name": "private-disable-label-tooltip", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "privateDisableLabelTooltip" + }, + { + "name": "private-size", + "type": { + "text": "'large' | 'small'" + }, + "default": "'large'", + "fieldName": "privateSize" + }, + { + "name": "privateSplit", + "type": { + "text": "'left' | 'middle' | undefined" + }, + "fieldName": "privateSplit" + }, + { + "name": "private-variant", + "type": { + "text": "'minimal' | undefined" + }, + "fieldName": "privateVariant" + }, + { + "name": "required", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "required" + }, + { + "name": "summary", + "type": { + "text": "string | undefined" + }, + "fieldName": "summary" + }, + { + "name": "tooltip", + "type": { + "text": "string | undefined" + }, + "fieldName": "tooltip" + }, + { + "name": "value", + "type": { + "text": "string" + }, + "default": "undefined", + "fieldName": "value" + }, + { + "name": "privateIsReportValidityOrSubmit", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "privateIsReportValidityOrSubmit" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-checkbox", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreCheckbox", + "module": "src/checkbox.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-checkbox", + "declaration": { + "name": "GlideCoreCheckbox", + "module": "src/checkbox.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/drawer.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/drawer.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/drawer.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreDrawer", + "cssProperties": [ + { + "name": "--width", + "default": "27.375rem", + "description": "The width the drawer" + } + ], + "slots": [ + { + "name": "", + "description": "The content of the drawer", + "required": { + "tag": "required", + "name": "", + "type": "", + "optional": false, + "description": "", + "problems": [], + "source": [ + { + "number": 4, + "source": " @required", + "tokens": { + "start": " ", + "delimiter": "", + "postDelimiter": "", + "tag": "@required", + "postTag": "", + "name": "", + "postName": "", + "type": "", + "postType": "", + "description": "", + "end": "", + "lineEnd": "" + } + } + ] + }, + "type": { + "text": "Element | string" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label", + "reflects": true + }, + { + "kind": "field", + "name": "pinned", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "pinned", + "reflects": true + }, + { + "kind": "field", + "name": "open", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "open", + "reflects": true + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "field", + "name": "#closeAnimation", + "privacy": "private", + "type": { + "text": "Animation | undefined" + } + }, + { + "kind": "field", + "name": "#componentElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#defaultSlotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#isOpen", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#openAnimation", + "privacy": "private", + "type": { + "text": "Animation | undefined" + } + } + ], + "events": [ + { + "name": "toggle", + "type": { + "text": "Event" + } + } + ], + "attributes": [ + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label", + "required": true + }, + { + "name": "pinned", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "pinned" + }, + { + "name": "open", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "open" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-drawer", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreDrawer", + "module": "src/drawer.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-drawer", + "declaration": { + "name": "GlideCoreDrawer", + "module": "src/drawer.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/dropdown.option.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/dropdown.option.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/dropdown.option.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreDropdownOption", + "slots": [ + { + "name": "icon", + "description": "An icon before the label", + "type": { + "text": "Element" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "disabled", + "reflects": true + }, + { + "kind": "field", + "name": "editable", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "editable", + "reflects": true + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "default": "undefined", + "attribute": "label", + "reflects": true + }, + { + "kind": "field", + "name": "privateIndeterminate", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "private-indeterminate" + }, + { + "kind": "field", + "name": "privateIsEditActive", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "privateIsEditActive" + }, + { + "kind": "field", + "name": "privateMultiple", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "private-multiple" + }, + { + "kind": "field", + "name": "selected", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "selected", + "reflects": true + }, + { + "kind": "field", + "name": "privateSize", + "type": { + "text": "'large' | 'small'" + }, + "default": "'large'", + "attribute": "private-size", + "reflects": true + }, + { + "kind": "field", + "name": "privateActive", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "privateActive" + }, + { + "kind": "field", + "name": "privateIsTooltipOpen", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "privateIsTooltipOpen" + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "field", + "name": "isMultiple", + "privacy": "private", + "readonly": true + }, + { + "kind": "method", + "name": "click" + }, + { + "kind": "field", + "name": "value", + "type": { + "text": "string" + }, + "default": "''", + "attribute": "value", + "reflects": true + }, + { + "kind": "method", + "name": "privateEdit" + }, + { + "kind": "method", + "name": "privateUpdateCheckbox" + }, + { + "kind": "field", + "name": "isLabelOverflow", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "#checkboxElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#componentElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#id", + "privacy": "private" + }, + { + "kind": "field", + "name": "#intersectionObserver", + "privacy": "private", + "type": { + "text": "IntersectionObserver | undefined" + } + }, + { + "kind": "field", + "name": "#isDisabled", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#isEditable", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#label", + "privacy": "private", + "type": { + "text": "string | undefined" + } + }, + { + "kind": "field", + "name": "#labelElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#selected", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#value", + "privacy": "private", + "type": { + "text": "string" + }, + "default": "''" + }, + { + "kind": "field", + "name": "#optionElements", + "privacy": "private", + "readonly": true + }, + { + "kind": "method", + "name": "#onCheckboxClick", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "MouseEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onEditButtonMouseout", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onEditButtonMouseover", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onTooltipToggle", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "Event" + } + } + ] + }, + { + "kind": "method", + "name": "#updateLabelOverflow", + "privacy": "private" + } + ], + "events": [ + { + "name": "edit", + "type": { + "text": "Event" + } + }, + { + "name": "private-editable-change", + "type": { + "text": "Event" + } + }, + { + "name": "private-label-change", + "type": { + "text": "Event" + } + }, + { + "name": "private-selected-change", + "type": { + "text": "Event" + } + }, + { + "name": "private-value-change", + "type": { + "text": "CustomEvent" + } + } + ], + "attributes": [ + { + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "disabled" + }, + { + "name": "editable", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "editable" + }, + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "default": "undefined", + "fieldName": "label", + "required": true + }, + { + "name": "private-indeterminate", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "privateIndeterminate" + }, + { + "name": "privateIsEditActive", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "privateIsEditActive" + }, + { + "name": "private-multiple", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "privateMultiple" + }, + { + "name": "selected", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "selected" + }, + { + "name": "private-size", + "type": { + "text": "'large' | 'small'" + }, + "default": "'large'", + "fieldName": "privateSize" + }, + { + "name": "privateActive", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "privateActive" + }, + { + "name": "privateIsTooltipOpen", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "privateIsTooltipOpen" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + }, + { + "name": "value", + "type": { + "text": "string" + }, + "default": "''", + "fieldName": "value" + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-dropdown-option", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreDropdownOption", + "module": "src/dropdown.option.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-dropdown-option", + "declaration": { + "name": "GlideCoreDropdownOption", + "module": "src/dropdown.option.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/dropdown.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/dropdown.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/dropdown.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreDropdown", + "slots": [ + { + "name": "icon:value", + "description": "Icons for the selected option or options. Slot one icon per option. \\`\\` should be equal to the \\`value\\` of each option.", + "type": { + "text": "Element" + } + }, + { + "name": "", + "description": "", + "required": { + "tag": "required", + "name": "", + "type": "", + "optional": false, + "description": "", + "problems": [], + "source": [ + { + "number": 2, + "source": " @required", + "tokens": { + "start": " ", + "delimiter": "", + "postDelimiter": "", + "tag": "@required", + "postTag": "", + "name": "", + "postName": "", + "type": "", + "postType": "", + "description": "", + "end": "", + "lineEnd": "" + } + } + ] + }, + "type": { + "text": "GlideCoreDropdownOption" + } + }, + { + "name": "description", + "description": "Additional information or context", + "type": { + "text": "Element | string" + } + } + ], + "members": [ + { + "kind": "field", + "name": "formAssociated", + "type": { + "text": "boolean" + }, + "static": true, + "default": "true" + }, + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "addButtonLabel", + "type": { + "text": "string | undefined" + }, + "attribute": "add-button-label", + "reflects": true + }, + { + "kind": "field", + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "disabled", + "reflects": true + }, + { + "kind": "field", + "name": "filterable", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "filterable", + "reflects": true + }, + { + "kind": "field", + "name": "hideLabel", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "hide-label", + "reflects": true + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label", + "reflects": true + }, + { + "kind": "field", + "name": "name", + "type": { + "text": "string" + }, + "default": "''", + "attribute": "name", + "reflects": true + }, + { + "kind": "field", + "name": "open", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "open", + "reflects": true + }, + { + "kind": "field", + "name": "orientation", + "type": { + "text": "'horizontal' | 'vertical'" + }, + "default": "'horizontal'", + "attribute": "orientation", + "reflects": true + }, + { + "kind": "field", + "name": "placeholder", + "type": { + "text": "string | undefined" + }, + "attribute": "placeholder", + "reflects": true + }, + { + "kind": "field", + "name": "privateSplit", + "type": { + "text": "'left' | 'middle' | undefined" + }, + "attribute": "privateSplit" + }, + { + "kind": "field", + "name": "readonly", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "readonly", + "reflects": true + }, + { + "kind": "field", + "name": "selectAll", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "select-all", + "reflects": true + }, + { + "kind": "field", + "name": "required", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "required", + "reflects": true + }, + { + "kind": "field", + "name": "multiple", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "multiple", + "reflects": true + }, + { + "kind": "field", + "name": "size", + "type": { + "text": "'large' | 'small'" + }, + "default": "'large'", + "attribute": "size", + "reflects": true + }, + { + "kind": "field", + "name": "tooltip", + "type": { + "text": "string | undefined" + }, + "attribute": "tooltip", + "reflects": true + }, + { + "kind": "field", + "name": "value", + "type": { + "text": "string[]" + }, + "default": "[]", + "attribute": "value" + }, + { + "kind": "field", + "name": "variant", + "type": { + "text": "'quiet' | undefined" + }, + "attribute": "variant", + "reflects": true + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "field", + "name": "activeOption", + "privacy": "private", + "readonly": true + }, + { + "kind": "method", + "name": "checkValidity", + "return": { + "type": { + "text": "boolean" + } + } + }, + { + "kind": "method", + "name": "click" + }, + { + "kind": "field", + "name": "selectedOptions", + "privacy": "private", + "readonly": true + }, + { + "kind": "field", + "name": "lastSelectedOption", + "privacy": "private", + "readonly": true + }, + { + "kind": "field", + "name": "isAllSelected", + "privacy": "private", + "readonly": true + }, + { + "kind": "field", + "name": "isSomeSelected", + "privacy": "private", + "readonly": true + }, + { + "kind": "field", + "name": "internalLabel", + "privacy": "private", + "readonly": true + }, + { + "kind": "method", + "name": "filter", + "return": { + "type": { + "text": "Promise" + } + }, + "parameters": [ + { + "name": "query", + "type": { + "text": "string" + } + } + ] + }, + { + "kind": "method", + "name": "focus", + "parameters": [ + { + "name": "options", + "optional": true, + "type": { + "text": "FocusOptions" + } + } + ] + }, + { + "kind": "field", + "name": "form", + "type": { + "text": "HTMLFormElement | null" + }, + "readonly": true + }, + { + "kind": "field", + "name": "validity", + "type": { + "text": "ValidityState" + }, + "readonly": true + }, + { + "kind": "method", + "name": "formAssociatedCallback", + "return": { + "type": { + "text": "void" + } + } + }, + { + "kind": "method", + "name": "formResetCallback", + "return": { + "type": { + "text": "void" + } + } + }, + { + "kind": "method", + "name": "reportValidity", + "return": { + "type": { + "text": "boolean" + } + } + }, + { + "kind": "method", + "name": "resetValidityFeedback", + "return": { + "type": { + "text": "void" + } + } + }, + { + "kind": "method", + "name": "setCustomValidity", + "return": { + "type": { + "text": "void" + } + }, + "parameters": [ + { + "name": "message", + "type": { + "text": "string" + } + } + ] + }, + { + "kind": "method", + "name": "setValidity", + "return": { + "type": { + "text": "void" + } + }, + "parameters": [ + { + "name": "flags", + "optional": true, + "type": { + "text": "ValidityStateFlags" + } + }, + { + "name": "message", + "optional": true, + "type": { + "text": "string" + } + } + ] + }, + { + "kind": "field", + "name": "ariaActivedescendant", + "type": { + "text": "string" + }, + "privacy": "private", + "default": "''" + }, + { + "kind": "field", + "name": "inputValue", + "type": { + "text": "string" + }, + "privacy": "private", + "default": "''" + }, + { + "kind": "field", + "name": "isBlurring", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isCheckingValidity", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isCommunicateItemCountToScreenreaders", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isFilterable", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isFiltering", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isInputOverflow", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isInputTooltipOpen", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isInternalLabelOverflow", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isInternalLabelTooltipOpen", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isNoResults", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isReportValidityOrSubmit", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isShowSingleSelectIcon", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "itemCount", + "type": { + "text": "number" + }, + "privacy": "private", + "default": "0" + }, + { + "kind": "field", + "name": "tagOverflowLimit", + "type": { + "text": "number" + }, + "privacy": "private", + "default": "0" + }, + { + "kind": "field", + "name": "validityMessage", + "type": { + "text": "string | undefined" + }, + "privacy": "private" + }, + { + "kind": "field", + "name": "#addButtonElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#cleanUpFloatingUi", + "privacy": "private", + "type": { + "text": "ReturnType | undefined" + } + }, + { + "kind": "field", + "name": "#componentElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#defaultSlotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#dropdownElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#editButtonElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#inputElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#internalLabelElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#internals", + "privacy": "private", + "type": { + "text": "ElementInternals" + } + }, + { + "kind": "field", + "name": "#isComponentClick", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#isDisabled", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#isEditingOrRemovingTag", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#isFilterable", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#isMultiple", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#isOpen", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#isOpenViaClick", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#isOverflowTest", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#isSelectionChangeFromSelectAll", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#isSelectionViaSpaceOrEnter", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#isSettingValueProgrammatically", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#localize", + "privacy": "private", + "default": "new LocalizeController(this)" + }, + { + "kind": "field", + "name": "#optionsAndFooterElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#previouslyActiveOption", + "privacy": "private", + "type": { + "text": "GlideCoreDropdownOption | undefined" + } + }, + { + "kind": "field", + "name": "#primaryButtonElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#selectAllElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#shadowRoot", + "privacy": "private", + "type": { + "text": "ShadowRoot | undefined" + } + }, + { + "kind": "field", + "name": "#size", + "privacy": "private", + "type": { + "text": "'large' | 'small'" + }, + "default": "'large'" + }, + { + "kind": "field", + "name": "#tagsElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#value", + "privacy": "private", + "type": { + "text": "string[]" + }, + "default": "[]" + }, + { + "kind": "field", + "name": "#onDocumentClick", + "privacy": "private" + }, + { + "kind": "field", + "name": "#onFormdata", + "privacy": "private" + }, + { + "kind": "method", + "name": "#hide", + "privacy": "private" + }, + { + "kind": "field", + "name": "#isShowValidationFeedback", + "privacy": "private", + "readonly": true + }, + { + "kind": "method", + "name": "#onAddButtonClick", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onAddButtonFocusin", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onAddButtonMouseover", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onComponentMouseup", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onDefaultSlotChange", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onDropdownAndOptionsFocusin", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "FocusEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onDropdownAndOptionsFocusout", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "FocusEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onDropdownAndOptionsKeydown", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "KeyboardEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onDropdownClick", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "MouseEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onDropdownMousedown", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "FocusEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onEditButtonClick", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onInputBlur", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onInputFocus", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onInputInput", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "Event" + } + } + ] + }, + { + "kind": "method", + "name": "#onInputKeydown", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "KeyboardEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onInputResize", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onInternalLabelResize", + "privacy": "private" + }, + { + "kind": "field", + "name": "#optionElements", + "privacy": "private", + "readonly": true + }, + { + "kind": "field", + "name": "#optionElementsIncludingSelectAll", + "privacy": "private", + "readonly": true + }, + { + "kind": "field", + "name": "#optionElementsNotHidden", + "privacy": "private", + "readonly": true + }, + { + "kind": "field", + "name": "#optionElementsNotHiddenIncludingSelectAll", + "privacy": "private", + "readonly": true + }, + { + "kind": "method", + "name": "#onOptionsChange", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "Event" + } + } + ] + }, + { + "kind": "method", + "name": "#onOptionsClick", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "PointerEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onOptionsEditableChange", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onOptionsFocusin", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "FocusEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onOptionsLabelChange", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onOptionsMousedown", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "MouseEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onOptionsMouseover", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "MouseEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onOptionsSelectedChange", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "Event" + } + } + ] + }, + { + "kind": "method", + "name": "#onOptionsValueChange", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "CustomEvent<{ old: string; new: string }>" + } + } + ] + }, + { + "kind": "method", + "name": "#onPrimaryButtonFocusin", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onPrimaryButtonFocusout", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onTagEdit", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onTagRemove", + "privacy": "private", + "parameters": [ + { + "name": "id", + "type": { + "text": "string" + } + } + ] + }, + { + "kind": "method", + "name": "#onTooltipToggle", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "Event" + } + } + ] + }, + { + "kind": "method", + "name": "#selectAllOrNone", + "privacy": "private" + }, + { + "kind": "method", + "name": "#setTagOverflowLimit", + "privacy": "private" + }, + { + "kind": "method", + "name": "#show", + "privacy": "private" + }, + { + "kind": "method", + "name": "#unfilter", + "privacy": "private" + } + ], + "events": [ + { + "name": "add", + "type": { + "text": "Event" + } + }, + { + "name": "input", + "type": { + "text": "Event" + } + }, + { + "name": "change", + "type": { + "text": "Event" + } + }, + { + "name": "invalid", + "type": { + "text": "Event" + } + }, + { + "name": "toggle", + "type": { + "text": "Event" + } + } + ], + "attributes": [ + { + "name": "add-button-label", + "type": { + "text": "string | undefined" + }, + "fieldName": "addButtonLabel" + }, + { + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "disabled" + }, + { + "name": "filterable", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "filterable" + }, + { + "name": "hide-label", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "hideLabel" + }, + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label", + "required": true + }, + { + "name": "name", + "type": { + "text": "string" + }, + "default": "''", + "fieldName": "name" + }, + { + "name": "open", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "open" + }, + { + "name": "orientation", + "type": { + "text": "'horizontal' | 'vertical'" + }, + "default": "'horizontal'", + "fieldName": "orientation" + }, + { + "name": "placeholder", + "type": { + "text": "string | undefined" + }, + "fieldName": "placeholder" + }, + { + "name": "privateSplit", + "type": { + "text": "'left' | 'middle' | undefined" + }, + "fieldName": "privateSplit" + }, + { + "name": "readonly", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "readonly" + }, + { + "name": "select-all", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "selectAll" + }, + { + "name": "required", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "required" + }, + { + "name": "multiple", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "multiple" + }, + { + "name": "size", + "type": { + "text": "'large' | 'small'" + }, + "default": "'large'", + "fieldName": "size" + }, + { + "name": "tooltip", + "type": { + "text": "string | undefined" + }, + "fieldName": "tooltip" + }, + { + "name": "value", + "type": { + "text": "string[]" + }, + "default": "[]", + "fieldName": "value" + }, + { + "name": "variant", + "type": { + "text": "'quiet' | undefined" + }, + "fieldName": "variant" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-dropdown", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreDropdown", + "module": "src/dropdown.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-dropdown", + "declaration": { + "name": "GlideCoreDropdown", + "module": "src/dropdown.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/form-controls-layout.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/form-controls-layout.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/form-controls-layout.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreFormControlsLayout", + "slots": [ + { + "name": "", + "description": "", + "type": { + "text": "GlideCoreCheckbox | GlideCoreCheckboxGroup | GlideCoreDropdown | GlideCoreRadioGroup | GlideCoreInput | GlideCoreTextArea" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "split", + "type": { + "text": "'left' | 'middle'" + }, + "default": "'left'", + "attribute": "split", + "reflects": true + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "field", + "name": "#slotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#split", + "privacy": "private", + "type": { + "text": "'left' | 'middle'" + }, + "default": "'left'" + }, + { + "kind": "method", + "name": "#onSlotChange", + "privacy": "private" + } + ], + "attributes": [ + { + "name": "split", + "type": { + "text": "'left' | 'middle'" + }, + "default": "'left'", + "fieldName": "split" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-form-controls-layout", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreFormControlsLayout", + "module": "src/form-controls-layout.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-form-controls-layout", + "declaration": { + "name": "GlideCoreFormControlsLayout", + "module": "src/form-controls-layout.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/icon-button.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/icon-button.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/icon-button.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreIconButton", + "slots": [ + { + "name": "", + "description": "An icon", + "required": { + "tag": "required", + "name": "", + "type": "", + "optional": false, + "description": "", + "problems": [], + "source": [ + { + "number": 3, + "source": " @required", + "tokens": { + "start": " ", + "delimiter": "", + "postDelimiter": "", + "tag": "@required", + "postTag": "", + "name": "", + "postName": "", + "type": "", + "postType": "", + "description": "", + "end": "", + "lineEnd": "" + } + } + ] + }, + "type": { + "text": "Element" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, delegatesFocus: true, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "ariaControls", + "type": { + "text": "string | null" + }, + "default": "null", + "attribute": "aria-controls", + "reflects": true + }, + { + "kind": "field", + "name": "ariaExpanded", + "type": { + "text": "'true' | 'false' | null" + }, + "default": "null", + "attribute": "aria-expanded", + "reflects": true + }, + { + "kind": "field", + "name": "ariaHasPopup", + "type": { + "text": "| 'true'\n | 'false'\n | 'menu'\n | 'listbox'\n | 'tree'\n | 'grid'\n | 'dialog'\n | null" + }, + "default": "null", + "attribute": "aria-haspopup", + "reflects": true + }, + { + "kind": "field", + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "disabled", + "reflects": true + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label" + }, + { + "kind": "field", + "name": "variant", + "type": { + "text": "'primary' | 'secondary' | 'tertiary'" + }, + "default": "'primary'", + "attribute": "variant", + "reflects": true + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "method", + "name": "click" + }, + { + "kind": "field", + "name": "#buttonElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#defaultSlotElementRef", + "privacy": "private" + } + ], + "attributes": [ + { + "name": "aria-controls", + "type": { + "text": "string | null" + }, + "default": "null", + "fieldName": "ariaControls" + }, + { + "name": "aria-expanded", + "type": { + "text": "'true' | 'false' | null" + }, + "default": "null", + "fieldName": "ariaExpanded" + }, + { + "name": "aria-haspopup", + "type": { + "text": "| 'true'\n | 'false'\n | 'menu'\n | 'listbox'\n | 'tree'\n | 'grid'\n | 'dialog'\n | null" + }, + "default": "null", + "fieldName": "ariaHasPopup" + }, + { + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "disabled" + }, + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label", + "required": true + }, + { + "name": "variant", + "type": { + "text": "'primary' | 'secondary' | 'tertiary'" + }, + "default": "'primary'", + "fieldName": "variant" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-icon-button", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreIconButton", + "module": "src/icon-button.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-icon-button", + "declaration": { + "name": "GlideCoreIconButton", + "module": "src/icon-button.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/inline-alert.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/inline-alert.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/inline-alert.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreInlineAlert", + "slots": [ + { + "name": "", + "description": "The content of the alert", + "required": { + "tag": "required", + "name": "", + "type": "", + "optional": false, + "description": "", + "problems": [], + "source": [ + { + "number": 3, + "source": " @required", + "tokens": { + "start": " ", + "delimiter": "", + "postDelimiter": "", + "tag": "@required", + "postTag": "", + "name": "", + "postName": "", + "type": "", + "postType": "", + "description": "", + "end": "", + "lineEnd": "" + } + } + ] + }, + "type": { + "text": "Element | string" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "variant", + "type": { + "text": "'informational' | 'medium' | 'high' | 'critical'" + }, + "default": "'informational'", + "attribute": "variant", + "reflects": true + }, + { + "kind": "field", + "name": "removable", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "removable", + "reflects": true + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "method", + "name": "focus" + }, + { + "kind": "field", + "name": "#animationDuration", + "privacy": "private", + "type": { + "text": "number" + }, + "default": "100" + }, + { + "kind": "field", + "name": "#componentElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#isKeyboardClick", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#localize", + "privacy": "private", + "default": "new LocalizeController(this)" + }, + { + "kind": "field", + "name": "#removalButtonElementRef", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onRemovalButtonClick", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onRemovalButtonKeydown", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "KeyboardEvent" + } + } + ] + } + ], + "events": [ + { + "name": "remove", + "type": { + "text": "Event" + } + } + ], + "attributes": [ + { + "name": "variant", + "type": { + "text": "'informational' | 'medium' | 'high' | 'critical'" + }, + "default": "'informational'", + "fieldName": "variant" + }, + { + "name": "removable", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "removable" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-inline-alert", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreInlineAlert", + "module": "src/inline-alert.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-inline-alert", + "declaration": { + "name": "GlideCoreInlineAlert", + "module": "src/inline-alert.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/input.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/input.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/input.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreInput", + "slots": [ + { + "name": "prefix-icon", + "description": "An icon before the input field", + "type": { + "text": "Element" + } + }, + { + "name": "suffix-icon", + "description": "An icon after the input field", + "type": { + "text": "Element" + } + }, + { + "name": "description", + "description": "Additional information or context", + "type": { + "text": "Element | string" + } + } + ], + "members": [ + { + "kind": "field", + "name": "formAssociated", + "type": { + "text": "boolean" + }, + "static": true, + "default": "true" + }, + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, delegatesFocus: true, }" + }, + { + "kind": "field", + "name": "type", + "type": { + "text": "| 'date'\n | 'email'\n | 'number'\n | 'password'\n | 'search'\n | 'tel'\n | 'text'\n | 'time'\n | 'url'" + }, + "default": "'text'", + "attribute": "type", + "reflects": true + }, + { + "kind": "field", + "name": "name", + "type": { + "text": "string" + }, + "default": "''", + "attribute": "name", + "reflects": true + }, + { + "kind": "field", + "name": "value", + "type": { + "text": "string" + }, + "default": "''", + "attribute": "value" + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label", + "reflects": true + }, + { + "kind": "field", + "name": "hideLabel", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "hide-label" + }, + { + "kind": "field", + "name": "orientation", + "type": { + "text": "'horizontal' | 'vertical'" + }, + "default": "'horizontal'", + "attribute": "orientation", + "reflects": true + }, + { + "kind": "field", + "name": "pattern", + "type": { + "text": "string | undefined" + }, + "attribute": "pattern", + "reflects": true + }, + { + "kind": "field", + "name": "placeholder", + "type": { + "text": "string | undefined" + }, + "attribute": "placeholder", + "reflects": true + }, + { + "kind": "field", + "name": "clearable", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "clearable" + }, + { + "kind": "field", + "name": "spellcheck", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "spellcheck", + "reflects": true + }, + { + "kind": "field", + "name": "autocapitalize", + "type": { + "text": "| 'on'\n | 'off'\n | 'none'\n | 'sentences'\n | 'words'\n | 'characters'" + }, + "default": "'on'", + "attribute": "autocapitalize", + "reflects": true + }, + { + "kind": "field", + "name": "autocomplete", + "type": { + "text": "'on' | 'off'" + }, + "default": "'on'", + "attribute": "autocomplete", + "reflects": true + }, + { + "kind": "field", + "name": "passwordToggle", + "type": { + "text": "boolean" + }, + "default": "false", + "description": "For 'password' type, whether to show a button to toggle the password's visibility", + "attribute": "password-toggle" + }, + { + "kind": "field", + "name": "required", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "required", + "reflects": true + }, + { + "kind": "field", + "name": "readonly", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "readonly" + }, + { + "kind": "field", + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "disabled", + "reflects": true + }, + { + "kind": "field", + "name": "privateSplit", + "type": { + "text": "'left' | 'middle' | undefined" + }, + "attribute": "privateSplit" + }, + { + "kind": "field", + "name": "maxlength", + "type": { + "text": "number | undefined" + }, + "attribute": "maxlength", + "reflects": true + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "field", + "name": "tooltip", + "type": { + "text": "string | undefined" + }, + "attribute": "tooltip", + "reflects": true + }, + { + "kind": "field", + "name": "form", + "type": { + "text": "HTMLFormElement | null" + }, + "readonly": true + }, + { + "kind": "field", + "name": "validity", + "type": { + "text": "ValidityState" + }, + "readonly": true + }, + { + "kind": "method", + "name": "checkValidity", + "return": { + "type": { + "text": "boolean" + } + } + }, + { + "kind": "method", + "name": "formAssociatedCallback", + "return": { + "type": { + "text": "void" + } + } + }, + { + "kind": "method", + "name": "formResetCallback", + "return": { + "type": { + "text": "void" + } + } + }, + { + "kind": "method", + "name": "reportValidity", + "return": { + "type": { + "text": "boolean" + } + } + }, + { + "kind": "method", + "name": "resetValidityFeedback", + "return": { + "type": { + "text": "void" + } + } + }, + { + "kind": "method", + "name": "setCustomValidity", + "return": { + "type": { + "text": "void" + } + }, + "parameters": [ + { + "name": "message", + "type": { + "text": "string" + } + } + ] + }, + { + "kind": "method", + "name": "setValidity", + "return": { + "type": { + "text": "void" + } + }, + "parameters": [ + { + "name": "flags", + "optional": true, + "type": { + "text": "ValidityStateFlags" + } + }, + { + "name": "message", + "optional": true, + "type": { + "text": "string" + } + } + ] + }, + { + "kind": "field", + "name": "hasFocus", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isBlurring", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isCheckingValidity", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isReportValidityOrSubmit", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "passwordVisible", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "validityMessage", + "type": { + "text": "string | undefined" + }, + "privacy": "private" + }, + { + "kind": "field", + "name": "#inputElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#internals", + "privacy": "private", + "type": { + "text": "ElementInternals" + } + }, + { + "kind": "field", + "name": "#localize", + "privacy": "private", + "default": "new LocalizeController(this)" + }, + { + "kind": "field", + "name": "#hasClearButton", + "privacy": "private", + "readonly": true + }, + { + "kind": "field", + "name": "#isClearButtonVisible", + "privacy": "private", + "readonly": true + }, + { + "kind": "field", + "name": "#valueCharacterCount", + "privacy": "private", + "readonly": true + }, + { + "kind": "field", + "name": "#onFormdata", + "privacy": "private" + }, + { + "kind": "field", + "name": "#isMaxCharacterCountExceeded", + "privacy": "private", + "readonly": true + }, + { + "kind": "field", + "name": "#isShowValidationFeedback", + "privacy": "private", + "readonly": true + }, + { + "kind": "method", + "name": "#onClearButtonClick", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "MouseEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onInputBlur", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onInputChange", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onInputFocus", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onInputInput", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onInputKeydown", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "KeyboardEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onPasswordToggle", + "privacy": "private" + } + ], + "events": [ + { + "name": "input", + "type": { + "text": "Event" + } + }, + { + "name": "change", + "type": { + "text": "Event" + } + }, + { + "name": "invalid", + "type": { + "text": "Event" + } + } + ], + "attributes": [ + { + "name": "type", + "type": { + "text": "| 'date'\n | 'email'\n | 'number'\n | 'password'\n | 'search'\n | 'tel'\n | 'text'\n | 'time'\n | 'url'" + }, + "default": "'text'", + "fieldName": "type" + }, + { + "name": "name", + "type": { + "text": "string" + }, + "default": "''", + "fieldName": "name" + }, + { + "name": "value", + "type": { + "text": "string" + }, + "default": "''", + "fieldName": "value" + }, + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label", + "required": true + }, + { + "name": "hide-label", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "hideLabel" + }, + { + "name": "orientation", + "type": { + "text": "'horizontal' | 'vertical'" + }, + "default": "'horizontal'", + "fieldName": "orientation" + }, + { + "name": "pattern", + "type": { + "text": "string | undefined" + }, + "fieldName": "pattern" + }, + { + "name": "placeholder", + "type": { + "text": "string | undefined" + }, + "fieldName": "placeholder" + }, + { + "name": "clearable", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "clearable" + }, + { + "name": "spellcheck", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "spellcheck" + }, + { + "name": "autocapitalize", + "type": { + "text": "| 'on'\n | 'off'\n | 'none'\n | 'sentences'\n | 'words'\n | 'characters'" + }, + "default": "'on'", + "fieldName": "autocapitalize" + }, + { + "name": "autocomplete", + "type": { + "text": "'on' | 'off'" + }, + "default": "'on'", + "fieldName": "autocomplete" + }, + { + "name": "password-toggle", + "type": { + "text": "boolean" + }, + "default": "false", + "description": "For 'password' type, whether to show a button to toggle the password's visibility", + "fieldName": "passwordToggle" + }, + { + "name": "required", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "required" + }, + { + "name": "readonly", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "readonly" + }, + { + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "disabled" + }, + { + "name": "privateSplit", + "type": { + "text": "'left' | 'middle' | undefined" + }, + "fieldName": "privateSplit" + }, + { + "name": "maxlength", + "type": { + "text": "number | undefined" + }, + "fieldName": "maxlength" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + }, + { + "name": "tooltip", + "type": { + "text": "string | undefined" + }, + "fieldName": "tooltip" + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-input", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreInput", + "module": "src/input.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-input", + "declaration": { + "name": "GlideCoreInput", + "module": "src/input.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/label.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/label.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/label.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreLabel", + "slots": [ + { + "name": "", + "description": "", + "type": { + "text": "HTMLLabelElement" + } + }, + { + "name": "control", + "description": "The element with which the label is associated", + "type": { + "text": "Element" + } + }, + { + "name": "summary", + "description": "Additional information or context", + "type": { + "text": "Element | string" + } + }, + { + "name": "description", + "description": "Additional information or context", + "type": { + "text": "Element | string" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "disabled", + "reflects": true + }, + { + "kind": "field", + "name": "error", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "error", + "reflects": true + }, + { + "kind": "field", + "name": "hide", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "hide", + "reflects": true + }, + { + "kind": "field", + "name": "orientation", + "type": { + "text": "'horizontal' | 'vertical'" + }, + "default": "'horizontal'", + "attribute": "orientation", + "reflects": true + }, + { + "kind": "field", + "name": "required", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "required", + "reflects": true + }, + { + "kind": "field", + "name": "split", + "type": { + "text": "'left' | 'middle' | undefined" + }, + "attribute": "split" + }, + { + "kind": "field", + "name": "tooltip", + "type": { + "text": "string | undefined" + }, + "attribute": "tooltip" + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label" + }, + { + "kind": "field", + "name": "hasDescription", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "hasSummarySlot", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isLabelTooltip", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "#defaultSlotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#descriptionSlotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#labelElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#localize", + "privacy": "private", + "default": "new LocalizeController(this)" + }, + { + "kind": "field", + "name": "#summarySlotElementRef", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onDefaultSlotChange", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onDescriptionSlotResize", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onSummarySlotChange", + "privacy": "private" + } + ], + "attributes": [ + { + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "disabled" + }, + { + "name": "error", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "error" + }, + { + "name": "hide", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "hide" + }, + { + "name": "orientation", + "type": { + "text": "'horizontal' | 'vertical'" + }, + "default": "'horizontal'", + "fieldName": "orientation" + }, + { + "name": "required", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "required" + }, + { + "name": "split", + "type": { + "text": "'left' | 'middle' | undefined" + }, + "fieldName": "split" + }, + { + "name": "tooltip", + "type": { + "text": "string | undefined" + }, + "fieldName": "tooltip" + }, + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label" + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-private-label", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreLabel", + "module": "src/label.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-private-label", + "declaration": { + "name": "GlideCoreLabel", + "module": "src/label.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/menu.button.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/menu.button.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/menu.button.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreMenuButton", + "slots": [ + { + "name": "icon", + "description": "", + "type": { + "text": "Element" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "disabled", + "reflects": true + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label", + "reflects": true + }, + { + "kind": "field", + "name": "privateActive", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "privateActive" + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "method", + "name": "click" + }, + { + "kind": "field", + "name": "#componentElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#id", + "privacy": "private" + }, + { + "kind": "field", + "name": "#isDisabled", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + } + ], + "events": [ + { + "name": "private-disabled", + "type": { + "text": "Event" + } + } + ], + "attributes": [ + { + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "disabled" + }, + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label", + "required": true + }, + { + "name": "privateActive", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "privateActive" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-menu-button", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreMenuButton", + "module": "src/menu.button.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-menu-button", + "declaration": { + "name": "GlideCoreMenuButton", + "module": "src/menu.button.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/menu.link.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/menu.link.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/menu.link.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreMenuLink", + "slots": [ + { + "name": "icon", + "description": "", + "type": { + "text": "Element" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "disabled", + "reflects": true + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label", + "reflects": true + }, + { + "kind": "field", + "name": "url", + "type": { + "text": "string | undefined" + }, + "attribute": "url", + "reflects": true + }, + { + "kind": "field", + "name": "privateActive", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "privateActive" + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "method", + "name": "click" + }, + { + "kind": "field", + "name": "#componentElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#id", + "privacy": "private" + }, + { + "kind": "field", + "name": "#isDisabled", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "method", + "name": "#onClick", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "Event" + } + } + ] + } + ], + "events": [ + { + "name": "private-disabled", + "type": { + "text": "Event" + } + } + ], + "attributes": [ + { + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "disabled" + }, + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label", + "required": true + }, + { + "name": "url", + "type": { + "text": "string | undefined" + }, + "fieldName": "url" + }, + { + "name": "privateActive", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "privateActive" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-menu-link", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreMenuLink", + "module": "src/menu.link.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-menu-link", + "declaration": { + "name": "GlideCoreMenuLink", + "module": "src/menu.link.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/menu.options.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/menu.options.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/menu.options.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreMenuOptions", + "slots": [ + { + "name": "", + "description": "", + "type": { + "text": "GlideCoreMenuButton | GlideCoreMenuLink" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "ariaActivedescendant", + "type": { + "text": "string" + }, + "default": "''", + "attribute": "aria-activedescendant", + "reflects": true + }, + { + "kind": "field", + "name": "ariaLabelledby", + "type": { + "text": "string" + }, + "default": "''", + "attribute": "aria-labelledby", + "reflects": true + }, + { + "kind": "field", + "name": "privateSize", + "type": { + "text": "'large' | 'small'" + }, + "default": "'large'", + "attribute": "privateSize" + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "field", + "name": "#id", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onSlotChange", + "privacy": "private" + } + ], + "events": [ + { + "name": "private-slot-change", + "type": { + "text": "Event" + } + } + ], + "attributes": [ + { + "name": "aria-activedescendant", + "type": { + "text": "string" + }, + "default": "''", + "fieldName": "ariaActivedescendant" + }, + { + "name": "aria-labelledby", + "type": { + "text": "string" + }, + "default": "''", + "fieldName": "ariaLabelledby" + }, + { + "name": "privateSize", + "type": { + "text": "'large' | 'small'" + }, + "default": "'large'", + "fieldName": "privateSize" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-menu-options", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreMenuOptions", + "module": "src/menu.options.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-menu-options", + "declaration": { + "name": "GlideCoreMenuOptions", + "module": "src/menu.options.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/menu.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/menu.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/menu.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreMenu", + "slots": [ + { + "name": "target", + "description": "The element to which the popover will anchor. Can be any focusable element.", + "type": { + "text": "Element" + } + }, + { + "name": "", + "description": "", + "required": { + "tag": "required", + "name": "", + "type": "", + "optional": false, + "description": "", + "problems": [], + "source": [ + { + "number": 2, + "source": " @required", + "tokens": { + "start": " ", + "delimiter": "", + "postDelimiter": "", + "tag": "@required", + "postTag": "", + "name": "", + "postName": "", + "type": "", + "postType": "", + "description": "", + "end": "", + "lineEnd": "" + } + } + ] + }, + "type": { + "text": "GlideCoreMenuOptions" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "offset", + "type": { + "text": "number" + }, + "default": "4", + "attribute": "offset", + "reflects": true + }, + { + "kind": "field", + "name": "open", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "open", + "reflects": true + }, + { + "kind": "field", + "name": "placement", + "type": { + "text": "| 'bottom'\n | 'left'\n | 'right'\n | 'top'\n | 'bottom-start'\n | 'bottom-end'\n | 'left-start'\n | 'left-end'\n | 'right-start'\n | 'right-end'\n | 'top-start'\n | 'top-end'" + }, + "default": "'bottom-start'", + "attribute": "placement", + "reflects": true + }, + { + "kind": "field", + "name": "size", + "type": { + "text": "'large' | 'small'" + }, + "default": "'large'", + "attribute": "size", + "reflects": true + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "field", + "name": "isTargetDisabled", + "privacy": "private", + "readonly": true + }, + { + "kind": "field", + "name": "#cleanUpFloatingUi", + "privacy": "private", + "type": { + "text": "ReturnType | undefined" + } + }, + { + "kind": "field", + "name": "#componentElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#defaultSlotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#isClosingAfterSelection", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#isDefaultSlotClick", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#isDisabledLinkClick", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#isOpen", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#isTargetSlotClick", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#offset", + "privacy": "private", + "type": { + "text": "number | undefined" + } + }, + { + "kind": "field", + "name": "#shadowRoot", + "privacy": "private", + "type": { + "text": "ShadowRoot | undefined" + } + }, + { + "kind": "field", + "name": "#size", + "privacy": "private", + "type": { + "text": "'large' | 'small'" + }, + "default": "'large'" + }, + { + "kind": "field", + "name": "#targetSlotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#activeOption", + "privacy": "private", + "readonly": true + }, + { + "kind": "field", + "name": "#onDefaultSlotMousedown", + "privacy": "private" + }, + { + "kind": "field", + "name": "#onDefaultSlotMouseup", + "privacy": "private" + }, + { + "kind": "field", + "name": "#onDocumentClick", + "privacy": "private" + }, + { + "kind": "field", + "name": "#onTargetSlotMouseup", + "privacy": "private" + }, + { + "kind": "method", + "name": "#focus", + "privacy": "private", + "parameters": [ + { + "name": "options", + "optional": true, + "type": { + "text": "FocusOptions" + } + } + ] + }, + { + "kind": "method", + "name": "#hide", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onComponentFocusout", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "FocusEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onDefaultSlotChange", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onDefaultSlotClick", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "Event" + } + } + ] + }, + { + "kind": "method", + "name": "#onDefaultSlotFocusin", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "FocusEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onDefaultSlotMouseover", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "Event" + } + } + ] + }, + { + "kind": "method", + "name": "#onOptionsDisabled", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onOptionsSlotChange", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onSlotKeydown", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "KeyboardEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onTargetSlotChange", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onTargetSlotClick", + "privacy": "private" + }, + { + "kind": "field", + "name": "#optionsElement", + "privacy": "private", + "readonly": true + }, + { + "kind": "field", + "name": "#optionElements", + "privacy": "private", + "readonly": true + }, + { + "kind": "method", + "name": "#show", + "privacy": "private" + }, + { + "kind": "field", + "name": "#targetElement", + "privacy": "private", + "readonly": true + } + ], + "events": [ + { + "name": "toggle", + "type": { + "text": "Event" + } + } + ], + "attributes": [ + { + "name": "offset", + "type": { + "text": "number" + }, + "default": "4", + "fieldName": "offset" + }, + { + "name": "open", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "open" + }, + { + "name": "placement", + "type": { + "text": "| 'bottom'\n | 'left'\n | 'right'\n | 'top'\n | 'bottom-start'\n | 'bottom-end'\n | 'left-start'\n | 'left-end'\n | 'right-start'\n | 'right-end'\n | 'top-start'\n | 'top-end'" + }, + "default": "'bottom-start'", + "fieldName": "placement" + }, + { + "name": "size", + "type": { + "text": "'large' | 'small'" + }, + "default": "'large'", + "fieldName": "size" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-menu", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreMenu", + "module": "src/menu.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-menu", + "declaration": { + "name": "GlideCoreMenu", + "module": "src/menu.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/modal.icon-button.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/modal.icon-button.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/modal.icon-button.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreModalIconButton", + "slots": [ + { + "name": "", + "description": "An icon", + "required": { + "tag": "required", + "name": "", + "type": "", + "optional": false, + "description": "", + "problems": [], + "source": [ + { + "number": 3, + "source": " @required", + "tokens": { + "start": " ", + "delimiter": "", + "postDelimiter": "", + "tag": "@required", + "postTag": "", + "name": "", + "postName": "", + "type": "", + "postType": "", + "description": "", + "end": "", + "lineEnd": "" + } + } + ] + }, + "type": { + "text": "Element" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label" + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + } + ], + "attributes": [ + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label", + "required": true + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-modal-icon-button", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreModalIconButton", + "module": "src/modal.icon-button.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-modal-icon-button", + "declaration": { + "name": "GlideCoreModalIconButton", + "module": "src/modal.icon-button.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/modal.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/modal.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/modal.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreModal", + "slots": [ + { + "name": "header-actions", + "description": "", + "type": { + "text": "GlideCoreModalIconButton" + } + }, + { + "name": "", + "description": "", + "type": { + "text": "Element | string" + } + }, + { + "name": "tertiary", + "description": "", + "type": { + "text": "GlideCoreButton | GlideCoreTooltip" + } + }, + { + "name": "secondary", + "description": "", + "type": { + "text": "GlideCoreButton" + } + }, + { + "name": "primary", + "description": "", + "type": { + "text": "GlideCoreButton" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "backButton", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "back-button", + "reflects": true + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label", + "reflects": true + }, + { + "kind": "field", + "name": "open", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "open", + "reflects": true + }, + { + "kind": "field", + "name": "severity", + "type": { + "text": "'critical' | 'informational' | 'medium' | undefined" + }, + "attribute": "severity", + "reflects": true + }, + { + "kind": "field", + "name": "size", + "type": { + "text": "'small' | 'medium' | 'large' | 'xlarge' | undefined" + }, + "default": "'medium'", + "attribute": "size", + "reflects": true + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "field", + "name": "#backButtonElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#closeButtonElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#componentElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#containerElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#headerActionsSlotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#isContainerClick", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#isOpen", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#localize", + "privacy": "private", + "default": "new LocalizeController(this)" + }, + { + "kind": "field", + "name": "#onContainerClick", + "privacy": "private" + }, + { + "kind": "field", + "name": "#onContainerMousedown", + "privacy": "private" + }, + { + "kind": "field", + "name": "#onDocumentClick", + "privacy": "private" + }, + { + "kind": "method", + "name": "#hide", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onCloseButtonClick", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onComponentKeyDown", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "KeyboardEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#show", + "privacy": "private" + } + ], + "events": [ + { + "name": "toggle", + "type": { + "text": "Event" + } + } + ], + "attributes": [ + { + "name": "back-button", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "backButton" + }, + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label", + "required": true + }, + { + "name": "open", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "open" + }, + { + "name": "severity", + "type": { + "text": "'critical' | 'informational' | 'medium' | undefined" + }, + "fieldName": "severity" + }, + { + "name": "size", + "type": { + "text": "'small' | 'medium' | 'large' | 'xlarge' | undefined" + }, + "default": "'medium'", + "fieldName": "size" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-modal", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreModal", + "module": "src/modal.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-modal", + "declaration": { + "name": "GlideCoreModal", + "module": "src/modal.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/popover.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/popover.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/popover.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCorePopover", + "slots": [ + { + "name": "target", + "description": "The element to which the popover will anchor. Can be any focusable element.", + "type": { + "text": "Element" + } + }, + { + "name": "", + "description": "The content of the popover", + "type": { + "text": "Element | string" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "disabled", + "reflects": true + }, + { + "kind": "field", + "name": "offset", + "type": { + "text": "number" + }, + "default": "4", + "attribute": "offset", + "reflects": true + }, + { + "kind": "field", + "name": "open", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "open", + "reflects": true + }, + { + "kind": "field", + "name": "placement", + "type": { + "text": "'bottom' | 'left' | 'right' | 'top' | undefined" + }, + "attribute": "placement" + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "field", + "name": "effectivePlacement", + "type": { + "text": "Placement" + }, + "privacy": "private" + }, + { + "kind": "field", + "name": "#arrowElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#cleanUpFloatingUi", + "privacy": "private", + "type": { + "text": "ReturnType | undefined" + } + }, + { + "kind": "field", + "name": "#defaultSlotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#isArrowClick", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#isDefaultSlotClick", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#isDisabled", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#isOpen", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#isTargetSlotClick", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#offset", + "privacy": "private", + "type": { + "text": "number | undefined" + } + }, + { + "kind": "field", + "name": "#popoverElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#targetSlotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#onDocumentClick", + "privacy": "private" + }, + { + "kind": "method", + "name": "#hide", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onTargetSlotClick", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onTargetSlotKeydown", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "KeyboardEvent" + } + } + ] + }, + { + "kind": "field", + "name": "#targetElement", + "privacy": "private", + "readonly": true + }, + { + "kind": "method", + "name": "#show", + "privacy": "private" + } + ], + "events": [ + { + "name": "toggle", + "type": { + "text": "Event" + } + } + ], + "attributes": [ + { + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "disabled" + }, + { + "name": "offset", + "type": { + "text": "number" + }, + "default": "4", + "fieldName": "offset" + }, + { + "name": "open", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "open" + }, + { + "name": "placement", + "type": { + "text": "'bottom' | 'left' | 'right' | 'top' | undefined" + }, + "fieldName": "placement" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-popover", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCorePopover", + "module": "src/popover.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-popover", + "declaration": { + "name": "GlideCorePopover", + "module": "src/popover.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/radio-group.radio.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/radio-group.radio.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/radio-group.radio.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreRadioGroupRadio", + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "checked", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "checked", + "reflects": true + }, + { + "kind": "field", + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "disabled", + "reflects": true + }, + { + "kind": "field", + "name": "privateInvalid", + "attribute": "privateInvalid" + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "default": "undefined", + "attribute": "label", + "reflects": true + }, + { + "kind": "field", + "name": "privateRequired", + "attribute": "privateRequired", + "reflects": true + }, + { + "kind": "field", + "name": "value", + "type": { + "text": "string" + }, + "default": "undefined", + "attribute": "value" + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "field", + "name": "#checked", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#disabled", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#label", + "privacy": "private", + "type": { + "text": "string | undefined" + } + }, + { + "kind": "field", + "name": "#privateInvalid", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#privateRequired", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#value", + "privacy": "private", + "type": { + "text": "string" + }, + "default": "''" + } + ], + "events": [ + { + "name": "input", + "type": { + "text": "Event" + } + }, + { + "name": "change", + "type": { + "text": "Event" + } + }, + { + "name": "private-checked-change", + "type": { + "text": "CustomEvent" + } + }, + { + "name": "private-disabled-change", + "type": { + "text": "CustomEvent" + } + }, + { + "name": "private-value-change", + "type": { + "text": "CustomEvent" + } + } + ], + "attributes": [ + { + "name": "checked", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "checked" + }, + { + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "disabled" + }, + { + "name": "privateInvalid", + "fieldName": "privateInvalid" + }, + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "default": "undefined", + "fieldName": "label", + "required": true + }, + { + "name": "privateRequired", + "fieldName": "privateRequired" + }, + { + "name": "value", + "type": { + "text": "string" + }, + "default": "undefined", + "fieldName": "value" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-radio-group-radio", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreRadioGroupRadio", + "module": "src/radio-group.radio.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-radio-group-radio", + "declaration": { + "name": "GlideCoreRadioGroupRadio", + "module": "src/radio-group.radio.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/radio-group.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/radio-group.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/radio-group.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreRadioGroup", + "slots": [ + { + "name": "", + "description": "", + "type": { + "text": "GlideCoreRadio" + } + }, + { + "name": "description", + "description": "Additional information or context", + "type": { + "text": "Element | string" + } + } + ], + "members": [ + { + "kind": "field", + "name": "formAssociated", + "type": { + "text": "boolean" + }, + "static": true, + "default": "true" + }, + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "disabled", + "reflects": true + }, + { + "kind": "field", + "name": "hideLabel", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "hide-label" + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label", + "reflects": true + }, + { + "kind": "field", + "name": "name", + "type": { + "text": "string" + }, + "default": "''", + "attribute": "name", + "reflects": true + }, + { + "kind": "field", + "name": "orientation", + "default": "'horizontal'", + "type": { + "text": "'horizontal'" + }, + "attribute": "orientation", + "reflects": true + }, + { + "kind": "field", + "name": "privateSplit", + "type": { + "text": "'left' | 'middle' | undefined" + }, + "attribute": "privateSplit" + }, + { + "kind": "field", + "name": "tooltip", + "type": { + "text": "string | undefined" + }, + "attribute": "tooltip", + "reflects": true + }, + { + "kind": "field", + "name": "required", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "required", + "reflects": true + }, + { + "kind": "field", + "name": "value", + "type": { + "text": "string" + }, + "default": "''", + "attribute": "value" + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "method", + "name": "checkValidity", + "return": { + "type": { + "text": "boolean" + } + } + }, + { + "kind": "method", + "name": "focus", + "parameters": [ + { + "name": "options", + "optional": true, + "type": { + "text": "FocusOptions" + } + } + ] + }, + { + "kind": "field", + "name": "form", + "type": { + "text": "HTMLFormElement | null" + }, + "readonly": true + }, + { + "kind": "field", + "name": "validity", + "type": { + "text": "ValidityState" + }, + "readonly": true + }, + { + "kind": "method", + "name": "formAssociatedCallback", + "return": { + "type": { + "text": "void" + } + } + }, + { + "kind": "method", + "name": "formResetCallback", + "return": { + "type": { + "text": "void" + } + } + }, + { + "kind": "method", + "name": "reportValidity", + "return": { + "type": { + "text": "boolean" + } + } + }, + { + "kind": "method", + "name": "resetValidityFeedback", + "return": { + "type": { + "text": "void" + } + } + }, + { + "kind": "method", + "name": "setCustomValidity", + "return": { + "type": { + "text": "void" + } + }, + "parameters": [ + { + "name": "message", + "type": { + "text": "string" + } + } + ] + }, + { + "kind": "method", + "name": "setValidity", + "return": { + "type": { + "text": "void" + } + }, + "parameters": [ + { + "name": "flags", + "optional": true, + "type": { + "text": "ValidityStateFlags" + } + }, + { + "name": "message", + "optional": true, + "type": { + "text": "string" + } + } + ] + }, + { + "kind": "field", + "name": "isBlurring", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isCheckingValidity", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isReportValidityOrSubmit", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "validityMessage", + "type": { + "text": "string | undefined" + }, + "privacy": "private" + }, + { + "kind": "field", + "name": "#componentElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#defaultSlotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#internals", + "privacy": "private", + "type": { + "text": "ElementInternals" + } + }, + { + "kind": "field", + "name": "#isDisabled", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#isRequired", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#value", + "privacy": "private", + "type": { + "text": "string" + }, + "default": "''" + }, + { + "kind": "field", + "name": "#onFormdata", + "privacy": "private" + }, + { + "kind": "field", + "name": "#isShowValidationFeedback", + "privacy": "private", + "readonly": true + }, + { + "kind": "method", + "name": "#checkRadio", + "privacy": "private", + "parameters": [ + { + "name": "radio", + "type": { + "text": "GlideCoreRadioGroupRadio" + } + } + ] + }, + { + "kind": "method", + "name": "#onComponentClick", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "MouseEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onComponentKeydown", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "KeyboardEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onRadioGroupFocusout", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "FocusEvent" + } + } + ] + }, + { + "kind": "field", + "name": "#radioElements", + "privacy": "private", + "readonly": true + }, + { + "kind": "method", + "name": "#onRadiosCheckedChange", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "CustomEvent<{ new: boolean; old: boolean }>" + } + } + ] + }, + { + "kind": "method", + "name": "#onRadiosDisabledChange", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "Event" + } + } + ] + }, + { + "kind": "method", + "name": "#onRadiosValueChange", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "CustomEvent<{ new: string; old: string }>" + } + } + ] + }, + { + "kind": "method", + "name": "#uncheckRadio", + "privacy": "private", + "parameters": [ + { + "name": "radio", + "type": { + "text": "GlideCoreRadioGroupRadio" + } + } + ] + } + ], + "events": [ + { + "name": "invalid", + "type": { + "text": "Event" + } + } + ], + "attributes": [ + { + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "disabled" + }, + { + "name": "hide-label", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "hideLabel" + }, + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label", + "required": true + }, + { + "name": "name", + "type": { + "text": "string" + }, + "default": "''", + "fieldName": "name" + }, + { + "name": "orientation", + "default": "'horizontal'", + "type": { + "text": "'horizontal'" + }, + "fieldName": "orientation" + }, + { + "name": "privateSplit", + "type": { + "text": "'left' | 'middle' | undefined" + }, + "fieldName": "privateSplit" + }, + { + "name": "tooltip", + "type": { + "text": "string | undefined" + }, + "fieldName": "tooltip" + }, + { + "name": "required", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "required" + }, + { + "name": "value", + "type": { + "text": "string" + }, + "default": "''", + "fieldName": "value" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-radio-group", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreRadioGroup", + "module": "src/radio-group.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-radio-group", + "declaration": { + "name": "GlideCoreRadioGroup", + "module": "src/radio-group.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/split-button.primary-button.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/split-button.primary-button.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/split-button.primary-button.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreSplitButtonPrimaryButton", + "slots": [ + { + "name": "icon", + "description": "An icon before the label", + "type": { + "text": "Element" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, delegatesFocus: true, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "ariaControls", + "type": { + "text": "string | null" + }, + "default": "null", + "attribute": "aria-controls", + "reflects": true + }, + { + "kind": "field", + "name": "ariaExpanded", + "type": { + "text": "'true' | 'false' | null" + }, + "default": "null", + "attribute": "aria-expanded", + "reflects": true + }, + { + "kind": "field", + "name": "ariaHasPopup", + "type": { + "text": "| 'true'\n | 'false'\n | 'menu'\n | 'listbox'\n | 'tree'\n | 'grid'\n | 'dialog'\n | null" + }, + "default": "null", + "attribute": "aria-haspopup", + "reflects": true + }, + { + "kind": "field", + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "disabled", + "reflects": true + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label", + "reflects": true + }, + { + "kind": "field", + "name": "privateSize", + "type": { + "text": "'large' | 'small'" + }, + "default": "'large'", + "attribute": "privateSize" + }, + { + "kind": "field", + "name": "privateVariant", + "type": { + "text": "'primary' | 'secondary'" + }, + "default": "'primary'", + "attribute": "privateVariant" + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + } + ], + "attributes": [ + { + "name": "aria-controls", + "type": { + "text": "string | null" + }, + "default": "null", + "fieldName": "ariaControls" + }, + { + "name": "aria-expanded", + "type": { + "text": "'true' | 'false' | null" + }, + "default": "null", + "fieldName": "ariaExpanded" + }, + { + "name": "aria-haspopup", + "type": { + "text": "| 'true'\n | 'false'\n | 'menu'\n | 'listbox'\n | 'tree'\n | 'grid'\n | 'dialog'\n | null" + }, + "default": "null", + "fieldName": "ariaHasPopup" + }, + { + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "disabled" + }, + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label", + "required": true + }, + { + "name": "privateSize", + "type": { + "text": "'large' | 'small'" + }, + "default": "'large'", + "fieldName": "privateSize" + }, + { + "name": "privateVariant", + "type": { + "text": "'primary' | 'secondary'" + }, + "default": "'primary'", + "fieldName": "privateVariant" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-split-button-primary-button", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreSplitButtonPrimaryButton", + "module": "src/split-button.primary-button.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-split-button-primary-button", + "declaration": { + "name": "GlideCoreSplitButtonPrimaryButton", + "module": "src/split-button.primary-button.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/split-button.primary-link.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreSplitButtonPrimaryLink", + "slots": [ + { + "name": "icon", + "description": "An icon before the label", + "type": { + "text": "Element" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, delegatesFocus: true, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "disabled", + "reflects": true + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label", + "reflects": true + }, + { + "kind": "field", + "name": "url", + "type": { + "text": "string | undefined" + }, + "attribute": "url", + "reflects": true + }, + { + "kind": "field", + "name": "privateSize", + "type": { + "text": "'large' | 'small'" + }, + "default": "'large'", + "attribute": "privateSize" + }, + { + "kind": "field", + "name": "privateVariant", + "type": { + "text": "'primary' | 'secondary'" + }, + "default": "'primary'", + "attribute": "privateVariant" + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + } + ], + "attributes": [ + { + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "disabled" + }, + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label", + "required": true + }, + { + "name": "url", + "type": { + "text": "string | undefined" + }, + "fieldName": "url", + "required": true + }, + { + "name": "privateSize", + "type": { + "text": "'large' | 'small'" + }, + "default": "'large'", + "fieldName": "privateSize" + }, + { + "name": "privateVariant", + "type": { + "text": "'primary' | 'secondary'" + }, + "default": "'primary'", + "fieldName": "privateVariant" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-split-button-primary-link", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreSplitButtonPrimaryLink", + "module": "src/split-button.primary-link.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-split-button-primary-link", + "declaration": { + "name": "GlideCoreSplitButtonPrimaryLink", + "module": "src/split-button.primary-link.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/split-button.secondary-button.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/split-button.secondary-button.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/split-button.secondary-button.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreSplitButtonSecondaryButton", + "slots": [ + { + "name": "", + "description": "", + "type": { + "text": "GlideCoreMenuButton | GlideCoreMenuLink" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, delegatesFocus: true, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "disabled", + "reflects": true + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label", + "reflects": true + }, + { + "kind": "field", + "name": "menuOpen", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "menu-open", + "reflects": true + }, + { + "kind": "field", + "name": "menuPlacement", + "type": { + "text": "'bottom-end' | 'top-end'" + }, + "default": "'bottom-end'", + "attribute": "menu-placement", + "reflects": true + }, + { + "kind": "field", + "name": "privateActive", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "privateActive" + }, + { + "kind": "field", + "name": "privateSize", + "type": { + "text": "'large' | 'small'" + }, + "default": "'large'", + "attribute": "privateSize" + }, + { + "kind": "field", + "name": "privateVariant", + "type": { + "text": "'primary' | 'secondary'" + }, + "default": "'primary'", + "attribute": "privateVariant" + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "method", + "name": "click" + }, + { + "kind": "field", + "name": "#buttonElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#menuElementRef", + "privacy": "private" + } + ], + "attributes": [ + { + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "disabled" + }, + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label", + "required": true + }, + { + "name": "menu-open", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "menuOpen" + }, + { + "name": "menu-placement", + "type": { + "text": "'bottom-end' | 'top-end'" + }, + "default": "'bottom-end'", + "fieldName": "menuPlacement" + }, + { + "name": "privateActive", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "privateActive" + }, + { + "name": "privateSize", + "type": { + "text": "'large' | 'small'" + }, + "default": "'large'", + "fieldName": "privateSize" + }, + { + "name": "privateVariant", + "type": { + "text": "'primary' | 'secondary'" + }, + "default": "'primary'", + "fieldName": "privateVariant" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-split-button-secondary-button", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreSplitButtonSecondaryButton", + "module": "src/split-button.secondary-button.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-split-button-secondary-button", + "declaration": { + "name": "GlideCoreSplitButtonSecondaryButton", + "module": "src/split-button.secondary-button.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/split-button.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/split-button.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/split-button.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreSplitButton", + "slots": [ + { + "name": "", + "description": "", + "type": { + "text": "GlideCoreSplitButtonPrimaryButton | GlideCoreSplitButtonPrimaryLink" + } + }, + { + "name": "secondary-button", + "description": "", + "type": { + "text": "GlideCoreSplitButtonSecondaryButton" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "size", + "type": { + "text": "'large' | 'small'" + }, + "default": "'large'", + "attribute": "size", + "reflects": true + }, + { + "kind": "field", + "name": "variant", + "type": { + "text": "'primary' | 'secondary'" + }, + "default": "'primary'", + "attribute": "variant", + "reflects": true + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "field", + "name": "secondaryButtonElement", + "privacy": "private", + "readonly": true + }, + { + "kind": "field", + "name": "primaryButtonElement", + "privacy": "private", + "readonly": true + }, + { + "kind": "field", + "name": "#defaultSlotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#secondaryButtonSlotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#size", + "privacy": "private", + "type": { + "text": "'large' | 'small'" + }, + "default": "'large'" + }, + { + "kind": "field", + "name": "#variant", + "privacy": "private", + "type": { + "text": "'primary' | 'secondary'" + }, + "default": "'primary'" + }, + { + "kind": "method", + "name": "#onDefaultSlotChange", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onSecondaryButtonSlotChange", + "privacy": "private" + } + ], + "attributes": [ + { + "name": "size", + "type": { + "text": "'large' | 'small'" + }, + "default": "'large'", + "fieldName": "size" + }, + { + "name": "variant", + "type": { + "text": "'primary' | 'secondary'" + }, + "default": "'primary'", + "fieldName": "variant" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-split-button", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreSplitButton", + "module": "src/split-button.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-split-button", + "declaration": { + "name": "GlideCoreSplitButton", + "module": "src/split-button.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/tab.group.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/tab.group.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/tab.group.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreTabGroup", + "cssProperties": [ + { + "name": "--tabs-padding-block-end", + "default": "0rem" + }, + { + "name": "--tabs-padding-block-start", + "default": "0rem" + }, + { + "name": "--tabs-padding-inline-end", + "default": "0rem" + }, + { + "name": "--tabs-padding-inline-start", + "default": "0rem" + } + ], + "slots": [ + { + "name": "nav", + "description": "", + "type": { + "text": "GlideCoreTab" + } + }, + { + "name": "", + "description": "", + "type": { + "text": "GlideCoreTabPanel" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "field", + "name": "selectedTab", + "privacy": "private" + }, + { + "kind": "field", + "name": "isAfterFirstUpdated", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isDisableOverflowEndButton", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isDisableOverflowStartButton", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isShowOverflowButtons", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "#componentElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#localize", + "privacy": "private", + "default": "new LocalizeController(this)" + }, + { + "kind": "field", + "name": "#overflowButtonsScrollDelta", + "privacy": "private", + "type": { + "text": "number" + }, + "default": "1" + }, + { + "kind": "field", + "name": "#overflowEndButtonElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#overflowStartButtonElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#previousSelectedTab", + "privacy": "private", + "type": { + "text": "GlideCoreTab | null" + }, + "default": "null" + }, + { + "kind": "field", + "name": "#resizeTimeout", + "privacy": "private", + "type": { + "text": "ReturnType | null" + }, + "default": "null" + }, + { + "kind": "field", + "name": "#selectedTab", + "privacy": "private", + "type": { + "text": "GlideCoreTab | null" + }, + "default": "null" + }, + { + "kind": "field", + "name": "#tabListElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#panelElements", + "privacy": "private", + "readonly": true + }, + { + "kind": "field", + "name": "#tabElements", + "privacy": "private", + "readonly": true + }, + { + "kind": "method", + "name": "#onClick", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "Event" + } + } + ] + }, + { + "kind": "method", + "name": "#onClickOverflowEndButton", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onClickOverflowStartButton", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onFocusout", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onKeydown", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "KeyboardEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onNavSlotChange", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onTabListResize", + "privacy": "private" + }, + { + "kind": "method", + "name": "#scrollTabsList", + "privacy": "private", + "parameters": [ + { + "name": "buttonPlacement", + "type": { + "text": "'left' | 'right'" + } + } + ] + }, + { + "kind": "method", + "name": "#setEndOverflowButtonState", + "privacy": "private" + }, + { + "kind": "method", + "name": "#setOverflowButtonsState", + "privacy": "private" + }, + { + "kind": "method", + "name": "#setSelectedTab", + "privacy": "private" + }, + { + "kind": "method", + "name": "#setStartOverflowButtonState", + "privacy": "private" + }, + { + "kind": "method", + "name": "#setupTabs", + "privacy": "private" + }, + { + "kind": "method", + "name": "#showTab", + "privacy": "private", + "parameters": [ + { + "name": "tab", + "type": { + "text": "GlideCoreTab" + } + } + ] + } + ], + "attributes": [ + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-tab-group", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreTabGroup", + "module": "src/tab.group.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-tab-group", + "declaration": { + "name": "GlideCoreTabGroup", + "module": "src/tab.group.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/tab.panel.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/tab.panel.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/tab.panel.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreTabPanel", + "cssProperties": [ + { + "name": "--padding-inline-end", + "default": "0rem" + }, + { + "name": "--padding-inline-start", + "default": "0rem" + } + ], + "slots": [ + { + "name": "", + "description": "The content of the panel", + "type": { + "text": "Element | string" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "name", + "type": { + "text": "string | undefined" + }, + "description": "The corresponding GlideCoreTab should have a `panel` attribute with this name", + "attribute": "name", + "reflects": true + }, + { + "kind": "field", + "name": "privateIsSelected", + "attribute": "privateIsSelected" + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "field", + "name": "#id", + "privacy": "private" + }, + { + "kind": "field", + "name": "#isSelected", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + } + ], + "attributes": [ + { + "name": "name", + "type": { + "text": "string | undefined" + }, + "description": "The corresponding GlideCoreTab should have a `panel` attribute with this name", + "fieldName": "name", + "required": true + }, + { + "name": "privateIsSelected", + "fieldName": "privateIsSelected" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-tab-panel", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreTabPanel", + "module": "src/tab.panel.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-tab-panel", + "declaration": { + "name": "GlideCoreTabPanel", + "module": "src/tab.panel.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/tab.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/tab.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/tab.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreTab", + "slots": [ + { + "name": "icon", + "description": "", + "type": { + "text": "Element" + } + }, + { + "name": "", + "description": "A label", + "type": { + "text": "Element | string" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "panel", + "type": { + "text": "string | undefined" + }, + "attribute": "panel", + "reflects": true + }, + { + "kind": "field", + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "disabled", + "reflects": true + }, + { + "kind": "field", + "name": "selected", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "selected", + "reflects": true + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "field", + "name": "#id", + "privacy": "private" + }, + { + "kind": "field", + "name": "#isSelected", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + } + ], + "events": [ + { + "name": "selected", + "type": { + "text": "Event" + } + } + ], + "attributes": [ + { + "name": "panel", + "type": { + "text": "string | undefined" + }, + "fieldName": "panel", + "required": true + }, + { + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "disabled" + }, + { + "name": "selected", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "selected" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-tab", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreTab", + "module": "src/tab.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-tab", + "declaration": { + "name": "GlideCoreTab", + "module": "src/tab.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/tag.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/tag.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/tag.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreTag", + "slots": [ + { + "name": "icon", + "description": "", + "type": { + "text": "Element" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, delegatesFocus: true, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "disabled", + "reflects": true + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label", + "reflects": true + }, + { + "kind": "field", + "name": "privateEditable", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "private-editable", + "reflects": true + }, + { + "kind": "field", + "name": "removable", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "removable", + "reflects": true + }, + { + "kind": "field", + "name": "size", + "type": { + "text": "'small' | 'medium' | 'large'" + }, + "default": "'medium'", + "attribute": "size", + "reflects": true + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "method", + "name": "click" + }, + { + "kind": "method", + "name": "focus" + }, + { + "kind": "field", + "name": "#animationDuration", + "privacy": "private", + "type": { + "text": "number" + }, + "default": "100" + }, + { + "kind": "field", + "name": "#componentElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#isKeyboardClick", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#localize", + "privacy": "private", + "default": "new LocalizeController(this)" + }, + { + "kind": "field", + "name": "#removalButtonElementRef", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onEditButtonClick", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onEditButtonKeydown", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "KeyboardEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onRemovalButtonClick", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onRemovalButtonKeydown", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "KeyboardEvent" + } + } + ] + } + ], + "events": [ + { + "name": "edit", + "type": { + "text": "Event" + } + }, + { + "name": "remove", + "type": { + "text": "Event" + } + } + ], + "attributes": [ + { + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "disabled" + }, + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label", + "required": true + }, + { + "name": "private-editable", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "privateEditable" + }, + { + "name": "removable", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "removable" + }, + { + "name": "size", + "type": { + "text": "'small' | 'medium' | 'large'" + }, + "default": "'medium'", + "fieldName": "size" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-tag", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreTag", + "module": "src/tag.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-tag", + "declaration": { + "name": "GlideCoreTag", + "module": "src/tag.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/textarea.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/textarea.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/textarea.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreTextarea", + "slots": [ + { + "name": "description", + "description": "Additional information or context", + "type": { + "text": "Element | string" + } + } + ], + "members": [ + { + "kind": "field", + "name": "formAssociated", + "type": { + "text": "boolean" + }, + "static": true, + "default": "true" + }, + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, delegatesFocus: true, }" + }, + { + "kind": "field", + "name": "value", + "type": { + "text": "string" + }, + "default": "''", + "attribute": "value" + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label", + "reflects": true + }, + { + "kind": "field", + "name": "hideLabel", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "hide-label", + "reflects": true + }, + { + "kind": "field", + "name": "orientation", + "type": { + "text": "'horizontal' | 'vertical'" + }, + "default": "'horizontal'", + "attribute": "orientation", + "reflects": true + }, + { + "kind": "field", + "name": "placeholder", + "type": { + "text": "string | undefined" + }, + "default": "''", + "attribute": "placeholder", + "reflects": true + }, + { + "kind": "field", + "name": "rows", + "type": { + "text": "number" + }, + "default": "2", + "attribute": "rows", + "reflects": true + }, + { + "kind": "field", + "name": "required", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "required", + "reflects": true + }, + { + "kind": "field", + "name": "readonly", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "readonly", + "reflects": true + }, + { + "kind": "field", + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "disabled", + "reflects": true + }, + { + "kind": "field", + "name": "maxlength", + "type": { + "text": "number | undefined" + }, + "attribute": "maxlength", + "reflects": true + }, + { + "kind": "field", + "name": "name", + "type": { + "text": "string" + }, + "default": "''", + "attribute": "name", + "reflects": true + }, + { + "kind": "field", + "name": "spellcheck", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "spellcheck", + "reflects": true + }, + { + "kind": "field", + "name": "autocapitalize", + "type": { + "text": "| 'on'\n | 'off'\n | 'none'\n | 'sentences'\n | 'words'\n | 'characters'" + }, + "default": "'on'", + "attribute": "autocapitalize", + "reflects": true + }, + { + "kind": "field", + "name": "autocomplete", + "type": { + "text": "'on' | 'off'" + }, + "default": "'on'", + "attribute": "autocomplete", + "reflects": true + }, + { + "kind": "field", + "name": "privateSplit", + "type": { + "text": "'left' | 'middle' | undefined" + }, + "attribute": "privateSplit" + }, + { + "kind": "field", + "name": "tooltip", + "type": { + "text": "string | undefined" + }, + "attribute": "tooltip", + "reflects": true + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "method", + "name": "checkValidity", + "return": { + "type": { + "text": "boolean" + } + } + }, + { + "kind": "field", + "name": "form", + "type": { + "text": "HTMLFormElement | null" + }, + "readonly": true + }, + { + "kind": "field", + "name": "validity", + "type": { + "text": "ValidityState" + }, + "readonly": true + }, + { + "kind": "method", + "name": "formAssociatedCallback", + "return": { + "type": { + "text": "void" + } + } + }, + { + "kind": "method", + "name": "formResetCallback", + "return": { + "type": { + "text": "void" + } + } + }, + { + "kind": "method", + "name": "reportValidity", + "return": { + "type": { + "text": "boolean" + } + } + }, + { + "kind": "method", + "name": "resetValidityFeedback", + "return": { + "type": { + "text": "void" + } + } + }, + { + "kind": "method", + "name": "setCustomValidity", + "return": { + "type": { + "text": "void" + } + }, + "parameters": [ + { + "name": "message", + "type": { + "text": "string" + } + } + ] + }, + { + "kind": "method", + "name": "setValidity", + "return": { + "type": { + "text": "void" + } + }, + "parameters": [ + { + "name": "flags", + "optional": true, + "type": { + "text": "ValidityStateFlags" + } + }, + { + "name": "message", + "optional": true, + "type": { + "text": "string" + } + } + ] + }, + { + "kind": "field", + "name": "isBlurring", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isCheckingValidity", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "isReportValidityOrSubmit", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "validityMessage", + "type": { + "text": "string | undefined" + }, + "privacy": "private" + }, + { + "kind": "field", + "name": "#internals", + "privacy": "private", + "type": { + "text": "ElementInternals" + } + }, + { + "kind": "field", + "name": "#localize", + "privacy": "private", + "default": "new LocalizeController(this)" + }, + { + "kind": "field", + "name": "#textareaElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#onFormdata", + "privacy": "private" + }, + { + "kind": "field", + "name": "#isShowValidationFeedback", + "privacy": "private", + "readonly": true + }, + { + "kind": "field", + "name": "#valueCharacterCount", + "privacy": "private", + "readonly": true + }, + { + "kind": "field", + "name": "#isMaxCharacterCountExceeded", + "privacy": "private", + "readonly": true + }, + { + "kind": "method", + "name": "#onTextareaBlur", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onTextareaChange", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onTextareaInput", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onTextareaKeydown", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "KeyboardEvent" + } + } + ] + } + ], + "events": [ + { + "name": "change", + "type": { + "text": "Event" + } + }, + { + "name": "invalid", + "type": { + "text": "Event" + } + } + ], + "attributes": [ + { + "name": "value", + "type": { + "text": "string" + }, + "default": "''", + "fieldName": "value" + }, + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label", + "required": true + }, + { + "name": "hide-label", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "hideLabel" + }, + { + "name": "orientation", + "type": { + "text": "'horizontal' | 'vertical'" + }, + "default": "'horizontal'", + "fieldName": "orientation" + }, + { + "name": "placeholder", + "type": { + "text": "string | undefined" + }, + "default": "''", + "fieldName": "placeholder" + }, + { + "name": "rows", + "type": { + "text": "number" + }, + "default": "2", + "fieldName": "rows" + }, + { + "name": "required", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "required" + }, + { + "name": "readonly", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "readonly" + }, + { + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "disabled" + }, + { + "name": "maxlength", + "type": { + "text": "number | undefined" + }, + "fieldName": "maxlength" + }, + { + "name": "name", + "type": { + "text": "string" + }, + "default": "''", + "fieldName": "name" + }, + { + "name": "spellcheck", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "spellcheck" + }, + { + "name": "autocapitalize", + "type": { + "text": "| 'on'\n | 'off'\n | 'none'\n | 'sentences'\n | 'words'\n | 'characters'" + }, + "default": "'on'", + "fieldName": "autocapitalize" + }, + { + "name": "autocomplete", + "type": { + "text": "'on' | 'off'" + }, + "default": "'on'", + "fieldName": "autocomplete" + }, + { + "name": "privateSplit", + "type": { + "text": "'left' | 'middle' | undefined" + }, + "fieldName": "privateSplit" + }, + { + "name": "tooltip", + "type": { + "text": "string | undefined" + }, + "fieldName": "tooltip" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-textarea", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreTextarea", + "module": "src/textarea.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-textarea", + "declaration": { + "name": "GlideCoreTextarea", + "module": "src/textarea.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/toasts.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/toasts.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/toasts.toast.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/toasts.toast.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/toasts.toast.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreToast", + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label", + "reflects": true + }, + { + "kind": "field", + "name": "description", + "type": { + "text": "string | undefined" + }, + "attribute": "description", + "reflects": true + }, + { + "kind": "field", + "name": "duration", + "type": { + "text": "number" + }, + "default": "5000", + "attribute": "duration" + }, + { + "kind": "field", + "name": "variant", + "type": { + "text": "'error' | 'informational' | 'success' | undefined" + }, + "attribute": "variant" + }, + { + "kind": "method", + "name": "close", + "return": { + "type": { + "text": "void" + } + } + }, + { + "kind": "method", + "name": "open", + "return": { + "type": { + "text": "void" + } + } + }, + { + "kind": "field", + "name": "#componentElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#localize", + "privacy": "private", + "default": "new LocalizeController(this)" + }, + { + "kind": "method", + "name": "#handleCloseButtonClick", + "privacy": "private" + } + ], + "events": [ + { + "name": "close", + "type": { + "text": "Event" + } + } + ], + "attributes": [ + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label" + }, + { + "name": "description", + "type": { + "text": "string | undefined" + }, + "fieldName": "description" + }, + { + "name": "duration", + "type": { + "text": "number" + }, + "default": "5000", + "fieldName": "duration" + }, + { + "name": "variant", + "type": { + "text": "'error' | 'informational' | 'success' | undefined" + }, + "fieldName": "variant" + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-toast", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreToast", + "module": "src/toasts.toast.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-toast", + "declaration": { + "name": "GlideCoreToast", + "module": "src/toasts.toast.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/toasts.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreToasts", + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "method", + "name": "add", + "return": { + "type": { + "text": "GlideCoreToast" + } + }, + "parameters": [ + { + "name": "toast", + "type": { + "text": "{\n label: string;\n description: string;\n variant: 'error' | 'informational' | 'success';\n duration?: number; // Defaults to 5000. Set to `Infinity` to make the toast persist until dismissed.\n }" + } + } + ] + }, + { + "kind": "field", + "name": "#componentElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#localize", + "privacy": "private", + "default": "new LocalizeController(this)" + } + ], + "attributes": [ + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-toasts", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreToasts", + "module": "src/toasts.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-toasts", + "declaration": { + "name": "GlideCoreToasts", + "module": "src/toasts.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/toggle.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/toggle.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/toggle.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreToggle", + "slots": [ + { + "name": "description", + "description": "Additional information or context", + "type": { + "text": "Element | string" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "checked", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "checked" + }, + { + "kind": "field", + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "disabled", + "reflects": true + }, + { + "kind": "field", + "name": "hideLabel", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "hide-label" + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label", + "reflects": true + }, + { + "kind": "field", + "name": "orientation", + "type": { + "text": "'horizontal' | 'vertical'" + }, + "default": "'horizontal'", + "attribute": "orientation", + "reflects": true + }, + { + "kind": "field", + "name": "privateSplit", + "type": { + "text": "'left' | 'middle' | undefined" + }, + "attribute": "privateSplit" + }, + { + "kind": "field", + "name": "summary", + "type": { + "text": "string | undefined" + }, + "attribute": "summary", + "reflects": true + }, + { + "kind": "field", + "name": "tooltip", + "type": { + "text": "string | undefined" + }, + "attribute": "tooltip", + "reflects": true + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "method", + "name": "click" + }, + { + "kind": "method", + "name": "focus", + "parameters": [ + { + "name": "options", + "optional": true, + "type": { + "text": "FocusOptions" + } + } + ] + }, + { + "kind": "field", + "name": "#inputElementRef", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onChangeOrInput", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "Event" + } + } + ] + } + ], + "events": [ + { + "name": "change", + "type": { + "text": "Event" + } + } + ], + "attributes": [ + { + "name": "checked", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "checked" + }, + { + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "disabled" + }, + { + "name": "hide-label", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "hideLabel" + }, + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label", + "required": true + }, + { + "name": "orientation", + "type": { + "text": "'horizontal' | 'vertical'" + }, + "default": "'horizontal'", + "fieldName": "orientation" + }, + { + "name": "privateSplit", + "type": { + "text": "'left' | 'middle' | undefined" + }, + "fieldName": "privateSplit" + }, + { + "name": "summary", + "type": { + "text": "string | undefined" + }, + "fieldName": "summary" + }, + { + "name": "tooltip", + "type": { + "text": "string | undefined" + }, + "fieldName": "tooltip" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-toggle", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreToggle", + "module": "src/toggle.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-toggle", + "declaration": { + "name": "GlideCoreToggle", + "module": "src/toggle.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/tooltip.container.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/tooltip.container.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/tooltip.container.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreTooltipContainer", + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "disabled" + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label" + }, + { + "kind": "field", + "name": "placement", + "type": { + "text": "'bottom' | 'left' | 'right' | 'top' | undefined" + }, + "attribute": "placement" + }, + { + "kind": "field", + "name": "screenreaderHidden", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "screenreader-hidden" + }, + { + "kind": "field", + "name": "shortcut", + "type": { + "text": "string[]" + }, + "default": "[]", + "attribute": "shortcut" + }, + { + "kind": "field", + "name": "#isDisabled", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + } + ], + "attributes": [ + { + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "disabled" + }, + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label" + }, + { + "name": "placement", + "type": { + "text": "'bottom' | 'left' | 'right' | 'top' | undefined" + }, + "fieldName": "placement" + }, + { + "name": "screenreader-hidden", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "screenreaderHidden" + }, + { + "name": "shortcut", + "type": { + "text": "string[]" + }, + "default": "[]", + "fieldName": "shortcut" + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-private-tooltip-container", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreTooltipContainer", + "module": "src/tooltip.container.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-private-tooltip-container", + "declaration": { + "name": "GlideCoreTooltipContainer", + "module": "src/tooltip.container.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/tooltip.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/tooltip.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/tooltip.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreTooltip", + "slots": [ + { + "name": "target", + "description": "The element to which the tooltip will anchor. Can be any element with an implicit or explicit ARIA role.", + "required": { + "tag": "required", + "name": "", + "type": "", + "optional": false, + "description": "", + "problems": [], + "source": [ + { + "number": 5, + "source": " @required", + "tokens": { + "start": " ", + "delimiter": "", + "postDelimiter": "", + "tag": "@required", + "postTag": "", + "name": "", + "postName": "", + "type": "", + "postType": "", + "description": "", + "end": "", + "lineEnd": "" + } + } + ] + }, + "type": { + "text": "Element" + } + }, + { + "name": "private", + "description": "", + "type": { + "text": "GlideCoreTooltipContainer" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "disabled", + "reflects": true + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "default": "undefined", + "attribute": "label", + "reflects": true + }, + { + "kind": "field", + "name": "offset", + "type": { + "text": "number" + }, + "default": "4", + "attribute": "offset", + "reflects": true + }, + { + "kind": "field", + "name": "open", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "open", + "reflects": true + }, + { + "kind": "field", + "name": "placement", + "type": { + "text": "'bottom' | 'left' | 'right' | 'top' | undefined" + }, + "description": "The placement of the tooltip relative to its target. Automatic placement will\ntake over if the tooltip is cut off by the viewport.", + "attribute": "placement", + "reflects": true + }, + { + "kind": "field", + "name": "screenreaderHidden", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "screenreader-hidden", + "reflects": true + }, + { + "kind": "field", + "name": "shortcut", + "type": { + "text": "string[]" + }, + "default": "[]", + "attribute": "shortcut", + "reflects": true + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "field", + "name": "effectivePlacement", + "type": { + "text": "Placement" + }, + "privacy": "private" + }, + { + "kind": "field", + "name": "#arrowElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#cleanUpFloatingUi", + "privacy": "private", + "type": { + "text": "ReturnType | undefined" + } + }, + { + "kind": "field", + "name": "#closeTimeoutId", + "privacy": "private", + "type": { + "text": "ReturnType | undefined" + } + }, + { + "kind": "field", + "name": "#isDisabled", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#isOpen", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#isScreenreaderHidden", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#label", + "privacy": "private", + "type": { + "text": "string | undefined" + } + }, + { + "kind": "field", + "name": "#offset", + "privacy": "private", + "type": { + "text": "number | undefined" + } + }, + { + "kind": "field", + "name": "#openTimeoutId", + "privacy": "private", + "type": { + "text": "ReturnType | undefined" + } + }, + { + "kind": "field", + "name": "#shortcut", + "privacy": "private", + "type": { + "text": "string[]" + }, + "default": "[]" + }, + { + "kind": "field", + "name": "#targetSlotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#tooltipElementRef", + "privacy": "private" + }, + { + "kind": "method", + "name": "#cancelClose", + "privacy": "private" + }, + { + "kind": "method", + "name": "#hide", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onComponentMouseout", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onComponentMouseover", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onTargetSlotChange", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onTargetSlotFocusin", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onTargetSlotFocusout", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onTargetSlotKeydown", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "KeyboardEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#scheduleClose", + "privacy": "private" + }, + { + "kind": "method", + "name": "#show", + "privacy": "private" + } + ], + "events": [ + { + "name": "toggle", + "type": { + "text": "Event" + } + } + ], + "attributes": [ + { + "name": "disabled", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "disabled" + }, + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "default": "undefined", + "fieldName": "label", + "required": true + }, + { + "name": "offset", + "type": { + "text": "number" + }, + "default": "4", + "fieldName": "offset" + }, + { + "name": "open", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "open" + }, + { + "name": "placement", + "type": { + "text": "'bottom' | 'left' | 'right' | 'top' | undefined" + }, + "description": "The placement of the tooltip relative to its target. Automatic placement will\ntake over if the tooltip is cut off by the viewport.", + "fieldName": "placement" + }, + { + "name": "screenreader-hidden", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "screenreaderHidden" + }, + { + "name": "shortcut", + "type": { + "text": "string[]" + }, + "default": "[]", + "fieldName": "shortcut" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-tooltip", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreTooltip", + "module": "src/tooltip.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-tooltip", + "declaration": { + "name": "GlideCoreTooltip", + "module": "src/tooltip.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/tree.item.icon-button.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/tree.item.icon-button.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/tree.item.icon-button.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreTreeItemIconButton", + "slots": [ + { + "name": "", + "description": "An icon", + "type": { + "text": "Element" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label" + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + } + ], + "attributes": [ + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label", + "required": true + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-tree-item-icon-button", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreTreeItemIconButton", + "module": "src/tree.item.icon-button.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-tree-item-icon-button", + "declaration": { + "name": "GlideCoreTreeItemIconButton", + "module": "src/tree.item.icon-button.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/tree.item.menu.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/tree.item.menu.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/tree.item.menu.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreTreeItemMenu", + "slots": [ + { + "name": "", + "description": "", + "type": { + "text": "GlideCoreMenuButton | GlideCoreMenuLink" + } + }, + { + "name": "icon", + "description": "", + "type": { + "text": "Element" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "placement", + "type": { + "text": "'bottom-start' | 'top-start'" + }, + "default": "'bottom-start'", + "attribute": "placement", + "reflects": true + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label" + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "method", + "name": "click" + }, + { + "kind": "field", + "name": "hasCustomIcon", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "#iconButtonElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#iconSlotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#menuElementRef", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onIconSlotChange", + "privacy": "private" + } + ], + "attributes": [ + { + "name": "placement", + "type": { + "text": "'bottom-start' | 'top-start'" + }, + "default": "'bottom-start'", + "fieldName": "placement" + }, + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-tree-item-menu", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreTreeItemMenu", + "module": "src/tree.item.menu.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-tree-item-menu", + "declaration": { + "name": "GlideCoreTreeItemMenu", + "module": "src/tree.item.menu.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/tree.item.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/tree.item.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/tree.item.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreTreeItem", + "slots": [ + { + "name": "prefix", + "description": "An icon before the label", + "type": { + "text": "Element" + } + }, + { + "name": "menu", + "description": "Visible on hover and focus", + "type": { + "text": "GlideCoreTreeItemMenu" + } + }, + { + "name": "suffix", + "description": "An icon after the label", + "type": { + "text": "Element" + } + }, + { + "name": "", + "description": "", + "type": { + "text": "GlideCoreTreeItem" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, delegatesFocus: true, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "expanded", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "expanded", + "reflects": true + }, + { + "kind": "field", + "name": "label", + "type": { + "text": "string | undefined" + }, + "attribute": "label", + "reflects": true + }, + { + "kind": "field", + "name": "level", + "type": { + "text": "number" + }, + "default": "1", + "attribute": "level", + "reflects": true + }, + { + "kind": "field", + "name": "selected", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "selected", + "reflects": true + }, + { + "kind": "field", + "name": "removeIndentation", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "remove-indentation", + "reflects": true + }, + { + "kind": "field", + "name": "nonCollapsible", + "type": { + "text": "boolean" + }, + "default": "false", + "attribute": "non-collapsible", + "reflects": true + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "method", + "name": "focus", + "parameters": [ + { + "name": "options", + "optional": true, + "type": { + "text": "FocusOptions" + } + } + ] + }, + { + "kind": "field", + "name": "privateHasChildTreeItems", + "readonly": true + }, + { + "kind": "field", + "name": "hasExpandIcon", + "privacy": "private", + "readonly": true + }, + { + "kind": "method", + "name": "privateToggleExpand" + }, + { + "kind": "method", + "name": "selectItem", + "return": { + "type": { + "text": "GlideCoreTreeItem | undefined" + } + }, + "parameters": [ + { + "name": "item", + "type": { + "text": "GlideCoreTreeItem" + } + } + ], + "description": "Traverses down the tree, selects the item, then deselects all other items." + }, + { + "kind": "field", + "name": "childTreeItems", + "type": { + "text": "GlideCoreTreeItem[]" + }, + "privacy": "private", + "default": "[]" + }, + { + "kind": "field", + "name": "hasPrefixIcon", + "type": { + "text": "boolean" + }, + "privacy": "private", + "default": "false" + }, + { + "kind": "field", + "name": "#defaultSlotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#isSelected", + "privacy": "private", + "type": { + "text": "boolean" + }, + "default": "false" + }, + { + "kind": "field", + "name": "#labelContainerElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#localize", + "privacy": "private", + "default": "new LocalizeController(this)" + }, + { + "kind": "field", + "name": "#menuSlotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#prefixSlotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#treeItemElements", + "privacy": "private", + "readonly": true + }, + { + "kind": "field", + "name": "#ariaExpanded", + "privacy": "private", + "readonly": true + }, + { + "kind": "field", + "name": "#ariaSelected", + "privacy": "private", + "readonly": true + }, + { + "kind": "field", + "name": "#indentationWidth", + "privacy": "private", + "readonly": true + }, + { + "kind": "method", + "name": "#isFocusTargetInternal", + "privacy": "private", + "parameters": [ + { + "name": "target", + "type": { + "text": "EventTarget | null" + } + } + ] + }, + { + "kind": "method", + "name": "#onDefaultSlotChange", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onFocusIn", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "FocusEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onFocusOut", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "FocusEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onMenuSlotChange", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onPrefixSlotChange", + "privacy": "private" + }, + { + "kind": "method", + "name": "#setTabIndexes", + "privacy": "private", + "parameters": [ + { + "name": "tabIndex", + "type": { + "text": "-1 | 0" + } + } + ] + }, + { + "kind": "method", + "name": "#setupChildren", + "privacy": "private" + } + ], + "events": [ + { + "name": "selected", + "type": { + "text": "Event" + } + } + ], + "attributes": [ + { + "name": "expanded", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "expanded" + }, + { + "name": "label", + "type": { + "text": "string | undefined" + }, + "fieldName": "label", + "required": true + }, + { + "name": "level", + "type": { + "text": "number" + }, + "default": "1", + "fieldName": "level" + }, + { + "name": "selected", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "selected" + }, + { + "name": "remove-indentation", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "removeIndentation" + }, + { + "name": "non-collapsible", + "type": { + "text": "boolean" + }, + "default": "false", + "fieldName": "nonCollapsible" + }, + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-tree-item", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreTreeItem", + "module": "src/tree.item.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-tree-item", + "declaration": { + "name": "GlideCoreTreeItem", + "module": "src/tree.item.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/tree.styles.ts", + "declarations": [], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "module": "src/tree.styles.ts" + } + } + ] + }, + { + "kind": "javascript-module", + "path": "src/tree.ts", + "declarations": [ + { + "kind": "class", + "description": "", + "name": "GlideCoreTree", + "slots": [ + { + "name": "", + "description": "", + "type": { + "text": "GlideCoreTreeItem" + } + } + ], + "members": [ + { + "kind": "field", + "name": "shadowRootOptions", + "type": { + "text": "ShadowRootInit" + }, + "static": true, + "default": "{ ...LitElement.shadowRootOptions, mode: shadowRootMode, }" + }, + { + "kind": "field", + "name": "version", + "readonly": true, + "attribute": "version", + "reflects": true + }, + { + "kind": "method", + "name": "selectItem", + "return": { + "type": { + "text": "void" + } + }, + "parameters": [ + { + "name": "item", + "type": { + "text": "GlideCoreTreeItem" + } + } + ] + }, + { + "kind": "field", + "name": "focusedItem", + "type": { + "text": "GlideCoreTreeItem | null | undefined" + }, + "privacy": "private" + }, + { + "kind": "field", + "name": "privateTabIndex", + "type": { + "text": "number" + }, + "privacy": "private", + "default": "0" + }, + { + "kind": "field", + "name": "selectedItem", + "type": { + "text": "GlideCoreTreeItem | undefined" + }, + "privacy": "private" + }, + { + "kind": "field", + "name": "#defaultSlotElementRef", + "privacy": "private" + }, + { + "kind": "field", + "name": "#treeItemElements", + "privacy": "private", + "readonly": true + }, + { + "kind": "method", + "name": "#focusItem", + "privacy": "private", + "parameters": [ + { + "name": "item", + "type": { + "text": "GlideCoreTreeItem | undefined | null" + } + } + ] + }, + { + "kind": "method", + "name": "#getFocusableItems", + "privacy": "private" + }, + { + "kind": "method", + "name": "#onComponentClick", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "Event" + } + } + ] + }, + { + "kind": "method", + "name": "#onComponentKeydown", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "KeyboardEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onHostFocusIn", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "FocusEvent" + } + } + ] + }, + { + "kind": "method", + "name": "#onHostFocusOut", + "privacy": "private", + "parameters": [ + { + "name": "event", + "type": { + "text": "FocusEvent" + } + } + ] + } + ], + "attributes": [ + { + "name": "version", + "readonly": true, + "fieldName": "version", + "type": { + "text": "0.19.1" + } + } + ], + "superclass": { + "name": "LitElement", + "package": "lit" + }, + "tagName": "glide-core-tree", + "customElement": true + } + ], + "exports": [ + { + "kind": "js", + "name": "default", + "declaration": { + "name": "GlideCoreTree", + "module": "src/tree.ts" + } + }, + { + "kind": "custom-element-definition", + "name": "glide-core-tree", + "declaration": { + "name": "GlideCoreTree", + "module": "src/tree.ts" + } + } + ] + } + ] +} diff --git a/package.json b/package.json index 26133acfd..200ee9f71 100644 --- a/package.json +++ b/package.json @@ -50,12 +50,19 @@ "scripts": { "start": "per-env", "start:development": "npm-run-all --parallel --print-name start:development:*", + "start:development:cem-analyze": "chokidar ./custom-elements.config.js './src/*.ts' './src/*.*.ts' './src/cem-analyzer-plugins/**' --ignore '**/*stories*' --ignore '**/*test*' --initial --silent --command 'tsc --noCheck --outDir ./dist && NODE_OPTIONS=--no-warnings=ExperimentalWarning cem analyze --config ./custom-elements.config.js --quiet'", + "start:development:cem-analyze:comment": "JSON module imports produce a warning. Remove NODE_OPTIONS when JSON module imports are no longer experimental.", "start:development:storybook": "storybook dev --config-dir .storybook --no-open --no-version-updates --port 6006", + "start:development:ts-morph": "chokidar ./custom-elements.json './src/ts-morph/**' --initial --silent --command 'tsx ./src/ts-morph/run.ts'", + "start:development:ts-morph:comment:tsx": "Remove `tsx` once Node.js type stripping is available.", + "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`.", "start:production": "rimraf ./dist && npm-run-all --aggregate-output --print-label --parallel start:production:components start:production:storybook start:production:stylesheets", "start:production:components": "tsc --noCheck --outDir ./dist && node ./terser.js", "start:production:figma": "pnpm dt export-variables && pnpm dt build-tokens && pnpm dt build-styles", + "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; }", "start:production:storybook": "storybook build --config-dir .storybook --disable-telemetry --output-dir ./dist/storybook", "start:production:stylesheets": "node ./esbuild.js", + "start:production:ts-morph": "tsx ./src/ts-morph/run.ts && git diff --quiet -- || { echo ERROR: Uncommitted code modifications. Run this command locally and commit the changes.; exit 1; }", "format": "per-env", "format:development": "chokidar '**/*' --ignore 'dist/**' --ignore '.changeset/**' --ignore '.git/**' --ignore 'node_modules/**' --ignore 'pnpm-lock.yaml' --initial --silent --comand 'prettier --write --ignore-unknown {path} && stylelint {path}'", "format:production": "prettier . --debug-check", @@ -96,6 +103,7 @@ "@changesets/changelog-github": "^0.5.0", "@changesets/cli": "^2.27.10", "@crowdstrike/design-tokens": "^2.0.1", + "@custom-elements-manifest/analyzer": "^0.10.4", "@eslint/eslintrc": "^3.2.0", "@eslint/js": "^9.17.0", "@open-wc/testing": "^4.0.0", @@ -125,6 +133,7 @@ "chalk": "^5.3.0", "chokidar-cli": "^3.0.0", "comment-parser": "^1.4.1", + "custom-elements-manifest": "^2.1.0", "esbuild": "^0.25.0", "eslint": "^9.17.0", "eslint-config-prettier": "^10.0.1", @@ -159,6 +168,8 @@ "stylelint-use-nesting": "^6.0.0", "terser": "^5.37.0", "ts-lit-plugin": "^2.0.2", + "ts-morph": "^25.0.1", + "tsx": "^4.19.2", "typescript": "^5.7.2", "typescript-eslint": "^8.23.0", "vite": "^6.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a13262bea..71a6b7b30 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -32,6 +32,9 @@ importers: '@crowdstrike/design-tokens': specifier: ^2.0.1 version: 2.0.1 + '@custom-elements-manifest/analyzer': + specifier: ^0.10.4 + version: 0.10.4 '@eslint/eslintrc': specifier: ^3.2.0 version: 3.2.0 @@ -73,7 +76,7 @@ importers: version: 8.5.8(lit@3.2.1)(storybook@8.5.8(prettier@3.4.2)) '@storybook/web-components-vite': specifier: ^8.5.8 - version: 8.5.8(lit@3.2.1)(storybook@8.5.8(prettier@3.4.2))(vite@6.1.1(@types/node@22.10.2)(terser@5.37.0)(yaml@2.7.0)) + version: 8.5.8(lit@3.2.1)(storybook@8.5.8(prettier@3.4.2))(vite@6.1.1(@types/node@22.10.2)(terser@5.37.0)(tsx@4.19.3)(yaml@2.7.0)) '@stylistic/eslint-plugin': specifier: ^2.12.1 version: 2.12.1(eslint@9.17.0)(typescript@5.7.3) @@ -119,6 +122,9 @@ importers: comment-parser: specifier: ^1.4.1 version: 1.4.1 + custom-elements-manifest: + specifier: ^2.1.0 + version: 2.1.0 esbuild: specifier: ^0.25.0 version: 0.25.0 @@ -221,6 +227,12 @@ importers: ts-lit-plugin: specifier: ^2.0.2 version: 2.0.2 + ts-morph: + specifier: ^25.0.1 + version: 25.0.1 + tsx: + specifier: ^4.19.2 + version: 4.19.3 typescript: specifier: ^5.7.2 version: 5.7.3 @@ -229,10 +241,10 @@ importers: version: 8.23.0(eslint@9.17.0)(typescript@5.7.3) vite: specifier: ^6.1.1 - version: 6.1.1(@types/node@22.10.2)(terser@5.37.0)(yaml@2.7.0) + version: 6.1.1(@types/node@22.10.2)(terser@5.37.0)(tsx@4.19.3)(yaml@2.7.0) vitest: specifier: ^3.0.6 - version: 3.0.6(@types/node@22.10.2)(terser@5.37.0)(yaml@2.7.0) + version: 3.0.6(@types/node@22.10.2)(terser@5.37.0)(tsx@4.19.3)(yaml@2.7.0) packages: @@ -361,6 +373,13 @@ packages: peerDependencies: postcss-selector-parser: ^7.0.0 + '@custom-elements-manifest/analyzer@0.10.4': + resolution: {integrity: sha512-hse8o20Jd82BwWank29/J9OC4PmSTwUoEmll3LEjDF3WLY/Lc8g3TUYSib/3GARCS8Q5myT2RPqEWfRa+6bkIg==} + hasBin: true + + '@custom-elements-manifest/find-dependencies@0.0.5': + resolution: {integrity: sha512-fKIMMZCDFSoL2ySUoz8knWgpV4jpb0lUXgLOvdZQMQFHxgxz1PqOJpUIypwvEVyKk3nEHRY4f10gNol02HjeCg==} + '@dual-bundle/import-meta-resolve@4.1.0': resolution: {integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==} @@ -560,6 +579,9 @@ packages: '@floating-ui/utils@0.2.8': resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} + '@github/catalyst@1.7.0': + resolution: {integrity: sha512-qOAxrDdRZz9+v4y2WoAfh11rpRY/x4FRofPNmJyZFzAjubtzE3sCa/tAycWWufmQGoYiwwzL/qJBBgyg7avxPw==} + '@hapi/bourne@3.0.0': resolution: {integrity: sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==} @@ -1021,6 +1043,9 @@ packages: '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} + '@ts-morph/common@0.26.1': + resolution: {integrity: sha512-Sn28TGl/4cFpcM+jwsH1wLncYq3FtN/BIpem+HOygfBWPT5pAeS5dB4VFVzV8FbnOKHpDLZmvAl4AjPEev5idA==} + '@types/accepts@1.3.7': resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} @@ -1260,6 +1285,10 @@ packages: resolution: {integrity: sha512-/EBiDAUCJ2DzZhaFxTPRIznEPeafdLbXShIL6aTu7x73x7ZoxSDv7DGuTsh2rWNMUa4+AKli4UORrpyv6QBOiA==} engines: {node: '>=18.0.0'} + '@web/config-loader@0.1.3': + resolution: {integrity: sha512-XVKH79pk4d3EHRhofete8eAnqto1e8mCRAqPV00KLNFzCWSe8sWmLnqKCqkPNARC6nksMaGrATnA5sPDRllMpQ==} + engines: {node: '>=10.0.0'} + '@web/config-loader@0.3.2': resolution: {integrity: sha512-Vrjv/FexBGmAdnCYpJKLHX1dfT1UaUdvHmX1JRaWos9OvDf/tFznYJ5SpJwww3Rl87/ewvLSYG7kfsMqEAsizQ==} engines: {node: '>=18.0.0'} @@ -1612,6 +1641,10 @@ packages: engines: {node: '>= 8.10.0'} hasBin: true + chokidar@3.5.2: + resolution: {integrity: sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==} + engines: {node: '>= 8.10.0'} + chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -1677,6 +1710,9 @@ packages: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + code-block-writer@13.0.3: + resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} + color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -1696,6 +1732,10 @@ packages: colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + command-line-args@5.1.2: + resolution: {integrity: sha512-fytTsbndLbl+pPWtS0CxLV3BEWw9wJayB8NnU2cbQqVPsNdYezQeT+uIQv009m+GShnMNyuoBrRo8DTmuTfSCA==} + engines: {node: '>=4.0.0'} + command-line-args@5.2.1: resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} engines: {node: '>=4.0.0'} @@ -1715,6 +1755,10 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + comment-parser@1.2.4: + resolution: {integrity: sha512-pm0b+qv+CkWNriSTMsfnjChF9kH0kxz55y44Wo5le9qLxMj5xDQAaEd9ZN1ovSuk9CsrncWaFwgpOMg7ClJwkw==} + engines: {node: '>= 12.0.0'} + comment-parser@1.4.1: resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} engines: {node: '>= 12.0.0'} @@ -1783,6 +1827,12 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + custom-elements-manifest@1.0.0: + resolution: {integrity: sha512-j59k0ExGCKA8T6Mzaq+7axc+KVHwpEphEERU7VZ99260npu/p/9kd+Db+I3cGKxHkM5y6q5gnlXn00mzRQkX2A==} + + custom-elements-manifest@2.1.0: + resolution: {integrity: sha512-4TU+YhBQpCGYWonsZVTOPx6aYJXenOiSRT7TNGvDB7ipa4SZSJKed1DYXG77XKL9JFZ86sDSDVkwgv1mqw3V3A==} + data-uri-to-buffer@6.0.2: resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} engines: {node: '>= 14'} @@ -2011,6 +2061,9 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} + es-module-lexer@0.9.3: + resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} + es-module-lexer@1.5.4: resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} @@ -2378,6 +2431,9 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} + get-tsconfig@4.10.0: + resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} + get-uri@6.0.4: resolution: {integrity: sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==} engines: {node: '>= 14'} @@ -2424,6 +2480,10 @@ packages: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} + globby@11.0.4: + resolution: {integrity: sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==} + engines: {node: '>=10'} + globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -3388,6 +3448,9 @@ packages: pascal-case@3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} @@ -3669,6 +3732,9 @@ packages: resolution: {integrity: sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w==} engines: {node: '>= 0.8'} + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve@1.22.9: resolution: {integrity: sha512-QxrmX1DzraFIi9PxdG5VkRfRwIgjwyud+z/iBwfRRrVmHc+P9Q7u2lSSpQ6bjr2gy5lrqIiU9vb6iAeGf2400A==} hasBin: true @@ -4113,6 +4179,9 @@ packages: ts-lit-plugin@2.0.2: resolution: {integrity: sha512-DPXlVxhjWHxg8AyBLcfSYt2JXgpANV1ssxxwjY98o26gD8MzeiM68HFW9c2VeDd1CjoR3w7B/6/uKxwBQe+ioA==} + ts-morph@25.0.1: + resolution: {integrity: sha512-QJEiTdnz1YjrB3JFhd626gX4rKHDLSjSVMvGGG4v7ONc3RBwa0Eei98G9AT9uNFDMtV54JyuXsFeC+OH0n6bXQ==} + ts-simple-type@2.0.0-next.0: resolution: {integrity: sha512-A+hLX83gS+yH6DtzNAhzZbPfU+D9D8lHlTSd7GeoMRBjOt3GRylDqLTYbdmjA4biWvq2xSfpqfIDj2l0OA/BVg==} @@ -4126,6 +4195,11 @@ packages: resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} engines: {node: '>=0.6.x'} + tsx@4.19.3: + resolution: {integrity: sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==} + engines: {node: '>=18.0.0'} + hasBin: true + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -4194,6 +4268,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} + hasBin: true + typescript@5.7.3: resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} engines: {node: '>=14.17'} @@ -4755,6 +4834,23 @@ snapshots: dependencies: postcss-selector-parser: 7.0.0 + '@custom-elements-manifest/analyzer@0.10.4': + dependencies: + '@custom-elements-manifest/find-dependencies': 0.0.5 + '@github/catalyst': 1.7.0 + '@web/config-loader': 0.1.3 + chokidar: 3.5.2 + command-line-args: 5.1.2 + comment-parser: 1.2.4 + custom-elements-manifest: 1.0.0 + debounce: 1.2.1 + globby: 11.0.4 + typescript: 5.4.5 + + '@custom-elements-manifest/find-dependencies@0.0.5': + dependencies: + es-module-lexer: 0.9.3 + '@dual-bundle/import-meta-resolve@4.1.0': {} '@esbuild/aix-ppc64@0.25.0': @@ -4888,6 +4984,8 @@ snapshots: '@floating-ui/utils@0.2.8': {} + '@github/catalyst@1.7.0': {} + '@hapi/bourne@3.0.0': {} '@humanfs/core@0.19.1': {} @@ -5232,13 +5330,13 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/builder-vite@8.5.8(storybook@8.5.8(prettier@3.4.2))(vite@6.1.1(@types/node@22.10.2)(terser@5.37.0)(yaml@2.7.0))': + '@storybook/builder-vite@8.5.8(storybook@8.5.8(prettier@3.4.2))(vite@6.1.1(@types/node@22.10.2)(terser@5.37.0)(tsx@4.19.3)(yaml@2.7.0))': dependencies: '@storybook/csf-plugin': 8.5.8(storybook@8.5.8(prettier@3.4.2)) browser-assert: 1.2.1 storybook: 8.5.8(prettier@3.4.2) ts-dedent: 2.2.0 - vite: 6.1.1(@types/node@22.10.2)(terser@5.37.0)(yaml@2.7.0) + vite: 6.1.1(@types/node@22.10.2)(terser@5.37.0)(tsx@4.19.3)(yaml@2.7.0) '@storybook/components@8.5.8(storybook@8.5.8(prettier@3.4.2))': dependencies: @@ -5302,9 +5400,9 @@ snapshots: dependencies: storybook: 8.5.8(prettier@3.4.2) - '@storybook/web-components-vite@8.5.8(lit@3.2.1)(storybook@8.5.8(prettier@3.4.2))(vite@6.1.1(@types/node@22.10.2)(terser@5.37.0)(yaml@2.7.0))': + '@storybook/web-components-vite@8.5.8(lit@3.2.1)(storybook@8.5.8(prettier@3.4.2))(vite@6.1.1(@types/node@22.10.2)(terser@5.37.0)(tsx@4.19.3)(yaml@2.7.0))': dependencies: - '@storybook/builder-vite': 8.5.8(storybook@8.5.8(prettier@3.4.2))(vite@6.1.1(@types/node@22.10.2)(terser@5.37.0)(yaml@2.7.0)) + '@storybook/builder-vite': 8.5.8(storybook@8.5.8(prettier@3.4.2))(vite@6.1.1(@types/node@22.10.2)(terser@5.37.0)(tsx@4.19.3)(yaml@2.7.0)) '@storybook/web-components': 8.5.8(lit@3.2.1)(storybook@8.5.8(prettier@3.4.2)) magic-string: 0.30.17 storybook: 8.5.8(prettier@3.4.2) @@ -5342,6 +5440,12 @@ snapshots: '@tootallnate/quickjs-emscripten@0.23.0': {} + '@ts-morph/common@0.26.1': + dependencies: + fast-glob: 3.3.3 + minimatch: 9.0.5 + path-browserify: 1.0.1 + '@types/accepts@1.3.7': dependencies: '@types/node': 22.10.2 @@ -5610,13 +5714,13 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.0.6(vite@6.1.1(@types/node@22.10.2)(terser@5.37.0)(yaml@2.7.0))': + '@vitest/mocker@3.0.6(vite@6.1.1(@types/node@22.10.2)(terser@5.37.0)(tsx@4.19.3)(yaml@2.7.0))': dependencies: '@vitest/spy': 3.0.6 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 6.1.1(@types/node@22.10.2)(terser@5.37.0)(yaml@2.7.0) + vite: 6.1.1(@types/node@22.10.2)(terser@5.37.0)(tsx@4.19.3)(yaml@2.7.0) '@vitest/pretty-format@3.0.6': dependencies: @@ -5649,6 +5753,10 @@ snapshots: dependencies: errorstacks: 2.4.1 + '@web/config-loader@0.1.3': + dependencies: + semver: 7.7.0 + '@web/config-loader@0.3.2': {} '@web/dev-server-core@0.7.4': @@ -6140,6 +6248,18 @@ snapshots: lodash.throttle: 4.1.1 yargs: 13.3.2 + chokidar@3.5.2: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -6221,6 +6341,8 @@ snapshots: co@4.6.0: {} + code-block-writer@13.0.3: {} + color-convert@1.9.3: dependencies: color-name: 1.1.3 @@ -6237,6 +6359,13 @@ snapshots: colorette@2.0.20: {} + command-line-args@5.1.2: + dependencies: + array-back: 6.2.2 + find-replace: 3.0.0 + lodash.camelcase: 4.3.0 + typical: 4.0.0 + command-line-args@5.2.1: dependencies: array-back: 3.1.0 @@ -6257,6 +6386,8 @@ snapshots: commander@2.20.3: {} + comment-parser@1.2.4: {} + comment-parser@1.4.1: {} commondir@1.0.1: {} @@ -6318,6 +6449,10 @@ snapshots: csstype@3.1.3: {} + custom-elements-manifest@1.0.0: {} + + custom-elements-manifest@2.1.0: {} + data-uri-to-buffer@6.0.2: {} data-view-buffer@1.0.2: @@ -6560,6 +6695,8 @@ snapshots: es-errors@1.3.0: {} + es-module-lexer@0.9.3: {} + es-module-lexer@1.5.4: {} es-module-lexer@1.6.0: {} @@ -7034,6 +7171,10 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.2.7 + get-tsconfig@4.10.0: + dependencies: + resolve-pkg-maps: 1.0.0 + get-uri@6.0.4: dependencies: basic-ftp: 5.0.5 @@ -7088,6 +7229,15 @@ snapshots: define-properties: 1.2.1 gopd: 1.2.0 + globby@11.0.4: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + globby@11.1.0: dependencies: array-union: 2.1.0 @@ -8068,6 +8218,8 @@ snapshots: no-case: 3.0.4 tslib: 2.8.1 + path-browserify@1.0.1: {} + path-exists@3.0.0: {} path-exists@4.0.0: {} @@ -8334,6 +8486,8 @@ snapshots: http-errors: 1.6.3 path-is-absolute: 1.0.1 + resolve-pkg-maps@1.0.0: {} + resolve@1.22.9: dependencies: is-core-module: 2.16.0 @@ -8870,6 +9024,11 @@ snapshots: lit-analyzer: 2.0.3 web-component-analyzer: 2.0.0 + ts-morph@25.0.1: + dependencies: + '@ts-morph/common': 0.26.1 + code-block-writer: 13.0.3 + ts-simple-type@2.0.0-next.0: {} tsconfig-paths@3.15.0: @@ -8883,6 +9042,13 @@ snapshots: tsscmp@1.0.6: {} + tsx@4.19.3: + dependencies: + esbuild: 0.25.0 + get-tsconfig: 4.10.0 + optionalDependencies: + fsevents: 2.3.3 + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -8953,6 +9119,8 @@ snapshots: typescript@5.2.2: {} + typescript@5.4.5: {} + typescript@5.7.3: {} typical@4.0.0: {} @@ -9029,13 +9197,13 @@ snapshots: vary@1.1.2: {} - vite-node@3.0.6(@types/node@22.10.2)(terser@5.37.0)(yaml@2.7.0): + vite-node@3.0.6(@types/node@22.10.2)(terser@5.37.0)(tsx@4.19.3)(yaml@2.7.0): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: 6.1.1(@types/node@22.10.2)(terser@5.37.0)(yaml@2.7.0) + vite: 6.1.1(@types/node@22.10.2)(terser@5.37.0)(tsx@4.19.3)(yaml@2.7.0) transitivePeerDependencies: - '@types/node' - jiti @@ -9050,7 +9218,7 @@ snapshots: - tsx - yaml - vite@6.1.1(@types/node@22.10.2)(terser@5.37.0)(yaml@2.7.0): + vite@6.1.1(@types/node@22.10.2)(terser@5.37.0)(tsx@4.19.3)(yaml@2.7.0): dependencies: esbuild: 0.25.0 postcss: 8.5.3 @@ -9059,12 +9227,13 @@ snapshots: '@types/node': 22.10.2 fsevents: 2.3.3 terser: 5.37.0 + tsx: 4.19.3 yaml: 2.7.0 - vitest@3.0.6(@types/node@22.10.2)(terser@5.37.0)(yaml@2.7.0): + vitest@3.0.6(@types/node@22.10.2)(terser@5.37.0)(tsx@4.19.3)(yaml@2.7.0): dependencies: '@vitest/expect': 3.0.6 - '@vitest/mocker': 3.0.6(vite@6.1.1(@types/node@22.10.2)(terser@5.37.0)(yaml@2.7.0)) + '@vitest/mocker': 3.0.6(vite@6.1.1(@types/node@22.10.2)(terser@5.37.0)(tsx@4.19.3)(yaml@2.7.0)) '@vitest/pretty-format': 3.0.6 '@vitest/runner': 3.0.6 '@vitest/snapshot': 3.0.6 @@ -9080,8 +9249,8 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 6.1.1(@types/node@22.10.2)(terser@5.37.0)(yaml@2.7.0) - vite-node: 3.0.6(@types/node@22.10.2)(terser@5.37.0)(yaml@2.7.0) + vite: 6.1.1(@types/node@22.10.2)(terser@5.37.0)(tsx@4.19.3)(yaml@2.7.0) + vite-node: 3.0.6(@types/node@22.10.2)(terser@5.37.0)(tsx@4.19.3)(yaml@2.7.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.10.2 diff --git a/src/accordion.ts b/src/accordion.ts index 489b169ac..3c6c34d86 100644 --- a/src/accordion.ts +++ b/src/accordion.ts @@ -17,11 +17,17 @@ declare global { } /** - * @event toggle + * @attr {string} label + * @attr {boolean} [open=false] * - * @slot - The content of the accordion. - * @slot prefix-icon - An optional icon before the label. - * @slot suffix-icons - Optional icons after the label. + * @readonly + * @attr {0.19.1} [version] + * + * @slot {Element | string} - The content of the accordion + * @slot {Element} [prefix-icon] - An icon before the label + * @slot {Element} [suffix-icons] - Icons after the label + * + * @fires {Event} toggle */ @customElement('glide-core-accordion') @final @@ -171,7 +177,7 @@ export default class GlideCoreAccordion extends LitElement { ${ref(this.#prefixIconSlotElementRef)} > @@ -204,8 +210,8 @@ export default class GlideCoreAccordion extends LitElement { ${assertSlot()} ${ref(this.#defaultSlotElementRef)} > - diff --git a/src/button.ts b/src/button.ts index f72aee999..11e9b53dc 100644 --- a/src/button.ts +++ b/src/button.ts @@ -15,9 +15,22 @@ declare global { } /** - * @slot - A label. - * @slot prefix-icon - An optional icon before the label. - * @slot suffix-icon - An optional icon after the label. + * @attr {string} label + * @attr {boolean} [disabled=false] + * @attr {string} [name=''] + * @attr {'large'|'small'} [size='large'] + * @attr {'button'|'submit'|'reset'} [type='button'] + * @attr {string} [value=''] + * @attr {'primary'|'secondary'|'tertiary'} [variant='primary'] + * + * @readonly + * @attr {0.19.1} [version] + * + * @slot {Element} [prefix-icon] - An icon before the label + * @slot {Element} [suffix-icon] - An icon after the label + * + * @readonly + * @prop {HTMLFormElement | null} form */ @customElement('glide-core-button') @final @@ -83,8 +96,8 @@ export default class GlideCoreButton extends LitElement { @slotchange=${this.#onPrefixIconSlotChange} ${ref(this.#prefixIconSlotElementRef)} > - diff --git a/src/cem-analyzer-plugins/add-custom-properties.ts b/src/cem-analyzer-plugins/add-custom-properties.ts new file mode 100644 index 000000000..2cc3dcfa4 --- /dev/null +++ b/src/cem-analyzer-plugins/add-custom-properties.ts @@ -0,0 +1,201 @@ +import nodePath from 'node:path'; +import { type Module } from 'custom-elements-manifest' with { type: 'json' }; +import { + isClassDeclaration, + isImportDeclaration, + isStringLiteral, + isTaggedTemplateExpression, + isTemplateExpression, + type Node, +} from 'typescript'; +import postcss, { Comment, Declaration, Rule } from 'postcss'; +import getParentClassName from '../library/get-parent-class-name.js'; + +/** + * Adds custom properties to the manifest. Custom properties inside `:host` + * selectors are considered public and added. Other custom properties are + * ignored. + * + * Collect + * + * 1. Get the styles from every component stylesheet. + * 2. Parse the styles. + * 3. Find all the custom properties inside `:host` selectors. + * 4. Add each custom property to `context.stylesheets`. + * + * Analyze + * + * 1. Get the file path of each component's stylesheet import. + * 2. Look up the file path in `context.stylesheets`. + * 3. Add every custom property found in `context.stylesheets` to the manifest. + */ +export default () => { + return { + name: 'add-custom-properties', + collectPhase({ + context, + node, + }: { + // `context` is in part meant for passing arbitrary data around like we're doing here. + // https://custom-elements-manifest.open-wc.org/analyzer/plugins/authoring/#context + context: { + stylesheets?: Record< + string, + [{ name: string; default: string; description?: string }] + >; + }; + node: Node; + }) { + if ( + isTaggedTemplateExpression(node) && + node.tag.getText() === 'css' && + node.getSourceFile().fileName.includes('.styles.') + ) { + let root: postcss.Root; + + const styles = isTemplateExpression(node.template) + ? // Tagged template literals with at least one expression don't have a + // `text` property. They only have a `getText()` method, which returns + // the full text including the tag and its backticks. + // + // To make the result of `getText()` parsable, we remove the tag, its + // backticks, and all its expressions. + node + .getText() + .replace(/css`??/, '') // Remove the tag and leading backtick + .replaceAll(/\${.*}/g, '') // Remove the expressions + .replaceAll(/`$/gm, '') // Remove the trailing backtick + : node.template.text; + + try { + root = postcss.parse(styles); + } catch (error) { + if (error instanceof Error) { + error.message = node.getSourceFile().fileName; + } + + throw error; + } + + for (const ruleNode of root.nodes) { + if (ruleNode instanceof Rule && ruleNode.selector === ':host') { + for (const declarationNode of ruleNode.nodes) { + if ( + declarationNode instanceof Declaration && + declarationNode.prop.startsWith('--') + ) { + const fileName = nodePath.basename( + node.getSourceFile().fileName, + ); + + const comment = declarationNode.parent?.nodes.findLast( + (node) => { + return ( + node.source?.end && + declarationNode.source?.start && + node.source.end?.line === + declarationNode.source.start.line - 1 + ); + }, + ); + + // Undefined if it's the first custom property in the stylesheet. + if (!context.stylesheets) { + context.stylesheets = {}; + } + + const customProperty = { + name: declarationNode.prop, + default: declarationNode.value, + description: + comment instanceof Comment ? comment.text : undefined, + }; + + const isNew = context.stylesheets[fileName]?.every( + ({ name }) => name !== customProperty.name, + ); + + if (context.stylesheets[fileName] && isNew) { + context.stylesheets[fileName].push(customProperty); + } else if (!context.stylesheets[fileName]) { + context.stylesheets[fileName] = [customProperty]; + } + } + } + } + } + } + }, + analyzePhase({ + context, + moduleDoc, + node, + }: { + context: { + stylesheets?: Record< + string, + [{ name: string; default: string; description?: string }] + >; + }; + moduleDoc: Module; + node: Node; + }) { + const isComponent = + isClassDeclaration(node) && + node.heritageClauses?.some((clause) => { + return clause.types.some((type) => { + return type.getText() === 'LitElement'; + }); + }); + + if (!isComponent) { + return; + } + + for (const statement of node.getSourceFile().statements) { + if ( + isImportDeclaration(statement) && + isStringLiteral(statement.moduleSpecifier) && + statement.moduleSpecifier.text.includes('.styles.') && + moduleDoc.declarations + ) { + for (const declaration of moduleDoc.declarations) { + if ( + getParentClassName(node) !== declaration.name || + !context.stylesheets + ) { + return; + } + + // Import statements have a `.js` extension while the stylesheet itself + // has a `.ts` extension. And a filename with the latter is the object + // key. So we replace `.js` with `.ts`. + const fileName = + statement.moduleSpecifier.text.slice( + 0, + Math.max(0, statement.moduleSpecifier.text.lastIndexOf('.')), + ) + '.ts'; + + const stylesheet = context.stylesheets[nodePath.basename(fileName)]; + + if ( + 'cssProperties' in declaration && + declaration.cssProperties && + stylesheet + ) { + for (const property of stylesheet) { + const isNew = declaration.cssProperties.every( + ({ name }) => name !== property.name, + ); + + if (isNew) { + declaration.cssProperties.push(property); + } + } + } + } + } + } + }, + }; +}; diff --git a/src/cem-analyzer-plugins/add-events.ts b/src/cem-analyzer-plugins/add-events.ts new file mode 100644 index 000000000..55e61d2a2 --- /dev/null +++ b/src/cem-analyzer-plugins/add-events.ts @@ -0,0 +1,118 @@ +import { type Module } from 'custom-elements-manifest' with { type: 'json' }; +import { + isCallExpression, + isClassDeclaration, + isExpressionWithTypeArguments, + isIdentifier, + isNewExpression, + isPropertyAccessExpression, + isStringLiteral, + SyntaxKind, + type Node, +} from 'typescript'; +import getParentClassName from '../library/get-parent-class-name.js'; + +/** + * Adds dispatched events to the manifest. + * + * 1. Add "invalid" events to the manifest if a class implements `FormControl`. + * 2. Add events found in `this.dispatchEvent` calls. + * + * Events dispatched from within class methods are picked up without the help of + * a plugin. But events dispatched from getters and setters are not because only¹ + * methods are visited. + * + * "invalid" events aren't picked up either. The authors of the analyzer library + * would have no way to do so reliably. + * + * If not for the above cases, we wouldn't need this plugin. + * + * 1: https://github.com/open-wc/custom-elements-manifest/blob/e7ec7424aa418b220fc4ec7e70464b4d6f35b596/packages/analyzer/src/features/analyse-phase/creators/createClass.js#L151-L153 + */ +export default () => { + return { + name: 'add-events', + analyzePhase({ moduleDoc, node }: { moduleDoc: Module; node: Node }) { + if (isClassDeclaration(node) && node.heritageClauses) { + const isImplementsFormControl = + isClassDeclaration(node) && + node.heritageClauses.some((clause) => { + return clause.types.some((type) => { + return ( + isExpressionWithTypeArguments(type) && + isIdentifier(type.expression) && + type.expression.text === 'FormControl' + ); + }); + }); + + // Checking if a component implements `FormControl` is the best proxy + // for whether it dispatches "invalid" events. Because simply checking + // for a static `formAssociated` property would wrongly include components + // like Button. + if (isImplementsFormControl && moduleDoc.declarations) { + for (const declaration of moduleDoc.declarations) { + if ( + 'events' in declaration && + declaration.events && + getParentClassName(node) === declaration.name + ) { + declaration.events.push({ + name: 'invalid', + type: { + text: 'Event', + }, + }); + } + } + } + } + + if ( + isCallExpression(node) && + isPropertyAccessExpression(node.expression) && + node.expression.name.getText() === 'dispatchEvent' && + node?.expression.expression.kind === SyntaxKind.ThisKeyword && + node.arguments && + moduleDoc.declarations + ) { + for (const argument of node.arguments) { + if (!isNewExpression(argument) || !argument.arguments) { + return; + } + + const firstArgument = argument.arguments.at(0); + + if (!firstArgument || !isStringLiteral(firstArgument)) { + return; + } + + // `text` instead of `getText()` because `getText()` returns + // an escaped value and so is doubly quoted. + const eventName = firstArgument.text; + + for (const declaration of moduleDoc.declarations) { + if ( + 'events' in declaration && + declaration.events && + getParentClassName(node) === declaration.name + ) { + const isNew = declaration.events.every( + ({ name }) => name !== eventName, + ); + + if (isNew && eventName && isIdentifier(argument.expression)) { + declaration.events.push({ + name: eventName, + type: { + text: argument.expression.text, + }, + }); + } + } + } + } + } + }, + }; +}; diff --git a/src/cem-analyzer-plugins/add-required-to-attributes.ts b/src/cem-analyzer-plugins/add-required-to-attributes.ts new file mode 100644 index 000000000..0b8e6f517 --- /dev/null +++ b/src/cem-analyzer-plugins/add-required-to-attributes.ts @@ -0,0 +1,40 @@ +import { type Module } from 'custom-elements-manifest' with { type: 'json' }; +import { isDecorator, type Node } from 'typescript'; +import getParentClassName from '../library/get-parent-class-name.js'; + +/** + * Adds to every attribute in the manifest a `required` property if + * the attribute has a `@required` decorator. + */ +export default () => { + return { + name: 'add-required', + analyzePhase({ moduleDoc, node }: { moduleDoc: Module; node: Node }) { + if ( + isDecorator(node) && + node.expression.getText() === 'required' && + moduleDoc.declarations + ) { + for (const declaration of moduleDoc.declarations) { + if ( + 'attributes' in declaration && + declaration.attributes && + getParentClassName(node) === declaration.name + ) { + for (const attribute of declaration.attributes) { + if ( + attribute.name && + attribute.name === node.parent.name?.getText() + ) { + // @ts-expect-error `required` isn't a standard manifest + // property. But we otherwise wouldn't have a way to express + // that a property is required. + attribute.required = true; + } + } + } + } + } + }, + }; +}; diff --git a/src/cem-analyzer-plugins/add-slots.ts b/src/cem-analyzer-plugins/add-slots.ts new file mode 100644 index 000000000..f2adb8d2b --- /dev/null +++ b/src/cem-analyzer-plugins/add-slots.ts @@ -0,0 +1,100 @@ +import { type Module } from 'custom-elements-manifest' with { type: 'json' }; +import { parse as htmlParser, CommentNode } from 'node-html-parser'; +import { parse as commentParser } from 'comment-parser'; +import { + isReturnStatement, + isTaggedTemplateExpression, + type Node, +} from 'typescript'; +import getParentClassName from '../library/get-parent-class-name.js'; + +/** + * Adds slots to the manifest. + * + * 1. Find `html` tagged templates. + * 2. Parse their markup. + * 3. Get the slots from the markup. + * 4. Gets the comments in each slot. + * 5. Parse the first comment as a JSDoc. + * 6. Get the JSDoc tags from the comment. + * 7. Filter out slots with an `@ignore` tag. + * 8. Find the corresponding declaration in the manifest. + * 9. Add each slot to the declaration. + */ +export default () => { + return { + name: 'add-slots', + analyzePhase({ moduleDoc, node }: { moduleDoc: Module; node: Node }) { + if ( + isTaggedTemplateExpression(node) && + isReturnStatement(node.parent) && + node.tag.getText() === 'html' && + moduleDoc.declarations + ) { + const slots = htmlParser(node.template.getText(), { + comment: true, + }) + .querySelectorAll('slot') + .map((slot) => { + // We only support comments inside slots instead of right above them + // because previous sibling comment nodes appear to be impossible to + // get using `node-html-parser`. Cheerio, meanwhile, has a clunky API + // and doesn't make it easy to get them. Admittedly, comments in slots + // are a bit unnatural. But they do the job. + const comment = slot.childNodes.find((node) => { + return node instanceof CommentNode; + }); + + if (!comment) { + return { + name: slot.getAttribute('name') ?? '', + }; + } + + const block = commentParser(`/** + ${comment.rawText} + */`).at(0); + + return { + name: + block?.tags.find((tag) => tag.tag === 'name')?.name ?? + slot.getAttribute('name') ?? + '', + description: block?.description, + ignore: block?.tags.find((tag) => tag.tag === 'ignore'), + required: block?.tags.find((tag) => tag.tag === 'required'), + type: { + text: block?.tags.find((tag) => tag.tag === 'type')?.type, + }, + }; + }) + .filter((slot): slot is NonNullable => { + // `slot.name` is either a string or undefined. If it's a string + // and a default slot, then it's an empty string. Thus an `undefined` + // check instead of a falsy one. + return slot?.name !== undefined && !slot?.ignore; + }); + + for (const declaration of moduleDoc.declarations) { + if ( + getParentClassName(node) === declaration.name && + 'slots' in declaration && + declaration.slots + ) { + for (const slot of slots) { + const isNew = declaration.slots.every( + ({ name }) => name !== slot.name, + ); + + // Some components, like DropdownOption, have multiple slots with + // the same name. + if (isNew) { + declaration.slots.push(slot); + } + } + } + } + } + }, + }; +}; diff --git a/src/cem-analyzer-plugins/modify-version-attribute.ts b/src/cem-analyzer-plugins/modify-version-attribute.ts new file mode 100644 index 000000000..e5b1f6ff9 --- /dev/null +++ b/src/cem-analyzer-plugins/modify-version-attribute.ts @@ -0,0 +1,27 @@ +import { type Module } from 'custom-elements-manifest' with { type: 'json' }; +import packageJson from '../../package.json' with { type: 'json' }; + +/** + * Modifies `version` attributes in the manifest to be a string- + * constant equal to the current package version. + */ +export default () => { + return { + name: 'modify-version-attribute', + analyzePhase({ moduleDoc }: { moduleDoc: Module }) { + if (moduleDoc.declarations) { + for (const declaration of moduleDoc.declarations) { + if ('attributes' in declaration && declaration.attributes) { + for (const attribute of declaration.attributes) { + if (attribute.name === 'version') { + attribute.type = { + text: packageJson.version, + }; + } + } + } + } + } + }, + }; +}; diff --git a/src/cem-analyzer-plugins/remove-block-comments.ts b/src/cem-analyzer-plugins/remove-block-comments.ts new file mode 100644 index 000000000..47a1ea831 --- /dev/null +++ b/src/cem-analyzer-plugins/remove-block-comments.ts @@ -0,0 +1,28 @@ +import { isClassDeclaration, type Node } from 'typescript'; + +/** + * Removes existing JSDocs from the manifest's AST. + * + * The analyzer picks up all sorts of things automatically. It parses + * components and, among other things, looks at each component's JSDocs. + * + * But just because something is in a component's JSDoc doesn't mean it's + * correct or exists. A developer, for example, may add a `@slot` comment, + * then later forget to remove it after removing the slot. + * + * So we start fresh. + */ +export default () => { + return { + name: 'remove-comments', + collectPhase({ node }: { node: Node }) { + // We're only interested in class JSDocs because class members can have + // comments too. And those we need to keep. The default return types of + // getters, for example, are specified in JSDocs comments because they're + // otherwise difficult to determine. + if (isClassDeclaration(node) && 'jsDoc' in node) { + node.jsDoc = []; + } + }, + }; +}; diff --git a/src/checkbox-group.ts b/src/checkbox-group.ts index cd16cef0a..dd56c9dd9 100644 --- a/src/checkbox-group.ts +++ b/src/checkbox-group.ts @@ -22,14 +22,47 @@ declare global { } /** - * @attribute {Boolean} hide-label + * @attr {string} label + * @attr {boolean} [disabled=false] + * @attr {boolean} [hide-label=false] + * @attr {string} [name=''] + * @attr {'horizontal'} [orientation='horizontal'] + * @attr {boolean} [required=false] + * @attr {string} [summary] + * @attr {string} [tooltip] + * @attr {string[]} [value=[]] * - * @event change - * @event input - * @event invalid + * @readonly + * @attr {0.19.1} [version] * - * @slot - One or more of ``. - * @slot description - Additional information or context. + * @slot {GlideCoreCheckbox} + * @slot {Element | string} [description] - Additional information or context + * + * @fires {Event} invalid + * + * @readonly + * @prop {HTMLFormElement | null} form + * + * @readonly + * @prop {ValidityState} validity + * + * @method checkValidity + * @returns boolean + * + * @method formAssociatedCallback + * @method formResetCallback + * + * @method reportValidity + * @returns boolean + * + * @method resetValidityFeedback + * + * @method setCustomValidity + * @param {string} message + * + * @method setValidity + * @param {ValidityStateFlags} [flags] + * @param {string} [message] */ @customElement('glide-core-checkbox-group') @final @@ -280,8 +313,8 @@ export default class GlideCoreCheckboxGroup ${assertSlot([GlideCoreCheckbox])} ${ref(this.#defaultSlotElementRef)} > - diff --git a/src/checkbox.ts b/src/checkbox.ts index f5d639808..c124595a4 100644 --- a/src/checkbox.ts +++ b/src/checkbox.ts @@ -23,14 +23,50 @@ declare global { } /** - * @attribute {Boolean} hide-label + * @attr {string} label + * @attr {boolean} [checked=false] + * @attr {boolean} [disabled=false] + * @attr {boolean} [hide-label=false] + * @attr {boolean} [indeterminate=false] + * @attr {string} [name=''] + * @attr {'horizontal'|'vertical'} [orientation='horizontal'] + * @attr {boolean} [required=false] + * @attr {string} [summary] + * @attr {string} [tooltip] + * @attr {string} [value] * - * @event change - * @event input - * @event invalid + * @readonly + * @attr {0.19.1} [version] * - * @slot description - Additional information or context. - * @slot private-icon + * @slot {Element | string} [description] - Additional information or context + * @slot {Element} [private-icon] + * + * @fires {Event} change + * @fires {Event} invalid + * + * @readonly + * @prop {HTMLFormElement | null} form + * + * @readonly + * @prop {ValidityState} validity + * + * @method checkValidity + * @returns boolean + * + * @method formAssociatedCallback + * @method formResetCallback + * + * @method reportValidity + * @returns boolean + * + * @method resetValidityFeedback + * + * @method setCustomValidity + * @param {string} message + * + * @method setValidity + * @param {ValidityStateFlags} [flags] + * @param {string} [message] */ @customElement('glide-core-checkbox') @final @@ -114,7 +150,7 @@ export default class GlideCoreCheckbox // Private because it's only meant to be used by Dropdown. @property({ attribute: 'private-size' }) - privateSize: 'small' | 'large' = 'large'; + privateSize: 'large' | 'small' = 'large'; // Private because it's only meant to be used by Form Controls Layout. @property() @@ -383,8 +419,8 @@ export default class GlideCoreCheckbox )}
- - diff --git a/src/drawer.ts b/src/drawer.ts index 5c16963cd..c4cbe59d4 100644 --- a/src/drawer.ts +++ b/src/drawer.ts @@ -17,11 +17,18 @@ declare global { } /** - * @event toggle + * @attr {string} label + * @attr {boolean} [open=false] + * @attr {boolean} [pinned=false] * - * @cssprop [--width] - The width the drawer. + * @readonly + * @attr {0.19.1} [version] * - * @slot - The content of the Drawer. + * @slot {Element | string} - The content of the drawer + * + * @cssprop [--width=27.375rem] - The width the drawer + * + * @fires {Event} toggle */ @customElement('glide-core-drawer') @final @@ -170,7 +177,7 @@ export default class GlideCoreDrawer extends LitElement { ${ref(this.#componentElementRef)} > - @@ -347,8 +358,8 @@ export default class GlideCoreDropdownOption extends LitElement { 'icon-slot': true, [this.privateSize]: true, })} name="icon"> - diff --git a/src/dropdown.ts b/src/dropdown.ts index df73db6c5..1bd3eb26b 100644 --- a/src/dropdown.ts +++ b/src/dropdown.ts @@ -34,18 +34,64 @@ declare global { } /** - * @attribute {String} add-button-label - * @attribute {Boolean} hide-label - * @attribute {Boolean} select-all + * @attr {string} label + * @attr {string} [add-button-label] + * @attr {boolean} [disabled=false] + * @attr {boolean} [filterable=false] + * @attr {boolean} [hide-label=false] + * @attr {boolean} [multiple=false] + * @attr {string} [name=''] + * @attr {boolean} [open=false] + * @attr {'horizontal'|'vertical'} [orientation='horizontal'] + * @attr {string} [placeholder] + * @attr {boolean} [readonly=false] + * @attr {boolean} [required=false] + * @attr {boolean} [select-all=false] + * @attr {'large'|'small'} [size='large'] + * @attr {string} [tooltip] + * @attr {string[]} [value=[]] + * @attr {'quiet'} [variant] * - * @event change - * @event input - * @event invalid - * @event toggle + * @readonly + * @attr {0.19.1} [version] * - * @slot - One or more of ``. - * @slot description - Additional information or context. - * @slot icon: - Icons for the selected option or options. Slot one icon per option. `` should be equal to the `value` of each option. + * @slot {GlideCoreDropdownOption} + * @slot {Element | string} [description] - Additional information or context + * @slot {Element} [icon:value] - Icons for the selected option or options. Slot one icon per option. `` should be equal to the `value` of each option. + * + * @fires {Event} add + * @fires {Event} change + * @fires {Event} input + * @fires {Event} invalid + * @fires {Event} toggle + * + * @readonly + * @prop {HTMLFormElement | null} form + * + * @readonly + * @prop {ValidityState} validity + * + * @method checkValidity + * @returns boolean + * + * @method filter + * @param {string} query + * @returns Promise + * + * @method formAssociatedCallback + * @method formResetCallback + * + * @method reportValidity + * @returns boolean + * + * @method resetValidityFeedback + * + * @method setCustomValidity + * @param {string} message + * + * @method setValidity + * @param {ValidityStateFlags} [flags] + * @param {string} [message] */ @customElement('glide-core-dropdown') @final @@ -240,11 +286,11 @@ export default class GlideCoreDropdown * @default 'large' */ @property({ reflect: true }) - get size(): 'small' | 'large' { + get size(): 'large' | 'small' { return this.#size; } - set size(size: 'small' | 'large') { + set size(size: 'large' | 'small') { this.#size = size; if (this.#optionElementsIncludingSelectAll) { @@ -608,11 +654,11 @@ export default class GlideCoreDropdown name="icon:${value}" slot="icon" > - @@ -633,9 +679,9 @@ export default class GlideCoreDropdown data-test="single-select-icon-slot" name="icon:${this.selectedOptions.at(0)?.value}" > - `; })} @@ -872,7 +918,7 @@ export default class GlideCoreDropdown ${assertSlot([GlideCoreDropdownOption, Text])} ${ref(this.#defaultSlotElementRef)} > - @@ -919,7 +965,7 @@ export default class GlideCoreDropdown })} name="description" > - @@ -1138,7 +1184,7 @@ export default class GlideCoreDropdown #shadowRoot?: ShadowRoot; - #size: 'small' | 'large' = 'large'; + #size: 'large' | 'small' = 'large'; #tagsElementRef = createRef(); diff --git a/src/form-controls-layout.ts b/src/form-controls-layout.ts index 57488e5ed..3b30ffa32 100644 --- a/src/form-controls-layout.ts +++ b/src/form-controls-layout.ts @@ -20,7 +20,12 @@ declare global { } /** - * @slot - GlideCoreCheckbox | GlideCoreCheckboxGroup | GlideCoreDropdown | GlideCoreRadioGroup | GlideCoreInput | GlideCoreTextArea. + * @attr {'left'|'middle'} [split='left'] + * + * @readonly + * @attr {0.19.1} [version] + * + * @slot {GlideCoreCheckbox | GlideCoreCheckboxGroup | GlideCoreDropdown | GlideCoreRadioGroup | GlideCoreInput | GlideCoreTextArea} */ @customElement('glide-core-form-controls-layout') @final diff --git a/src/icon-button.ts b/src/icon-button.ts index f4b4d9c36..cf5d9cf7f 100644 --- a/src/icon-button.ts +++ b/src/icon-button.ts @@ -17,7 +17,17 @@ declare global { } /** - * @slot - An icon. + * @attr {string} label + * @attr {string|null} [aria-controls=null] + * @attr {'true'|'false'|null} [aria-expanded=null] + * @attr {'true'|'false'|'menu'|'listbox'|'tree'|'grid'|'dialog'|null} [aria-haspopup=null] + * @attr {boolean} [disabled=false] + * @attr {'primary'|'secondary'|'tertiary'} [variant='primary'] + * + * @readonly + * @attr {0.19.1} [version] + * + * @slot {Element} - An icon */ @customElement('glide-core-icon-button') @final @@ -82,7 +92,7 @@ export default class GlideCoreIconButton extends LitElement { ${ref(this.#buttonElementRef)} > - diff --git a/src/input.ts b/src/input.ts index 822099597..827bed68e 100644 --- a/src/input.ts +++ b/src/input.ts @@ -25,16 +25,59 @@ declare global { } /** - * @attribute {Boolean} hide-label - * @attribute {Boolean} password-toggle + * @attr {string} label + * @attr {'on'|'off'|'none'|'sentences'|'words'|'characters'} [autocapitalize='on'] + * @attr {'on'|'off'} [autocomplete='on'] + * @attr {boolean} [clearable=false] + * @attr {boolean} [disabled=false] + * @attr {boolean} [hide-label=false] + * @attr {number} [maxlength] + * @attr {string} [name=''] + * @attr {'horizontal'|'vertical'} [orientation='horizontal'] + * @attr {boolean} [password-toggle=false] - For 'password' type, whether to show a button to toggle the password's visibility + * @attr {string} [pattern] + * @attr {string} [placeholder] + * @attr {boolean} [readonly=false] + * @attr {boolean} [required=false] + * @attr {boolean} [spellcheck=false] + * @attr {string} [tooltip] + * @attr {'date'|'email'|'number'|'password'|'search'|'tel'|'text'|'time'|'url'} [type='text'] + * @attr {string} [value=''] * - * @event change - * @event input - * @event invalid + * @readonly + * @attr {0.19.1} [version] * - * @slot description - Additional information or context. - * @slot prefix-icon - An optional icon before the input field. - * @slot suffix-icon - An optional icon after the input field. + * @slot {Element | string} [description] - Additional information or context + * @slot {Element} [prefix-icon] - An icon before the input field + * @slot {Element} [suffix-icon] - An icon after the input field + * + * @fires {Event} change + * @fires {Event} input + * @fires {Event} invalid + * + * @readonly + * @prop {HTMLFormElement | null} form + * + * @readonly + * @prop {ValidityState} validity + * + * @method checkValidity + * @returns boolean + * + * @method formAssociatedCallback + * @method formResetCallback + * + * @method reportValidity + * @returns boolean + * + * @method resetValidityFeedback + * + * @method setCustomValidity + * @param {string} message + * + * @method setValidity + * @param {ValidityStateFlags} [flags] + * @param {string} [message] */ @customElement('glide-core-input') @final @@ -246,7 +289,7 @@ export default class GlideCoreInput extends LitElement implements FormControl { > @@ -316,8 +359,8 @@ export default class GlideCoreInput extends LitElement implements FormControl { ? magnifyingGlassIcon : html` - diff --git a/src/label.ts b/src/label.ts index ae4cefcd0..a71f1d50d 100644 --- a/src/label.ts +++ b/src/label.ts @@ -20,12 +20,19 @@ declare global { } /** - * @private + * @attr {boolean} [disabled=false] + * @attr {boolean} [error=false] + * @attr {boolean} [hide=false] + * @attr {string} [label] + * @attr {'horizontal'|'vertical'} [orientation='horizontal'] + * @attr {boolean} [required=false] + * @attr {'left'|'middle'} [split] + * @attr {string} [tooltip] * - * @slot - The label. - * @slot control - The control with which the label is associated. - * @slot summary - Additional information or context. - * @slot description - Additional information or context. + * @slot {HTMLLabelElement} + * @slot {Element} [control] - The element with which the label is associated + * @slot {Element | string} [description] - Additional information or context + * @slot {Element | string} [summary] - Additional information or context */ @customElement('glide-core-private-label') @final @@ -162,8 +169,8 @@ export default class GlideCoreLabel extends LitElement { name="control" ${assertSlot()} > - @@ -179,7 +186,7 @@ export default class GlideCoreLabel extends LitElement { >
@@ -196,8 +203,8 @@ export default class GlideCoreLabel extends LitElement { ${onResize(this.#onDescriptionSlotResize.bind(this))} ${ref(this.#descriptionSlotElementRef)} > - diff --git a/src/menu.button.ts b/src/menu.button.ts index 2ce20a2c7..4b740c1cc 100644 --- a/src/menu.button.ts +++ b/src/menu.button.ts @@ -16,7 +16,13 @@ declare global { } /** - * @slot icon - An optional icon. + * @attr {string} label + * @attr {boolean} [disabled=false] + * + * @readonly + * @attr {0.19.1} [version] + * + * @slot {Element} [icon] */ @customElement('glide-core-menu-button') @final diff --git a/src/menu.link.ts b/src/menu.link.ts index 3ac85c3a7..073418422 100644 --- a/src/menu.link.ts +++ b/src/menu.link.ts @@ -17,7 +17,14 @@ declare global { } /** - * @slot icon - An optional icon. + * @attr {string} label + * @attr {boolean} [disabled=false] + * @attr {string} [url] + * + * @readonly + * @attr {0.19.1} [version] + * + * @slot {Element} [icon] */ @customElement('glide-core-menu-link') @final diff --git a/src/menu.options.ts b/src/menu.options.ts index d06634f4a..08a363b83 100644 --- a/src/menu.options.ts +++ b/src/menu.options.ts @@ -30,7 +30,13 @@ declare global { // to our support load. /** - * @slot - One or more of `` or ``. + * @attr {string} [aria-activedescendant=''] + * @attr {string} [aria-labelledby=''] + * + * @readonly + * @attr {0.19.1} [version] + * + * @slot {GlideCoreMenuButton | GlideCoreMenuLink} */ @customElement('glide-core-menu-options') @final @@ -49,7 +55,7 @@ export default class GlideCoreMenuOptions extends LitElement { ariaLabelledby = ''; @property() - privateSize: 'small' | 'large' = 'large'; + privateSize: 'large' | 'small' = 'large'; @property({ reflect: true }) readonly version = packageJson.version; diff --git a/src/menu.ts b/src/menu.ts index 5f40d59c8..0438036b4 100644 --- a/src/menu.ts +++ b/src/menu.ts @@ -19,10 +19,18 @@ declare global { } /** - * @event toggle + * @attr {number} [offset=4] + * @attr {boolean} [open=false] + * @attr {'bottom'|'left'|'right'|'top'|'bottom-start'|'bottom-end'|'left-start'|'left-end'|'right-start'|'right-end'|'top-start'|'top-end'} [placement='bottom-start'] + * @attr {'large'|'small'} [size='large'] * - * @slot - One of ``. - * @slot target - The element to which the menu will anchor, which can be any focusable element. + * @readonly + * @attr {0.19.1} [version] + * + * @slot {GlideCoreMenuOptions} + * @slot {Element} [target] - The element to which the popover will anchor. Can be any focusable element. + * + * @fires {Event} toggle */ @customElement('glide-core-menu') @final @@ -102,11 +110,11 @@ export default class GlideCoreMenu extends LitElement { * @default 'large' */ @property({ reflect: true }) - get size(): 'small' | 'large' { + get size(): 'large' | 'small' { return this.#size; } - set size(size: 'small' | 'large') { + set size(size: 'large' | 'small') { this.#size = size; if (this.#optionsElement) { @@ -219,8 +227,8 @@ export default class GlideCoreMenu extends LitElement { ${assertSlot([Element])} ${ref(this.#targetSlotElementRef)} > - @@ -237,9 +245,9 @@ export default class GlideCoreMenu extends LitElement { ${assertSlot([GlideCoreMenuOptions])} ${ref(this.#defaultSlotElementRef)} > - @@ -266,7 +274,7 @@ export default class GlideCoreMenu extends LitElement { #shadowRoot?: ShadowRoot; - #size: 'small' | 'large' = 'large'; + #size: 'large' | 'small' = 'large'; #targetSlotElementRef = createRef(); diff --git a/src/modal.icon-button.ts b/src/modal.icon-button.ts index 8c7121eef..7f0257f0a 100644 --- a/src/modal.icon-button.ts +++ b/src/modal.icon-button.ts @@ -16,8 +16,12 @@ declare global { } /** - * @slot - The content of the button. Should only be an icon. The icon should also use the - * "label" attribute for accessibility. + * @attr {string} label + * + * @readonly + * @attr {0.19.1} [version] + * + * @slot {Element} - An icon */ @customElement('glide-core-modal-icon-button') @final diff --git a/src/modal.ts b/src/modal.ts index ebb58e796..7cf13a9ad 100644 --- a/src/modal.ts +++ b/src/modal.ts @@ -35,15 +35,22 @@ globalStylesheet.insertRule(` `); /** - * @attribute {Boolean} back-button + * @attr {string} label + * @attr {boolean} [back-button=false] + * @attr {boolean} [open=false] + * @attr {'critical'|'informational'|'medium'} [severity] + * @attr {'small'|'medium'|'large'|'xlarge'} [size='medium'] * - * @event toggle + * @readonly + * @attr {0.19.1} [version] * - * @slot - The primary content of the modal. - * @slot header-actions - One or more of ``. - * @slot primary - One of ``. - * @slot secondary - One of ``. - * @slot tertiary - One or more of `` or ``. + * @slot {Element | string} + * @slot {GlideCoreModalIconButton} [header-actions] + * @slot {GlideCoreButton} [primary] + * @slot {GlideCoreButton} [secondary] + * @slot {GlideCoreButton | GlideCoreTooltip} [tertiary] + * + * @fires {Event} toggle */ @customElement('glide-core-modal') @final diff --git a/src/popover.ts b/src/popover.ts index f8becc678..8f0ab2a53 100644 --- a/src/popover.ts +++ b/src/popover.ts @@ -26,10 +26,18 @@ declare global { } /** - * @event toggle + * @attr {boolean} [disabled=false] + * @attr {number} [offset=4] + * @attr {boolean} [open=false] + * @attr {'bottom'|'left'|'right'|'top'} [placement] * - * @slot - The content of the popover. - * @slot target - The element to which the popover will anchor, which can be any focusable element. + * @readonly + * @attr {0.19.1} [version] + * + * @slot {Element | string} - The content of the popover + * @slot {Element} [target] - The element to which the popover will anchor. Can be any focusable element. + * + * @fires {Event} toggle */ @customElement('glide-core-popover') @final @@ -201,8 +209,8 @@ export default class GlideCorePopover extends LitElement { ${assertSlot([Element])} ${ref(this.#targetSlotElementRef)} > - @@ -237,8 +245,8 @@ export default class GlideCorePopover extends LitElement { ${assertSlot()} ${ref(this.#defaultSlotElementRef)} > - diff --git a/src/radio-group.radio.ts b/src/radio-group.radio.ts index 8f1e979fa..b1b1c578c 100644 --- a/src/radio-group.radio.ts +++ b/src/radio-group.radio.ts @@ -13,6 +13,18 @@ declare global { } } +/** + * @attr {string} label + * @attr {boolean} [checked=false] + * @attr {boolean} [disabled=false] + * @attr {string} [value] + * + * @readonly + * @attr {0.19.1} [version] + * + * @fires {Event} change + * @fires {Event} input + */ @customElement('glide-core-radio-group-radio') @final export default class GlideCoreRadioGroupRadio extends LitElement { diff --git a/src/radio-group.ts b/src/radio-group.ts index a2caab301..cca16bee3 100644 --- a/src/radio-group.ts +++ b/src/radio-group.ts @@ -23,14 +23,46 @@ declare global { } /** - * @attribute {Boolean} hide-label + * @attr {string} label + * @attr {boolean} [disabled=false] + * @attr {boolean} [hide-label=false] + * @attr {string} [name=''] + * @attr {'horizontal'} [orientation='horizontal'] + * @attr {boolean} [required=false] + * @attr {string} [tooltip] + * @attr {string} [value=''] * - * @event change - * @event input - * @event invalid + * @readonly + * @attr {0.19.1} [version] * - * @slot - One or more of ``. - * @slot description - Additional information or context. + * @slot {GlideCoreRadio} + * @slot {Element | string} [description] - Additional information or context + * + * @fires {Event} invalid + * + * @readonly + * @prop {HTMLFormElement | null} form + * + * @readonly + * @prop {ValidityState} validity + * + * @method checkValidity + * @returns boolean + * + * @method formAssociatedCallback + * @method formResetCallback + * + * @method reportValidity + * @returns boolean + * + * @method resetValidityFeedback + * + * @method setCustomValidity + * @param {string} message + * + * @method setValidity + * @param {ValidityStateFlags} [flags] + * @param {string} [message] */ @customElement('glide-core-radio-group') @final @@ -317,8 +349,8 @@ export default class GlideCoreRadioGroup })} name="description" > - diff --git a/src/split-button.primary-button.ts b/src/split-button.primary-button.ts index 18a26141f..01b35ce6f 100644 --- a/src/split-button.primary-button.ts +++ b/src/split-button.primary-button.ts @@ -15,7 +15,16 @@ declare global { } /** - * @slot icon - An optional icon before the label. + * @attr {string} label + * @attr {string|null} [aria-controls=null] + * @attr {'true'|'false'|null} [aria-expanded=null] + * @attr {'true'|'false'|'menu'|'listbox'|'tree'|'grid'|'dialog'|null} [aria-haspopup=null] + * @attr {boolean} [disabled=false] + * + * @readonly + * @attr {0.19.1} [version] + * + * @slot {Element} [icon] - An icon before the label */ @customElement('glide-core-split-button-primary-button') @final @@ -53,7 +62,7 @@ export default class GlideCoreSplitButtonPrimaryButton extends LitElement { label?: string; @property() - privateSize: 'small' | 'large' = 'large'; + privateSize: 'large' | 'small' = 'large'; @property() privateVariant: 'primary' | 'secondary' = 'primary'; @@ -78,7 +87,7 @@ export default class GlideCoreSplitButtonPrimaryButton extends LitElement { > diff --git a/src/split-button.primary-link.ts b/src/split-button.primary-link.ts index 70aaa0323..a0863223e 100644 --- a/src/split-button.primary-link.ts +++ b/src/split-button.primary-link.ts @@ -15,7 +15,14 @@ declare global { } /** - * @slot icon - An optional icon before the label. + * @attr {string} label + * @attr {string} url + * @attr {boolean} [disabled=false] + * + * @readonly + * @attr {0.19.1} [version] + * + * @slot {Element} [icon] - An icon before the label */ @customElement('glide-core-split-button-primary-link') @final @@ -40,7 +47,7 @@ export default class GlideCoreSplitButtonPrimaryLink extends LitElement { url?: string; @property() - privateSize: 'small' | 'large' = 'large'; + privateSize: 'large' | 'small' = 'large'; @property() privateVariant: 'primary' | 'secondary' = 'primary'; @@ -61,8 +68,8 @@ export default class GlideCoreSplitButtonPrimaryLink extends LitElement { role="link" > - diff --git a/src/split-button.secondary-button.ts b/src/split-button.secondary-button.ts index 775c6745e..5c11c1ca7 100644 --- a/src/split-button.secondary-button.ts +++ b/src/split-button.secondary-button.ts @@ -22,10 +22,15 @@ declare global { } /** - * @attribute {Boolean} menu-open - * @attribute {'bottom-end' | 'top-end'} menu-placement + * @attr {string} label + * @attr {boolean} [disabled=false] + * @attr {boolean} [menu-open=false] + * @attr {'bottom-end'|'top-end'} [menu-placement='bottom-end'] * - * @slot - One or more of `` or ``. + * @readonly + * @attr {0.19.1} [version] + * + * @slot {GlideCoreMenuButton | GlideCoreMenuLink} */ @customElement('glide-core-split-button-secondary-button') @final @@ -55,7 +60,7 @@ export default class GlideCoreSplitButtonSecondaryButton extends LitElement { privateActive = false; @property() - privateSize: 'small' | 'large' = 'large'; + privateSize: 'large' | 'small' = 'large'; @property() privateVariant: 'primary' | 'secondary' = 'primary'; diff --git a/src/split-button.ts b/src/split-button.ts index 797044096..2c597aa4c 100644 --- a/src/split-button.ts +++ b/src/split-button.ts @@ -17,10 +17,14 @@ declare global { } /** - * @event toggle + * @attr {'large'|'small'} [size='large'] + * @attr {'primary'|'secondary'} [variant='primary'] * - * @slot - One of `` or ``. - * @slot secondary-button - One of ``. + * @readonly + * @attr {0.19.1} [version] + * + * @slot {GlideCoreSplitButtonPrimaryButton | GlideCoreSplitButtonPrimaryLink} + * @slot {GlideCoreSplitButtonSecondaryButton} [secondary-button] */ @customElement('glide-core-split-button') @final @@ -36,11 +40,11 @@ export default class GlideCoreSplitButton extends LitElement { * @default 'large' */ @property({ reflect: true }) - get size(): 'small' | 'large' { + get size(): 'large' | 'small' { return this.#size; } - set size(size: 'small' | 'large') { + set size(size: 'large' | 'small') { this.#size = size; if (this.primaryButtonElement) { @@ -126,7 +130,7 @@ export default class GlideCoreSplitButton extends LitElement { #secondaryButtonSlotElementRef = createRef(); - #size: 'small' | 'large' = 'large'; + #size: 'large' | 'small' = 'large'; #variant: 'primary' | 'secondary' = 'primary'; diff --git a/src/tab.group.ts b/src/tab.group.ts index 4cf4616f0..a9d0505f9 100644 --- a/src/tab.group.ts +++ b/src/tab.group.ts @@ -22,15 +22,16 @@ declare global { } /** - * @cssprop [--panel-padding-inline-end] - * @cssprop [--panel-padding-inline-start] - * @cssprop [--tabs-padding-block-end] - * @cssprop [--tabs-padding-block-start] - * @cssprop [--tabs-padding-inline-end] - * @cssprop [--tabs-padding-inline-start] + * @readonly + * @attr {0.19.1} [version] * - * @slot - One or more of ``. - * @slot nav - One or more of ``. + * @slot {GlideCoreTabPanel} + * @slot {GlideCoreTab} [nav] + * + * @cssprop [--tabs-padding-block-end=0rem] + * @cssprop [--tabs-padding-block-start=0rem] + * @cssprop [--tabs-padding-inline-end=0rem] + * @cssprop [--tabs-padding-inline-start=0rem] */ @customElement('glide-core-tab-group') @final @@ -45,28 +46,6 @@ export default class GlideCoreTabGroup extends LitElement { @property({ reflect: true }) readonly version = packageJson.version; - @state() - isAfterFirstUpdated = false; - - @state() - isDisableOverflowEndButton = false; - - @state() - isDisableOverflowStartButton = false; - - @state() - isShowOverflowButtons = false; - - @state() - private get selectedTab() { - return this.#selectedTab; - } - - private set selectedTab(tab: GlideCoreTab | null) { - this.#previousSelectedTab = this.#selectedTab; - this.#selectedTab = tab; - } - override render() { return html`
`; } + @state() + private get selectedTab() { + return this.#selectedTab; + } + + private set selectedTab(tab: GlideCoreTab | null) { + this.#previousSelectedTab = this.#selectedTab; + this.#selectedTab = tab; + } + override updated() { this.#setupTabs(); } + @state() + private isAfterFirstUpdated = false; + + @state() + private isDisableOverflowEndButton = false; + + @state() + private isDisableOverflowStartButton = false; + + @state() + private isShowOverflowButtons = false; + #componentElementRef = createRef(); #localize = new LocalizeController(this); diff --git a/src/tab.panel.ts b/src/tab.panel.ts index da8510821..783a58506 100644 --- a/src/tab.panel.ts +++ b/src/tab.panel.ts @@ -15,7 +15,15 @@ declare global { } /** - * @slot - The content of the panel. + * @attr {string} name - The corresponding GlideCoreTab should have a `panel` attribute with this name + * + * @readonly + * @attr {0.19.1} [version] + * + * @slot {Element | string} - The content of the panel + * + * @cssprop [--padding-inline-end=0rem] + * @cssprop [--padding-inline-start=0rem] */ @customElement('glide-core-tab-panel') @final @@ -28,7 +36,7 @@ export default class GlideCoreTabPanel extends LitElement { static override styles = styles; /** - * The corresponding GlideCoreTab should have a `panel` attribute with this name. + * The corresponding GlideCoreTab should have a `panel` attribute with this name */ @property({ reflect: true }) @required @@ -63,9 +71,9 @@ export default class GlideCoreTabPanel extends LitElement { data-test="tab-panel" > -
`; diff --git a/src/tab.ts b/src/tab.ts index cdef39dd1..931f053ba 100644 --- a/src/tab.ts +++ b/src/tab.ts @@ -15,10 +15,17 @@ declare global { } /** - * @event selected + * @attr {string} panel + * @attr {boolean} [disabled=false] + * @attr {boolean} [selected=false] * - * @slot - A label. - * @slot icon - An optional icon. + * @readonly + * @attr {0.19.1} [version] + * + * @slot {Element | string} - A label + * @slot {Element} [icon] + * + * @fires {Event} selected */ @customElement('glide-core-tab') @final @@ -75,15 +82,15 @@ export default class GlideCoreTab extends LitElement { >
- -
diff --git a/src/tag.ts b/src/tag.ts index d42995e4f..2478a0982 100644 --- a/src/tag.ts +++ b/src/tag.ts @@ -19,9 +19,18 @@ declare global { } /** - * @event remove + * @attr {string} label + * @attr {boolean} [disabled=false] + * @attr {boolean} [removable=false] + * @attr {'small'|'medium'|'large'} [size='medium'] * - * @slot icon + * @readonly + * @attr {0.19.1} [version] + * + * @slot {Element} [icon] + * + * @fires {Event} edit + * @fires {Event} remove */ @customElement('glide-core-tag') @final diff --git a/src/textarea.ts b/src/textarea.ts index 25e442086..adb75a29a 100644 --- a/src/textarea.ts +++ b/src/textarea.ts @@ -21,13 +21,53 @@ declare global { } /** - * @attribute {Boolean} hide-label + * @attr {string} label + * @attr {'on'|'off'|'none'|'sentences'|'words'|'characters'} [autocapitalize='on'] + * @attr {'on'|'off'} [autocomplete='on'] + * @attr {boolean} [disabled=false] + * @attr {boolean} [hide-label=false] + * @attr {number} [maxlength] + * @attr {string} [name=''] + * @attr {'horizontal'|'vertical'} [orientation='horizontal'] + * @attr {string} [placeholder=''] + * @attr {boolean} [readonly=false] + * @attr {boolean} [required=false] + * @attr {number} [rows=2] + * @attr {boolean} [spellcheck=false] + * @attr {string} [tooltip] + * @attr {string} [value=''] * - * @event change - * @event input - * @event invalid + * @readonly + * @attr {0.19.1} [version] * - * @slot description - Additional information or context. + * @slot {Element | string} [description] - Additional information or context + * + * @fires {Event} change + * @fires {Event} invalid + * + * @readonly + * @prop {HTMLFormElement | null} form + * + * @readonly + * @prop {ValidityState} validity + * + * @method checkValidity + * @returns boolean + * + * @method formAssociatedCallback + * @method formResetCallback + * + * @method reportValidity + * @returns boolean + * + * @method resetValidityFeedback + * + * @method setCustomValidity + * @param {string} message + * + * @method setValidity + * @param {ValidityStateFlags} [flags] + * @param {string} [message] */ @customElement('glide-core-textarea') @final @@ -223,8 +263,8 @@ export default class GlideCoreTextarea })} name="description" > - diff --git a/src/toasts.toast.ts b/src/toasts.toast.ts index e2e76da18..d4fbd77b9 100644 --- a/src/toasts.toast.ts +++ b/src/toasts.toast.ts @@ -18,8 +18,16 @@ declare global { } /** - * @private - * */ + * @attr {string} [description] + * @attr {number} [duration=5000] + * @attr {string} [label] + * @attr {'error'|'informational'|'success'} [variant] + * + * @fires {Event} close + * + * @method close + * @method open + */ @customElement('glide-core-toast') @final export default class GlideCoreToast extends LitElement { diff --git a/src/toasts.ts b/src/toasts.ts index 3cd077ef0..eb92c28f6 100644 --- a/src/toasts.ts +++ b/src/toasts.ts @@ -14,6 +14,19 @@ declare global { } } +/** + * @readonly + * @attr {0.19.1} [version] + * + * @method add + * @param {{ + * label: string; + * description: string; + * variant: 'error' | 'informational' | 'success'; + * duration?: number; // Defaults to 5000. Set to `Infinity` to make the toast persist until dismissed. + * }} toast + * @returns GlideCoreToast + */ @customElement('glide-core-toasts') @final export default class GlideCoreToasts extends LitElement { diff --git a/src/toggle.ts b/src/toggle.ts index a5bfb672b..abfb8a427 100644 --- a/src/toggle.ts +++ b/src/toggle.ts @@ -17,12 +17,20 @@ declare global { } /** - * @attribute {Boolean} hide-label + * @attr {string} label + * @attr {boolean} [checked=false] + * @attr {boolean} [disabled=false] + * @attr {boolean} [hide-label=false] + * @attr {'horizontal'|'vertical'} [orientation='horizontal'] + * @attr {string} [summary] + * @attr {string} [tooltip] * - * @event change - * @event input + * @readonly + * @attr {0.19.1} [version] * - * @slot description - Additional information or context. + * @slot {Element | string} [description] - Additional information or context + * + * @fires {Event} change */ @customElement('glide-core-toggle') @final @@ -127,8 +135,8 @@ export default class GlideCoreToggle extends LitElement { name="description" slot="description" > - diff --git a/src/tooltip.container.ts b/src/tooltip.container.ts index 437c25b3a..b7cc3f97d 100644 --- a/src/tooltip.container.ts +++ b/src/tooltip.container.ts @@ -30,6 +30,14 @@ declare global { // // The latter solution would also prevent us from restricting allowed content by using // an attribute (`label`). We'd be forced to allow arbitrary content via a slot. + +/** + * @attr {boolean} [disabled=false] + * @attr {string} [label] + * @attr {'bottom'|'left'|'right'|'top'} [placement] + * @attr {boolean} [screenreader-hidden=false] + * @attr {string[]} [shortcut=[]] + */ @customElement('glide-core-private-tooltip-container') @final export default class GlideCoreTooltipContainer extends LitElement { diff --git a/src/tooltip.ts b/src/tooltip.ts index 2e02a5596..e7a0611d0 100644 --- a/src/tooltip.ts +++ b/src/tooltip.ts @@ -28,11 +28,21 @@ declare global { } /** - * @attribute {Boolean} screenreader-hidden + * @attr {string} label + * @attr {boolean} [disabled=false] + * @attr {number} [offset=4] + * @attr {boolean} [open=false] + * @attr {'bottom'|'left'|'right'|'top'} [placement] - The placement of the tooltip relative to its target. Automatic placement will take over if the tooltip is cut off by the viewport. + * @attr {boolean} [screenreader-hidden=false] + * @attr {string[]} [shortcut=[]] * - * @event toggle + * @readonly + * @attr {0.19.1} [version] * - * @slot target - The element to which the tooltip will anchor. + * @slot {GlideCoreTooltipContainer} [private] + * @slot {Element} target - The element to which the tooltip will anchor. Can be any element with an implicit or explicit ARIA role. + * + * @fires {Event} toggle */ @customElement('glide-core-tooltip') @final @@ -273,9 +283,9 @@ export default class GlideCoreTooltip extends LitElement { ${ref(this.#targetSlotElementRef)} name="target" > - diff --git a/src/tree.item.icon-button.ts b/src/tree.item.icon-button.ts index 9cf5f9e05..163f9321b 100644 --- a/src/tree.item.icon-button.ts +++ b/src/tree.item.icon-button.ts @@ -16,7 +16,12 @@ declare global { } /** - * @slot - An icon. + * @attr {string} label + * + * @readonly + * @attr {0.19.1} [version] + * + * @slot {Element} - An icon */ @customElement('glide-core-tree-item-icon-button') @final @@ -46,7 +51,7 @@ export default class GlideCoreTreeItemIconButton extends LitElement { diff --git a/src/tree.item.menu.ts b/src/tree.item.menu.ts index 13873de3e..d489c2c52 100644 --- a/src/tree.item.menu.ts +++ b/src/tree.item.menu.ts @@ -23,8 +23,14 @@ declare global { } /** - * @slot - One or more of `` or ``. - * @slot icon - An optional icon. + * @attr {string} [label] + * @attr {'bottom-start'|'top-start'} [placement='bottom-start'] + * + * @readonly + * @attr {0.19.1} [version] + * + * @slot {GlideCoreMenuButton | GlideCoreMenuLink} + * @slot {Element} [icon] */ @customElement('glide-core-tree-item-menu') @final diff --git a/src/tree.item.ts b/src/tree.item.ts index 560892b7a..6d823f9b7 100644 --- a/src/tree.item.ts +++ b/src/tree.item.ts @@ -23,13 +23,26 @@ declare global { } /** - * @attribute {Boolean} remove-indentation - * @attribute {Boolean} non-collapsible + * @attr {string} label + * @attr {boolean} [expanded=false] + * @attr {number} [level=1] + * @attr {boolean} [non-collapsible=false] + * @attr {boolean} [remove-indentation=false] + * @attr {boolean} [selected=false] * - * @slot - Zero or more of ``. - * @slot prefix - An optional icon before the label. - * @slot suffix - An optional icon after the label. - * @slot menu - A `` made visible on hover or focus. + * @readonly + * @attr {0.19.1} [version] + * + * @slot {GlideCoreTreeItem} + * @slot {GlideCoreTreeItemMenu} [menu] - Visible on hover and focus + * @slot {Element} [prefix] - An icon before the label + * @slot {Element} [suffix] - An icon after the label + * + * @fires {Event} selected + * + * @method selectItem - Traverses down the tree, selects the item, then deselects all other items. + * @param {GlideCoreTreeItem} item + * @returns GlideCoreTreeItem | undefined */ @customElement('glide-core-tree-item') @final @@ -150,8 +163,8 @@ export default class GlideCoreTreeItem extends LitElement { ${ref(this.#prefixSlotElementRef)} @slotchange=${this.#onPrefixSlotChange} > - @@ -172,15 +185,15 @@ export default class GlideCoreTreeItem extends LitElement { @slotchange=${this.#onMenuSlotChange} ${assertSlot([GlideCoreTreeItemMenu], true)} > - - diff --git a/src/tree.ts b/src/tree.ts index b34aea251..d7f470be6 100644 --- a/src/tree.ts +++ b/src/tree.ts @@ -15,7 +15,13 @@ declare global { } /** - * @slot - One or more of ``. + * @readonly + * @attr {0.19.1} [version] + * + * @slot {GlideCoreTreeItem} + * + * @method selectItem + * @param {GlideCoreTreeItem} item */ @customElement('glide-core-tree') @final diff --git a/src/ts-morph/get-attribute-tags.ts b/src/ts-morph/get-attribute-tags.ts new file mode 100644 index 000000000..27ea2c9b5 --- /dev/null +++ b/src/ts-morph/get-attribute-tags.ts @@ -0,0 +1,94 @@ +import { type JSDocTagStructure, type OptionalKind } from 'ts-morph'; +import manifest from '../../custom-elements.json' with { type: 'json' }; + +export default ( + declaration: (typeof manifest)['modules'][number]['declarations'][number], +) => { + const tags: OptionalKind[] = []; + + if (!declaration.attributes) { + return tags; + } + + const attributes = [...declaration.attributes].sort((a, b) => { + // First required attributes sorted alphabetically. Then optional ones alphabetically. + return 'required' in a && 'required' in b && a.name < b.name + ? -1 + : 'required' in a && 'required' in b + ? 1 + : 'required' in a + ? -1 + : 'required' in b + ? 1 + : a.name < b.name + ? -1 + : 1; + }); + + for (const [index, attribute] of attributes.entries()) { + if (attribute.name.startsWith('private')) { + continue; + } + + const type = + typeof attribute.type?.text === 'string' + ? attribute.type?.text + .split('|') + .map((type) => type.trim()) + .filter((type) => { + // `type` is checked for truthiness because some multiline types start + // with "|" courtesy of Prettier. For example: `@attr {|'true'|'false'}`. + return type && type !== 'undefined'; + }) + : null; + + if ('readonly' in attribute && attribute.readonly) { + tags.push({ + tagName: 'readonly', + leadingTrivia(writer) { + // Read-only attributes are multiline. So we pad them on top and bottom + // with new lines. + writer.newLine(); + }, + }); + } + + tags.push({ + tagName: 'attr', + leadingTrivia(writer) { + const isReadOnly = 'readonly' in attribute && attribute.readonly; + + // If the attribute is read-only, then it's already written a new line + // for itself. If we were to write one here instead, a new would be + // inserted between `@readonly` and `@attr`. + writer.conditionalNewLine(!isReadOnly && index === 0); + }, + text(writer) { + if (type) { + writer.write(`{${type?.join('|')}} `); + } + + if ('required' in attribute && attribute.required) { + writer.write(attribute.name); + } else if ( + 'default' in attribute && + attribute.default && + attribute.default !== 'undefined' + ) { + writer.write(`[${attribute.name}=${attribute.default}]`); + } else { + writer.write(`[${attribute.name}]`); + } + + if ('description' in attribute && attribute.description) { + // Multi-line comments are hard to read unless we indent them. Figured + // doing so isn't worthwhile given the complexity of indenting them + // correctly. So we simply reduce the comment to a single line. + writer.write(` - ${attribute.description.replaceAll('\n', ' ')}`); + } + }, + }); + } + + return tags; +}; diff --git a/src/ts-morph/get-css-property-tags.ts b/src/ts-morph/get-css-property-tags.ts new file mode 100644 index 000000000..ca983309c --- /dev/null +++ b/src/ts-morph/get-css-property-tags.ts @@ -0,0 +1,38 @@ +import { type JSDocTagStructure, type OptionalKind } from 'ts-morph'; +import manifest from '../../custom-elements.json' with { type: 'json' }; + +export default ( + declaration: (typeof manifest)['modules'][number]['declarations'][number], +) => { + const tags: OptionalKind[] = []; + const isCssProperties = 'cssProperties' in declaration; + + if (!isCssProperties) { + return tags; + } + + const properties = [...declaration.cssProperties].sort((a, b) => { + return a.name < b.name ? -1 : 1; + }); + + for (const [index, property] of properties.entries()) { + tags.push({ + tagName: 'cssprop', + leadingTrivia(writer) { + writer.conditionalNewLine(index === 0); + }, + text(writer) { + writer.write(`[${property.name}=${property.default}]`); + + if ('description' in property && property.description) { + // Multi-line comments are hard to read unless we indent them. Figured + // doing so isn't worthwhile given the complexity of indenting them + // correctly. So we simply reduce the comment to a single line. + writer.write(` - ${property.description.replaceAll('\n', ' ')}`); + } + }, + }); + } + + return tags; +}; diff --git a/src/ts-morph/get-event-tags.ts b/src/ts-morph/get-event-tags.ts new file mode 100644 index 000000000..5b6885ec5 --- /dev/null +++ b/src/ts-morph/get-event-tags.ts @@ -0,0 +1,35 @@ +import { type JSDocTagStructure, type OptionalKind } from 'ts-morph'; +import manifest from '../../custom-elements.json' with { type: 'json' }; + +export default ( + declaration: (typeof manifest)['modules'][number]['declarations'][number], +) => { + const tags: OptionalKind[] = []; + const isEvents = 'events' in declaration; + + if (!isEvents) { + return tags; + } + + const events = [...declaration.events] + .sort((a, b) => (a.name < b.name ? -1 : 1)) + .filter((event) => !event.name?.startsWith('private')); + + for (const [index, event] of events.entries()) { + tags.push({ + tagName: 'fires', + leadingTrivia(writer) { + writer.conditionalNewLine(index === 0); + }, + text(writer) { + writer.write( + event.type?.text + ? `{${event.type?.text}} ${event.name}` + : `${event.name}`, + ); + }, + }); + } + + return tags; +}; diff --git a/src/ts-morph/get-method-tags.ts b/src/ts-morph/get-method-tags.ts new file mode 100644 index 000000000..a1bea71eb --- /dev/null +++ b/src/ts-morph/get-method-tags.ts @@ -0,0 +1,113 @@ +import { type JSDocTagStructure, type OptionalKind } from 'ts-morph'; +import manifest from '../../custom-elements.json' with { type: 'json' }; + +export default ( + declaration: (typeof manifest)['modules'][number]['declarations'][number], +) => { + const tags: OptionalKind[] = []; + const isMembers = 'members' in declaration; + + if (!isMembers) { + return tags; + } + + const methods = [...declaration.members] + .sort((a, b) => (a.name < b.name ? -1 : 1)) + .filter((member) => { + const isPrivate = 'privacy' in member && member.privacy === 'private'; + const isPseudoPrivate = member.name.startsWith('private'); + const isIgnore = ['click', 'focus'].includes(member.name); + + return ( + !isPrivate && !isPseudoPrivate && !isIgnore && member.kind === 'method' + ); + }); + + for (const [index, method] of methods.entries()) { + tags.push({ + tagName: 'method', + leadingTrivia(writer) { + if (index === 0) { + writer.newLine(); + return; + } + + const currentMethodHasParameters = 'parameters' in method; + + const currentMethodHasReturn = + 'return' in method && method.return?.type.text !== 'void'; + + const previousMethod = methods.at(index - 1); + + const previousMethodHasParameters = + previousMethod && 'parameters' in previousMethod; + + const previousMethodHasReturn = + previousMethod && + 'return' in previousMethod && + previousMethod.return?.type.text !== 'void'; + + if ( + currentMethodHasParameters || + currentMethodHasReturn || + previousMethodHasParameters || + previousMethodHasReturn + ) { + writer.newLine(); + } + }, + text(writer) { + writer.write(method.name); + + if ('description' in method && method.description) { + // Multi-line comments are hard to read unless we indent them. Figured + // doing so isn't worthwhile given the complexity of indenting them just + // so. We reduce the comment to a single line instead. + writer.write(` - ${method.description.replaceAll('\n', ' ')}`); + } + }, + }); + + if ('parameters' in method && method.parameters) { + for (const parameter of method.parameters) { + tags.push({ + tagName: 'param', + text(writer) { + if ('optional' in parameter && parameter.type) { + writer.write(`{${parameter.type.text}} [${parameter.name}]`); + } else if (parameter.type) { + writer.write(`{${parameter.type.text}} ${parameter.name}`); + } else { + writer.write(parameter.name); + } + + if ( + 'description' in parameter && + typeof parameter.description === 'string' + ) { + writer.write( + // Multi-line comments are hard to read unless we indent them. Figured + // doing so isn't worthwhile given the complexity of indenting them just + // so. So we simply reduce the comment to a single line. + ` - ${parameter.description.replaceAll('\n', ' ')}`, + ); + } + }, + }); + } + } + + if ('return' in method && method.return?.type.text !== 'void') { + tags.push({ + tagName: 'returns', + text(writer) { + if (method.return?.type.text) { + writer.write(`${method.return.type.text}`); + } + }, + }); + } + } + + return tags; +}; diff --git a/src/ts-morph/get-property-tags.ts b/src/ts-morph/get-property-tags.ts new file mode 100644 index 000000000..6b5dbf666 --- /dev/null +++ b/src/ts-morph/get-property-tags.ts @@ -0,0 +1,90 @@ +import { type JSDocTagStructure, type OptionalKind } from 'ts-morph'; +import manifest from '../../custom-elements.json' with { type: 'json' }; + +export default ( + declaration: (typeof manifest)['modules'][number]['declarations'][number], +) => { + const tags: OptionalKind[] = []; + const isMembers = 'members' in declaration; + + if (!isMembers) { + return tags; + } + + const properties = [...declaration.members] + .sort((a, b) => (a.name < b.name ? -1 : 1)) + .filter((member) => { + const isAttribute = + 'attributes' in declaration && + declaration.attributes.some(({ fieldName }) => { + return fieldName === member.name; + }); + + // A hard-coded list is unfortunate. But we can't ignore all static + // properties because some may be meant for public use. + const isIgnore = ['formAssociated', 'shadowRootOptions'].includes( + member.name, + ); + + const isPrivate = + 'privacy' in member || member.name.startsWith('private'); + + return !isAttribute && !isIgnore && !isPrivate && member.kind === 'field'; + }); + + for (const [index, property] of properties.entries()) { + if ('readonly' in property && property.readonly) { + tags.push({ + tagName: 'readonly', + leadingTrivia(writer) { + // Read-only attributes are multiline. So we pad them on top and bottom + // with new lines. + writer.newLine(); + }, + }); + } + + tags.push({ + tagName: 'prop', + leadingTrivia(writer) { + const isReadOnly = 'readonly' in property && property.readonly; + writer.conditionalNewLine(!isReadOnly && index === 0); + }, + text(writer) { + writer.write( + property.type + ? `{${property.type.text}} ${property.name}` + : `${property.name}`, + ); + + if ( + 'description' in property && + typeof property.description === 'string' + ) { + // Multi-line comments are hard to read unless we indent them. Figured + // doing so isn't worthwhile given the complexity of indenting them + // correctly. So we simply reduce the comment to a single line. + writer.write(` - ${property.description.replaceAll('\n', ' ')}`); + } + }, + trailingTrivia(writer) { + const isCurrentPropertyReadOnly = + 'readonly' in property && property.readonly; + + const nextProperty = properties.at(index + 1); + + const isNextPropertyReadOnly = + nextProperty && 'readonly' in nextProperty; + + // If the next property is read-only, it'll write a leading new + // line for itself. Otherwise, if we were to write one here, a new + // line will be inserted between `@readonly` and `@prop`. + writer.conditionalNewLine( + isCurrentPropertyReadOnly && nextProperty && !isNextPropertyReadOnly, + ); + }, + }); + } + + return tags; +}; diff --git a/src/ts-morph/get-slot-tags.ts b/src/ts-morph/get-slot-tags.ts new file mode 100644 index 000000000..3b05f5b0a --- /dev/null +++ b/src/ts-morph/get-slot-tags.ts @@ -0,0 +1,61 @@ +import { type JSDocTagStructure, type OptionalKind } from 'ts-morph'; +import manifest from '../../custom-elements.json' with { type: 'json' }; + +export default ( + declaration: (typeof manifest)['modules'][number]['declarations'][number], +) => { + const tags: OptionalKind[] = []; + const isSlots = 'slots' in declaration; + + if (!isSlots) { + return tags; + } + + const slots = [...declaration.slots].sort((a, b) => { + // Default slot first. Then the rest sorted alphabetically. + return a.name === '' ? -1 : a.name < b.name ? -1 : 1; + }); + + for (const [index, slot] of slots.entries()) { + tags.push({ + tagName: 'slot', + leadingTrivia(writer) { + writer.conditionalNewLine(index === 0); + }, + text(writer) { + const isTyped = 'text' in slot.type && slot.type.text; + const isRequired = 'required' in slot && slot.required; + + if (isTyped && slot.name) { + writer.write( + isRequired + ? `{${slot.type.text}} ${slot.name}` + : `{${slot.type.text}} [${slot.name}]`, + ); + } else if (slot.name) { + writer.write(isRequired ? `${slot.name}` : `[${slot.name}]`); + } else if (isTyped) { + writer.write(`{${slot.type.text}}`); + } + + if (slot.description) { + // Multi-line comments are hard to read unless we indent them. Figured + // doing so isn't worthwhile given the complexity of indenting them + // correctly. So we simply reduce the comment to a single line. + // + // Some slot comments additionally quote code using backticks. Because + // the backticks are inside tagged templates, they have to be escaped. + // We unescape them so they show up as code on hover. + writer.write( + ` - ${slot.description + .replaceAll('\n', '') + // Remove backticks preceded by a backslash. + .replaceAll(/\\(?=`)/g, '')}`, + ); + } + }, + }); + } + + return tags; +}; diff --git a/src/ts-morph/run.ts b/src/ts-morph/run.ts new file mode 100644 index 000000000..3999444ae --- /dev/null +++ b/src/ts-morph/run.ts @@ -0,0 +1,95 @@ +import { Project } from 'ts-morph'; +import manifest from '../../custom-elements.json' with { type: 'json' }; +import getAttributeTags from './get-attribute-tags.js'; +import getCssPropertyTags from './get-css-property-tags.js'; +import getPropertyTags from './get-property-tags.js'; +import getSlotTags from './get-slot-tags.js'; +import getEventTags from './get-event-tags.js'; +import getMethodTags from './get-method-tags.js'; + +/** + * Uses the information in the elements manifest to add a top-level JSDoc + * comment to every component. + */ +const project = new Project(); + +project.addSourceFilesAtPaths([ + './src/*.ts', + './src/*.*.ts', + '!**/*stories*', + '!**/*styles*', + '!**/*test*', +]); + +let isSave = false; + +for (const file of project.getSourceFiles()) { + for (const node of file.getClasses()) { + if (node.getBaseClass()?.getName() === 'LitElement') { + const declaration = manifest.modules + // Get all the custom element declarations. + ?.flatMap((module) => { + return module.declarations?.find((declaration) => { + return declaration.customElement; + }); + }) + // Now find the declaration for the node in question. + ?.find((declaration) => { + return ( + declaration && + 'name' in declaration && + declaration.name === node.getName() + ); + }); + + if (declaration) { + const tags = [ + // Attributes at the top because some are required and everyone uses + // them. Then slots for the same reason. + // + // Custom properties are rare and could get lost in the noise. So they're + // next. Then events because they're commonly used but optional. Then the + // rest. + ...getAttributeTags(declaration), + ...getSlotTags(declaration), + ...getCssPropertyTags(declaration), + ...getEventTags(declaration), + ...getPropertyTags(declaration), + ...getMethodTags(declaration), + ]; + + const currentComment = node.getJsDocs().at(0)?.getText(); + + node.set({ + docs: + tags.length > 0 + ? [ + { + tags, + }, + ] + : [], + }); + + const newComment = node.getJsDocs().at(0)?.getText(); + + if (currentComment !== newComment) { + isSave = true; + } + } + } + } +} + +// Conditionlly saving lets us watch `./custom-elements.json` in +// `start:development:ts-morph` without a loop. +// +// Otherwise, a change to a component would trigger a write to +// `./custom-elements.json` via `start:development:cem-analyze`. +// +// Then `start:development:ts-morph` would run and write the component's +// file again, which would cause `start:development:cem-analyze` to run +// again. +if (isSave) { + await project.save(); +}