solid-ui 3.1.3-8 → 3.1.3-9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{account-jSZP2tZ5.js → account-CWY924jw.js} +8 -8
- package/dist/chunks/{account-jSZP2tZ5.js.map → account-CWY924jw.js.map} +1 -1
- package/dist/chunks/{auth-CZOEEeJ8.js → auth-DIRGfFle.js} +4 -4
- package/dist/chunks/{auth-CZOEEeJ8.js.map → auth-DIRGfFle.js.map} +1 -1
- package/dist/chunks/{avatar-BugsRJZg.js → avatar-CLJz6mOV.js} +3 -3
- package/dist/chunks/{avatar-BugsRJZg.js.map → avatar-CLJz6mOV.js.map} +1 -1
- package/dist/chunks/{button-0s0lZdxm.js → button-CBQEwOtX.js} +7 -3
- package/dist/chunks/button-CBQEwOtX.js.map +1 -0
- package/dist/chunks/{combobox-Cxi8xUMn.js → combobox-B7a6BjQr.js} +5 -5
- package/dist/chunks/combobox-B7a6BjQr.js.map +1 -0
- package/dist/chunks/{dialog-BAzrHJ8w.js → dialog-Bn4qiZi-.js} +2 -2
- package/dist/chunks/{dialog-BAzrHJ8w.js.map → dialog-Bn4qiZi-.js.map} +1 -1
- package/dist/chunks/{guard-Cml6dHTv.js → guard-Cxl9QbaG.js} +3 -3
- package/dist/chunks/{guard-Cml6dHTv.js.map → guard-Cxl9QbaG.js.map} +1 -1
- package/dist/chunks/{login-button-pe1-DVNZ.js → login-button-ChyF_OoC.js} +4 -4
- package/dist/chunks/{login-button-pe1-DVNZ.js.map → login-button-ChyF_OoC.js.map} +1 -1
- package/dist/chunks/{logout-button-C5dtQiBB.js → logout-button-BRPS8630.js} +4 -4
- package/dist/chunks/{logout-button-C5dtQiBB.js.map → logout-button-BRPS8630.js.map} +1 -1
- package/dist/chunks/{provider-DRxSExO6.js → provider-D0RqwRoM.js} +2 -2
- package/dist/chunks/{provider-DRxSExO6.js.map → provider-D0RqwRoM.js.map} +1 -1
- package/dist/chunks/{signup-button-QvYELqb6.js → signup-button-Df4rYzNO.js} +4 -4
- package/dist/chunks/{signup-button-QvYELqb6.js.map → signup-button-Df4rYzNO.js.map} +1 -1
- package/dist/chunks/{src-DYvSns7X.js → src-Dxxeu4rj.js} +2 -2
- package/dist/chunks/{src-DYvSns7X.js.map → src-Dxxeu4rj.js.map} +1 -1
- package/dist/components/account.js +1 -1
- package/dist/components/avatar.js +1 -1
- package/dist/components/button/Button.cjs.js +2 -2
- package/dist/components/button/Button.cjs.js.map +1 -1
- package/dist/components/button/Button.d.ts +1 -0
- package/dist/components/button/Button.d.ts.map +1 -1
- package/dist/components/button/Button.esm.js +5 -1
- package/dist/components/button/Button.esm.js.map +1 -1
- package/dist/components/button/Button.styles.cjs.js +1 -1
- package/dist/components/button/Button.styles.cjs.js.map +1 -1
- package/dist/components/button/Button.styles.esm.js +1 -1
- package/dist/components/button/Button.styles.esm.js.map +1 -1
- package/dist/components/button.js +1 -1
- package/dist/components/combobox/Combobox.cjs.js +2 -2
- package/dist/components/combobox/Combobox.cjs.js.map +1 -1
- package/dist/components/combobox/Combobox.d.ts +1 -1
- package/dist/components/combobox/Combobox.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.esm.js +4 -4
- package/dist/components/combobox/Combobox.esm.js.map +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/dialog.js +1 -1
- package/dist/components/guard.js +1 -1
- package/dist/components/login-button.js +1 -1
- package/dist/components/login-modal.js +1 -1
- package/dist/components/logout-button.js +1 -1
- package/dist/components/provider.js +1 -1
- package/dist/components/signup-button.js +1 -1
- package/dist/components.js +11 -11
- package/dist/index.js +2 -2
- package/dist/loader.js +2 -2
- package/dist/solid-ui.js +5 -5
- package/dist/solid-ui.min.js +5 -5
- package/dist/solid-ui.min.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/button-0s0lZdxm.js.map +0 -1
- package/dist/chunks/combobox-Cxi8xUMn.js.map +0 -1
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"button-0s0lZdxm.js","names":["customElement","WebComponent","html","nothing","property","styles","BUTTON_VARIANTS","_classDecs","_Button","_Button2","_A","WeakMap","_B","_C","_D","_ref","_variantDecs","type","String","reflect","_typeDecs","_disabledDecs","Boolean","_loadingDecs","_Button3","Button","constructor","args","_classPrivateFieldInitSpec","_initProto","_init_variant","_init_type","_init_disabled","undefined","_init_loading","_classPrivateFieldGet","variant","v","_classPrivateFieldSet","disabled","loading","render","onClick","getInternals","form","requestSubmit","reset","e","c","_initClass","_applyDecs","_Class","_identity","_defineProperty","default","Button","BUTTON_VARIANTS"],"sources":["../../src/components/button/Button.styles.css","../../src/components/button/Button.ts","../../src/components/button/index.ts"],"sourcesContent":[":host {\n --text-color: var(--solid-ui-color-white);\n --border-color: var(--solid-ui-color-primary);\n --background-color: var(--solid-ui-color-primary);\n --hover-text-color: var(--text-color);\n --hover-border-color: var(--solid-ui-color-tertiary);\n --hover-background-color: var(--solid-ui-color-tertiary);\n\n display: inline-flex;\n\n button {\n position: relative;\n padding: 7px 12px;\n border-radius: 5px;\n font-size: var(--solid-ui-font-size-md);\n font-weight: 600;\n color: var(--text-color);\n background: var(--background-color);\n border: 1px solid var(--border-color);\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 5px;\n flex: 1;\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n &:hover:not(:disabled) {\n color: var(--hover-text-color);\n background: var(--hover-background-color);\n border-color: var(--hover-border-color);\n }\n\n icon-svg-spinners-180-ring, ::slotted([slot=\"left-icon\"]), ::slotted([slot=\"right-icon\"]) {\n width: var(--solid-ui-font-size-md);\n height: var(--solid-ui-font-size-md);\n }\n\n &::after {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: var(--solid-ui-clickable-area);\n height: var(--solid-ui-clickable-area);\n }\n }\n}\n\n:host(:has([slot=\"icon\"])) button {\n padding: 4px;\n\n ::slotted([slot=\"icon\"]) {\n width: var(--solid-ui-font-size-2xl);\n height: var(--solid-ui-font-size-2xl);\n }\n}\n\n:host([variant='secondary']) button {\n --text-color: var(--solid-ui-color-gray-800);\n --border-color: var(--solid-ui-color-slate-400);\n --background-color: var(--solid-ui-color-white);\n --hover-text-color: var(--solid-ui-color-white);\n --hover-background-color: var(--solid-ui-color-tertiary);\n --hover-border-color: var(--solid-ui-color-tertiary);\n}\n\n:host([variant='tertiary']) button {\n --text-color: var(--solid-ui-color-primary);\n --border-color: transparent;\n --background-color: transparent;\n --hover-text-color: var(--solid-ui-color-tertiary);\n --hover-border-color: var(--solid-ui-color-tertiary);\n --hover-background-color: transparent;\n\n padding: 0;\n border-radius: 0;\n border-width: 0;\n border-bottom-width: 1px;\n}\n\n:host([variant='outline']) button {\n --text-color: currentColor;\n --border-color: currentColor;\n --background-color: transparent;\n --hover-text-color: currentColor;\n --hover-border-color: currentColor;\n --hover-background-color: color-mix(in srgb, currentColor 25%, transparent);\n}\n\n:host([variant='ghost']) button {\n --text-color: currentColor;\n --border-color: transparent;\n --background-color: transparent;\n --hover-text-color: currentColor;\n --hover-border-color: transparent;\n --hover-background-color: color-mix(in srgb, currentColor 25%, transparent);\n}\n","import { customElement, WebComponent } from '@/lib/components'\nimport { html, nothing } from 'lit'\nimport { property } from 'lit/decorators.js'\n\nimport '~icons/svg-spinners/180-ring'\n\nimport styles from './Button.styles.css'\n\nexport const BUTTON_VARIANTS = ['primary', 'secondary', 'tertiary', 'outline', 'ghost'] as const\nexport type ButtonVariant = typeof BUTTON_VARIANTS[number]\n\n@customElement('solid-ui-button')\nexport default class Button extends WebComponent {\n static styles = styles\n static formAssociated = true\n\n @property({ type: String, reflect: true })\n accessor variant: ButtonVariant = 'primary'\n\n @property({ type: String, reflect: true })\n accessor type = 'button'\n\n @property({ type: Boolean })\n accessor disabled: boolean | undefined = undefined\n\n @property({ type: Boolean })\n accessor loading = false\n\n render () {\n const disabled = this.disabled ?? this.loading\n\n return html`\n <button type=${this.type} ?disabled=${disabled} @click=${this.onClick}>\n ${this.loading ? html`<icon-svg-spinners-180-ring></icon-svg-spinners-180-ring>` : nothing}\n <slot name=\"left-icon\"></slot>\n <slot name=\"icon\"></slot>\n <slot></slot>\n <slot name=\"right-icon\"></slot>\n </button>\n `\n }\n\n private onClick () {\n switch (this.type) {\n case 'submit':\n this.getInternals().form?.requestSubmit()\n break\n case 'reset':\n this.getInternals().form?.reset()\n break\n }\n }\n}\n","import Button, { BUTTON_VARIANTS, type ButtonVariant } from './Button'\n\nexport { Button, BUTTON_VARIANTS, type ButtonVariant }\nexport default Button\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"combobox-Cxi8xUMn.js","names":["customElement","WebComponent","html","nothing","property","query","state","InputTrait","styles","_classDecs","_Combobox","_Combobox2","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_ref","_labelDecs","type","String","reflect","_nameDecs","_valueDecs","_placeholderDecs","_requiredDecs","Boolean","_inputElementDecs","_filterDecs","_openDecs","_activeIndexDecs","_Combobox3","Combobox","_classPrivateFieldGet","label","v","_classPrivateFieldSet","name","value","placeholder","required","inputElement","filter","open","activeIndex","constructor","_classPrivateFieldInitSpec","_initProto","_init_label","_init_name","_init_value","_init_placeholder","_init_required","_init_inputElement","_init_filter","_init_open","_init_activeIndex","_defineProperty","event","path","composedPath","includes","hide","inputTrait","addTrait","getInputElement","getInternals","onValueChanged","toLowerCase","options","getFilteredOptions","length","getInitialActiveIndex","listboxId","inputId","disconnectedCallback","removeOpenListeners","render","activeOption","undefined","activeDescendant","getOptionId","accessibleName","renderLabel","onAnchorMouseDown","labelId","onInputKeyDown","onInputFocus","onInput","onListboxMouseUp","map","option","index","setActiveIndex","getOptions","querySelectorAll","Array","from","textContent","selectedIndex","findIndex","getNextIndex","currentIndex","direction","show","filteredOptions","focusLast","addOpenListeners","requestAnimationFrame","scrollActiveOptionIntoView","selectOption","setValue","focus","preventScroll","shadowRoot","querySelector","scrollIntoView","block","openListenersAttached","document","addEventListener","handleDocumentFocusIn","handleDocumentMouseDown","root","getRootNode","removeEventListener","preventDefault","openPopupFromKey","key","onSubmit","stopPropagation","target","HTMLElement","optionElement","closest","optionId","id","Number","parseInt","replace","e","c","_initClass","_applyDecs","_Class","_identity","default","Combobox"],"sources":["../../src/components/combobox/Combobox.styles.css","../../src/components/combobox/Combobox.ts","../../src/components/combobox/index.ts"],"sourcesContent":[":host {\n display: inline-flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 5px;\n\n label {\n color: var(--solid-ui-color-gray-600);\n font-size: var(--solid-ui-font-size-sm);\n font-weight: 400;\n }\n\n wa-popup {\n display: block;\n width: 100%;\n }\n\n wa-popup::part(popup) {\n background: white;\n border: 1px solid var(--solid-ui-color-gray-100);\n border-radius: 5px;\n box-shadow: 0px 4px 16px 0px rgba(0, 0, 0, 0.35);\n overflow: hidden;\n }\n\n .input-wrapper {\n position: relative;\n width: 100%;\n\n input {\n border: 1px solid var(--solid-ui-color-gray-400);\n border-radius: 5px;\n padding: 10px;\n padding-right: 40px;\n width: 100%;\n }\n\n icon-lucide-chevron-down {\n position: absolute;\n right: 15px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--solid-ui-color-gray-500);\n width: var(--solid-ui-font-size-lg);\n height: var(--solid-ui-font-size-lg);\n pointer-events: none;\n }\n }\n\n .listbox {\n display: flex;\n flex-direction: column;\n max-height: inherit;\n overflow: auto;\n\n [role=\"option\"] {\n padding: 12px 8px;\n color: var(--solid-ui-color-gray-700);\n border-bottom: 1px solid var(--solid-ui-color-gray-100);\n cursor: pointer;\n\n &:hover,\n &[data-active] {\n background: rgba(0, 0, 0, 0.05);\n }\n }\n }\n}\n","import { customElement, WebComponent } from '@/lib/components'\nimport { html, nothing } from 'lit'\nimport { property, query, state } from 'lit/decorators.js'\nimport InputTrait from '@/lib/components/traits/InputTrait'\nimport type ComboboxOption from '@/components/combobox-option/ComboboxOption'\n\nimport '~icons/lucide/chevron-down'\nimport '@awesome.me/webawesome/dist/components/popup/popup.js'\n\nimport styles from './Combobox.styles.css'\n\ntype ComboboxOptionData = { value: string; label: string }\n\n@customElement('solid-ui-combobox')\nexport default class Combobox extends WebComponent {\n static styles = styles\n static formAssociated = true\n\n @property({ type: String, reflect: true })\n accessor label = ''\n\n @property({ type: String, reflect: true })\n accessor name = ''\n\n @property({ type: String })\n accessor value = ''\n\n @property({ type: String, reflect: true })\n accessor placeholder = ''\n\n @property({ type: Boolean, reflect: true })\n accessor required = false\n\n @query('input')\n private accessor inputElement: HTMLInputElement | null = null\n\n @state()\n private accessor filter = ''\n\n @state()\n private accessor open = false\n\n @state()\n private accessor activeIndex = -1\n\n private inputTrait: InputTrait\n private openListenersAttached = false\n private readonly listboxId: string\n\n constructor () {\n super()\n\n this.inputTrait = this.addTrait(\n new InputTrait(this, {\n getInputElement: () => this.inputElement,\n getInternals: () => this.getInternals(),\n onValueChanged: (value) => {\n this.filter = value.toLowerCase()\n\n const options = this.getFilteredOptions()\n\n if (options.length === 0) {\n this.hide()\n return\n }\n\n if (this.open) {\n this.activeIndex = this.getInitialActiveIndex(options)\n }\n },\n })\n )\n\n this.listboxId = `listbox-${this.inputTrait.inputId}`\n }\n\n disconnectedCallback () {\n super.disconnectedCallback()\n\n this.removeOpenListeners()\n }\n\n protected render () {\n const options = this.getFilteredOptions()\n const activeOption =\n this.open && this.activeIndex >= 0 ? options[this.activeIndex] : undefined\n const activeDescendant =\n activeOption !== undefined ? this.getOptionId(this.activeIndex) : undefined\n const accessibleName = this.placeholder || 'Combobox'\n\n return html`\n ${this.inputTrait.renderLabel()}\n <wa-popup\n placement=\"bottom\"\n flip\n shift\n sync=\"width\"\n auto-size=\"vertical\"\n auto-size-padding=\"10\"\n ?active=${this.open}\n >\n <div class=\"input-wrapper\" slot=\"anchor\" @mousedown=${this.onAnchorMouseDown}>\n <input\n id=\"${this.inputTrait.inputId}\"\n type=\"text\"\n name=${this.name}\n placeholder=${this.placeholder}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-controls=${this.listboxId}\n aria-activedescendant=${activeDescendant ?? nothing}\n aria-labelledby=${this.label ? this.inputTrait.labelId : nothing}\n aria-label=${this.label ? nothing : accessibleName}\n aria-required=${this.required ? 'true' : nothing}\n autocomplete=\"off\"\n spellcheck=\"false\"\n ?required=${this.required}\n .value=${this.value}\n @keydown=${this.onInputKeyDown}\n @focus=${this.onInputFocus}\n @input=${() => this.inputTrait.onInput()}\n />\n <icon-lucide-chevron-down></icon-lucide-chevron-down>\n </div>\n <div\n id=${this.listboxId}\n class=\"listbox\"\n role=\"listbox\"\n aria-orientation=\"vertical\"\n aria-labelledby=${this.label ? this.inputTrait.labelId : nothing}\n aria-label=${this.label ? nothing : accessibleName}\n ?hidden=${!this.open}\n @mouseup=${this.onListboxMouseUp}\n >\n ${options.map(\n (option, index) =>\n html`<div\n id=${this.getOptionId(index)}\n role=\"option\"\n aria-selected=${this.open && index === this.activeIndex\n ? 'true'\n : 'false'}\n data-active=${index === this.activeIndex || nothing}\n @mousemove=${() => this.setActiveIndex(index)}\n >\n ${option.label}\n </div>`\n )}\n </div>\n </wa-popup>\n `\n }\n\n private getFilteredOptions (): ComboboxOptionData[] {\n return this.getOptions().filter((option) =>\n option.label.toLowerCase().includes(this.filter)\n )\n }\n\n private getOptions (): ComboboxOptionData[] {\n const options = this.querySelectorAll<ComboboxOption>(\n 'solid-ui-combobox-option'\n )\n\n return Array.from(options).map((option) => ({\n value: option.value,\n label: option.textContent ?? '',\n }))\n }\n\n private getOptionId (index: number): string {\n return `${this.listboxId}-option-${index}`\n }\n\n private getInitialActiveIndex (options: ComboboxOptionData[]): number {\n const selectedIndex = options.findIndex((option) => option.value === this.value)\n\n if (selectedIndex >= 0) {\n return selectedIndex\n }\n\n return options.length > 0 ? 0 : -1\n }\n\n private getNextIndex (\n currentIndex: number,\n options: ComboboxOptionData[],\n direction: 1 | -1\n ): number {\n if (options.length === 0) {\n return -1\n }\n\n return (currentIndex + direction + options.length) % options.length\n }\n\n private setActiveIndex (index: number) {\n this.activeIndex = index\n }\n\n private show (options?: { focusLast?: boolean }) {\n if (this.open) {\n return\n }\n\n const filteredOptions = this.getFilteredOptions()\n\n if (filteredOptions.length === 0) {\n return\n }\n\n this.open = true\n this.activeIndex = options?.focusLast\n ? filteredOptions.length - 1\n : this.getInitialActiveIndex(filteredOptions)\n this.addOpenListeners()\n\n requestAnimationFrame(() => this.scrollActiveOptionIntoView())\n }\n\n private hide () {\n if (!this.open) {\n return\n }\n\n this.open = false\n this.activeIndex = -1\n this.removeOpenListeners()\n }\n\n private selectOption (value: string) {\n this.inputTrait.setValue(value)\n this.hide()\n this.inputElement?.focus({ preventScroll: true })\n }\n\n private scrollActiveOptionIntoView () {\n if (this.activeIndex < 0) {\n return\n }\n\n this.shadowRoot\n ?.querySelector(`#${this.getOptionId(this.activeIndex)}`)\n ?.scrollIntoView({ block: 'nearest' })\n }\n\n private addOpenListeners () {\n if (this.openListenersAttached) {\n return\n }\n\n document.addEventListener('focusin', this.handleDocumentFocusIn)\n document.addEventListener('mousedown', this.handleDocumentMouseDown)\n\n const root = this.getRootNode()\n\n if (root !== document) {\n root.addEventListener('focusin', this.handleDocumentFocusIn)\n }\n\n this.openListenersAttached = true\n }\n\n private removeOpenListeners () {\n if (!this.openListenersAttached) {\n return\n }\n\n document.removeEventListener('focusin', this.handleDocumentFocusIn)\n document.removeEventListener('mousedown', this.handleDocumentMouseDown)\n\n const root = this.getRootNode()\n\n if (root !== document) {\n root.removeEventListener('focusin', this.handleDocumentFocusIn)\n }\n\n this.openListenersAttached = false\n }\n\n private handleDocumentFocusIn = (event: Event) => {\n const path = event.composedPath()\n\n if (!path.includes(this)) {\n this.hide()\n }\n }\n\n private handleDocumentMouseDown = (event: MouseEvent) => {\n const path = event.composedPath()\n\n if (!path.includes(this)) {\n this.hide()\n }\n }\n\n private onAnchorMouseDown (event: MouseEvent) {\n event.preventDefault()\n this.inputElement?.focus({ preventScroll: true })\n }\n\n private onInputFocus () {\n this.show()\n }\n\n private openPopupFromKey (focusLast: boolean) {\n if (!this.open) {\n this.show({ focusLast })\n }\n }\n\n private onInputKeyDown (event: KeyboardEvent) {\n const options = this.getFilteredOptions()\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n\n if (!this.open) {\n this.openPopupFromKey(false)\n } else {\n this.activeIndex = this.getNextIndex(this.activeIndex, options, 1)\n this.scrollActiveOptionIntoView()\n }\n break\n case 'ArrowUp':\n event.preventDefault()\n\n if (!this.open) {\n this.openPopupFromKey(true)\n } else {\n this.activeIndex = this.getNextIndex(this.activeIndex, options, -1)\n this.scrollActiveOptionIntoView()\n }\n break\n case 'Enter':\n if (this.open && this.activeIndex >= 0 && options[this.activeIndex]) {\n event.preventDefault()\n this.selectOption(options[this.activeIndex].value)\n } else if (!this.open) {\n event.preventDefault()\n this.inputTrait.onSubmit()\n }\n break\n case 'Escape':\n if (this.open) {\n event.preventDefault()\n event.stopPropagation()\n this.hide()\n this.inputElement?.focus({ preventScroll: true })\n }\n break\n case 'Tab':\n this.hide()\n break\n }\n }\n\n private onListboxMouseUp (event: MouseEvent) {\n if (!(event.target instanceof HTMLElement)) {\n return\n }\n\n const optionElement = event.target.closest('[role=\"option\"]')\n\n if (!optionElement) {\n return\n }\n\n const optionId = optionElement.id\n const index = Number.parseInt(optionId.replace(`${this.listboxId}-option-`, ''), 10)\n const option = this.getFilteredOptions()[index]\n\n if (option) {\n this.selectOption(option.value)\n }\n }\n}\n","import Combobox from './Combobox'\n\nexport { Combobox }\nexport default Combobox\n"],"mappings":"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"}
|