@descope/web-components-ui 1.35.0 → 1.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs.js +3816 -3784
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/index.esm.js +716 -685
- package/dist/index.esm.js.map +1 -1
- package/dist/umd/1519.js +1 -1
- package/dist/umd/1519.js.map +1 -1
- package/dist/umd/2672.js +1 -1
- package/dist/umd/2672.js.map +1 -1
- package/dist/umd/6424.js +1 -1
- package/dist/umd/6424.js.map +1 -1
- package/dist/umd/DescopeDev.js +1 -1
- package/dist/umd/DescopeDev.js.map +1 -1
- package/dist/umd/button-selection-group-fields-descope-button-multi-selection-group-index-js.js +1 -1
- package/dist/umd/button-selection-group-fields-descope-button-multi-selection-group-index-js.js.map +1 -1
- package/dist/umd/button-selection-group-fields-descope-button-selection-group-index-js.js +1 -1
- package/dist/umd/button-selection-group-fields-descope-button-selection-group-index-js.js.map +1 -1
- package/dist/umd/button-selection-group-fields-descope-button-selection-group-item-index-js.js +1 -1
- package/dist/umd/button-selection-group-fields-descope-button-selection-group-item-index-js.js.map +1 -1
- package/dist/umd/{descope-button-index-js.js → descope-button.js} +3 -3
- package/dist/umd/descope-button.js.map +1 -0
- package/dist/umd/descope-date-field-descope-calendar-index-js.js +1 -1
- package/dist/umd/descope-date-field-descope-calendar-index-js.js.map +1 -1
- package/dist/umd/descope-icon.js +2 -0
- package/dist/umd/descope-icon.js.map +1 -0
- package/dist/umd/descope-modal-index-js.js +1 -1
- package/dist/umd/descope-modal-index-js.js.map +1 -1
- package/dist/umd/descope-third-party-app-logo-index-js.js +1 -1
- package/dist/umd/descope-third-party-app-logo-index-js.js.map +1 -1
- package/dist/umd/descope-upload-file-index-js.js +1 -1
- package/dist/umd/descope-upload-file-index-js.js.map +1 -1
- package/dist/umd/descope-user-attribute-index-js.js +1 -1
- package/dist/umd/descope-user-attribute-index-js.js.map +1 -1
- package/dist/umd/descope-user-auth-method-index-js.js +1 -1
- package/dist/umd/descope-user-auth-method-index-js.js.map +1 -1
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/dist/umd/mapping-fields-descope-mappings-field-index-js.js +1 -1
- package/dist/umd/mapping-fields-descope-mappings-field-index-js.js.map +1 -1
- package/dist/umd/mapping-fields-descope-saml-group-mappings-index-js.js +1 -1
- package/dist/umd/mapping-fields-descope-saml-group-mappings-index-js.js.map +1 -1
- package/package.json +3 -3
- package/src/components/button-selection-group-fields/descope-button-selection-group-item/ButtonSelectionGroupItemClass.js +1 -1
- package/src/components/button-selection-group-fields/descope-button-selection-group-item/index.js +1 -1
- package/src/components/descope-date-field/descope-calendar/CalendarClass.js +1 -1
- package/src/components/descope-date-field/descope-calendar/index.js +1 -1
- package/src/components/descope-modal/ModalClass.js +15 -1
- package/src/components/descope-third-party-app-logo/ThirdPartyAppLogoClass.js +1 -1
- package/src/components/descope-third-party-app-logo/index.js +1 -1
- package/src/components/descope-upload-file/UploadFileClass.js +1 -1
- package/src/components/descope-upload-file/index.js +1 -1
- package/src/components/descope-user-attribute/UserAttributeClass.js +1 -1
- package/src/components/descope-user-attribute/index.js +1 -1
- package/src/components/descope-user-auth-method/UserAuthMethodClass.js +2 -2
- package/src/components/descope-user-auth-method/index.js +1 -1
- package/src/components/mapping-fields/descope-mappings-field/index.js +1 -1
- package/src/index.cjs.js +0 -1
- package/src/index.js +0 -2
- package/src/theme/components/index.js +2 -2
- package/dist/umd/descope-button-index-js.js.map +0 -1
- package/dist/umd/descope-icon-index-js.js +0 -2
- package/dist/umd/descope-icon-index-js.js.map +0 -1
- package/src/components/descope-button/ButtonClass.js +0 -163
- package/src/components/descope-button/clickableMixin.js +0 -10
- package/src/components/descope-button/index.js +0 -6
- package/src/components/descope-icon/IconClass.js +0 -98
- package/src/components/descope-icon/helpers.js +0 -51
- package/src/components/descope-icon/index.js +0 -5
- package/src/theme/components/button.js +0 -133
- package/src/theme/components/icon.js +0 -7
- /package/dist/umd/{descope-button-index-js.js.LICENSE.txt → descope-button.js.LICENSE.txt} +0 -0
package/dist/umd/button-selection-group-fields-descope-button-selection-group-index-js.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"button-selection-group-fields-descope-button-selection-group-index-js.js","mappings":"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","sources":["webpack://@descope/web-components-ui/./src/baseClasses/createBaseInputClass.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/baseButtonSelectionGroup.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/createBaseButtonSelectionGroupInternalClass.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-selection-group-internal/ButtonSelectionGroupInternalClass.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-selection-group-internal/index.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-selection-group-item/ButtonSelectionGroupItemClass.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-selection-group-item/index.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-selection-group/ButtonSelectionGroupClass.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-selection-group/index.js","webpack://@descope/web-components-ui/./src/components/descope-button/ButtonClass.js","webpack://@descope/web-components-ui/./src/components/descope-button/clickableMixin.js","webpack://@descope/web-components-ui/./src/components/descope-button/index.js","webpack://@descope/web-components-ui/./src/components/descope-icon/IconClass.js","webpack://@descope/web-components-ui/./src/components/descope-icon/helpers.js","webpack://@descope/web-components-ui/./src/helpers/themeHelpers/resetHelpers.js"],"sourcesContent":["import { compose } from '../helpers';\nimport {\n changeMixin,\n inputEventsDispatchingMixin,\n inputValidationMixin,\n normalizeBooleanAttributesMixin,\n} from '../mixins';\nimport { createBaseClass } from './createBaseClass';\n\nexport const createBaseInputClass = (...args) =>\n compose(\n inputValidationMixin,\n changeMixin,\n normalizeBooleanAttributesMixin,\n inputEventsDispatchingMixin\n )(createBaseClass(...args));\n","import { observeAttributes, observeChildren } from '../../helpers/componentHelpers';\nimport {\n resetInputLabelPosition,\n resetInputCursor,\n resetInputFieldDefaultWidth,\n} from '../../helpers/themeHelpers/resetHelpers';\n\nexport const buttonSelectionGroupBaseMixin = (superclass) =>\n class ButtonSelectionGroupMixinClass extends superclass {\n // eslint-disable-next-line class-methods-use-this\n #renderItem = ({ value, label }) =>\n `<descope-button-selection-group-item value=\"${value}\">${label}</descope-button-selection-group-item>`;\n\n #data;\n\n get renderItem() {\n return this.#renderItem;\n }\n\n set renderItem(renderFn) {\n this.#renderItem = renderFn;\n this.renderItems();\n }\n\n get size() {\n return this.inputElement?.size;\n }\n\n get data() {\n if (this.#data) return this.#data;\n\n const dataAttr = this.getAttribute('data');\n\n if (dataAttr) {\n try {\n const data = JSON.parse(dataAttr);\n if (this.isValidDataType(data)) {\n return data;\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('could not parse data string from attribute \"data\" - ', e.message);\n }\n }\n\n return [];\n }\n\n set data(data) {\n if (this.isValidDataType(data)) {\n this.#data = data;\n this.renderItems();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n isValidDataType(data) {\n const isValid = Array.isArray(data);\n if (!isValid) {\n // eslint-disable-next-line no-console\n console.error('data must be an array, received:', data);\n }\n\n return isValid;\n }\n\n getItemsTemplate() {\n return this.data?.reduce?.((acc, item) => acc + (this.renderItem?.(item || {}) || ''), '');\n }\n\n renderItems() {\n const template = this.getItemsTemplate();\n if (template) this.innerHTML = template;\n }\n\n init() {\n super.init?.();\n\n this.renderItems();\n\n observeAttributes(this, this.renderItems.bind(this), { includeAttrs: ['data'] });\n\n // we want new items to get the size\n observeChildren(this, ({ addedNodes }) => {\n addedNodes.forEach((node) => {\n node.setAttribute('size', this.size);\n });\n });\n }\n };\n\nconst { host, label, requiredIndicator, internalWrapper, errorMessage } = {\n host: { selector: () => ':host' },\n label: { selector: '::part(label)' },\n requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n internalWrapper: { selector: () => ':host [part=\"internal-component\"] slot' },\n errorMessage: { selector: '::part(error-message)' },\n};\n\nexport const buttonSelectionGroupMappings = {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n fontFamily: host,\n labelTextColor: [\n { ...label, property: 'color' },\n { ...requiredIndicator, property: 'color' },\n ],\n labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n errorMessageTextColor: { ...errorMessage, property: 'color' },\n errorMessageIcon: { ...errorMessage, property: 'background-image' },\n errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n itemsSpacing: { ...internalWrapper, property: 'gap' },\n};\n\nexport const buttonSelectionGroupStyles = `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t\tmax-width: 100%;\n\t\t\t}\n\t\t\t${resetInputFieldDefaultWidth()}\n\t\t\t:host::after {\n\t\t\t\tbackground-color: transparent;\n\t\t\t}\n\t\t\t:host::part(input-field)::after {\n\t\t\t\tbackground-color: transparent;\n\t\t\t}\n\n [part=\"internal-component\"] {\n\t\t\t\t-webkit-mask-image: none;\n\t\t\t\tpadding: 0;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n display: inline-block;\n\t\t\t\tmin-height: initial;\n\t\t\t}\n\n [part=\"internal-component\"] slot {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-wrap: wrap;\n\t\t\t}\n\n\t\t\tvaadin-text-field::part(input-field) {\n\t\t\t\tbackground-color: transparent;\n\t\t\t\tpadding: 0;\n\t\t\t\toverflow: hidden;\n\t\t\t\t-webkit-mask-image: none;\n\t\t\t}\n\n\t\t\tvaadin-text-field {\n\t\t\t\tmargin: 0;\n\t\t\t\tpadding: 0;\n\t\t\t\twidth: 100%\n\t\t\t}\n\n\t\t\tvaadin-text-field::before {\n\t\t\t\theight: 0;\n\t\t\t}\n\n\t\t\tvaadin-text-field[readonly] > input:placeholder-shown {\n\t\t\t\topacity: 1;\n\t\t\t}\n\n\t\t\tvaadin-text-field[readonly]::part(input-field)::after {\n\t\t\t\tborder: 0 solid;\n\t\t\t}\n\n\t\t\tvaadin-text-field::part(input-field) {\n\t\t\t\tbox-shadow: none;\n\t\t\t}\n\n ${resetInputLabelPosition('vaadin-text-field')}\n\t\t\t${resetInputCursor('vaadin-text-field')}\n `;\n","import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { createBaseInputClass } from '../../baseClasses/createBaseInputClass';\nimport { observeAttributes } from '../../helpers/componentHelpers';\nimport { createDispatchEvent } from '../../helpers/mixinsHelpers';\n\nexport const createBaseButtonSelectionGroupInternalClass = (componentName) => {\n class BaseButtonSelectionGroupInternalClass extends createBaseInputClass({\n componentName,\n baseSelector: 'slot',\n }) {\n constructor() {\n super();\n\n this.innerHTML = `\n <slot part=\"wrapper\"></slot>\n `;\n }\n\n dispatchChange = createDispatchEvent.bind(this, 'change');\n\n get items() {\n return this.querySelector('slot').assignedElements();\n }\n\n get isReadonly() {\n return this.getAttribute('readonly') === 'true';\n }\n\n get size() {\n return this.getAttribute('size') || 'md';\n }\n\n // eslint-disable-next-line getter-return, class-methods-use-this\n get value() {\n // eslint-disable-next-line no-console\n console.warn('get value', 'is not implemented');\n }\n\n // eslint-disable-next-line class-methods-use-this\n set value(value) {\n // eslint-disable-next-line no-console\n console.warn('set value', 'is not implemented');\n }\n\n onSizeChange() {\n this.items.forEach((item) => {\n item.setAttribute('size', this.size);\n });\n }\n\n onReadOnlyChange() {\n this.querySelector('slot').toggleAttribute('inert', this.isReadonly);\n }\n\n // eslint-disable-next-line class-methods-use-this\n getValidity() {\n // eslint-disable-next-line no-console\n console.warn('getValidity', 'is not implemented');\n }\n\n onObservedAttributeChange(attrs) {\n attrs.forEach((attr) => {\n switch (attr) {\n case 'size':\n this.onSizeChange();\n break;\n case 'readonly':\n this.onReadOnlyChange();\n break;\n default:\n break;\n }\n });\n }\n\n init() {\n // we are adding listeners before calling to super because it's stopping the events\n this.addEventListener('focus', (e) => {\n // we want to ignore focus events we are dispatching\n if (e.isTrusted) {\n this.items[0]?.focus();\n }\n });\n\n super.init?.();\n\n observeAttributes(this, this.onObservedAttributeChange.bind(this), {\n includeAttrs: ['size', 'readonly'],\n });\n }\n }\n\n return BaseButtonSelectionGroupInternalClass;\n};\n","import { getComponentName } from '../../../helpers/componentHelpers';\nimport { createBaseButtonSelectionGroupInternalClass } from '../createBaseButtonSelectionGroupInternalClass';\n\nexport const componentName = getComponentName('button-selection-group-internal');\n\nexport class ButtonSelectionGroupInternalClass extends createBaseButtonSelectionGroupInternalClass(\n componentName\n) {\n getSelectedNode() {\n return this.items.find((item) => item.hasAttribute('selected'));\n }\n\n get allowDeselect() {\n return this.getAttribute('allow-deselect') === 'true';\n }\n\n removeSelected() {\n this.getSelectedNode()?.removeAttribute('selected');\n }\n\n onClick(e) {\n if (e.target !== e.currentTarget) {\n if (e.target === this.getSelectedNode() && this.allowDeselect) {\n this.removeSelected();\n } else {\n this.setSelected(e.target);\n }\n this.dispatchChange();\n }\n }\n\n setSelected(node) {\n if (node !== this.getSelectedNode()) {\n this.removeSelected();\n node?.setAttribute('selected', 'true');\n }\n }\n\n get defaultValue() {\n return this.getAttribute('default-value');\n }\n\n setDefaultValue() {\n // we want to defer this action until all attributes are synched\n setTimeout(() => {\n if (this.defaultValue) {\n this.value = this.defaultValue;\n this.setCustomValidity();\n }\n });\n }\n\n get value() {\n return this.getSelectedNode()?.value || '';\n }\n\n set value(value) {\n const node = this.items.find((child) => child.value === value);\n this.setSelected(node);\n }\n\n getValidity() {\n if (this.isRequired && !this.value) {\n return { valueMissing: true };\n }\n\n return {};\n }\n\n init() {\n super.init();\n\n this.setDefaultValue();\n\n this.querySelector('slot').addEventListener('click', this.onClick.bind(this));\n }\n}\n","import {\n componentName,\n ButtonSelectionGroupInternalClass,\n} from './ButtonSelectionGroupInternalClass';\n\ncustomElements.define(componentName, ButtonSelectionGroupInternalClass);\n\nexport { ButtonSelectionGroupInternalClass };\n","import { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../../mixins';\nimport { createBaseClass } from '../../../baseClasses/createBaseClass';\nimport { compose } from '../../../helpers';\nimport { forwardAttrs, getComponentName } from '../../../helpers/componentHelpers';\nimport { ButtonClass } from '../../descope-button/ButtonClass';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('button-selection-group-item');\n\nclass RawSelectItem extends createBaseClass({\n componentName,\n baseSelector: ':host > descope-button',\n}) {\n get size() {\n return this.getAttribute('size') || 'md';\n }\n\n get variant() {\n return this.getAttribute('variant') || 'contained';\n }\n\n get value() {\n return this.getAttribute('value') || '';\n }\n\n set value(value) {\n this.setAttribute('value', value);\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <descope-button variant=\"${this.variant}\" size=\"${this.size}\" mode=\"primary\">\n <slot></slot>\n </descope-button>\n\t`;\n\n injectStyle(\n `\n descope-button {\n max-width: 100%;\n }\n\t\t\tdescope-button > slot {\n\t\t\t\twidth: 100%;\n\t\t\t\toverflow: hidden;\n text-overflow: ellipsis;\n display: inline-block;\n\t\t\t}\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n max-width: 100%\n\t\t\t}\n `,\n this\n );\n\n forwardAttrs(this, this.baseElement, { includeAttrs: ['size', 'variant'] });\n forwardAttrs(this.baseElement, this, { includeAttrs: ['focused', 'active'] });\n }\n\n handleFocus() {\n this.shadowRoot.querySelector('descope-button')?.focus();\n }\n\n focus() {\n this.handleFocus();\n }\n\n init() {\n super.init();\n this.addEventListener('focus', (e) => {\n // we want to ignore focus events we are dispatching\n if (e.isTrusted) {\n this.handleFocus();\n }\n });\n }\n}\n\nexport const ButtonSelectionGroupItemClass = compose(\n createStyleMixin({\n mappings: {\n hostDirection: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.hostDirection,\n },\n backgroundColor: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.backgroundColor,\n },\n labelTextColor: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.labelTextColor,\n },\n borderColor: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.borderColor,\n },\n borderWidth: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.borderWidth,\n },\n borderStyle: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.borderStyle,\n },\n borderRadius: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.borderRadius,\n },\n outlineColor: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.outlineColor,\n },\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawSelectItem);\n","import { componentName, ButtonSelectionGroupItemClass } from './ButtonSelectionGroupItemClass';\nimport '../../descope-button';\n\ncustomElements.define(componentName, ButtonSelectionGroupItemClass);\n\nexport { ButtonSelectionGroupItemClass };\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '../../../mixins';\nimport { componentName as descopeInternalComponentName } from '../descope-button-selection-group-internal/ButtonSelectionGroupInternalClass';\nimport { compose } from '../../../helpers';\nimport { forwardAttrs, getComponentName } from '../../../helpers/componentHelpers';\nimport {\n buttonSelectionGroupBaseMixin,\n buttonSelectionGroupMappings,\n buttonSelectionGroupStyles,\n} from '../baseButtonSelectionGroup';\n\nexport const componentName = getComponentName('button-selection-group');\n\nconst buttonSelectionGroupMixin = (superclass) =>\n class ButtonMultiSelectionGroupMixinClass extends superclass {\n init() {\n super.init?.();\n const template = document.createElement('template');\n\n template.innerHTML = `\n <${descopeInternalComponentName}\n \tname=\"button-selection-group\"\n \tslot=\"input\"\n tabindex=\"-1\"\n part=\"internal-component\"\n >\n <slot></slot>\n </${descopeInternalComponentName}>\n `;\n\n this.baseElement.appendChild(template.content.cloneNode(true));\n\n this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: ['size', 'default-value', 'allow-deselect'],\n });\n }\n };\n\nexport const ButtonSelectionGroupClass = compose(\n createStyleMixin({\n mappings: {\n ...buttonSelectionGroupMappings,\n },\n }),\n draggableMixin,\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n componentNameValidationMixin,\n buttonSelectionGroupBaseMixin,\n buttonSelectionGroupMixin\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-text-field',\n style: () => buttonSelectionGroupStyles,\n excludeAttrsSync: ['tabindex'],\n componentName,\n })\n);\n\nexport default ButtonSelectionGroupClass;\n","import { componentName, ButtonSelectionGroupClass } from './ButtonSelectionGroupClass';\nimport '../descope-button-selection-group-internal';\nimport '../descope-button-selection-group-item';\n\ncustomElements.define(componentName, ButtonSelectionGroupClass);\n\nexport { ButtonSelectionGroupClass, componentName };\n","import { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport {\n createStyleMixin,\n draggableMixin,\n createProxy,\n componentNameValidationMixin,\n} from '../../mixins';\nimport { IconClass } from '../descope-icon/IconClass';\nimport { clickableMixin } from './clickableMixin';\n\nexport const componentName = getComponentName('button');\n\nconst resetStyles = `\n\t:host {\n\t\tdisplay: inline-block;\n\t\tbox-sizing: border-box;\n\t}\n\tvaadin-button::before,\n\tvaadin-button::after {\n\t\topacity: 0;\n\t}\n\tvaadin-button {\n\t\tmargin: 0;\n\t\tmin-width: 0;\n\t\twidth: 100%;\n\t\theight: auto;\n\t\tbox-shadow: none;\n\t}\n\tvaadin-button::part(label) {\n\t\tpadding: 0;\n width: 100%;\n\t}\n\tvaadin-button::part(prefix) {\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n`;\n\nconst iconStyles = `\n\tvaadin-button::part(prefix),\n\tvaadin-button::part(label) {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n`;\n\nconst editorOverrides = `vaadin-button::part(label) { pointer-events: none; }`;\n\nconst { host, label, slottedIcon } = {\n host: { selector: () => ':host' },\n label: { selector: '::part(label)' },\n slottedIcon: { selector: () => '::slotted(descope-icon)' },\n};\n\nlet loadingIndicatorStyles;\n\nexport const ButtonClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { property: 'width' },\n hostHeight: { property: 'height' },\n hostDirection: { ...host, property: 'direction' },\n fontSize: {},\n fontFamily: {},\n\n cursor: {},\n backgroundColor: {},\n\n outlineOffset: {},\n outlineColor: {},\n outlineStyle: {},\n outlineWidth: {},\n\n borderRadius: {},\n borderColor: {},\n borderStyle: {},\n borderWidth: {},\n\n verticalPadding: [{ property: 'padding-top' }, { property: 'padding-bottom' }],\n horizontalPadding: [\n { property: 'padding-right', fallback: '0.875em' },\n { property: 'padding-left', fallback: '0.875em' },\n ],\n\n labelTextColor: { property: 'color' },\n iconColor: {\n selector: () => `::slotted(*)`,\n property: IconClass.cssVarList.fill,\n },\n labelTextDecoration: { ...label, property: 'text-decoration' },\n labelSpacing: { ...label, property: 'gap' },\n textAlign: { ...label, property: 'justify-content', fallback: 'center' },\n\n iconSize: [\n { ...slottedIcon, property: 'width' },\n { ...slottedIcon, property: 'height' },\n ],\n },\n }),\n clickableMixin,\n draggableMixin,\n componentNameValidationMixin\n)(\n createProxy({\n slots: ['', 'prefix', 'label', 'suffix'],\n wrappedEleName: 'vaadin-button',\n style: () => `\n\t\t\t${resetStyles}\n\t\t\t${iconStyles}\n\t\t\t${loadingIndicatorStyles}\n\t\t\t${editorOverrides}\n\t\t\t:host {\n\t\t\t\tpadding: calc(var(${ButtonClass.cssVarList.outlineWidth}) + var(${ButtonClass.cssVarList.outlineOffset}));\n\t\t\t}\n :host([full-width=\"true\"]) {\n width: var(${ButtonClass.cssVarList.hostWidth});\n }\n\t\t\tvaadin-button {\n\t\t\t\theight: calc(var(${ButtonClass.cssVarList.hostHeight}) - var(${ButtonClass.cssVarList.outlineWidth}) - var(${ButtonClass.cssVarList.outlineOffset}));\n\t\t\t}\n\t\t\t[square=\"true\"]:not([full-width=\"true\"]) {\n\t\t\t\twidth: calc(var(${ButtonClass.cssVarList.hostWidth}) - var(${ButtonClass.cssVarList.outlineWidth}) - var(${ButtonClass.cssVarList.outlineOffset}));\n padding: 0;\n\t\t\t}\n\t\t`,\n excludeAttrsSync: ['tabindex'],\n componentName,\n })\n);\n\nconst { color, fontSize } = ButtonClass.cssVarList;\nloadingIndicatorStyles = `\n\t@keyframes spin {\n\t\t0% { -webkit-transform: rotate(0deg); }\n\t\t100% { -webkit-transform: rotate(360deg); }\n\t}\n\t:host([loading=\"true\"]) ::before {\n\t\tanimation: spin 2s linear infinite;\n\t\tposition: absolute;\n\t\tcontent: '';\n\t\tz-index: 1;\n\t\tbox-sizing: border-box;\n\t\tborder-radius: 50%;\n\t\tborder-bottom-color: transparent;\n\t\tborder-left-color: transparent;\n\t\tborder-style: solid;\n\t\tcolor: var(${color});\n\t\ttop: calc(50% - (var(${fontSize}) / 2));\n\t\tleft: calc(50% - (var(${fontSize}) / 2));\n\t\tborder-width: calc(var(${fontSize}) / 10);\n\t\twidth: var(${fontSize});\n\t\theight: var(${fontSize});\n\t}\n\t:host([disabled=\"true\"]),\n\t:host([loading=\"true\"]) {\n\t\tpointer-events: none;\n\t}\n\t:host([loading=\"true\"])::part(prefix),\n\t:host([loading=\"true\"])::part(label) {\n\t\tvisibility: hidden;\n\t}\n`;\n","export const clickableMixin = (superclass) =>\n class ClickableMixinClass extends superclass {\n get isLoading() {\n return this.getAttribute('loading') === 'true';\n }\n\n click() {\n this.isLoading || super.click();\n }\n };\n","import '@vaadin/button';\nimport { componentName, ButtonClass } from './ButtonClass';\n\ncustomElements.define(componentName, ButtonClass);\n\nexport { ButtonClass, componentName };\n","/* eslint-disable no-use-before-define */\nimport { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport { createIcon } from './helpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('icon');\n\nclass RawIcon extends createBaseClass({ componentName, baseSelector: 'slot' }) {\n static get observedAttributes() {\n return ['src'];\n }\n\n #icon;\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t<slot></slot>\n\t`;\n\n injectStyle(\n `\n\t\t\t:host > slot {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t\tdisplay: flex;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n `,\n this\n );\n }\n\n init() {\n super.init?.();\n this.toggleVisibility(this.src);\n }\n\n toggleVisibility(isVisible) {\n this.style.display = isVisible ? '' : 'none';\n }\n\n get src() {\n return this.getAttribute('src');\n }\n\n // in order to fill an SVG with `currentColor` override all of its `fill` and `path` nodes\n // with the value from the `st-fill` attribute\n // eslint-disable-next-line class-methods-use-this\n updateFillColor(node) {\n // set fill to root node and all its relevant selectors\n const elementsToReplace = [node, ...node.querySelectorAll('*[fill]')];\n\n elementsToReplace.forEach((ele) => {\n ele.setAttribute(\n 'fill',\n `var(${IconClass.cssVarList.fill}, ${ele.getAttribute('fill') || \"''\"})`\n );\n });\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (oldValue === newValue) return;\n\n if (attrName === 'src') {\n this.toggleVisibility(newValue);\n\n createIcon(this.src).then((res) => {\n this.innerHTML = '';\n if (res) {\n const clonedNode = res.cloneNode(true);\n this.updateFillColor(clonedNode);\n this.appendChild(clonedNode);\n }\n });\n }\n }\n}\n\nexport const IconClass = compose(\n createStyleMixin({\n mappings: {\n fill: {},\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawIcon);\n","import DOMPurify from 'dompurify';\n\nconst getFileExtension = (path) => {\n const match = path.match(/\\.([0-9a-z]+)(?:[\\\\?#]|$)/i);\n return match ? match[1] : null;\n};\n\nconst base64Prefix = 'data:image/svg+xml;base64,';\n\nconst isBase64Svg = (src) => src.startsWith(base64Prefix);\n\nconst createImgEle = (src) => {\n const ele = document.createElement('img');\n ele.setAttribute('src', src);\n return ele;\n};\n\nconst createSvgEle = (text) => {\n // we want to purify the SVG to avoid XSS attacks\n const clean = DOMPurify.sanitize(text, { USE_PROFILES: { svg: true, svgFilters: true } });\n\n const parser = new DOMParser();\n const ele = parser.parseFromString(clean, 'image/svg+xml').querySelector('svg');\n return ele;\n};\n\nexport const createIcon = async (src) => {\n try {\n let ele;\n if (isBase64Svg(src)) {\n // handle base64 source\n const svgXml = atob(src.slice(base64Prefix.length));\n ele = createSvgEle(svgXml);\n } else if (getFileExtension(src) === 'svg') {\n // handle urls\n const fetchedSrc = await fetch(src);\n const text = await fetchedSrc.text();\n ele = createSvgEle(text);\n } else {\n // handle binary\n ele = createImgEle(src);\n }\n\n ele.style.setProperty('max-width', '100%');\n ele.style.setProperty('max-height', '100%');\n\n return ele;\n } catch {\n return null;\n }\n};\n","export const useHostExternalPadding = (cssVarList) => `\n :host {\n padding: calc(var(${cssVarList.inputOutlineWidth}) + var(${cssVarList.inputOutlineOffset}))\n }\n`;\n\nexport const resetInputFieldUnderlayingBorder = (name) => `\n ${name}::part(input-field)::after {\n border: none;\n }\n`;\n\nexport const resetInitialHeight = (name) => `\n ${name}::before {\n\t\theight: unset;\n\t}\n`;\n\nexport const resetInputElement = (name) => `\n ${name} > input {\n -webkit-mask-image: none;\n min-height: 0;\n box-sizing: border-box;\n }\n`;\n\nexport const resetInputContainer = (name) => `\n ${name} {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n }\n`;\n\nexport const resetInputField = (name) => `\n ${name}::part(input-field) {\n overflow: hidden;\n padding: 0;\n box-shadow: none;\n }\n`;\n\nexport const resetInputCursor = (name) => `\n ${name} > label,\n ${name}::part(label),\n ${name}::part(required-indicator) {\n cursor: pointer;\n }\n`;\n\nexport const resetInputPlaceholder = (name, ele = 'input') => `\n ${name}[disabled] > ${ele}:placeholder-shown,\n\t${name}[readonly] > ${ele}:placeholder-shown {\n\t\topacity: 1;\n\t}\n`;\n\nexport const resetInputAutoFill = (name, cssVarList) => `\n ${name} input:-webkit-autofill,\n ${name} input:-webkit-autofill::first-line,\n ${name} input:-webkit-autofill:hover,\n ${name} input:-webkit-autofill:active,\n ${name} input:-webkit-autofill:focus {\n -webkit-text-fill-color: var(${cssVarList.inputValueTextColor});\n box-shadow: 0 0 0 var(${cssVarList.inputHeight}) var(${cssVarList.inputBackgroundColor}) inset;\n }\n`;\n\nexport const resetInputFieldDefaultWidth = () => `\n :host {\n --vaadin-field-default-width: auto;\n box-sizing: border-box;\n }\n`;\n\nexport const resetInputReadonlyStyle = (name) => `\n ${name}::part(input-field)::after {\n opacity: 0;\n }\n`;\n\nexport const resetInputFieldInvalidBackgroundColor = (name) => `\n ${name}::part(input-field)::after {\n background: none;\n }\n`;\n\nexport const resetInputOverrides = (name, cssVarList) => `\n ${resetInputContainer(name)}\n ${resetInputCursor(name)}\n ${resetInputPlaceholder(name)}\n ${resetInputField(name)}\n ${resetInputAutoFill(name, cssVarList)}\n ${resetInputFieldInvalidBackgroundColor(name)}\n ${resetInitialHeight(name)}\n ${resetInputElement(name)}\n ${resetInputFieldUnderlayingBorder(name)}\n`;\n\n// This function is used to support RTL correctly for input components.\n// It also fixes the error message to be displayed LTR since we currently\n// don't support RTL for error messages.\nexport const resetInputLabelPosition = (name) => `\n :host ::part(error-message) {\n direction: ltr;\n }\n :host([required]) ::part(required-indicator) {\n width: 1em;\n display: inline-flex;\n }\n :host([required]) ::part(required-indicator)::after {\n position: static;\n }\n :host([has-label]) ::part(label) {\n padding-right: 0;\n padding-bottom: 0;\n display: flex;\n width: 100%;\n }\n ${name} [slot=\"label\"] {\n max-width: calc(100% - 1em);\n overflow: hidden;\n text-overflow: ellipsis;\n padding-bottom: 0.5em;\n }\n`;\n\nexport const inputFloatingLabelStyle = () => {\n return `\n :host([label-type=\"floating\"]) {\n position: relative;\n }\n :host([label-type=\"floating\"][has-label]) [slot=\"label\"] {\n padding: 0;\n }\n :host([label-type=\"floating\"][has-label]) > ::part(label) {\n z-index: 1;\n padding: 0;\n width: auto;\n }\n `;\n};\n"],"names":["createBaseInputClass","args","buttonSelectionGroupBaseMixin","superclass","value","label","renderItem","this","renderFn","renderItems","size","inputElement","data","dataAttr","getAttribute","JSON","parse","isValidDataType","e","console","error","message","isValid","Array","isArray","getItemsTemplate","reduce","acc","item","template","innerHTML","init","super","bind","includeAttrs","addedNodes","forEach","node","setAttribute","host","requiredIndicator","internalWrapper","errorMessage","selector","buttonSelectionGroupMappings","hostWidth","property","hostDirection","fontFamily","labelTextColor","labelRequiredIndicator","errorMessageTextColor","errorMessageIcon","errorMessageIconSize","errorMessageIconPadding","errorMessageIconRepeat","errorMessageIconPosition","itemsSpacing","buttonSelectionGroupStyles","createBaseButtonSelectionGroupInternalClass","componentName","BaseButtonSelectionGroupInternalClass","baseSelector","constructor","dispatchChange","items","querySelector","assignedElements","isReadonly","warn","onSizeChange","onReadOnlyChange","toggleAttribute","getValidity","onObservedAttributeChange","attrs","attr","addEventListener","isTrusted","focus","ButtonSelectionGroupInternalClass","getSelectedNode","find","hasAttribute","allowDeselect","removeSelected","removeAttribute","onClick","target","currentTarget","setSelected","defaultValue","setDefaultValue","setTimeout","setCustomValidity","child","isRequired","valueMissing","customElements","define","RawSelectItem","createBaseClass","variant","attachShadow","mode","baseElement","handleFocus","shadowRoot","ButtonSelectionGroupItemClass","mappings","ButtonClass","cssVarList","backgroundColor","borderColor","borderWidth","borderStyle","borderRadius","outlineColor","ButtonSelectionGroupClass","proxyProps","document","createElement","appendChild","content","cloneNode","slots","wrappedEleName","style","excludeAttrsSync","slottedIcon","loadingIndicatorStyles","hostHeight","fontSize","cursor","outlineOffset","outlineStyle","outlineWidth","verticalPadding","horizontalPadding","fallback","iconColor","fill","labelTextDecoration","labelSpacing","textAlign","iconSize","color","clickableMixin","isLoading","click","RawIcon","observedAttributes","toggleVisibility","src","isVisible","display","updateFillColor","querySelectorAll","ele","IconClass","attributeChangedCallback","attrName","oldValue","newValue","then","res","clonedNode","createSvgEle","text","clean","sanitize","USE_PROFILES","svg","svgFilters","DOMParser","parseFromString","createIcon","async","startsWith","isBase64Svg","svgXml","atob","slice","base64Prefix","path","match","getFileExtension","fetchedSrc","fetch","createImgEle","setProperty","useHostExternalPadding","inputOutlineWidth","inputOutlineOffset","resetInputContainer","name","resetInputField","resetInputCursor","resetInputPlaceholder","resetInputFieldDefaultWidth","resetInputReadonlyStyle","resetInputFieldInvalidBackgroundColor","resetInputOverrides","inputValueTextColor","inputHeight","inputBackgroundColor","resetInputAutoFill","resetInitialHeight","resetInputElement","resetInputFieldUnderlayingBorder","resetInputLabelPosition","inputFloatingLabelStyle"],"sourceRoot":""}
|
1
|
+
{"version":3,"file":"button-selection-group-fields-descope-button-selection-group-index-js.js","mappings":"uOAWO,MAAMA,GAAgB,QAAiB,WAsCxC,KAAEC,EAAI,MAAEC,EAAK,YAAEC,GAAgB,CACnCF,KAAM,CAAEG,SAAU,IAAM,SACxBF,MAAO,CAAEE,SAAU,iBACnBD,YAAa,CAAEC,SAAU,IAAM,4BAGjC,IAAIC,EAEG,MAAMC,GAAc,SACzB,QAAiB,CACfC,SAAU,CACRC,UAAW,CAAEC,SAAU,SACvBC,WAAY,CAAED,SAAU,UACxBE,cAAe,IAAKV,EAAMQ,SAAU,aACpCG,SAAU,CAAC,EACXC,WAAY,CAAC,EAEbC,OAAQ,CAAC,EACTC,gBAAiB,CAAC,EAElBC,cAAe,CAAC,EAChBC,aAAc,CAAC,EACfC,aAAc,CAAC,EACfC,aAAc,CAAC,EAEfC,aAAc,CAAC,EACfC,YAAa,CAAC,EACdC,YAAa,CAAC,EACdC,YAAa,CAAC,EAEdC,gBAAiB,CAAC,CAAEf,SAAU,eAAiB,CAAEA,SAAU,mBAC3DgB,kBAAmB,CACjB,CAAEhB,SAAU,gBAAiBiB,SAAU,WACvC,CAAEjB,SAAU,eAAgBiB,SAAU,YAGxCC,eAAgB,CAAElB,SAAU,SAC5BmB,UAAW,CACTxB,SAAU,IAAM,eAChBK,SAAU,IAAUoB,WAAWC,MAEjCC,oBAAqB,IAAK7B,EAAOO,SAAU,mBAC3CuB,aAAc,IAAK9B,EAAOO,SAAU,OACpCwB,UAAW,IAAK/B,EAAOO,SAAU,kBAAmBiB,SAAU,UAE9DQ,SAAU,CACR,IAAK/B,EAAaM,SAAU,SAC5B,IAAKN,EAAaM,SAAU,cAIlC,IACA,KACA,KA7CyB,EA+CzB,QAAY,CACV0B,MAAO,CAAC,GAAI,SAAU,QAAS,UAC/BC,eAAgB,gBAChBC,MAAO,IAAM,qjBAGZhC,2GAGmBC,EAAYuB,WAAWV,uBAAuBb,EAAYuB,WAAWb,qFAGxEV,EAAYuB,WAAWrB,yEAGrBF,EAAYuB,WAAWnB,qBAAqBJ,EAAYuB,WAAWV,uBAAuBb,EAAYuB,WAAWb,wGAGlHV,EAAYuB,WAAWrB,oBAAoBF,EAAYuB,WAAWV,uBAAuBb,EAAYuB,WAAWb,uDAIlIsB,iBAAkB,CAAC,YACnBtC,oBAIE,MAAEuC,EAAK,SAAE3B,GAAaN,EAAYuB,WACxCxB,EAAyB,mbAeVkC,iCACU3B,wCACCA,yCACCA,6BACZA,wBACCA,wN,mCCxJT,MAAM4B,EAAkBC,GAC7B,cAAkCA,EAChC,aAAIC,GACF,MAAwC,SAAjCC,KAAKC,aAAa,UAC3B,CAEA,KAAAC,GACEF,KAAKD,WAAaI,MAAMD,OAC1B,E,oGCLJE,eAAeC,OAAO,IAAe,I,sGCK9B,MAAMhD,GAAgB,QAAiB,QAE9C,MAAMiD,WAAgB,QAAgB,CAAEjD,gBAAekD,aAAc,UACnE,6BAAWC,GACT,MAAO,CAAC,MACV,CAEA,GAEA,WAAAC,GACEN,QAEAH,KAAKU,aAAa,CAAEC,KAAM,SAAUC,UAAY,2BAIhD,QACE,+NAYAZ,KAEJ,CAEA,IAAAa,GACEV,MAAMU,SACNb,KAAKc,iBAAiBd,KAAKe,IAC7B,CAEA,gBAAAD,CAAiBE,GACfhB,KAAKN,MAAMuB,QAAUD,EAAY,GAAK,MACxC,CAEA,OAAID,GACF,OAAOf,KAAKC,aAAa,MAC3B,CAKA,eAAAiB,CAAgBC,GAEY,CAACA,KAASA,EAAKC,iBAAiB,YAExCC,SAASC,IACzBA,EAAIC,aACF,OACA,OAAOC,EAAUtC,WAAWC,SAASmC,EAAIrB,aAAa,SAAW,QAClE,GAEL,CAEA,wBAAAwB,CAAyBC,EAAUC,EAAUC,GAC3CzB,MAAMsB,2BAA2BC,EAAUC,EAAUC,GAEjDD,IAAaC,GAEA,QAAbF,IACF1B,KAAKc,iBAAiBc,IAEtB,OAAW5B,KAAKe,KAAKc,MAAMC,IAEzB,GADA9B,KAAKY,UAAY,GACbkB,EAAK,CACP,MAAMC,EAAaD,EAAIE,WAAU,GACjChC,KAAKkB,gBAAgBa,GACrB/B,KAAKiC,YAAYF,EACnB,KAGN,EAGK,MAAMP,GAAY,SACvB,QAAiB,CACf5D,SAAU,CACRuB,KAAM,CAAC,KAGX,KACA,KAPuB,CAQvBmB,E,kDC/FF,MAeM4B,EAAgBC,IAEpB,MAAMC,EAAQ,IAAUC,SAASF,EAAM,CAAEG,aAAc,CAAEC,KAAK,EAAMC,YAAY,KAIhF,OAFe,IAAIC,WACAC,gBAAgBN,EAAO,iBAAiBO,cAAc,MAC/D,EAGCC,EAAaC,MAAO9B,IAC/B,IACE,IAAIO,EACJ,GApBgB,CAACP,GAAQA,EAAI+B,WAFZ,8BAsBbC,CAAYhC,GAAM,CAEpB,MAAMiC,EAASC,KAAKlC,EAAImC,MAAMC,KAC9B7B,EAAMY,EAAac,EACrB,MAAO,GAA8B,QA/BhB,CAACI,IACxB,MAAMC,EAAQD,EAAKC,MAAM,8BACzB,OAAOA,EAAQA,EAAM,GAAK,IAAI,EA6BjBC,CAAiBvC,GAAgB,CAE1C,MAAMwC,QAAmBC,MAAMzC,GACzBoB,QAAaoB,EAAWpB,OAC9Bb,EAAMY,EAAaC,EACrB,MAEEb,EA7Be,CAACP,IACpB,MAAMO,EAAMmC,SAASC,cAAc,OAEnC,OADApC,EAAIC,aAAa,MAAOR,GACjBO,CAAG,EA0BAqC,CAAa5C,GAMrB,OAHAO,EAAI5B,MAAMkE,YAAY,YAAa,QACnCtC,EAAI5B,MAAMkE,YAAY,aAAc,QAE7BtC,CACT,CAAE,MACA,OAAO,IACT,E,sECxCK,MAAMuC,EAAuB,IAAIC,KACtC,QACE,KACA,KACA,KACA,KAJF,EAKE,UAAmBA,G,gFCRhB,MAAMC,EAAiCjE,GAC5C,cAA6CA,EAE3C,GAAc,EAAGkE,QAAOzG,WACtB,+CAA+CyG,MAAUzG,0CAE3D,GAEA,cAAI0G,GACF,OAAOjE,MAAK,CACd,CAEA,cAAIiE,CAAWC,GACblE,MAAK,EAAckE,EACnBlE,KAAKmE,aACP,CAEA,QAAIC,GACF,OAAOpE,KAAKqE,cAAcD,IAC5B,CAEA,QAAIE,GACF,GAAItE,MAAK,EAAO,OAAOA,MAAK,EAE5B,MAAMuE,EAAWvE,KAAKC,aAAa,QAEnC,GAAIsE,EACF,IACE,MAAMD,EAAOE,KAAKC,MAAMF,GACxB,GAAIvE,KAAK0E,gBAAgBJ,GACvB,OAAOA,CAEX,CAAE,MAAOK,GAEPC,QAAQC,MAAM,uDAAwDF,EAAEG,QAC1E,CAGF,MAAO,EACT,CAEA,QAAIR,CAAKA,GACHtE,KAAK0E,gBAAgBJ,KACvBtE,MAAK,EAAQsE,EACbtE,KAAKmE,cAET,CAGA,eAAAO,CAAgBJ,GACd,MAAMS,EAAUC,MAAMC,QAAQX,GAM9B,OALKS,GAEHH,QAAQC,MAAM,mCAAoCP,GAG7CS,CACT,CAEA,gBAAAG,GACE,OAAOlF,KAAKsE,MAAMa,UAAS,CAACC,EAAKC,IAASD,GAAOpF,KAAKiE,aAAaoB,GAAQ,CAAC,IAAM,KAAK,GACzF,CAEA,WAAAlB,GACE,MAAMmB,EAAWtF,KAAKkF,mBAClBI,IAAUtF,KAAKY,UAAY0E,EACjC,CAEA,IAAAzE,GACEV,MAAMU,SAENb,KAAKmE,eAEL,QAAkBnE,KAAMA,KAAKmE,YAAYoB,KAAKvF,MAAO,CAAEwF,aAAc,CAAC,WAGtE,QAAgBxF,MAAM,EAAGyF,iBACvBA,EAAWpE,SAASF,IAClBA,EAAKI,aAAa,OAAQvB,KAAKoE,KAAK,GACpC,GAEN,IAGE,KAAE9G,EAAI,MAAEC,EAAK,kBAAEmI,EAAiB,gBAAEC,EAAe,aAAEC,GAAiB,CACxEtI,KAAM,CAAEG,SAAU,IAAM,SACxBF,MAAO,CAAEE,SAAU,iBACnBiI,kBAAmB,CAAEjI,SAAU,+CAC/BkI,gBAAiB,CAAElI,SAAU,IAAM,0CACnCmI,aAAc,CAAEnI,SAAU,0BAGfoI,EAA+B,CAC1ChI,UAAW,IAAKP,EAAMQ,SAAU,SAChCE,cAAe,IAAKV,EAAMQ,SAAU,aACpCI,WAAYZ,EACZ0B,eAAgB,CACd,IAAKzB,EAAOO,SAAU,SACtB,IAAK4H,EAAmB5H,SAAU,UAEpCgI,uBAAwB,IAAKJ,EAAmB5H,SAAU,WAC1DiI,sBAAuB,IAAKH,EAAc9H,SAAU,SACpDkI,iBAAkB,IAAKJ,EAAc9H,SAAU,oBAC/CmI,qBAAsB,IAAKL,EAAc9H,SAAU,mBACnDoI,wBAAyB,IAAKN,EAAc9H,SAAU,wBACtDqI,uBAAwB,IAAKP,EAAc9H,SAAU,qBACrDsI,yBAA0B,IAAKR,EAAc9H,SAAU,uBACvDuI,aAAc,IAAKV,EAAiB7H,SAAU,QAGnCwI,EAA6B,6FAKrC,0pCAqDG,QAAwB,gCAC3B,QAAiB,4B,gFC3Kf,MAAMC,EAA+ClJ,IAC1D,MAAMmJ,WAA8C,OAAqB,CACvEnJ,gBACAkD,aAAc,UAEd,WAAAE,GACEN,QAEAH,KAAKY,UAAY,4CAGnB,CAEA6F,eAAiB,IAAoBlB,KAAKvF,KAAM,UAEhD,SAAI0G,GACF,OAAO1G,KAAK2C,cAAc,QAAQgE,kBACpC,CAEA,cAAIC,GACF,MAAyC,SAAlC5G,KAAKC,aAAa,WAC3B,CAEA,QAAImE,GACF,OAAOpE,KAAKC,aAAa,SAAW,IACtC,CAGA,SAAI+D,GAEFY,QAAQiC,KAAK,YAAa,qBAC5B,CAGA,SAAI7C,CAAMA,GAERY,QAAQiC,KAAK,YAAa,qBAC5B,CAEA,YAAAC,GACE9G,KAAK0G,MAAMrF,SAASgE,IAClBA,EAAK9D,aAAa,OAAQvB,KAAKoE,KAAK,GAExC,CAEA,gBAAA2C,GACE/G,KAAK2C,cAAc,QAAQqE,gBAAgB,QAAShH,KAAK4G,WAC3D,CAGA,WAAAK,GAEErC,QAAQiC,KAAK,cAAe,qBAC9B,CAEA,yBAAAK,CAA0BC,GACxBA,EAAM9F,SAAS+F,IACb,OAAQA,GACN,IAAK,OACHpH,KAAK8G,eACL,MACF,IAAK,WACH9G,KAAK+G,mBAIT,GAEJ,CAEA,IAAAlG,GAEEb,KAAKqH,iBAAiB,SAAU1C,IAE1BA,EAAE2C,WACJtH,KAAK0G,MAAM,IAAIa,OACjB,IAGFpH,MAAMU,UAEN,QAAkBb,KAAMA,KAAKkH,0BAA0B3B,KAAKvF,MAAO,CACjEwF,aAAc,CAAC,OAAQ,aAE3B,EAGF,OAAOgB,CAAqC,C,qECzFvC,MAAMnJ,GAAgB,QAAiB,mCAEvC,MAAMmK,WAA0C,OACrDnK,IAEA,eAAAoK,GACE,OAAOzH,KAAK0G,MAAMgB,MAAMrC,GAASA,EAAKsC,aAAa,aACrD,CAEA,iBAAIC,GACF,MAA+C,SAAxC5H,KAAKC,aAAa,iBAC3B,CAEA,cAAA4H,GACE7H,KAAKyH,mBAAmBK,gBAAgB,WAC1C,CAEA,OAAAC,CAAQpD,GACFA,EAAEqD,SAAWrD,EAAEsD,gBACbtD,EAAEqD,SAAWhI,KAAKyH,mBAAqBzH,KAAK4H,cAC9C5H,KAAK6H,iBAEL7H,KAAKkI,YAAYvD,EAAEqD,QAErBhI,KAAKyG,iBAET,CAEA,WAAAyB,CAAY/G,GACNA,IAASnB,KAAKyH,oBAChBzH,KAAK6H,iBACL1G,GAAMI,aAAa,WAAY,QAEnC,CAEA,gBAAI4G,GACF,OAAOnI,KAAKC,aAAa,gBAC3B,CAEA,eAAAmI,GAEEC,YAAW,KACLrI,KAAKmI,eACPnI,KAAKgE,MAAQhE,KAAKmI,aAClBnI,KAAKsI,oBACP,GAEJ,CAEA,SAAItE,GACF,OAAOhE,KAAKyH,mBAAmBzD,OAAS,EAC1C,CAEA,SAAIA,CAAMA,GACR,MAAM7C,EAAOnB,KAAK0G,MAAMgB,MAAMa,GAAUA,EAAMvE,QAAUA,IACxDhE,KAAKkI,YAAY/G,EACnB,CAEA,WAAA8F,GACE,OAAIjH,KAAKwI,aAAexI,KAAKgE,MACpB,CAAEyE,cAAc,GAGlB,CAAC,CACV,CAEA,IAAA5H,GACEV,MAAMU,OAENb,KAAKoI,kBAELpI,KAAK2C,cAAc,QAAQ0E,iBAAiB,QAASrH,KAAK+H,QAAQxC,KAAKvF,MACzE,E,2FCtEFI,eAAeC,OAAO,IAAe,I,2ICE9B,MAAMhD,GAAgB,QAAiB,+BAE9C,MAAMqL,WAAsB,EAAAC,EAAA,GAAgB,CAC1CtL,gBACAkD,aAAc,4BAEd,QAAI6D,GACF,OAAOpE,KAAKC,aAAa,SAAW,IACtC,CAEA,WAAI2I,GACF,OAAO5I,KAAKC,aAAa,YAAc,WACzC,CAEA,SAAI+D,GACF,OAAOhE,KAAKC,aAAa,UAAY,EACvC,CAEA,SAAI+D,CAAMA,GACRhE,KAAKuB,aAAa,QAASyC,EAC7B,CAEA,WAAAvD,GACEN,QAEAH,KAAKU,aAAa,CAAEC,KAAM,SAAUC,UAAY,kCACrBZ,KAAK4I,kBAAkB5I,KAAKoE,yEAKvD,QACE,8SAeApE,OAGF,QAAaA,KAAMA,KAAK6I,YAAa,CAAErD,aAAc,CAAC,OAAQ,cAC9D,QAAaxF,KAAK6I,YAAa7I,KAAM,CAAEwF,aAAc,CAAC,UAAW,WACnE,CAEA,WAAAsD,GACE9I,KAAK+I,WAAWpG,cAAc,mBAAmB4E,OACnD,CAEA,KAAAA,GACEvH,KAAK8I,aACP,CAEA,IAAAjI,GACEV,MAAMU,OACNb,KAAKqH,iBAAiB,SAAU1C,IAE1BA,EAAE2C,WACJtH,KAAK8I,aACP,GAEJ,EAGK,MAAME,GAAgC,SAC3C,QAAiB,CACfpL,SAAU,CACRI,cAAe,CACbP,SAAU,IAAME,EAAA,EAAYN,cAC5BS,SAAUH,EAAA,EAAYuB,WAAWlB,eAEnCI,gBAAiB,CACfX,SAAU,IAAME,EAAA,EAAYN,cAC5BS,SAAUH,EAAA,EAAYuB,WAAWd,iBAEnCY,eAAgB,CACdvB,SAAU,IAAME,EAAA,EAAYN,cAC5BS,SAAUH,EAAA,EAAYuB,WAAWF,gBAEnCN,YAAa,CACXjB,SAAU,IAAME,EAAA,EAAYN,cAC5BS,SAAUH,EAAA,EAAYuB,WAAWR,aAEnCE,YAAa,CACXnB,SAAU,IAAME,EAAA,EAAYN,cAC5BS,SAAUH,EAAA,EAAYuB,WAAWN,aAEnCD,YAAa,CACXlB,SAAU,IAAME,EAAA,EAAYN,cAC5BS,SAAUH,EAAA,EAAYuB,WAAWP,aAEnCF,aAAc,CACZhB,SAAU,IAAME,EAAA,EAAYN,cAC5BS,SAAUH,EAAA,EAAYuB,WAAWT,cAEnCH,aAAc,CACZb,SAAU,IAAME,EAAA,EAAYN,cAC5BS,SAAUH,EAAA,EAAYuB,WAAWZ,iBAIvC,KACA,KAtC2C,CAuC3CoK,G,SCpHFtI,eAAeC,OAAOhD,EAAe2L,E,gJCa9B,MAAM3L,GAAgB,QAAiB,0BA6BjC4L,GAA4B,SACvC,QAAiB,CACfrL,SAAU,IACL,QAGP,MACA,QAAgB,CAAEsL,WAAY,CAAC,QAAS,oBACxC,KACA,MApCiCpJ,GACjC,cAAkDA,EAChD,IAAAe,GACEV,MAAMU,SACN,MAAMyE,EAAW7B,SAASC,cAAc,YAExC4B,EAAS1E,UAAY,YAClB,uKAOC,eAGJZ,KAAK6I,YAAY5G,YAAYqD,EAAS6D,QAAQnH,WAAU,IAExDhC,KAAKqE,aAAerE,KAAK+I,WAAWpG,cAAc,MAElD,QAAa3C,KAAMA,KAAKqE,aAAc,CACpCmB,aAAc,CAAC,OAAQ,gBAAiB,mBAE5C,IAGqC,EAYvC,QAAY,CACVhG,MAAO,GACPC,eAAgB,oBAChBC,MAAO,IAAM,KACbC,iBAAkB,CAAC,YACnBtC,mB,kBC1DJ+C,eAAeC,OAAOhD,EAAe4L,E,8HCJ9B,MAAMG,EAA0BlK,GAAe,4CAE1BA,EAAWmK,4BAA4BnK,EAAWoK,gCAwBjEC,EAAuBC,GAAS,SACvCA,sIASOC,EAAmBD,GAAS,SACnCA,6GAOOE,EAAoBF,GAAS,SACpCA,mBACAA,wBACAA,mEAKOG,EAAwB,CAACH,EAAMlI,EAAM,UAAY,SACxDkI,iBAAoBlI,2BACvBkI,iBAAoBlI,gDAgBVsI,EAA8B,IAAM,uGAOpCC,EAA2BL,GAAS,SAC3CA,8DAKOM,EAAyCN,GAAS,SACzDA,oEAKOO,EAAsB,CAACP,EAAMtK,IAAe,SACnDqK,EAAoBC,WACpBE,EAAiBF,WACjBG,EAAsBH,WACtBC,EAAgBD,WAlCY,EAACA,EAAMtK,IAAe,SAClDsK,kCACAA,8CACAA,wCACAA,yCACAA,0EACiCtK,EAAW8K,wDAClB9K,EAAW+K,oBAAoB/K,EAAWgL,wCA4BpEC,CAAmBX,EAAMtK,WACzB4K,EAAsCN,WAnFV,CAACA,GAAS,SACtCA,yCAmFAY,CAAmBZ,WA9EQ,CAACA,GAAS,SACrCA,mHA8EAa,CAAkBb,WA3FwB,CAACA,GAAS,SACpDA,gEA2FAc,CAAiCd,OAM1Be,EAA2Bf,GAAS,4ZAiB3CA,yJAQOgB,EAA0B,IAC9B,oR","sources":["webpack://@descope/web-components-ui/../components/descope-button/src/component/ButtonClass.js","webpack://@descope/web-components-ui/../components/descope-button/src/component/clickableMixin.js","webpack://@descope/web-components-ui/../components/descope-button/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-icon/src/component/IconClass.js","webpack://@descope/web-components-ui/../components/descope-icon/src/component/helpers.js","webpack://@descope/web-components-ui/./src/baseClasses/createBaseInputClass.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/baseButtonSelectionGroup.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/createBaseButtonSelectionGroupInternalClass.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-selection-group-internal/ButtonSelectionGroupInternalClass.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-selection-group-internal/index.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-selection-group-item/ButtonSelectionGroupItemClass.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-selection-group-item/index.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-selection-group/ButtonSelectionGroupClass.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-selection-group/index.js","webpack://@descope/web-components-ui/./src/helpers/themeHelpers/resetHelpers.js"],"sourcesContent":["import { compose } from '@descope-ui/common/utils';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport {\n createStyleMixin,\n draggableMixin,\n createProxy,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { IconClass } from '@descope-ui/descope-icon/class';\nimport { clickableMixin } from './clickableMixin';\n\nexport const componentName = getComponentName('button');\n\nconst resetStyles = `\n\t:host {\n\t\tdisplay: inline-block;\n\t\tbox-sizing: border-box;\n\t}\n\tvaadin-button::before,\n\tvaadin-button::after {\n\t\topacity: 0;\n\t}\n\tvaadin-button {\n\t\tmargin: 0;\n\t\tmin-width: 0;\n\t\twidth: 100%;\n\t\theight: auto;\n\t\tbox-shadow: none;\n\t}\n\tvaadin-button::part(label) {\n\t\tpadding: 0;\n width: 100%;\n\t}\n\tvaadin-button::part(prefix) {\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n`;\n\nconst iconStyles = `\n\tvaadin-button::part(prefix),\n\tvaadin-button::part(label) {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n`;\n\nconst editorOverrides = `vaadin-button::part(label) { pointer-events: none; }`;\n\nconst { host, label, slottedIcon } = {\n host: { selector: () => ':host' },\n label: { selector: '::part(label)' },\n slottedIcon: { selector: () => '::slotted(descope-icon)' },\n};\n\nlet loadingIndicatorStyles;\n\nexport const ButtonClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { property: 'width' },\n hostHeight: { property: 'height' },\n hostDirection: { ...host, property: 'direction' },\n fontSize: {},\n fontFamily: {},\n\n cursor: {},\n backgroundColor: {},\n\n outlineOffset: {},\n outlineColor: {},\n outlineStyle: {},\n outlineWidth: {},\n\n borderRadius: {},\n borderColor: {},\n borderStyle: {},\n borderWidth: {},\n\n verticalPadding: [{ property: 'padding-top' }, { property: 'padding-bottom' }],\n horizontalPadding: [\n { property: 'padding-right', fallback: '0.875em' },\n { property: 'padding-left', fallback: '0.875em' },\n ],\n\n labelTextColor: { property: 'color' },\n iconColor: {\n selector: () => `::slotted(*)`,\n property: IconClass.cssVarList.fill,\n },\n labelTextDecoration: { ...label, property: 'text-decoration' },\n labelSpacing: { ...label, property: 'gap' },\n textAlign: { ...label, property: 'justify-content', fallback: 'center' },\n\n iconSize: [\n { ...slottedIcon, property: 'width' },\n { ...slottedIcon, property: 'height' },\n ],\n },\n }),\n clickableMixin,\n draggableMixin,\n componentNameValidationMixin\n)(\n createProxy({\n slots: ['', 'prefix', 'label', 'suffix'],\n wrappedEleName: 'vaadin-button',\n style: () => `\n\t\t\t${resetStyles}\n\t\t\t${iconStyles}\n\t\t\t${loadingIndicatorStyles}\n\t\t\t${editorOverrides}\n\t\t\t:host {\n\t\t\t\tpadding: calc(var(${ButtonClass.cssVarList.outlineWidth}) + var(${ButtonClass.cssVarList.outlineOffset}));\n\t\t\t}\n :host([full-width=\"true\"]) {\n width: var(${ButtonClass.cssVarList.hostWidth});\n }\n\t\t\tvaadin-button {\n\t\t\t\theight: calc(var(${ButtonClass.cssVarList.hostHeight}) - var(${ButtonClass.cssVarList.outlineWidth}) - var(${ButtonClass.cssVarList.outlineOffset}));\n\t\t\t}\n\t\t\t[square=\"true\"]:not([full-width=\"true\"]) {\n\t\t\t\twidth: calc(var(${ButtonClass.cssVarList.hostWidth}) - var(${ButtonClass.cssVarList.outlineWidth}) - var(${ButtonClass.cssVarList.outlineOffset}));\n padding: 0;\n\t\t\t}\n\t\t`,\n excludeAttrsSync: ['tabindex'],\n componentName,\n })\n);\n\nconst { color, fontSize } = ButtonClass.cssVarList;\nloadingIndicatorStyles = `\n\t@keyframes spin {\n\t\t0% { -webkit-transform: rotate(0deg); }\n\t\t100% { -webkit-transform: rotate(360deg); }\n\t}\n\t:host([loading=\"true\"]) ::before {\n\t\tanimation: spin 2s linear infinite;\n\t\tposition: absolute;\n\t\tcontent: '';\n\t\tz-index: 1;\n\t\tbox-sizing: border-box;\n\t\tborder-radius: 50%;\n\t\tborder-bottom-color: transparent;\n\t\tborder-left-color: transparent;\n\t\tborder-style: solid;\n\t\tcolor: var(${color});\n\t\ttop: calc(50% - (var(${fontSize}) / 2));\n\t\tleft: calc(50% - (var(${fontSize}) / 2));\n\t\tborder-width: calc(var(${fontSize}) / 10);\n\t\twidth: var(${fontSize});\n\t\theight: var(${fontSize});\n\t}\n\t:host([disabled=\"true\"]),\n\t:host([loading=\"true\"]) {\n\t\tpointer-events: none;\n\t}\n\t:host([loading=\"true\"])::part(prefix),\n\t:host([loading=\"true\"])::part(label) {\n\t\tvisibility: hidden;\n\t}\n`;\n","export const clickableMixin = (superclass) =>\n class ClickableMixinClass extends superclass {\n get isLoading() {\n return this.getAttribute('loading') === 'true';\n }\n\n click() {\n this.isLoading || super.click();\n }\n };\n","import { componentName, ButtonClass } from './ButtonClass';\nimport '@vaadin/button';\n\ncustomElements.define(componentName, ButtonClass);\n\nexport { ButtonClass, componentName };\n","/* eslint-disable no-use-before-define */\nimport { createStyleMixin, draggableMixin, componentNameValidationMixin } from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { compose } from '@descope-ui/common/utils';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport { createIcon } from './helpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('icon');\n\nclass RawIcon extends createBaseClass({ componentName, baseSelector: 'slot' }) {\n static get observedAttributes() {\n return ['src'];\n }\n\n #icon;\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t<slot></slot>\n\t`;\n\n injectStyle(\n `\n\t\t\t:host > slot {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t\tdisplay: flex;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n `,\n this\n );\n }\n\n init() {\n super.init?.();\n this.toggleVisibility(this.src);\n }\n\n toggleVisibility(isVisible) {\n this.style.display = isVisible ? '' : 'none';\n }\n\n get src() {\n return this.getAttribute('src');\n }\n\n // in order to fill an SVG with `currentColor` override all of its `fill` and `path` nodes\n // with the value from the `st-fill` attribute\n // eslint-disable-next-line class-methods-use-this\n updateFillColor(node) {\n // set fill to root node and all its relevant selectors\n const elementsToReplace = [node, ...node.querySelectorAll('*[fill]')];\n\n elementsToReplace.forEach((ele) => {\n ele.setAttribute(\n 'fill',\n `var(${IconClass.cssVarList.fill}, ${ele.getAttribute('fill') || \"''\"})`\n );\n });\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (oldValue === newValue) return;\n\n if (attrName === 'src') {\n this.toggleVisibility(newValue);\n\n createIcon(this.src).then((res) => {\n this.innerHTML = '';\n if (res) {\n const clonedNode = res.cloneNode(true);\n this.updateFillColor(clonedNode);\n this.appendChild(clonedNode);\n }\n });\n }\n }\n}\n\nexport const IconClass = compose(\n createStyleMixin({\n mappings: {\n fill: {},\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawIcon);\n","import DOMPurify from 'dompurify';\n\nconst getFileExtension = (path) => {\n const match = path.match(/\\.([0-9a-z]+)(?:[\\\\?#]|$)/i);\n return match ? match[1] : null;\n};\n\nconst base64Prefix = 'data:image/svg+xml;base64,';\n\nconst isBase64Svg = (src) => src.startsWith(base64Prefix);\n\nconst createImgEle = (src) => {\n const ele = document.createElement('img');\n ele.setAttribute('src', src);\n return ele;\n};\n\nconst createSvgEle = (text) => {\n // we want to purify the SVG to avoid XSS attacks\n const clean = DOMPurify.sanitize(text, { USE_PROFILES: { svg: true, svgFilters: true } });\n\n const parser = new DOMParser();\n const ele = parser.parseFromString(clean, 'image/svg+xml').querySelector('svg');\n return ele;\n};\n\nexport const createIcon = async (src) => {\n try {\n let ele;\n if (isBase64Svg(src)) {\n // handle base64 source\n const svgXml = atob(src.slice(base64Prefix.length));\n ele = createSvgEle(svgXml);\n } else if (getFileExtension(src) === 'svg') {\n // handle urls\n const fetchedSrc = await fetch(src);\n const text = await fetchedSrc.text();\n ele = createSvgEle(text);\n } else {\n // handle binary\n ele = createImgEle(src);\n }\n\n ele.style.setProperty('max-width', '100%');\n ele.style.setProperty('max-height', '100%');\n\n return ele;\n } catch {\n return null;\n }\n};\n","import { compose } from '../helpers';\nimport {\n changeMixin,\n inputEventsDispatchingMixin,\n inputValidationMixin,\n normalizeBooleanAttributesMixin,\n} from '../mixins';\nimport { createBaseClass } from './createBaseClass';\n\nexport const createBaseInputClass = (...args) =>\n compose(\n inputValidationMixin,\n changeMixin,\n normalizeBooleanAttributesMixin,\n inputEventsDispatchingMixin\n )(createBaseClass(...args));\n","import { observeAttributes, observeChildren } from '../../helpers/componentHelpers';\nimport {\n resetInputLabelPosition,\n resetInputCursor,\n resetInputFieldDefaultWidth,\n} from '../../helpers/themeHelpers/resetHelpers';\n\nexport const buttonSelectionGroupBaseMixin = (superclass) =>\n class ButtonSelectionGroupMixinClass extends superclass {\n // eslint-disable-next-line class-methods-use-this\n #renderItem = ({ value, label }) =>\n `<descope-button-selection-group-item value=\"${value}\">${label}</descope-button-selection-group-item>`;\n\n #data;\n\n get renderItem() {\n return this.#renderItem;\n }\n\n set renderItem(renderFn) {\n this.#renderItem = renderFn;\n this.renderItems();\n }\n\n get size() {\n return this.inputElement?.size;\n }\n\n get data() {\n if (this.#data) return this.#data;\n\n const dataAttr = this.getAttribute('data');\n\n if (dataAttr) {\n try {\n const data = JSON.parse(dataAttr);\n if (this.isValidDataType(data)) {\n return data;\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('could not parse data string from attribute \"data\" - ', e.message);\n }\n }\n\n return [];\n }\n\n set data(data) {\n if (this.isValidDataType(data)) {\n this.#data = data;\n this.renderItems();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n isValidDataType(data) {\n const isValid = Array.isArray(data);\n if (!isValid) {\n // eslint-disable-next-line no-console\n console.error('data must be an array, received:', data);\n }\n\n return isValid;\n }\n\n getItemsTemplate() {\n return this.data?.reduce?.((acc, item) => acc + (this.renderItem?.(item || {}) || ''), '');\n }\n\n renderItems() {\n const template = this.getItemsTemplate();\n if (template) this.innerHTML = template;\n }\n\n init() {\n super.init?.();\n\n this.renderItems();\n\n observeAttributes(this, this.renderItems.bind(this), { includeAttrs: ['data'] });\n\n // we want new items to get the size\n observeChildren(this, ({ addedNodes }) => {\n addedNodes.forEach((node) => {\n node.setAttribute('size', this.size);\n });\n });\n }\n };\n\nconst { host, label, requiredIndicator, internalWrapper, errorMessage } = {\n host: { selector: () => ':host' },\n label: { selector: '::part(label)' },\n requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n internalWrapper: { selector: () => ':host [part=\"internal-component\"] slot' },\n errorMessage: { selector: '::part(error-message)' },\n};\n\nexport const buttonSelectionGroupMappings = {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n fontFamily: host,\n labelTextColor: [\n { ...label, property: 'color' },\n { ...requiredIndicator, property: 'color' },\n ],\n labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n errorMessageTextColor: { ...errorMessage, property: 'color' },\n errorMessageIcon: { ...errorMessage, property: 'background-image' },\n errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n itemsSpacing: { ...internalWrapper, property: 'gap' },\n};\n\nexport const buttonSelectionGroupStyles = `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t\tmax-width: 100%;\n\t\t\t}\n\t\t\t${resetInputFieldDefaultWidth()}\n\t\t\t:host::after {\n\t\t\t\tbackground-color: transparent;\n\t\t\t}\n\t\t\t:host::part(input-field)::after {\n\t\t\t\tbackground-color: transparent;\n\t\t\t}\n\n [part=\"internal-component\"] {\n\t\t\t\t-webkit-mask-image: none;\n\t\t\t\tpadding: 0;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n display: inline-block;\n\t\t\t\tmin-height: initial;\n\t\t\t}\n\n [part=\"internal-component\"] slot {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-wrap: wrap;\n\t\t\t}\n\n\t\t\tvaadin-text-field::part(input-field) {\n\t\t\t\tbackground-color: transparent;\n\t\t\t\tpadding: 0;\n\t\t\t\toverflow: hidden;\n\t\t\t\t-webkit-mask-image: none;\n\t\t\t}\n\n\t\t\tvaadin-text-field {\n\t\t\t\tmargin: 0;\n\t\t\t\tpadding: 0;\n\t\t\t\twidth: 100%\n\t\t\t}\n\n\t\t\tvaadin-text-field::before {\n\t\t\t\theight: 0;\n\t\t\t}\n\n\t\t\tvaadin-text-field[readonly] > input:placeholder-shown {\n\t\t\t\topacity: 1;\n\t\t\t}\n\n\t\t\tvaadin-text-field[readonly]::part(input-field)::after {\n\t\t\t\tborder: 0 solid;\n\t\t\t}\n\n\t\t\tvaadin-text-field::part(input-field) {\n\t\t\t\tbox-shadow: none;\n\t\t\t}\n\n ${resetInputLabelPosition('vaadin-text-field')}\n\t\t\t${resetInputCursor('vaadin-text-field')}\n `;\n","import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { createBaseInputClass } from '../../baseClasses/createBaseInputClass';\nimport { observeAttributes } from '../../helpers/componentHelpers';\nimport { createDispatchEvent } from '../../helpers/mixinsHelpers';\n\nexport const createBaseButtonSelectionGroupInternalClass = (componentName) => {\n class BaseButtonSelectionGroupInternalClass extends createBaseInputClass({\n componentName,\n baseSelector: 'slot',\n }) {\n constructor() {\n super();\n\n this.innerHTML = `\n <slot part=\"wrapper\"></slot>\n `;\n }\n\n dispatchChange = createDispatchEvent.bind(this, 'change');\n\n get items() {\n return this.querySelector('slot').assignedElements();\n }\n\n get isReadonly() {\n return this.getAttribute('readonly') === 'true';\n }\n\n get size() {\n return this.getAttribute('size') || 'md';\n }\n\n // eslint-disable-next-line getter-return, class-methods-use-this\n get value() {\n // eslint-disable-next-line no-console\n console.warn('get value', 'is not implemented');\n }\n\n // eslint-disable-next-line class-methods-use-this\n set value(value) {\n // eslint-disable-next-line no-console\n console.warn('set value', 'is not implemented');\n }\n\n onSizeChange() {\n this.items.forEach((item) => {\n item.setAttribute('size', this.size);\n });\n }\n\n onReadOnlyChange() {\n this.querySelector('slot').toggleAttribute('inert', this.isReadonly);\n }\n\n // eslint-disable-next-line class-methods-use-this\n getValidity() {\n // eslint-disable-next-line no-console\n console.warn('getValidity', 'is not implemented');\n }\n\n onObservedAttributeChange(attrs) {\n attrs.forEach((attr) => {\n switch (attr) {\n case 'size':\n this.onSizeChange();\n break;\n case 'readonly':\n this.onReadOnlyChange();\n break;\n default:\n break;\n }\n });\n }\n\n init() {\n // we are adding listeners before calling to super because it's stopping the events\n this.addEventListener('focus', (e) => {\n // we want to ignore focus events we are dispatching\n if (e.isTrusted) {\n this.items[0]?.focus();\n }\n });\n\n super.init?.();\n\n observeAttributes(this, this.onObservedAttributeChange.bind(this), {\n includeAttrs: ['size', 'readonly'],\n });\n }\n }\n\n return BaseButtonSelectionGroupInternalClass;\n};\n","import { getComponentName } from '../../../helpers/componentHelpers';\nimport { createBaseButtonSelectionGroupInternalClass } from '../createBaseButtonSelectionGroupInternalClass';\n\nexport const componentName = getComponentName('button-selection-group-internal');\n\nexport class ButtonSelectionGroupInternalClass extends createBaseButtonSelectionGroupInternalClass(\n componentName\n) {\n getSelectedNode() {\n return this.items.find((item) => item.hasAttribute('selected'));\n }\n\n get allowDeselect() {\n return this.getAttribute('allow-deselect') === 'true';\n }\n\n removeSelected() {\n this.getSelectedNode()?.removeAttribute('selected');\n }\n\n onClick(e) {\n if (e.target !== e.currentTarget) {\n if (e.target === this.getSelectedNode() && this.allowDeselect) {\n this.removeSelected();\n } else {\n this.setSelected(e.target);\n }\n this.dispatchChange();\n }\n }\n\n setSelected(node) {\n if (node !== this.getSelectedNode()) {\n this.removeSelected();\n node?.setAttribute('selected', 'true');\n }\n }\n\n get defaultValue() {\n return this.getAttribute('default-value');\n }\n\n setDefaultValue() {\n // we want to defer this action until all attributes are synched\n setTimeout(() => {\n if (this.defaultValue) {\n this.value = this.defaultValue;\n this.setCustomValidity();\n }\n });\n }\n\n get value() {\n return this.getSelectedNode()?.value || '';\n }\n\n set value(value) {\n const node = this.items.find((child) => child.value === value);\n this.setSelected(node);\n }\n\n getValidity() {\n if (this.isRequired && !this.value) {\n return { valueMissing: true };\n }\n\n return {};\n }\n\n init() {\n super.init();\n\n this.setDefaultValue();\n\n this.querySelector('slot').addEventListener('click', this.onClick.bind(this));\n }\n}\n","import {\n componentName,\n ButtonSelectionGroupInternalClass,\n} from './ButtonSelectionGroupInternalClass';\n\ncustomElements.define(componentName, ButtonSelectionGroupInternalClass);\n\nexport { ButtonSelectionGroupInternalClass };\n","import { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../../mixins';\nimport { createBaseClass } from '../../../baseClasses/createBaseClass';\nimport { compose } from '../../../helpers';\nimport { forwardAttrs, getComponentName } from '../../../helpers/componentHelpers';\nimport { ButtonClass } from '@descope-ui/descope-button/class';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('button-selection-group-item');\n\nclass RawSelectItem extends createBaseClass({\n componentName,\n baseSelector: ':host > descope-button',\n}) {\n get size() {\n return this.getAttribute('size') || 'md';\n }\n\n get variant() {\n return this.getAttribute('variant') || 'contained';\n }\n\n get value() {\n return this.getAttribute('value') || '';\n }\n\n set value(value) {\n this.setAttribute('value', value);\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <descope-button variant=\"${this.variant}\" size=\"${this.size}\" mode=\"primary\">\n <slot></slot>\n </descope-button>\n\t`;\n\n injectStyle(\n `\n descope-button {\n max-width: 100%;\n }\n\t\t\tdescope-button > slot {\n\t\t\t\twidth: 100%;\n\t\t\t\toverflow: hidden;\n text-overflow: ellipsis;\n display: inline-block;\n\t\t\t}\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n max-width: 100%\n\t\t\t}\n `,\n this\n );\n\n forwardAttrs(this, this.baseElement, { includeAttrs: ['size', 'variant'] });\n forwardAttrs(this.baseElement, this, { includeAttrs: ['focused', 'active'] });\n }\n\n handleFocus() {\n this.shadowRoot.querySelector('descope-button')?.focus();\n }\n\n focus() {\n this.handleFocus();\n }\n\n init() {\n super.init();\n this.addEventListener('focus', (e) => {\n // we want to ignore focus events we are dispatching\n if (e.isTrusted) {\n this.handleFocus();\n }\n });\n }\n}\n\nexport const ButtonSelectionGroupItemClass = compose(\n createStyleMixin({\n mappings: {\n hostDirection: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.hostDirection,\n },\n backgroundColor: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.backgroundColor,\n },\n labelTextColor: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.labelTextColor,\n },\n borderColor: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.borderColor,\n },\n borderWidth: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.borderWidth,\n },\n borderStyle: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.borderStyle,\n },\n borderRadius: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.borderRadius,\n },\n outlineColor: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.outlineColor,\n },\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawSelectItem);\n","import { componentName, ButtonSelectionGroupItemClass } from './ButtonSelectionGroupItemClass';\nimport '@descope-ui/descope-button';\n\ncustomElements.define(componentName, ButtonSelectionGroupItemClass);\n\nexport { ButtonSelectionGroupItemClass };\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '../../../mixins';\nimport { componentName as descopeInternalComponentName } from '../descope-button-selection-group-internal/ButtonSelectionGroupInternalClass';\nimport { compose } from '../../../helpers';\nimport { forwardAttrs, getComponentName } from '../../../helpers/componentHelpers';\nimport {\n buttonSelectionGroupBaseMixin,\n buttonSelectionGroupMappings,\n buttonSelectionGroupStyles,\n} from '../baseButtonSelectionGroup';\n\nexport const componentName = getComponentName('button-selection-group');\n\nconst buttonSelectionGroupMixin = (superclass) =>\n class ButtonMultiSelectionGroupMixinClass extends superclass {\n init() {\n super.init?.();\n const template = document.createElement('template');\n\n template.innerHTML = `\n <${descopeInternalComponentName}\n \tname=\"button-selection-group\"\n \tslot=\"input\"\n tabindex=\"-1\"\n part=\"internal-component\"\n >\n <slot></slot>\n </${descopeInternalComponentName}>\n `;\n\n this.baseElement.appendChild(template.content.cloneNode(true));\n\n this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: ['size', 'default-value', 'allow-deselect'],\n });\n }\n };\n\nexport const ButtonSelectionGroupClass = compose(\n createStyleMixin({\n mappings: {\n ...buttonSelectionGroupMappings,\n },\n }),\n draggableMixin,\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n componentNameValidationMixin,\n buttonSelectionGroupBaseMixin,\n buttonSelectionGroupMixin\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-text-field',\n style: () => buttonSelectionGroupStyles,\n excludeAttrsSync: ['tabindex'],\n componentName,\n })\n);\n\nexport default ButtonSelectionGroupClass;\n","import { componentName, ButtonSelectionGroupClass } from './ButtonSelectionGroupClass';\nimport '../descope-button-selection-group-internal';\nimport '../descope-button-selection-group-item';\n\ncustomElements.define(componentName, ButtonSelectionGroupClass);\n\nexport { ButtonSelectionGroupClass, componentName };\n","export const useHostExternalPadding = (cssVarList) => `\n :host {\n padding: calc(var(${cssVarList.inputOutlineWidth}) + var(${cssVarList.inputOutlineOffset}))\n }\n`;\n\nexport const resetInputFieldUnderlayingBorder = (name) => `\n ${name}::part(input-field)::after {\n border: none;\n }\n`;\n\nexport const resetInitialHeight = (name) => `\n ${name}::before {\n\t\theight: unset;\n\t}\n`;\n\nexport const resetInputElement = (name) => `\n ${name} > input {\n -webkit-mask-image: none;\n min-height: 0;\n box-sizing: border-box;\n }\n`;\n\nexport const resetInputContainer = (name) => `\n ${name} {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n }\n`;\n\nexport const resetInputField = (name) => `\n ${name}::part(input-field) {\n overflow: hidden;\n padding: 0;\n box-shadow: none;\n }\n`;\n\nexport const resetInputCursor = (name) => `\n ${name} > label,\n ${name}::part(label),\n ${name}::part(required-indicator) {\n cursor: pointer;\n }\n`;\n\nexport const resetInputPlaceholder = (name, ele = 'input') => `\n ${name}[disabled] > ${ele}:placeholder-shown,\n\t${name}[readonly] > ${ele}:placeholder-shown {\n\t\topacity: 1;\n\t}\n`;\n\nexport const resetInputAutoFill = (name, cssVarList) => `\n ${name} input:-webkit-autofill,\n ${name} input:-webkit-autofill::first-line,\n ${name} input:-webkit-autofill:hover,\n ${name} input:-webkit-autofill:active,\n ${name} input:-webkit-autofill:focus {\n -webkit-text-fill-color: var(${cssVarList.inputValueTextColor});\n box-shadow: 0 0 0 var(${cssVarList.inputHeight}) var(${cssVarList.inputBackgroundColor}) inset;\n }\n`;\n\nexport const resetInputFieldDefaultWidth = () => `\n :host {\n --vaadin-field-default-width: auto;\n box-sizing: border-box;\n }\n`;\n\nexport const resetInputReadonlyStyle = (name) => `\n ${name}::part(input-field)::after {\n opacity: 0;\n }\n`;\n\nexport const resetInputFieldInvalidBackgroundColor = (name) => `\n ${name}::part(input-field)::after {\n background: none;\n }\n`;\n\nexport const resetInputOverrides = (name, cssVarList) => `\n ${resetInputContainer(name)}\n ${resetInputCursor(name)}\n ${resetInputPlaceholder(name)}\n ${resetInputField(name)}\n ${resetInputAutoFill(name, cssVarList)}\n ${resetInputFieldInvalidBackgroundColor(name)}\n ${resetInitialHeight(name)}\n ${resetInputElement(name)}\n ${resetInputFieldUnderlayingBorder(name)}\n`;\n\n// This function is used to support RTL correctly for input components.\n// It also fixes the error message to be displayed LTR since we currently\n// don't support RTL for error messages.\nexport const resetInputLabelPosition = (name) => `\n :host ::part(error-message) {\n direction: ltr;\n }\n :host([required]) ::part(required-indicator) {\n width: 1em;\n display: inline-flex;\n }\n :host([required]) ::part(required-indicator)::after {\n position: static;\n }\n :host([has-label]) ::part(label) {\n padding-right: 0;\n padding-bottom: 0;\n display: flex;\n width: 100%;\n }\n ${name} [slot=\"label\"] {\n max-width: calc(100% - 1em);\n overflow: hidden;\n text-overflow: ellipsis;\n padding-bottom: 0.5em;\n }\n`;\n\nexport const inputFloatingLabelStyle = () => {\n return `\n :host([label-type=\"floating\"]) {\n position: relative;\n }\n :host([label-type=\"floating\"][has-label]) [slot=\"label\"] {\n padding: 0;\n }\n :host([label-type=\"floating\"][has-label]) > ::part(label) {\n z-index: 1;\n padding: 0;\n width: auto;\n }\n `;\n};\n"],"names":["componentName","host","label","slottedIcon","selector","loadingIndicatorStyles","ButtonClass","mappings","hostWidth","property","hostHeight","hostDirection","fontSize","fontFamily","cursor","backgroundColor","outlineOffset","outlineColor","outlineStyle","outlineWidth","borderRadius","borderColor","borderStyle","borderWidth","verticalPadding","horizontalPadding","fallback","labelTextColor","iconColor","cssVarList","fill","labelTextDecoration","labelSpacing","textAlign","iconSize","slots","wrappedEleName","style","excludeAttrsSync","color","clickableMixin","superclass","isLoading","this","getAttribute","click","super","customElements","define","RawIcon","baseSelector","observedAttributes","constructor","attachShadow","mode","innerHTML","init","toggleVisibility","src","isVisible","display","updateFillColor","node","querySelectorAll","forEach","ele","setAttribute","IconClass","attributeChangedCallback","attrName","oldValue","newValue","then","res","clonedNode","cloneNode","appendChild","createSvgEle","text","clean","sanitize","USE_PROFILES","svg","svgFilters","DOMParser","parseFromString","querySelector","createIcon","async","startsWith","isBase64Svg","svgXml","atob","slice","base64Prefix","path","match","getFileExtension","fetchedSrc","fetch","document","createElement","createImgEle","setProperty","createBaseInputClass","args","buttonSelectionGroupBaseMixin","value","renderItem","renderFn","renderItems","size","inputElement","data","dataAttr","JSON","parse","isValidDataType","e","console","error","message","isValid","Array","isArray","getItemsTemplate","reduce","acc","item","template","bind","includeAttrs","addedNodes","requiredIndicator","internalWrapper","errorMessage","buttonSelectionGroupMappings","labelRequiredIndicator","errorMessageTextColor","errorMessageIcon","errorMessageIconSize","errorMessageIconPadding","errorMessageIconRepeat","errorMessageIconPosition","itemsSpacing","buttonSelectionGroupStyles","createBaseButtonSelectionGroupInternalClass","BaseButtonSelectionGroupInternalClass","dispatchChange","items","assignedElements","isReadonly","warn","onSizeChange","onReadOnlyChange","toggleAttribute","getValidity","onObservedAttributeChange","attrs","attr","addEventListener","isTrusted","focus","ButtonSelectionGroupInternalClass","getSelectedNode","find","hasAttribute","allowDeselect","removeSelected","removeAttribute","onClick","target","currentTarget","setSelected","defaultValue","setDefaultValue","setTimeout","setCustomValidity","child","isRequired","valueMissing","RawSelectItem","createBaseClass","variant","baseElement","handleFocus","shadowRoot","ButtonSelectionGroupItemClass","ButtonSelectionGroupClass","proxyProps","content","useHostExternalPadding","inputOutlineWidth","inputOutlineOffset","resetInputContainer","name","resetInputField","resetInputCursor","resetInputPlaceholder","resetInputFieldDefaultWidth","resetInputReadonlyStyle","resetInputFieldInvalidBackgroundColor","resetInputOverrides","inputValueTextColor","inputHeight","inputBackgroundColor","resetInputAutoFill","resetInitialHeight","resetInputElement","resetInputFieldUnderlayingBorder","resetInputLabelPosition","inputFloatingLabelStyle"],"sourceRoot":""}
|
package/dist/umd/button-selection-group-fields-descope-button-selection-group-item-index-js.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";(self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[1837],{
|
1
|
+
"use strict";(self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[1837],{19624:(t,e,n)=>{n.d(e,{J:()=>u,T:()=>l});var o=n(63200),r=n(25964),i=n(88961),s=n(98538),a=n(10767);const l=(0,r.xE)("button"),{host:c,label:d,slottedIcon:p}={host:{selector:()=>":host"},label:{selector:"::part(label)"},slottedIcon:{selector:()=>"::slotted(descope-icon)"}};let h;const u=(0,o.Zz)((0,i.RF)({mappings:{hostWidth:{property:"width"},hostHeight:{property:"height"},hostDirection:{...c,property:"direction"},fontSize:{},fontFamily:{},cursor:{},backgroundColor:{},outlineOffset:{},outlineColor:{},outlineStyle:{},outlineWidth:{},borderRadius:{},borderColor:{},borderStyle:{},borderWidth:{},verticalPadding:[{property:"padding-top"},{property:"padding-bottom"}],horizontalPadding:[{property:"padding-right",fallback:"0.875em"},{property:"padding-left",fallback:"0.875em"}],labelTextColor:{property:"color"},iconColor:{selector:()=>"::slotted(*)",property:s.S.cssVarList.fill},labelTextDecoration:{...d,property:"text-decoration"},labelSpacing:{...d,property:"gap"},textAlign:{...d,property:"justify-content",fallback:"center"},iconSize:[{...p,property:"width"},{...p,property:"height"}]}}),a.G,i.VO,i.tQ)((0,i.tz)({slots:["","prefix","label","suffix"],wrappedEleName:"vaadin-button",style:()=>`\n\t\t\t\n\t:host {\n\t\tdisplay: inline-block;\n\t\tbox-sizing: border-box;\n\t}\n\tvaadin-button::before,\n\tvaadin-button::after {\n\t\topacity: 0;\n\t}\n\tvaadin-button {\n\t\tmargin: 0;\n\t\tmin-width: 0;\n\t\twidth: 100%;\n\t\theight: auto;\n\t\tbox-shadow: none;\n\t}\n\tvaadin-button::part(label) {\n\t\tpadding: 0;\n width: 100%;\n\t}\n\tvaadin-button::part(prefix) {\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n\n\t\t\t\n\tvaadin-button::part(prefix),\n\tvaadin-button::part(label) {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n\n\t\t\t${h}\n\t\t\tvaadin-button::part(label) { pointer-events: none; }\n\t\t\t:host {\n\t\t\t\tpadding: calc(var(${u.cssVarList.outlineWidth}) + var(${u.cssVarList.outlineOffset}));\n\t\t\t}\n :host([full-width="true"]) {\n width: var(${u.cssVarList.hostWidth});\n }\n\t\t\tvaadin-button {\n\t\t\t\theight: calc(var(${u.cssVarList.hostHeight}) - var(${u.cssVarList.outlineWidth}) - var(${u.cssVarList.outlineOffset}));\n\t\t\t}\n\t\t\t[square="true"]:not([full-width="true"]) {\n\t\t\t\twidth: calc(var(${u.cssVarList.hostWidth}) - var(${u.cssVarList.outlineWidth}) - var(${u.cssVarList.outlineOffset}));\n padding: 0;\n\t\t\t}\n\t\t`,excludeAttrsSync:["tabindex"],componentName:l})),{color:b,fontSize:g}=u.cssVarList;h=`\n\t@keyframes spin {\n\t\t0% { -webkit-transform: rotate(0deg); }\n\t\t100% { -webkit-transform: rotate(360deg); }\n\t}\n\t:host([loading="true"]) ::before {\n\t\tanimation: spin 2s linear infinite;\n\t\tposition: absolute;\n\t\tcontent: '';\n\t\tz-index: 1;\n\t\tbox-sizing: border-box;\n\t\tborder-radius: 50%;\n\t\tborder-bottom-color: transparent;\n\t\tborder-left-color: transparent;\n\t\tborder-style: solid;\n\t\tcolor: var(${b});\n\t\ttop: calc(50% - (var(${g}) / 2));\n\t\tleft: calc(50% - (var(${g}) / 2));\n\t\tborder-width: calc(var(${g}) / 10);\n\t\twidth: var(${g});\n\t\theight: var(${g});\n\t}\n\t:host([disabled="true"]),\n\t:host([loading="true"]) {\n\t\tpointer-events: none;\n\t}\n\t:host([loading="true"])::part(prefix),\n\t:host([loading="true"])::part(label) {\n\t\tvisibility: hidden;\n\t}\n`},10767:(t,e,n)=>{n.d(e,{G:()=>o});const o=t=>class extends t{get isLoading(){return"true"===this.getAttribute("loading")}click(){this.isLoading||super.click()}}},30576:(t,e,n)=>{n.r(e),n.d(e,{ButtonClass:()=>o.J,componentName:()=>o.T});var o=n(19624);n(83799),customElements.define(o.T,o.J)},98538:(t,e,n)=>{n.d(e,{S:()=>d,T:()=>l});var o=n(88961),r=n(72270),i=n(63200),s=n(25964),a=n(31004);const l=(0,s.xE)("icon");class c extends((0,r.qu)({componentName:l,baseSelector:"slot"})){static get observedAttributes(){return["src"]}#t;constructor(){super(),this.attachShadow({mode:"open"}).innerHTML="\n\t\t<slot></slot>\n\t",(0,s.fz)("\n\t\t\t:host > slot {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t\tdisplay: flex;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n ",this)}init(){super.init?.(),this.toggleVisibility(this.src)}toggleVisibility(t){this.style.display=t?"":"none"}get src(){return this.getAttribute("src")}updateFillColor(t){[t,...t.querySelectorAll("*[fill]")].forEach((t=>{t.setAttribute("fill",`var(${d.cssVarList.fill}, ${t.getAttribute("fill")||"''"})`)}))}attributeChangedCallback(t,e,n){super.attributeChangedCallback?.(t,e,n),e!==n&&"src"===t&&(this.toggleVisibility(n),(0,a.w)(this.src).then((t=>{if(this.innerHTML="",t){const e=t.cloneNode(!0);this.updateFillColor(e),this.appendChild(e)}})))}}const d=(0,i.Zz)((0,o.RF)({mappings:{fill:{}}}),o.VO,o.tQ)(c)},31004:(t,e,n)=>{n.d(e,{w:()=>i});var o=n(25414);const r=t=>{const e=o.A.sanitize(t,{USE_PROFILES:{svg:!0,svgFilters:!0}});return(new DOMParser).parseFromString(e,"image/svg+xml").querySelector("svg")},i=async t=>{try{let e;if((t=>t.startsWith("data:image/svg+xml;base64,"))(t)){const n=atob(t.slice(26));e=r(n)}else if("svg"===(t=>{const e=t.match(/\.([0-9a-z]+)(?:[\\?#]|$)/i);return e?e[1]:null})(t)){const n=await fetch(t),o=await n.text();e=r(o)}else e=(t=>{const e=document.createElement("img");return e.setAttribute("src",t),e})(t);return e.style.setProperty("max-width","100%"),e.style.setProperty("max-height","100%"),e}catch{return null}}},15450:(t,e,n)=>{n.r(e),n.d(e,{ButtonSelectionGroupItemClass:()=>p});var o=n(79365),r=n(81365),i=n(9696),s=n(97810),a=n(19624),l=n(25964);const c=(0,s.xE)("button-selection-group-item");class d extends((0,r.q)({componentName:c,baseSelector:":host > descope-button"})){get size(){return this.getAttribute("size")||"md"}get variant(){return this.getAttribute("variant")||"contained"}get value(){return this.getAttribute("value")||""}set value(t){this.setAttribute("value",t)}constructor(){super(),this.attachShadow({mode:"open"}).innerHTML=`\n <descope-button variant="${this.variant}" size="${this.size}" mode="primary">\n <slot></slot>\n </descope-button>\n\t`,(0,l.fz)("\n descope-button {\n max-width: 100%;\n }\n\t\t\tdescope-button > slot {\n\t\t\t\twidth: 100%;\n\t\t\t\toverflow: hidden;\n text-overflow: ellipsis;\n display: inline-block;\n\t\t\t}\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n max-width: 100%\n\t\t\t}\n ",this),(0,s.EA)(this,this.baseElement,{includeAttrs:["size","variant"]}),(0,s.EA)(this.baseElement,this,{includeAttrs:["focused","active"]})}handleFocus(){this.shadowRoot.querySelector("descope-button")?.focus()}focus(){this.handleFocus()}init(){super.init(),this.addEventListener("focus",(t=>{t.isTrusted&&this.handleFocus()}))}}const p=(0,i.Zz)((0,o.RF)({mappings:{hostDirection:{selector:()=>a.J.componentName,property:a.J.cssVarList.hostDirection},backgroundColor:{selector:()=>a.J.componentName,property:a.J.cssVarList.backgroundColor},labelTextColor:{selector:()=>a.J.componentName,property:a.J.cssVarList.labelTextColor},borderColor:{selector:()=>a.J.componentName,property:a.J.cssVarList.borderColor},borderWidth:{selector:()=>a.J.componentName,property:a.J.cssVarList.borderWidth},borderStyle:{selector:()=>a.J.componentName,property:a.J.cssVarList.borderStyle},borderRadius:{selector:()=>a.J.componentName,property:a.J.cssVarList.borderRadius},outlineColor:{selector:()=>a.J.componentName,property:a.J.cssVarList.outlineColor}}}),o.VO,o.tQ)(d);n(30576),customElements.define(c,p)}}]);
|
2
2
|
//# sourceMappingURL=button-selection-group-fields-descope-button-selection-group-item-index-js.js.map
|
package/dist/umd/button-selection-group-fields-descope-button-selection-group-item-index-js.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"button-selection-group-fields-descope-button-selection-group-item-index-js.js","mappings":"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","sources":["webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-selection-group-item/ButtonSelectionGroupItemClass.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-selection-group-item/index.js","webpack://@descope/web-components-ui/./src/components/descope-button/ButtonClass.js","webpack://@descope/web-components-ui/./src/components/descope-button/clickableMixin.js","webpack://@descope/web-components-ui/./src/components/descope-button/index.js","webpack://@descope/web-components-ui/./src/components/descope-icon/IconClass.js","webpack://@descope/web-components-ui/./src/components/descope-icon/helpers.js"],"sourcesContent":["import { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../../mixins';\nimport { createBaseClass } from '../../../baseClasses/createBaseClass';\nimport { compose } from '../../../helpers';\nimport { forwardAttrs, getComponentName } from '../../../helpers/componentHelpers';\nimport { ButtonClass } from '../../descope-button/ButtonClass';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('button-selection-group-item');\n\nclass RawSelectItem extends createBaseClass({\n componentName,\n baseSelector: ':host > descope-button',\n}) {\n get size() {\n return this.getAttribute('size') || 'md';\n }\n\n get variant() {\n return this.getAttribute('variant') || 'contained';\n }\n\n get value() {\n return this.getAttribute('value') || '';\n }\n\n set value(value) {\n this.setAttribute('value', value);\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <descope-button variant=\"${this.variant}\" size=\"${this.size}\" mode=\"primary\">\n <slot></slot>\n </descope-button>\n\t`;\n\n injectStyle(\n `\n descope-button {\n max-width: 100%;\n }\n\t\t\tdescope-button > slot {\n\t\t\t\twidth: 100%;\n\t\t\t\toverflow: hidden;\n text-overflow: ellipsis;\n display: inline-block;\n\t\t\t}\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n max-width: 100%\n\t\t\t}\n `,\n this\n );\n\n forwardAttrs(this, this.baseElement, { includeAttrs: ['size', 'variant'] });\n forwardAttrs(this.baseElement, this, { includeAttrs: ['focused', 'active'] });\n }\n\n handleFocus() {\n this.shadowRoot.querySelector('descope-button')?.focus();\n }\n\n focus() {\n this.handleFocus();\n }\n\n init() {\n super.init();\n this.addEventListener('focus', (e) => {\n // we want to ignore focus events we are dispatching\n if (e.isTrusted) {\n this.handleFocus();\n }\n });\n }\n}\n\nexport const ButtonSelectionGroupItemClass = compose(\n createStyleMixin({\n mappings: {\n hostDirection: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.hostDirection,\n },\n backgroundColor: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.backgroundColor,\n },\n labelTextColor: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.labelTextColor,\n },\n borderColor: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.borderColor,\n },\n borderWidth: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.borderWidth,\n },\n borderStyle: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.borderStyle,\n },\n borderRadius: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.borderRadius,\n },\n outlineColor: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.outlineColor,\n },\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawSelectItem);\n","import { componentName, ButtonSelectionGroupItemClass } from './ButtonSelectionGroupItemClass';\nimport '../../descope-button';\n\ncustomElements.define(componentName, ButtonSelectionGroupItemClass);\n\nexport { ButtonSelectionGroupItemClass };\n","import { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport {\n createStyleMixin,\n draggableMixin,\n createProxy,\n componentNameValidationMixin,\n} from '../../mixins';\nimport { IconClass } from '../descope-icon/IconClass';\nimport { clickableMixin } from './clickableMixin';\n\nexport const componentName = getComponentName('button');\n\nconst resetStyles = `\n\t:host {\n\t\tdisplay: inline-block;\n\t\tbox-sizing: border-box;\n\t}\n\tvaadin-button::before,\n\tvaadin-button::after {\n\t\topacity: 0;\n\t}\n\tvaadin-button {\n\t\tmargin: 0;\n\t\tmin-width: 0;\n\t\twidth: 100%;\n\t\theight: auto;\n\t\tbox-shadow: none;\n\t}\n\tvaadin-button::part(label) {\n\t\tpadding: 0;\n width: 100%;\n\t}\n\tvaadin-button::part(prefix) {\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n`;\n\nconst iconStyles = `\n\tvaadin-button::part(prefix),\n\tvaadin-button::part(label) {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n`;\n\nconst editorOverrides = `vaadin-button::part(label) { pointer-events: none; }`;\n\nconst { host, label, slottedIcon } = {\n host: { selector: () => ':host' },\n label: { selector: '::part(label)' },\n slottedIcon: { selector: () => '::slotted(descope-icon)' },\n};\n\nlet loadingIndicatorStyles;\n\nexport const ButtonClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { property: 'width' },\n hostHeight: { property: 'height' },\n hostDirection: { ...host, property: 'direction' },\n fontSize: {},\n fontFamily: {},\n\n cursor: {},\n backgroundColor: {},\n\n outlineOffset: {},\n outlineColor: {},\n outlineStyle: {},\n outlineWidth: {},\n\n borderRadius: {},\n borderColor: {},\n borderStyle: {},\n borderWidth: {},\n\n verticalPadding: [{ property: 'padding-top' }, { property: 'padding-bottom' }],\n horizontalPadding: [\n { property: 'padding-right', fallback: '0.875em' },\n { property: 'padding-left', fallback: '0.875em' },\n ],\n\n labelTextColor: { property: 'color' },\n iconColor: {\n selector: () => `::slotted(*)`,\n property: IconClass.cssVarList.fill,\n },\n labelTextDecoration: { ...label, property: 'text-decoration' },\n labelSpacing: { ...label, property: 'gap' },\n textAlign: { ...label, property: 'justify-content', fallback: 'center' },\n\n iconSize: [\n { ...slottedIcon, property: 'width' },\n { ...slottedIcon, property: 'height' },\n ],\n },\n }),\n clickableMixin,\n draggableMixin,\n componentNameValidationMixin\n)(\n createProxy({\n slots: ['', 'prefix', 'label', 'suffix'],\n wrappedEleName: 'vaadin-button',\n style: () => `\n\t\t\t${resetStyles}\n\t\t\t${iconStyles}\n\t\t\t${loadingIndicatorStyles}\n\t\t\t${editorOverrides}\n\t\t\t:host {\n\t\t\t\tpadding: calc(var(${ButtonClass.cssVarList.outlineWidth}) + var(${ButtonClass.cssVarList.outlineOffset}));\n\t\t\t}\n :host([full-width=\"true\"]) {\n width: var(${ButtonClass.cssVarList.hostWidth});\n }\n\t\t\tvaadin-button {\n\t\t\t\theight: calc(var(${ButtonClass.cssVarList.hostHeight}) - var(${ButtonClass.cssVarList.outlineWidth}) - var(${ButtonClass.cssVarList.outlineOffset}));\n\t\t\t}\n\t\t\t[square=\"true\"]:not([full-width=\"true\"]) {\n\t\t\t\twidth: calc(var(${ButtonClass.cssVarList.hostWidth}) - var(${ButtonClass.cssVarList.outlineWidth}) - var(${ButtonClass.cssVarList.outlineOffset}));\n padding: 0;\n\t\t\t}\n\t\t`,\n excludeAttrsSync: ['tabindex'],\n componentName,\n })\n);\n\nconst { color, fontSize } = ButtonClass.cssVarList;\nloadingIndicatorStyles = `\n\t@keyframes spin {\n\t\t0% { -webkit-transform: rotate(0deg); }\n\t\t100% { -webkit-transform: rotate(360deg); }\n\t}\n\t:host([loading=\"true\"]) ::before {\n\t\tanimation: spin 2s linear infinite;\n\t\tposition: absolute;\n\t\tcontent: '';\n\t\tz-index: 1;\n\t\tbox-sizing: border-box;\n\t\tborder-radius: 50%;\n\t\tborder-bottom-color: transparent;\n\t\tborder-left-color: transparent;\n\t\tborder-style: solid;\n\t\tcolor: var(${color});\n\t\ttop: calc(50% - (var(${fontSize}) / 2));\n\t\tleft: calc(50% - (var(${fontSize}) / 2));\n\t\tborder-width: calc(var(${fontSize}) / 10);\n\t\twidth: var(${fontSize});\n\t\theight: var(${fontSize});\n\t}\n\t:host([disabled=\"true\"]),\n\t:host([loading=\"true\"]) {\n\t\tpointer-events: none;\n\t}\n\t:host([loading=\"true\"])::part(prefix),\n\t:host([loading=\"true\"])::part(label) {\n\t\tvisibility: hidden;\n\t}\n`;\n","export const clickableMixin = (superclass) =>\n class ClickableMixinClass extends superclass {\n get isLoading() {\n return this.getAttribute('loading') === 'true';\n }\n\n click() {\n this.isLoading || super.click();\n }\n };\n","import '@vaadin/button';\nimport { componentName, ButtonClass } from './ButtonClass';\n\ncustomElements.define(componentName, ButtonClass);\n\nexport { ButtonClass, componentName };\n","/* eslint-disable no-use-before-define */\nimport { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport { createIcon } from './helpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('icon');\n\nclass RawIcon extends createBaseClass({ componentName, baseSelector: 'slot' }) {\n static get observedAttributes() {\n return ['src'];\n }\n\n #icon;\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t<slot></slot>\n\t`;\n\n injectStyle(\n `\n\t\t\t:host > slot {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t\tdisplay: flex;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n `,\n this\n );\n }\n\n init() {\n super.init?.();\n this.toggleVisibility(this.src);\n }\n\n toggleVisibility(isVisible) {\n this.style.display = isVisible ? '' : 'none';\n }\n\n get src() {\n return this.getAttribute('src');\n }\n\n // in order to fill an SVG with `currentColor` override all of its `fill` and `path` nodes\n // with the value from the `st-fill` attribute\n // eslint-disable-next-line class-methods-use-this\n updateFillColor(node) {\n // set fill to root node and all its relevant selectors\n const elementsToReplace = [node, ...node.querySelectorAll('*[fill]')];\n\n elementsToReplace.forEach((ele) => {\n ele.setAttribute(\n 'fill',\n `var(${IconClass.cssVarList.fill}, ${ele.getAttribute('fill') || \"''\"})`\n );\n });\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (oldValue === newValue) return;\n\n if (attrName === 'src') {\n this.toggleVisibility(newValue);\n\n createIcon(this.src).then((res) => {\n this.innerHTML = '';\n if (res) {\n const clonedNode = res.cloneNode(true);\n this.updateFillColor(clonedNode);\n this.appendChild(clonedNode);\n }\n });\n }\n }\n}\n\nexport const IconClass = compose(\n createStyleMixin({\n mappings: {\n fill: {},\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawIcon);\n","import DOMPurify from 'dompurify';\n\nconst getFileExtension = (path) => {\n const match = path.match(/\\.([0-9a-z]+)(?:[\\\\?#]|$)/i);\n return match ? match[1] : null;\n};\n\nconst base64Prefix = 'data:image/svg+xml;base64,';\n\nconst isBase64Svg = (src) => src.startsWith(base64Prefix);\n\nconst createImgEle = (src) => {\n const ele = document.createElement('img');\n ele.setAttribute('src', src);\n return ele;\n};\n\nconst createSvgEle = (text) => {\n // we want to purify the SVG to avoid XSS attacks\n const clean = DOMPurify.sanitize(text, { USE_PROFILES: { svg: true, svgFilters: true } });\n\n const parser = new DOMParser();\n const ele = parser.parseFromString(clean, 'image/svg+xml').querySelector('svg');\n return ele;\n};\n\nexport const createIcon = async (src) => {\n try {\n let ele;\n if (isBase64Svg(src)) {\n // handle base64 source\n const svgXml = atob(src.slice(base64Prefix.length));\n ele = createSvgEle(svgXml);\n } else if (getFileExtension(src) === 'svg') {\n // handle urls\n const fetchedSrc = await fetch(src);\n const text = await fetchedSrc.text();\n ele = createSvgEle(text);\n } else {\n // handle binary\n ele = createImgEle(src);\n }\n\n ele.style.setProperty('max-width', '100%');\n ele.style.setProperty('max-height', '100%');\n\n return ele;\n } catch {\n return null;\n }\n};\n"],"names":["componentName","RawSelectItem","createBaseClass","baseSelector","size","this","getAttribute","variant","value","setAttribute","constructor","super","attachShadow","mode","innerHTML","baseElement","includeAttrs","handleFocus","shadowRoot","querySelector","focus","init","addEventListener","e","isTrusted","ButtonSelectionGroupItemClass","mappings","hostDirection","selector","ButtonClass","property","cssVarList","backgroundColor","labelTextColor","borderColor","borderWidth","borderStyle","borderRadius","outlineColor","customElements","define","host","label","slottedIcon","loadingIndicatorStyles","hostWidth","hostHeight","fontSize","fontFamily","cursor","outlineOffset","outlineStyle","outlineWidth","verticalPadding","horizontalPadding","fallback","iconColor","fill","labelTextDecoration","labelSpacing","textAlign","iconSize","slots","wrappedEleName","style","excludeAttrsSync","color","clickableMixin","superclass","isLoading","click","RawIcon","observedAttributes","toggleVisibility","src","isVisible","display","updateFillColor","node","querySelectorAll","forEach","ele","IconClass","attributeChangedCallback","attrName","oldValue","newValue","then","res","clonedNode","cloneNode","appendChild","createSvgEle","text","clean","sanitize","USE_PROFILES","svg","svgFilters","DOMParser","parseFromString","createIcon","async","startsWith","isBase64Svg","svgXml","atob","slice","base64Prefix","path","match","getFileExtension","fetchedSrc","fetch","document","createElement","createImgEle","setProperty"],"sourceRoot":""}
|
1
|
+
{"version":3,"file":"button-selection-group-fields-descope-button-selection-group-item-index-js.js","mappings":"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","sources":["webpack://@descope/web-components-ui/../components/descope-button/src/component/ButtonClass.js","webpack://@descope/web-components-ui/../components/descope-button/src/component/clickableMixin.js","webpack://@descope/web-components-ui/../components/descope-button/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-icon/src/component/IconClass.js","webpack://@descope/web-components-ui/../components/descope-icon/src/component/helpers.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-selection-group-item/ButtonSelectionGroupItemClass.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-selection-group-item/index.js"],"sourcesContent":["import { compose } from '@descope-ui/common/utils';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport {\n createStyleMixin,\n draggableMixin,\n createProxy,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { IconClass } from '@descope-ui/descope-icon/class';\nimport { clickableMixin } from './clickableMixin';\n\nexport const componentName = getComponentName('button');\n\nconst resetStyles = `\n\t:host {\n\t\tdisplay: inline-block;\n\t\tbox-sizing: border-box;\n\t}\n\tvaadin-button::before,\n\tvaadin-button::after {\n\t\topacity: 0;\n\t}\n\tvaadin-button {\n\t\tmargin: 0;\n\t\tmin-width: 0;\n\t\twidth: 100%;\n\t\theight: auto;\n\t\tbox-shadow: none;\n\t}\n\tvaadin-button::part(label) {\n\t\tpadding: 0;\n width: 100%;\n\t}\n\tvaadin-button::part(prefix) {\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n`;\n\nconst iconStyles = `\n\tvaadin-button::part(prefix),\n\tvaadin-button::part(label) {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n`;\n\nconst editorOverrides = `vaadin-button::part(label) { pointer-events: none; }`;\n\nconst { host, label, slottedIcon } = {\n host: { selector: () => ':host' },\n label: { selector: '::part(label)' },\n slottedIcon: { selector: () => '::slotted(descope-icon)' },\n};\n\nlet loadingIndicatorStyles;\n\nexport const ButtonClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { property: 'width' },\n hostHeight: { property: 'height' },\n hostDirection: { ...host, property: 'direction' },\n fontSize: {},\n fontFamily: {},\n\n cursor: {},\n backgroundColor: {},\n\n outlineOffset: {},\n outlineColor: {},\n outlineStyle: {},\n outlineWidth: {},\n\n borderRadius: {},\n borderColor: {},\n borderStyle: {},\n borderWidth: {},\n\n verticalPadding: [{ property: 'padding-top' }, { property: 'padding-bottom' }],\n horizontalPadding: [\n { property: 'padding-right', fallback: '0.875em' },\n { property: 'padding-left', fallback: '0.875em' },\n ],\n\n labelTextColor: { property: 'color' },\n iconColor: {\n selector: () => `::slotted(*)`,\n property: IconClass.cssVarList.fill,\n },\n labelTextDecoration: { ...label, property: 'text-decoration' },\n labelSpacing: { ...label, property: 'gap' },\n textAlign: { ...label, property: 'justify-content', fallback: 'center' },\n\n iconSize: [\n { ...slottedIcon, property: 'width' },\n { ...slottedIcon, property: 'height' },\n ],\n },\n }),\n clickableMixin,\n draggableMixin,\n componentNameValidationMixin\n)(\n createProxy({\n slots: ['', 'prefix', 'label', 'suffix'],\n wrappedEleName: 'vaadin-button',\n style: () => `\n\t\t\t${resetStyles}\n\t\t\t${iconStyles}\n\t\t\t${loadingIndicatorStyles}\n\t\t\t${editorOverrides}\n\t\t\t:host {\n\t\t\t\tpadding: calc(var(${ButtonClass.cssVarList.outlineWidth}) + var(${ButtonClass.cssVarList.outlineOffset}));\n\t\t\t}\n :host([full-width=\"true\"]) {\n width: var(${ButtonClass.cssVarList.hostWidth});\n }\n\t\t\tvaadin-button {\n\t\t\t\theight: calc(var(${ButtonClass.cssVarList.hostHeight}) - var(${ButtonClass.cssVarList.outlineWidth}) - var(${ButtonClass.cssVarList.outlineOffset}));\n\t\t\t}\n\t\t\t[square=\"true\"]:not([full-width=\"true\"]) {\n\t\t\t\twidth: calc(var(${ButtonClass.cssVarList.hostWidth}) - var(${ButtonClass.cssVarList.outlineWidth}) - var(${ButtonClass.cssVarList.outlineOffset}));\n padding: 0;\n\t\t\t}\n\t\t`,\n excludeAttrsSync: ['tabindex'],\n componentName,\n })\n);\n\nconst { color, fontSize } = ButtonClass.cssVarList;\nloadingIndicatorStyles = `\n\t@keyframes spin {\n\t\t0% { -webkit-transform: rotate(0deg); }\n\t\t100% { -webkit-transform: rotate(360deg); }\n\t}\n\t:host([loading=\"true\"]) ::before {\n\t\tanimation: spin 2s linear infinite;\n\t\tposition: absolute;\n\t\tcontent: '';\n\t\tz-index: 1;\n\t\tbox-sizing: border-box;\n\t\tborder-radius: 50%;\n\t\tborder-bottom-color: transparent;\n\t\tborder-left-color: transparent;\n\t\tborder-style: solid;\n\t\tcolor: var(${color});\n\t\ttop: calc(50% - (var(${fontSize}) / 2));\n\t\tleft: calc(50% - (var(${fontSize}) / 2));\n\t\tborder-width: calc(var(${fontSize}) / 10);\n\t\twidth: var(${fontSize});\n\t\theight: var(${fontSize});\n\t}\n\t:host([disabled=\"true\"]),\n\t:host([loading=\"true\"]) {\n\t\tpointer-events: none;\n\t}\n\t:host([loading=\"true\"])::part(prefix),\n\t:host([loading=\"true\"])::part(label) {\n\t\tvisibility: hidden;\n\t}\n`;\n","export const clickableMixin = (superclass) =>\n class ClickableMixinClass extends superclass {\n get isLoading() {\n return this.getAttribute('loading') === 'true';\n }\n\n click() {\n this.isLoading || super.click();\n }\n };\n","import { componentName, ButtonClass } from './ButtonClass';\nimport '@vaadin/button';\n\ncustomElements.define(componentName, ButtonClass);\n\nexport { ButtonClass, componentName };\n","/* eslint-disable no-use-before-define */\nimport { createStyleMixin, draggableMixin, componentNameValidationMixin } from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { compose } from '@descope-ui/common/utils';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport { createIcon } from './helpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('icon');\n\nclass RawIcon extends createBaseClass({ componentName, baseSelector: 'slot' }) {\n static get observedAttributes() {\n return ['src'];\n }\n\n #icon;\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t<slot></slot>\n\t`;\n\n injectStyle(\n `\n\t\t\t:host > slot {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t\tdisplay: flex;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n `,\n this\n );\n }\n\n init() {\n super.init?.();\n this.toggleVisibility(this.src);\n }\n\n toggleVisibility(isVisible) {\n this.style.display = isVisible ? '' : 'none';\n }\n\n get src() {\n return this.getAttribute('src');\n }\n\n // in order to fill an SVG with `currentColor` override all of its `fill` and `path` nodes\n // with the value from the `st-fill` attribute\n // eslint-disable-next-line class-methods-use-this\n updateFillColor(node) {\n // set fill to root node and all its relevant selectors\n const elementsToReplace = [node, ...node.querySelectorAll('*[fill]')];\n\n elementsToReplace.forEach((ele) => {\n ele.setAttribute(\n 'fill',\n `var(${IconClass.cssVarList.fill}, ${ele.getAttribute('fill') || \"''\"})`\n );\n });\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (oldValue === newValue) return;\n\n if (attrName === 'src') {\n this.toggleVisibility(newValue);\n\n createIcon(this.src).then((res) => {\n this.innerHTML = '';\n if (res) {\n const clonedNode = res.cloneNode(true);\n this.updateFillColor(clonedNode);\n this.appendChild(clonedNode);\n }\n });\n }\n }\n}\n\nexport const IconClass = compose(\n createStyleMixin({\n mappings: {\n fill: {},\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawIcon);\n","import DOMPurify from 'dompurify';\n\nconst getFileExtension = (path) => {\n const match = path.match(/\\.([0-9a-z]+)(?:[\\\\?#]|$)/i);\n return match ? match[1] : null;\n};\n\nconst base64Prefix = 'data:image/svg+xml;base64,';\n\nconst isBase64Svg = (src) => src.startsWith(base64Prefix);\n\nconst createImgEle = (src) => {\n const ele = document.createElement('img');\n ele.setAttribute('src', src);\n return ele;\n};\n\nconst createSvgEle = (text) => {\n // we want to purify the SVG to avoid XSS attacks\n const clean = DOMPurify.sanitize(text, { USE_PROFILES: { svg: true, svgFilters: true } });\n\n const parser = new DOMParser();\n const ele = parser.parseFromString(clean, 'image/svg+xml').querySelector('svg');\n return ele;\n};\n\nexport const createIcon = async (src) => {\n try {\n let ele;\n if (isBase64Svg(src)) {\n // handle base64 source\n const svgXml = atob(src.slice(base64Prefix.length));\n ele = createSvgEle(svgXml);\n } else if (getFileExtension(src) === 'svg') {\n // handle urls\n const fetchedSrc = await fetch(src);\n const text = await fetchedSrc.text();\n ele = createSvgEle(text);\n } else {\n // handle binary\n ele = createImgEle(src);\n }\n\n ele.style.setProperty('max-width', '100%');\n ele.style.setProperty('max-height', '100%');\n\n return ele;\n } catch {\n return null;\n }\n};\n","import { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../../mixins';\nimport { createBaseClass } from '../../../baseClasses/createBaseClass';\nimport { compose } from '../../../helpers';\nimport { forwardAttrs, getComponentName } from '../../../helpers/componentHelpers';\nimport { ButtonClass } from '@descope-ui/descope-button/class';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('button-selection-group-item');\n\nclass RawSelectItem extends createBaseClass({\n componentName,\n baseSelector: ':host > descope-button',\n}) {\n get size() {\n return this.getAttribute('size') || 'md';\n }\n\n get variant() {\n return this.getAttribute('variant') || 'contained';\n }\n\n get value() {\n return this.getAttribute('value') || '';\n }\n\n set value(value) {\n this.setAttribute('value', value);\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <descope-button variant=\"${this.variant}\" size=\"${this.size}\" mode=\"primary\">\n <slot></slot>\n </descope-button>\n\t`;\n\n injectStyle(\n `\n descope-button {\n max-width: 100%;\n }\n\t\t\tdescope-button > slot {\n\t\t\t\twidth: 100%;\n\t\t\t\toverflow: hidden;\n text-overflow: ellipsis;\n display: inline-block;\n\t\t\t}\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n max-width: 100%\n\t\t\t}\n `,\n this\n );\n\n forwardAttrs(this, this.baseElement, { includeAttrs: ['size', 'variant'] });\n forwardAttrs(this.baseElement, this, { includeAttrs: ['focused', 'active'] });\n }\n\n handleFocus() {\n this.shadowRoot.querySelector('descope-button')?.focus();\n }\n\n focus() {\n this.handleFocus();\n }\n\n init() {\n super.init();\n this.addEventListener('focus', (e) => {\n // we want to ignore focus events we are dispatching\n if (e.isTrusted) {\n this.handleFocus();\n }\n });\n }\n}\n\nexport const ButtonSelectionGroupItemClass = compose(\n createStyleMixin({\n mappings: {\n hostDirection: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.hostDirection,\n },\n backgroundColor: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.backgroundColor,\n },\n labelTextColor: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.labelTextColor,\n },\n borderColor: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.borderColor,\n },\n borderWidth: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.borderWidth,\n },\n borderStyle: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.borderStyle,\n },\n borderRadius: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.borderRadius,\n },\n outlineColor: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.outlineColor,\n },\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawSelectItem);\n","import { componentName, ButtonSelectionGroupItemClass } from './ButtonSelectionGroupItemClass';\nimport '@descope-ui/descope-button';\n\ncustomElements.define(componentName, ButtonSelectionGroupItemClass);\n\nexport { ButtonSelectionGroupItemClass };\n"],"names":["componentName","host","label","slottedIcon","selector","loadingIndicatorStyles","ButtonClass","mappings","hostWidth","property","hostHeight","hostDirection","fontSize","fontFamily","cursor","backgroundColor","outlineOffset","outlineColor","outlineStyle","outlineWidth","borderRadius","borderColor","borderStyle","borderWidth","verticalPadding","horizontalPadding","fallback","labelTextColor","iconColor","cssVarList","fill","labelTextDecoration","labelSpacing","textAlign","iconSize","slots","wrappedEleName","style","excludeAttrsSync","color","clickableMixin","superclass","isLoading","this","getAttribute","click","super","customElements","define","RawIcon","baseSelector","observedAttributes","constructor","attachShadow","mode","innerHTML","init","toggleVisibility","src","isVisible","display","updateFillColor","node","querySelectorAll","forEach","ele","setAttribute","IconClass","attributeChangedCallback","attrName","oldValue","newValue","then","res","clonedNode","cloneNode","appendChild","createSvgEle","text","clean","sanitize","USE_PROFILES","svg","svgFilters","DOMParser","parseFromString","querySelector","createIcon","async","startsWith","isBase64Svg","svgXml","atob","slice","base64Prefix","path","match","getFileExtension","fetchedSrc","fetch","document","createElement","createImgEle","setProperty","RawSelectItem","createBaseClass","size","variant","value","baseElement","includeAttrs","handleFocus","shadowRoot","focus","addEventListener","e","isTrusted","ButtonSelectionGroupItemClass"],"sourceRoot":""}
|
@@ -1,5 +1,5 @@
|
|
1
|
-
/*! For license information please see descope-button
|
2
|
-
"use strict";(self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[6649,9030
|
1
|
+
/*! For license information please see descope-button.js.LICENSE.txt */
|
2
|
+
"use strict";(self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[5087,6649,9030],{19624:(t,e,o)=>{o.d(e,{J:()=>b,T:()=>l});var r=o(63200),i=o(25964),n=o(88961),a=o(98538),s=o(10767);const l=(0,i.xE)("button"),{host:d,label:c,slottedIcon:h}={host:{selector:()=>":host"},label:{selector:"::part(label)"},slottedIcon:{selector:()=>"::slotted(descope-icon)"}};let u;const b=(0,r.Zz)((0,n.RF)({mappings:{hostWidth:{property:"width"},hostHeight:{property:"height"},hostDirection:{...d,property:"direction"},fontSize:{},fontFamily:{},cursor:{},backgroundColor:{},outlineOffset:{},outlineColor:{},outlineStyle:{},outlineWidth:{},borderRadius:{},borderColor:{},borderStyle:{},borderWidth:{},verticalPadding:[{property:"padding-top"},{property:"padding-bottom"}],horizontalPadding:[{property:"padding-right",fallback:"0.875em"},{property:"padding-left",fallback:"0.875em"}],labelTextColor:{property:"color"},iconColor:{selector:()=>"::slotted(*)",property:a.S.cssVarList.fill},labelTextDecoration:{...c,property:"text-decoration"},labelSpacing:{...c,property:"gap"},textAlign:{...c,property:"justify-content",fallback:"center"},iconSize:[{...h,property:"width"},{...h,property:"height"}]}}),s.G,n.VO,n.tQ)((0,n.tz)({slots:["","prefix","label","suffix"],wrappedEleName:"vaadin-button",style:()=>`\n\t\t\t\n\t:host {\n\t\tdisplay: inline-block;\n\t\tbox-sizing: border-box;\n\t}\n\tvaadin-button::before,\n\tvaadin-button::after {\n\t\topacity: 0;\n\t}\n\tvaadin-button {\n\t\tmargin: 0;\n\t\tmin-width: 0;\n\t\twidth: 100%;\n\t\theight: auto;\n\t\tbox-shadow: none;\n\t}\n\tvaadin-button::part(label) {\n\t\tpadding: 0;\n width: 100%;\n\t}\n\tvaadin-button::part(prefix) {\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n\n\t\t\t\n\tvaadin-button::part(prefix),\n\tvaadin-button::part(label) {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n\n\t\t\t${u}\n\t\t\tvaadin-button::part(label) { pointer-events: none; }\n\t\t\t:host {\n\t\t\t\tpadding: calc(var(${b.cssVarList.outlineWidth}) + var(${b.cssVarList.outlineOffset}));\n\t\t\t}\n :host([full-width="true"]) {\n width: var(${b.cssVarList.hostWidth});\n }\n\t\t\tvaadin-button {\n\t\t\t\theight: calc(var(${b.cssVarList.hostHeight}) - var(${b.cssVarList.outlineWidth}) - var(${b.cssVarList.outlineOffset}));\n\t\t\t}\n\t\t\t[square="true"]:not([full-width="true"]) {\n\t\t\t\twidth: calc(var(${b.cssVarList.hostWidth}) - var(${b.cssVarList.outlineWidth}) - var(${b.cssVarList.outlineOffset}));\n padding: 0;\n\t\t\t}\n\t\t`,excludeAttrsSync:["tabindex"],componentName:l})),{color:p,fontSize:m}=b.cssVarList;u=`\n\t@keyframes spin {\n\t\t0% { -webkit-transform: rotate(0deg); }\n\t\t100% { -webkit-transform: rotate(360deg); }\n\t}\n\t:host([loading="true"]) ::before {\n\t\tanimation: spin 2s linear infinite;\n\t\tposition: absolute;\n\t\tcontent: '';\n\t\tz-index: 1;\n\t\tbox-sizing: border-box;\n\t\tborder-radius: 50%;\n\t\tborder-bottom-color: transparent;\n\t\tborder-left-color: transparent;\n\t\tborder-style: solid;\n\t\tcolor: var(${p});\n\t\ttop: calc(50% - (var(${m}) / 2));\n\t\tleft: calc(50% - (var(${m}) / 2));\n\t\tborder-width: calc(var(${m}) / 10);\n\t\twidth: var(${m});\n\t\theight: var(${m});\n\t}\n\t:host([disabled="true"]),\n\t:host([loading="true"]) {\n\t\tpointer-events: none;\n\t}\n\t:host([loading="true"])::part(prefix),\n\t:host([loading="true"])::part(label) {\n\t\tvisibility: hidden;\n\t}\n`},10767:(t,e,o)=>{o.d(e,{G:()=>r});const r=t=>class extends t{get isLoading(){return"true"===this.getAttribute("loading")}click(){this.isLoading||super.click()}}},30576:(t,e,o)=>{o.r(e),o.d(e,{ButtonClass:()=>r.J,componentName:()=>r.T});var r=o(19624);o(83799),customElements.define(r.T,r.J)},98538:(t,e,o)=>{o.d(e,{S:()=>c,T:()=>l});var r=o(88961),i=o(72270),n=o(63200),a=o(25964),s=o(31004);const l=(0,a.xE)("icon");class d extends((0,i.qu)({componentName:l,baseSelector:"slot"})){static get observedAttributes(){return["src"]}#t;constructor(){super(),this.attachShadow({mode:"open"}).innerHTML="\n\t\t<slot></slot>\n\t",(0,a.fz)("\n\t\t\t:host > slot {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t\tdisplay: flex;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n ",this)}init(){super.init?.(),this.toggleVisibility(this.src)}toggleVisibility(t){this.style.display=t?"":"none"}get src(){return this.getAttribute("src")}updateFillColor(t){[t,...t.querySelectorAll("*[fill]")].forEach((t=>{t.setAttribute("fill",`var(${c.cssVarList.fill}, ${t.getAttribute("fill")||"''"})`)}))}attributeChangedCallback(t,e,o){super.attributeChangedCallback?.(t,e,o),e!==o&&"src"===t&&(this.toggleVisibility(o),(0,s.w)(this.src).then((t=>{if(this.innerHTML="",t){const e=t.cloneNode(!0);this.updateFillColor(e),this.appendChild(e)}})))}}const c=(0,n.Zz)((0,r.RF)({mappings:{fill:{}}}),r.VO,r.tQ)(d)},31004:(t,e,o)=>{o.d(e,{w:()=>n});var r=o(25414);const i=t=>{const e=r.A.sanitize(t,{USE_PROFILES:{svg:!0,svgFilters:!0}});return(new DOMParser).parseFromString(e,"image/svg+xml").querySelector("svg")},n=async t=>{try{let e;if((t=>t.startsWith("data:image/svg+xml;base64,"))(t)){const o=atob(t.slice(26));e=i(o)}else if("svg"===(t=>{const e=t.match(/\.([0-9a-z]+)(?:[\\?#]|$)/i);return e?e[1]:null})(t)){const o=await fetch(t),r=await o.text();e=i(r)}else e=(t=>{const e=document.createElement("img");return e.setAttribute("src",t),e})(t);return e.style.setProperty("max-width","100%"),e.style.setProperty("max-height","100%"),e}catch{return null}}},5745:(t,e,o)=>{o.d(e,{i:()=>r});const r=(0,o(98741).y)((t=>class extends t{static get properties(){return{disabled:{type:Boolean,value:!1,observer:"_disabledChanged",reflectToAttribute:!0}}}_disabledChanged(t){this._setAriaDisabled(t)}_setAriaDisabled(t){t?this.setAttribute("aria-disabled","true"):this.removeAttribute("aria-disabled")}click(){this.disabled||super.click()}}))},7888:(t,e,o)=>{o.d(e,{f:()=>r});const r=(0,o(98741).y)((t=>class extends t{ready(){super.ready(),this.addEventListener("keydown",(t=>{this._onKeyDown(t)})),this.addEventListener("keyup",(t=>{this._onKeyUp(t)}))}_onKeyDown(t){switch(t.key){case"Enter":this._onEnter(t);break;case"Escape":this._onEscape(t)}}_onKeyUp(t){}_onEnter(t){}_onEscape(t){}}))},36176:(t,e,o)=>{o.d(e,{l:()=>i});var r=o(5745);const i=t=>class extends((0,r.i)(t)){static get properties(){return{tabindex:{type:Number,reflectToAttribute:!0,observer:"_tabindexChanged"},_lastTabIndex:{type:Number}}}_disabledChanged(t,e){super._disabledChanged(t,e),t?(void 0!==this.tabindex&&(this._lastTabIndex=this.tabindex),this.tabindex=-1):e&&(this.tabindex=this._lastTabIndex)}_tabindexChanged(t){this.disabled&&-1!==t&&(this._lastTabIndex=t,this.tabindex=-1)}}},89389:(t,e,o)=>{o.d(e,{$:()=>p});var r=o(13256),i=o(55774),n=o(82901),a=o(90676),s=o(81488),l=o(87550);const d=o(51450).AH`
|
3
3
|
:host {
|
4
4
|
display: inline-block;
|
5
5
|
position: relative;
|
@@ -336,4 +336,4 @@
|
|
336
336
|
margin-right: 0;
|
337
337
|
}
|
338
338
|
`;(0,r.SF)("vaadin-button",i,{moduleId:"lumo-button"})},83799:(t,e,o)=>{o(93555),o(89389)}}]);
|
339
|
-
//# sourceMappingURL=descope-button
|
339
|
+
//# sourceMappingURL=descope-button.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"descope-button.js","mappings":"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","sources":["webpack://@descope/web-components-ui/../components/descope-button/src/component/ButtonClass.js","webpack://@descope/web-components-ui/../components/descope-button/src/component/clickableMixin.js","webpack://@descope/web-components-ui/../components/descope-button/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-icon/src/component/IconClass.js","webpack://@descope/web-components-ui/../components/descope-icon/src/component/helpers.js","webpack://@descope/web-components-ui/../../../node_modules/@vaadin/a11y-base/src/disabled-mixin.js","webpack://@descope/web-components-ui/../../../node_modules/@vaadin/a11y-base/src/keyboard-mixin.js","webpack://@descope/web-components-ui/../../../node_modules/@vaadin/a11y-base/src/tabindex-mixin.js","webpack://@descope/web-components-ui/../../../node_modules/@vaadin/button/src/vaadin-button-base.js","webpack://@descope/web-components-ui/../../../node_modules/@vaadin/button/src/vaadin-button-mixin.js","webpack://@descope/web-components-ui/../../../node_modules/@vaadin/button/src/vaadin-button.js","webpack://@descope/web-components-ui/../../../node_modules/@vaadin/button/theme/lumo/vaadin-button-styles.js"],"sourcesContent":["import { compose } from '@descope-ui/common/utils';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport {\n createStyleMixin,\n draggableMixin,\n createProxy,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { IconClass } from '@descope-ui/descope-icon/class';\nimport { clickableMixin } from './clickableMixin';\n\nexport const componentName = getComponentName('button');\n\nconst resetStyles = `\n\t:host {\n\t\tdisplay: inline-block;\n\t\tbox-sizing: border-box;\n\t}\n\tvaadin-button::before,\n\tvaadin-button::after {\n\t\topacity: 0;\n\t}\n\tvaadin-button {\n\t\tmargin: 0;\n\t\tmin-width: 0;\n\t\twidth: 100%;\n\t\theight: auto;\n\t\tbox-shadow: none;\n\t}\n\tvaadin-button::part(label) {\n\t\tpadding: 0;\n width: 100%;\n\t}\n\tvaadin-button::part(prefix) {\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n`;\n\nconst iconStyles = `\n\tvaadin-button::part(prefix),\n\tvaadin-button::part(label) {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n`;\n\nconst editorOverrides = `vaadin-button::part(label) { pointer-events: none; }`;\n\nconst { host, label, slottedIcon } = {\n host: { selector: () => ':host' },\n label: { selector: '::part(label)' },\n slottedIcon: { selector: () => '::slotted(descope-icon)' },\n};\n\nlet loadingIndicatorStyles;\n\nexport const ButtonClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { property: 'width' },\n hostHeight: { property: 'height' },\n hostDirection: { ...host, property: 'direction' },\n fontSize: {},\n fontFamily: {},\n\n cursor: {},\n backgroundColor: {},\n\n outlineOffset: {},\n outlineColor: {},\n outlineStyle: {},\n outlineWidth: {},\n\n borderRadius: {},\n borderColor: {},\n borderStyle: {},\n borderWidth: {},\n\n verticalPadding: [{ property: 'padding-top' }, { property: 'padding-bottom' }],\n horizontalPadding: [\n { property: 'padding-right', fallback: '0.875em' },\n { property: 'padding-left', fallback: '0.875em' },\n ],\n\n labelTextColor: { property: 'color' },\n iconColor: {\n selector: () => `::slotted(*)`,\n property: IconClass.cssVarList.fill,\n },\n labelTextDecoration: { ...label, property: 'text-decoration' },\n labelSpacing: { ...label, property: 'gap' },\n textAlign: { ...label, property: 'justify-content', fallback: 'center' },\n\n iconSize: [\n { ...slottedIcon, property: 'width' },\n { ...slottedIcon, property: 'height' },\n ],\n },\n }),\n clickableMixin,\n draggableMixin,\n componentNameValidationMixin\n)(\n createProxy({\n slots: ['', 'prefix', 'label', 'suffix'],\n wrappedEleName: 'vaadin-button',\n style: () => `\n\t\t\t${resetStyles}\n\t\t\t${iconStyles}\n\t\t\t${loadingIndicatorStyles}\n\t\t\t${editorOverrides}\n\t\t\t:host {\n\t\t\t\tpadding: calc(var(${ButtonClass.cssVarList.outlineWidth}) + var(${ButtonClass.cssVarList.outlineOffset}));\n\t\t\t}\n :host([full-width=\"true\"]) {\n width: var(${ButtonClass.cssVarList.hostWidth});\n }\n\t\t\tvaadin-button {\n\t\t\t\theight: calc(var(${ButtonClass.cssVarList.hostHeight}) - var(${ButtonClass.cssVarList.outlineWidth}) - var(${ButtonClass.cssVarList.outlineOffset}));\n\t\t\t}\n\t\t\t[square=\"true\"]:not([full-width=\"true\"]) {\n\t\t\t\twidth: calc(var(${ButtonClass.cssVarList.hostWidth}) - var(${ButtonClass.cssVarList.outlineWidth}) - var(${ButtonClass.cssVarList.outlineOffset}));\n padding: 0;\n\t\t\t}\n\t\t`,\n excludeAttrsSync: ['tabindex'],\n componentName,\n })\n);\n\nconst { color, fontSize } = ButtonClass.cssVarList;\nloadingIndicatorStyles = `\n\t@keyframes spin {\n\t\t0% { -webkit-transform: rotate(0deg); }\n\t\t100% { -webkit-transform: rotate(360deg); }\n\t}\n\t:host([loading=\"true\"]) ::before {\n\t\tanimation: spin 2s linear infinite;\n\t\tposition: absolute;\n\t\tcontent: '';\n\t\tz-index: 1;\n\t\tbox-sizing: border-box;\n\t\tborder-radius: 50%;\n\t\tborder-bottom-color: transparent;\n\t\tborder-left-color: transparent;\n\t\tborder-style: solid;\n\t\tcolor: var(${color});\n\t\ttop: calc(50% - (var(${fontSize}) / 2));\n\t\tleft: calc(50% - (var(${fontSize}) / 2));\n\t\tborder-width: calc(var(${fontSize}) / 10);\n\t\twidth: var(${fontSize});\n\t\theight: var(${fontSize});\n\t}\n\t:host([disabled=\"true\"]),\n\t:host([loading=\"true\"]) {\n\t\tpointer-events: none;\n\t}\n\t:host([loading=\"true\"])::part(prefix),\n\t:host([loading=\"true\"])::part(label) {\n\t\tvisibility: hidden;\n\t}\n`;\n","export const clickableMixin = (superclass) =>\n class ClickableMixinClass extends superclass {\n get isLoading() {\n return this.getAttribute('loading') === 'true';\n }\n\n click() {\n this.isLoading || super.click();\n }\n };\n","import { componentName, ButtonClass } from './ButtonClass';\nimport '@vaadin/button';\n\ncustomElements.define(componentName, ButtonClass);\n\nexport { ButtonClass, componentName };\n","/* eslint-disable no-use-before-define */\nimport { createStyleMixin, draggableMixin, componentNameValidationMixin } from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { compose } from '@descope-ui/common/utils';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport { createIcon } from './helpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('icon');\n\nclass RawIcon extends createBaseClass({ componentName, baseSelector: 'slot' }) {\n static get observedAttributes() {\n return ['src'];\n }\n\n #icon;\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t<slot></slot>\n\t`;\n\n injectStyle(\n `\n\t\t\t:host > slot {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t\tdisplay: flex;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n `,\n this\n );\n }\n\n init() {\n super.init?.();\n this.toggleVisibility(this.src);\n }\n\n toggleVisibility(isVisible) {\n this.style.display = isVisible ? '' : 'none';\n }\n\n get src() {\n return this.getAttribute('src');\n }\n\n // in order to fill an SVG with `currentColor` override all of its `fill` and `path` nodes\n // with the value from the `st-fill` attribute\n // eslint-disable-next-line class-methods-use-this\n updateFillColor(node) {\n // set fill to root node and all its relevant selectors\n const elementsToReplace = [node, ...node.querySelectorAll('*[fill]')];\n\n elementsToReplace.forEach((ele) => {\n ele.setAttribute(\n 'fill',\n `var(${IconClass.cssVarList.fill}, ${ele.getAttribute('fill') || \"''\"})`\n );\n });\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (oldValue === newValue) return;\n\n if (attrName === 'src') {\n this.toggleVisibility(newValue);\n\n createIcon(this.src).then((res) => {\n this.innerHTML = '';\n if (res) {\n const clonedNode = res.cloneNode(true);\n this.updateFillColor(clonedNode);\n this.appendChild(clonedNode);\n }\n });\n }\n }\n}\n\nexport const IconClass = compose(\n createStyleMixin({\n mappings: {\n fill: {},\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawIcon);\n","import DOMPurify from 'dompurify';\n\nconst getFileExtension = (path) => {\n const match = path.match(/\\.([0-9a-z]+)(?:[\\\\?#]|$)/i);\n return match ? match[1] : null;\n};\n\nconst base64Prefix = 'data:image/svg+xml;base64,';\n\nconst isBase64Svg = (src) => src.startsWith(base64Prefix);\n\nconst createImgEle = (src) => {\n const ele = document.createElement('img');\n ele.setAttribute('src', src);\n return ele;\n};\n\nconst createSvgEle = (text) => {\n // we want to purify the SVG to avoid XSS attacks\n const clean = DOMPurify.sanitize(text, { USE_PROFILES: { svg: true, svgFilters: true } });\n\n const parser = new DOMParser();\n const ele = parser.parseFromString(clean, 'image/svg+xml').querySelector('svg');\n return ele;\n};\n\nexport const createIcon = async (src) => {\n try {\n let ele;\n if (isBase64Svg(src)) {\n // handle base64 source\n const svgXml = atob(src.slice(base64Prefix.length));\n ele = createSvgEle(svgXml);\n } else if (getFileExtension(src) === 'svg') {\n // handle urls\n const fetchedSrc = await fetch(src);\n const text = await fetchedSrc.text();\n ele = createSvgEle(text);\n } else {\n // handle binary\n ele = createImgEle(src);\n }\n\n ele.style.setProperty('max-width', '100%');\n ele.style.setProperty('max-height', '100%');\n\n return ele;\n } catch {\n return null;\n }\n};\n","/**\n * @license\n * Copyright (c) 2021 - 2023 Vaadin Ltd.\n * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/\n */\nimport { dedupingMixin } from '@polymer/polymer/lib/utils/mixin.js';\n\n/**\n * A mixin to provide disabled property for field components.\n *\n * @polymerMixin\n */\nexport const DisabledMixin = dedupingMixin(\n (superclass) =>\n class DisabledMixinClass extends superclass {\n static get properties() {\n return {\n /**\n * If true, the user cannot interact with this element.\n */\n disabled: {\n type: Boolean,\n value: false,\n observer: '_disabledChanged',\n reflectToAttribute: true,\n },\n };\n }\n\n /**\n * @param {boolean} disabled\n * @protected\n */\n _disabledChanged(disabled) {\n this._setAriaDisabled(disabled);\n }\n\n /**\n * @param {boolean} disabled\n * @protected\n */\n _setAriaDisabled(disabled) {\n if (disabled) {\n this.setAttribute('aria-disabled', 'true');\n } else {\n this.removeAttribute('aria-disabled');\n }\n }\n\n /**\n * Overrides the default element `click` method in order to prevent\n * firing the `click` event when the element is disabled.\n * @protected\n * @override\n */\n click() {\n if (!this.disabled) {\n super.click();\n }\n }\n },\n);\n","/**\n * @license\n * Copyright (c) 2021 - 2023 Vaadin Ltd.\n * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/\n */\nimport { dedupingMixin } from '@polymer/polymer/lib/utils/mixin.js';\n\n/**\n * A mixin that manages keyboard handling.\n * The mixin subscribes to the keyboard events while an actual implementation\n * for the event handlers is left to the client (a component or another mixin).\n *\n * @polymerMixin\n */\nexport const KeyboardMixin = dedupingMixin(\n (superclass) =>\n class KeyboardMixinClass extends superclass {\n /** @protected */\n ready() {\n super.ready();\n\n this.addEventListener('keydown', (event) => {\n this._onKeyDown(event);\n });\n\n this.addEventListener('keyup', (event) => {\n this._onKeyUp(event);\n });\n }\n\n /**\n * A handler for the `keydown` event. By default, it calls\n * separate methods for handling \"Enter\" and \"Escape\" keys.\n * Override the method to implement your own behavior.\n *\n * @param {KeyboardEvent} event\n * @protected\n */\n _onKeyDown(event) {\n switch (event.key) {\n case 'Enter':\n this._onEnter(event);\n break;\n case 'Escape':\n this._onEscape(event);\n break;\n default:\n break;\n }\n }\n\n /**\n * A handler for the `keyup` event. By default, it does nothing.\n * Override the method to implement your own behavior.\n *\n * @param {KeyboardEvent} _event\n * @protected\n */\n _onKeyUp(_event) {\n // To be implemented.\n }\n\n /**\n * A handler for the \"Enter\" key. By default, it does nothing.\n * Override the method to implement your own behavior.\n *\n * @param {KeyboardEvent} _event\n * @protected\n */\n _onEnter(_event) {\n // To be implemented.\n }\n\n /**\n * A handler for the \"Escape\" key. By default, it does nothing.\n * Override the method to implement your own behavior.\n *\n * @param {KeyboardEvent} _event\n * @protected\n */\n _onEscape(_event) {\n // To be implemented.\n }\n },\n);\n","/**\n * @license\n * Copyright (c) 2021 - 2023 Vaadin Ltd.\n * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/\n */\nimport { DisabledMixin } from './disabled-mixin.js';\n\n/**\n * A mixin to toggle the `tabindex` attribute.\n *\n * The attribute is set to -1 whenever the user disables the element\n * and restored with the last known value once the element is enabled.\n *\n * @polymerMixin\n * @mixes DisabledMixin\n */\nexport const TabindexMixin = (superclass) =>\n class TabindexMixinClass extends DisabledMixin(superclass) {\n static get properties() {\n return {\n /**\n * Indicates whether the element can be focused and where it participates in sequential keyboard navigation.\n *\n * @protected\n */\n tabindex: {\n type: Number,\n reflectToAttribute: true,\n observer: '_tabindexChanged',\n },\n\n /**\n * Stores the last known tabindex since the element has been disabled.\n *\n * @protected\n */\n _lastTabIndex: {\n type: Number,\n },\n };\n }\n\n /**\n * When the element gets disabled, the observer saves the last known tabindex\n * and makes the element not focusable by setting tabindex to -1.\n * As soon as the element gets enabled, the observer restores the last known tabindex\n * so that the element can be focusable again.\n *\n * @protected\n * @override\n */\n _disabledChanged(disabled, oldDisabled) {\n super._disabledChanged(disabled, oldDisabled);\n\n if (disabled) {\n if (this.tabindex !== undefined) {\n this._lastTabIndex = this.tabindex;\n }\n this.tabindex = -1;\n } else if (oldDisabled) {\n this.tabindex = this._lastTabIndex;\n }\n }\n\n /**\n * When the user has changed tabindex while the element is disabled,\n * the observer reverts tabindex to -1 and rather saves the new tabindex value to apply it later.\n * The new value will be applied as soon as the element becomes enabled.\n *\n * @protected\n */\n _tabindexChanged(tabindex) {\n if (this.disabled && tabindex !== -1) {\n this._lastTabIndex = tabindex;\n this.tabindex = -1;\n }\n }\n };\n","/**\n * @license\n * Copyright (c) 2017 - 2023 Vaadin Ltd.\n * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/\n */\nimport { css } from 'lit';\n\nexport const buttonStyles = css`\n :host {\n display: inline-block;\n position: relative;\n outline: none;\n white-space: nowrap;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n /* Aligns the button with form fields when placed on the same line.\n Note, to make it work, the form fields should have the same \"::before\" pseudo-element. */\n .vaadin-button-container::before {\n content: '\\\\2003';\n display: inline-block;\n width: 0;\n max-height: 100%;\n }\n\n .vaadin-button-container {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n width: 100%;\n height: 100%;\n min-height: inherit;\n text-shadow: inherit;\n }\n\n [part='prefix'],\n [part='suffix'] {\n flex: none;\n }\n\n [part='label'] {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n @media (forced-colors: active) {\n :host {\n outline: 1px solid;\n outline-offset: -1px;\n }\n\n :host([focused]) {\n outline-width: 2px;\n }\n\n :host([disabled]) {\n outline-color: GrayText;\n }\n }\n`;\n\nexport const buttonTemplate = (html) => html`\n <div class=\"vaadin-button-container\">\n <span part=\"prefix\" aria-hidden=\"true\">\n <slot name=\"prefix\"></slot>\n </span>\n <span part=\"label\">\n <slot></slot>\n </span>\n <span part=\"suffix\" aria-hidden=\"true\">\n <slot name=\"suffix\"></slot>\n </span>\n </div>\n <slot name=\"tooltip\"></slot>\n`;\n","/**\n * @license\n * Copyright (c) 2017 - 2023 Vaadin Ltd.\n * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/\n */\nimport { ActiveMixin } from '@vaadin/a11y-base/src/active-mixin.js';\nimport { FocusMixin } from '@vaadin/a11y-base/src/focus-mixin.js';\nimport { TabindexMixin } from '@vaadin/a11y-base/src/tabindex-mixin.js';\n\n/**\n * A mixin providing common button functionality.\n *\n * @polymerMixin\n * @mixes ActiveMixin\n * @mixes FocusMixin\n * @mixes TabindexMixin\n */\nexport const ButtonMixin = (superClass) =>\n class ButtonMixinClass extends ActiveMixin(TabindexMixin(FocusMixin(superClass))) {\n static get properties() {\n return {\n /**\n * Indicates whether the element can be focused and where it participates in sequential keyboard navigation.\n *\n * @override\n * @protected\n */\n tabindex: {\n type: Number,\n value: 0,\n reflectToAttribute: true,\n },\n };\n }\n\n /**\n * By default, `Space` is the only possible activation key for a focusable HTML element.\n * Nonetheless, the button is an exception as it can be also activated by pressing `Enter`.\n * See the \"Keyboard Support\" section in https://www.w3.org/TR/wai-aria-practices/examples/button/button.html.\n *\n * @protected\n * @override\n */\n get _activeKeys() {\n return ['Enter', ' '];\n }\n\n /** @protected */\n ready() {\n super.ready();\n\n // By default, if the user hasn't provided a custom role,\n // the role attribute is set to \"button\".\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'button');\n }\n }\n\n /**\n * Since the button component is designed on the base of the `[role=button]` attribute,\n * and doesn't have a native <button> inside, in order to be fully accessible from the keyboard,\n * it should manually fire the `click` event once an activation key is pressed,\n * as it follows from the WAI-ARIA specifications:\n * https://www.w3.org/TR/wai-aria-practices-1.1/#button\n *\n * According to the UI Events specifications,\n * the `click` event should be fired exactly on `keydown`:\n * https://www.w3.org/TR/uievents/#event-type-keydown\n *\n * @param {KeyboardEvent} event\n * @protected\n * @override\n */\n _onKeyDown(event) {\n super._onKeyDown(event);\n\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return;\n }\n\n if (this._activeKeys.includes(event.key)) {\n event.preventDefault();\n\n // `DisabledMixin` overrides the standard `click()` method\n // so that it doesn't fire the `click` event when the element is disabled.\n this.click();\n }\n }\n };\n","/**\n * @license\n * Copyright (c) 2017 - 2023 Vaadin Ltd.\n * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/\n */\nimport { html, PolymerElement } from '@polymer/polymer/polymer-element.js';\nimport { ControllerMixin } from '@vaadin/component-base/src/controller-mixin.js';\nimport { defineCustomElement } from '@vaadin/component-base/src/define.js';\nimport { ElementMixin } from '@vaadin/component-base/src/element-mixin.js';\nimport { TooltipController } from '@vaadin/component-base/src/tooltip-controller.js';\nimport { registerStyles, ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';\nimport { buttonStyles, buttonTemplate } from './vaadin-button-base.js';\nimport { ButtonMixin } from './vaadin-button-mixin.js';\n\nregisterStyles('vaadin-button', buttonStyles, { moduleId: 'vaadin-button-styles' });\n\n/**\n * `<vaadin-button>` is an accessible and customizable button that allows users to perform actions.\n *\n * ```html\n * <vaadin-button>Press me</vaadin-button>\n * ```\n *\n * ### Styling\n *\n * The following shadow DOM parts are available for styling:\n *\n * Part name | Description\n * ----------|-------------\n * `label` | The label (text) inside the button.\n * `prefix` | A slot for content before the label (e.g. an icon).\n * `suffix` | A slot for content after the label (e.g. an icon).\n *\n * The following attributes are available for styling:\n *\n * Attribute | Description\n * -------------|-------------\n * `active` | Set when the button is pressed down, either with mouse, touch or the keyboard.\n * `disabled` | Set when the button is disabled.\n * `focus-ring` | Set when the button is focused using the keyboard.\n * `focused` | Set when the button is focused.\n *\n * See [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.\n *\n * @customElement\n * @extends HTMLElement\n * @mixes ButtonMixin\n * @mixes ControllerMixin\n * @mixes ElementMixin\n * @mixes ThemableMixin\n */\nclass Button extends ButtonMixin(ElementMixin(ThemableMixin(ControllerMixin(PolymerElement)))) {\n static get is() {\n return 'vaadin-button';\n }\n\n static get template() {\n return buttonTemplate(html);\n }\n\n /** @protected */\n ready() {\n super.ready();\n\n this._tooltipController = new TooltipController(this);\n this.addController(this._tooltipController);\n }\n}\n\ndefineCustomElement(Button);\n\nexport { Button };\n","import '@vaadin/vaadin-lumo-styles/color.js';\nimport '@vaadin/vaadin-lumo-styles/sizing.js';\nimport '@vaadin/vaadin-lumo-styles/spacing.js';\nimport '@vaadin/vaadin-lumo-styles/style.js';\nimport '@vaadin/vaadin-lumo-styles/typography.js';\nimport { css, registerStyles } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';\n\nconst button = css`\n :host {\n /* Sizing */\n --lumo-button-size: var(--lumo-size-m);\n min-width: var(--vaadin-button-min-width, calc(var(--_button-size) * 2));\n height: var(--_button-size);\n padding: var(--vaadin-button-padding, 0 calc(var(--_button-size) / 3 + var(--lumo-border-radius-m) / 2));\n margin: var(--vaadin-button-margin, var(--lumo-space-xs) 0);\n box-sizing: border-box;\n /* Style */\n font-family: var(--lumo-font-family);\n font-size: var(--vaadin-button-font-size, var(--lumo-font-size-m));\n font-weight: var(--vaadin-button-font-weight, 500);\n color: var(--_lumo-button-text-color);\n background: var(--_lumo-button-background);\n border: var(--vaadin-button-border, none);\n border-radius: var(--vaadin-button-border-radius, var(--lumo-border-radius-m));\n cursor: var(--lumo-clickable-cursor);\n -webkit-tap-highlight-color: transparent;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n flex-shrink: 0;\n --_button-size: var(--vaadin-button-height, var(--lumo-button-size));\n --_focus-ring-color: var(--vaadin-focus-ring-color, var(--lumo-primary-color-50pct));\n --_focus-ring-width: var(--vaadin-focus-ring-width, 2px);\n /* Used by notification */\n --_lumo-button-background: var(--vaadin-button-background, var(--lumo-contrast-5pct));\n --_lumo-button-text-color: var(--vaadin-button-text-color, var(--lumo-primary-text-color));\n --_lumo-button-primary-background: var(--vaadin-button-primary-background, var(--lumo-primary-color));\n --_lumo-button-primary-text-color: var(--vaadin-button-primary-text-color, var(--lumo-primary-contrast-color));\n }\n\n /* Set only for the internal parts so we don't affect the host vertical alignment */\n [part='label'],\n [part='prefix'],\n [part='suffix'] {\n line-height: var(--lumo-line-height-xs);\n }\n\n [part='label'] {\n padding: calc(var(--lumo-button-size) / 6) 0;\n }\n\n :host([theme~='small']) {\n font-size: var(--lumo-font-size-s);\n --lumo-button-size: var(--lumo-size-s);\n }\n\n :host([theme~='large']) {\n font-size: var(--lumo-font-size-l);\n --lumo-button-size: var(--lumo-size-l);\n }\n\n /* For interaction states */\n :host::before,\n :host::after {\n content: '';\n /* We rely on the host always being relative */\n position: absolute;\n z-index: 1;\n inset: 0;\n background-color: currentColor;\n border-radius: inherit;\n opacity: 0;\n pointer-events: none;\n }\n\n /* Hover */\n\n @media (any-hover: hover) {\n :host(:hover)::before {\n opacity: 0.02;\n }\n }\n\n /* Active */\n\n :host::after {\n transition: opacity 1.4s, transform 0.1s;\n filter: blur(8px);\n }\n\n :host([active])::before {\n opacity: 0.05;\n transition-duration: 0s;\n }\n\n :host([active])::after {\n opacity: 0.1;\n transition-duration: 0s, 0s;\n transform: scale(0);\n }\n\n /* Keyboard focus */\n\n :host([focus-ring]) {\n box-shadow: 0 0 0 var(--_focus-ring-width) var(--_focus-ring-color);\n }\n\n :host([theme~='primary'][focus-ring]) {\n box-shadow: 0 0 0 1px var(--lumo-base-color), 0 0 0 3px var(--lumo-primary-color-50pct);\n }\n\n /* Types (primary, tertiary, tertiary-inline */\n\n :host([theme~='tertiary']),\n :host([theme~='tertiary-inline']) {\n --_background: transparent !important;\n background: var(--vaadin-button-tertiary-background, var(--_background));\n min-width: 0;\n }\n\n :host([theme~='tertiary']) {\n border: var(--vaadin-button-tertiary-border, none);\n color: var(--vaadin-button-tertiary-text-color, var(--lumo-primary-text-color));\n font-weight: var(--vaadin-button-tertiary-font-weight, 500);\n padding: var(--vaadin-button-tertiary-padding, 0 calc(var(--_button-size) / 6));\n }\n\n :host([theme~='tertiary-inline'])::before {\n display: none;\n }\n\n :host([theme~='tertiary-inline']) {\n margin: 0;\n height: auto;\n padding: 0;\n line-height: inherit;\n font-size: inherit;\n }\n\n :host([theme~='tertiary-inline']) [part='label'] {\n padding: 0;\n overflow: visible;\n line-height: inherit;\n }\n\n :host([theme~='primary']) {\n background: var(--_lumo-button-primary-background);\n border: var(--vaadin-button-primary-border, none);\n color: var(--_lumo-button-primary-text-color);\n font-weight: var(--vaadin-button-primary-font-weight, 600);\n min-width: calc(var(--lumo-button-size) * 2.5);\n }\n\n :host([theme~='primary'])::before {\n background-color: black;\n }\n\n @media (any-hover: hover) {\n :host([theme~='primary']:hover)::before {\n opacity: 0.05;\n }\n }\n\n :host([theme~='primary'][active])::before {\n opacity: 0.1;\n }\n\n :host([theme~='primary'][active])::after {\n opacity: 0.2;\n }\n\n /* Colors (success, error, contrast) */\n\n :host([theme~='success']) {\n color: var(--lumo-success-text-color);\n }\n\n :host([theme~='success'][theme~='primary']) {\n background-color: var(--lumo-success-color);\n color: var(--lumo-success-contrast-color);\n }\n\n :host([theme~='error']) {\n color: var(--lumo-error-text-color);\n }\n\n :host([theme~='error'][theme~='primary']) {\n background-color: var(--lumo-error-color);\n color: var(--lumo-error-contrast-color);\n }\n\n :host([theme~='contrast']) {\n color: var(--lumo-contrast);\n }\n\n :host([theme~='contrast'][theme~='primary']) {\n background-color: var(--lumo-contrast);\n color: var(--lumo-base-color);\n }\n\n /* Disabled state. Keep selectors after other color variants. */\n\n :host([disabled]) {\n pointer-events: none;\n color: var(--lumo-disabled-text-color);\n }\n\n :host([theme~='primary'][disabled]) {\n background-color: var(--lumo-contrast-30pct);\n color: var(--lumo-base-color);\n }\n\n :host([theme~='primary'][disabled]) [part] {\n opacity: 0.7;\n }\n\n /* Icons */\n\n [part] ::slotted(vaadin-icon) {\n display: inline-block;\n width: var(--lumo-icon-size-m);\n height: var(--lumo-icon-size-m);\n }\n\n /* Vaadin icons are based on a 16x16 grid (unlike Lumo and Material icons with 24x24), so they look too big by default */\n [part] ::slotted(vaadin-icon[icon^='vaadin:']) {\n padding: 0.25em;\n box-sizing: border-box !important;\n }\n\n [part='prefix'] {\n margin-left: -0.25em;\n margin-right: 0.25em;\n }\n\n [part='suffix'] {\n margin-left: 0.25em;\n margin-right: -0.25em;\n }\n\n /* Icon-only */\n\n :host([theme~='icon']:not([theme~='tertiary-inline'])) {\n min-width: var(--lumo-button-size);\n padding-left: calc(var(--lumo-button-size) / 4);\n padding-right: calc(var(--lumo-button-size) / 4);\n }\n\n :host([theme~='icon']) [part='prefix'],\n :host([theme~='icon']) [part='suffix'] {\n margin-left: 0;\n margin-right: 0;\n }\n\n /* RTL specific styles */\n\n :host([dir='rtl']) [part='prefix'] {\n margin-left: 0.25em;\n margin-right: -0.25em;\n }\n\n :host([dir='rtl']) [part='suffix'] {\n margin-left: -0.25em;\n margin-right: 0.25em;\n }\n\n :host([dir='rtl'][theme~='icon']) [part='prefix'],\n :host([dir='rtl'][theme~='icon']) [part='suffix'] {\n margin-left: 0;\n margin-right: 0;\n }\n`;\n\nregisterStyles('vaadin-button', button, { moduleId: 'lumo-button' });\n\nexport { button };\n"],"names":["componentName","host","label","slottedIcon","selector","loadingIndicatorStyles","ButtonClass","mappings","hostWidth","property","hostHeight","hostDirection","fontSize","fontFamily","cursor","backgroundColor","outlineOffset","outlineColor","outlineStyle","outlineWidth","borderRadius","borderColor","borderStyle","borderWidth","verticalPadding","horizontalPadding","fallback","labelTextColor","iconColor","cssVarList","fill","labelTextDecoration","labelSpacing","textAlign","iconSize","slots","wrappedEleName","style","excludeAttrsSync","color","clickableMixin","superclass","isLoading","this","getAttribute","click","super","customElements","define","RawIcon","baseSelector","observedAttributes","constructor","attachShadow","mode","innerHTML","init","toggleVisibility","src","isVisible","display","updateFillColor","node","querySelectorAll","forEach","ele","setAttribute","IconClass","attributeChangedCallback","attrName","oldValue","newValue","then","res","clonedNode","cloneNode","appendChild","createSvgEle","text","clean","sanitize","USE_PROFILES","svg","svgFilters","DOMParser","parseFromString","querySelector","createIcon","async","startsWith","isBase64Svg","svgXml","atob","slice","base64Prefix","path","match","getFileExtension","fetchedSrc","fetch","document","createElement","createImgEle","setProperty","DisabledMixin","properties","disabled","type","Boolean","value","observer","reflectToAttribute","_disabledChanged","_setAriaDisabled","removeAttribute","KeyboardMixin","ready","addEventListener","event","_onKeyDown","_onKeyUp","key","_onEnter","_onEscape","_event","TabindexMixin","tabindex","Number","_lastTabIndex","oldDisabled","undefined","_tabindexChanged","buttonStyles","ButtonMixin","superClass","_activeKeys","hasAttribute","altKey","shiftKey","ctrlKey","metaKey","includes","preventDefault","moduleId","Button","is","template","_tooltipController","addController","button"],"sourceRoot":""}
|