@descope/web-components-ui 2.3.3 → 3.0.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.
Files changed (145) hide show
  1. package/dist/cjs/index.cjs.js +16884 -16946
  2. package/dist/cjs/index.cjs.js.map +1 -1
  3. package/dist/index.esm.js +5291 -5373
  4. package/dist/index.esm.js.map +1 -1
  5. package/dist/umd/9365.js +1 -1
  6. package/dist/umd/9365.js.map +1 -1
  7. package/dist/umd/DescopeDev.js +1 -1
  8. package/dist/umd/DescopeDev.js.map +1 -1
  9. package/dist/umd/button-selection-group-fields-descope-button-multi-selection-group-index-js.js.map +1 -1
  10. package/dist/umd/button-selection-group-fields-descope-button-multi-selection-group-internal-index-js.js.map +1 -1
  11. package/dist/umd/button-selection-group-fields-descope-button-selection-group-index-js.js.map +1 -1
  12. package/dist/umd/button-selection-group-fields-descope-button-selection-group-internal-index-js.js.map +1 -1
  13. package/dist/umd/button-selection-group-fields-descope-button-selection-group-item-index-js.js +1 -1
  14. package/dist/umd/button-selection-group-fields-descope-button-selection-group-item-index-js.js.map +1 -1
  15. package/dist/umd/descope-alert-index-js.js +1 -1
  16. package/dist/umd/descope-alert-index-js.js.map +1 -1
  17. package/dist/umd/descope-code-snippet-index-js.js +1 -1
  18. package/dist/umd/descope-code-snippet-index-js.js.map +1 -1
  19. package/dist/umd/descope-container-index-js.js +1 -1
  20. package/dist/umd/descope-container-index-js.js.map +1 -1
  21. package/dist/umd/descope-date-field-descope-calendar-index-js.js +1 -1
  22. package/dist/umd/descope-date-field-descope-calendar-index-js.js.map +1 -1
  23. package/dist/umd/descope-date-field-index-js.js +1 -1
  24. package/dist/umd/descope-date-field-index-js.js.map +1 -1
  25. package/dist/umd/descope-divider-index-js.js +1 -1
  26. package/dist/umd/descope-divider-index-js.js.map +1 -1
  27. package/dist/umd/descope-grid-descope-grid-custom-column-index-js.js.map +1 -1
  28. package/dist/umd/descope-grid-descope-grid-item-details-column-index-js.js.map +1 -1
  29. package/dist/umd/descope-grid-descope-grid-selection-column-index-js.js.map +1 -1
  30. package/dist/umd/descope-grid-descope-grid-text-column-index-js.js.map +1 -1
  31. package/dist/umd/descope-grid-index-js.js +1 -1
  32. package/dist/umd/descope-grid-index-js.js.map +1 -1
  33. package/dist/umd/descope-hybrid-field-index-js.js +1 -1
  34. package/dist/umd/descope-hybrid-field-index-js.js.map +1 -1
  35. package/dist/umd/descope-loader-linear-index-js.js +1 -1
  36. package/dist/umd/descope-loader-linear-index-js.js.map +1 -1
  37. package/dist/umd/descope-loader-radial-index-js.js +1 -1
  38. package/dist/umd/descope-loader-radial-index-js.js.map +1 -1
  39. package/dist/umd/descope-multi-select-combo-box-index-js.js.map +1 -1
  40. package/dist/umd/descope-new-password-descope-new-password-internal-index-js.js +1 -1
  41. package/dist/umd/descope-new-password-descope-new-password-internal-index-js.js.map +1 -1
  42. package/dist/umd/descope-new-password-index-js.js +1 -1
  43. package/dist/umd/descope-new-password-index-js.js.map +1 -1
  44. package/dist/umd/descope-notification-index-js.js.map +1 -1
  45. package/dist/umd/descope-passcode-descope-passcode-internal-index-js.js +1 -1
  46. package/dist/umd/descope-passcode-descope-passcode-internal-index-js.js.map +1 -1
  47. package/dist/umd/descope-passcode-index-js.js +1 -1
  48. package/dist/umd/descope-passcode-index-js.js.map +1 -1
  49. package/dist/umd/descope-policy-validation-index-js.js +1 -1
  50. package/dist/umd/descope-policy-validation-index-js.js.map +1 -1
  51. package/dist/umd/descope-radio-group-index-js.js.map +1 -1
  52. package/dist/umd/descope-recaptcha-index-js.js +1 -1
  53. package/dist/umd/descope-recaptcha-index-js.js.map +1 -1
  54. package/dist/umd/descope-scopes-list-index-js.js.map +1 -1
  55. package/dist/umd/descope-security-questions-setup-index-js.js +1 -1
  56. package/dist/umd/descope-security-questions-setup-index-js.js.map +1 -1
  57. package/dist/umd/descope-security-questions-verify-index-js.js +1 -1
  58. package/dist/umd/descope-security-questions-verify-index-js.js.map +1 -1
  59. package/dist/umd/descope-third-party-app-logo-index-js.js +1 -1
  60. package/dist/umd/descope-third-party-app-logo-index-js.js.map +1 -1
  61. package/dist/umd/descope-upload-file-index-js.js +1 -1
  62. package/dist/umd/descope-upload-file-index-js.js.map +1 -1
  63. package/dist/umd/descope-user-attribute-index-js.js +1 -1
  64. package/dist/umd/descope-user-attribute-index-js.js.map +1 -1
  65. package/dist/umd/descope-user-auth-method-index-js.js +1 -1
  66. package/dist/umd/descope-user-auth-method-index-js.js.map +1 -1
  67. package/dist/umd/index.js.map +1 -1
  68. package/dist/umd/mapping-fields-descope-mappings-field-descope-mappings-field-internal-index-js.js.map +1 -1
  69. package/dist/umd/mapping-fields-descope-mappings-field-index-js.js +1 -1
  70. package/dist/umd/mapping-fields-descope-mappings-field-index-js.js.map +1 -1
  71. package/dist/umd/mapping-fields-descope-saml-group-mappings-index-js.js +1 -1
  72. package/dist/umd/mapping-fields-descope-saml-group-mappings-index-js.js.map +1 -1
  73. package/dist/umd/phone-fields-descope-phone-field-descope-phone-field-internal-index-js.js +1 -1
  74. package/dist/umd/phone-fields-descope-phone-field-descope-phone-field-internal-index-js.js.map +1 -1
  75. package/dist/umd/phone-fields-descope-phone-field-index-js.js +1 -1
  76. package/dist/umd/phone-fields-descope-phone-field-index-js.js.map +1 -1
  77. package/dist/umd/phone-fields-descope-phone-input-box-field-descope-phone-input-box-internal-index-js.js +1 -1
  78. package/dist/umd/phone-fields-descope-phone-input-box-field-descope-phone-input-box-internal-index-js.js.map +1 -1
  79. package/dist/umd/phone-fields-descope-phone-input-box-field-index-js.js +1 -1
  80. package/dist/umd/phone-fields-descope-phone-input-box-field-index-js.js.map +1 -1
  81. package/package.json +32 -32
  82. package/src/baseClasses/createBaseClass.js +1 -1
  83. package/src/components/button-selection-group-fields/baseButtonSelectionGroup.js +0 -2
  84. package/src/components/button-selection-group-fields/createBaseButtonSelectionGroupInternalClass.js +1 -3
  85. package/src/components/button-selection-group-fields/descope-button-multi-selection-group-internal/ButtonMultiSelectionGroupInternalClass.js +0 -1
  86. package/src/components/button-selection-group-fields/descope-button-selection-group-item/ButtonSelectionGroupItemClass.js +2 -2
  87. package/src/components/descope-alert/AlertClass.js +2 -2
  88. package/src/components/descope-code-snippet/CodeSnippetClass.js +1 -1
  89. package/src/components/descope-code-snippet/helpers.js +1 -3
  90. package/src/components/descope-container/ContainerClass.js +1 -1
  91. package/src/components/descope-date-field/DateCounterClass.js +1 -1
  92. package/src/components/descope-date-field/DateFieldClass.js +4 -5
  93. package/src/components/descope-date-field/descope-calendar/CalendarClass.js +2 -2
  94. package/src/components/descope-date-field/descope-calendar/helpers.js +1 -3
  95. package/src/components/descope-divider/DividerClass.js +2 -2
  96. package/src/components/descope-grid/GridClass.js +15 -19
  97. package/src/components/descope-grid/descope-grid-custom-column/GridCustomColumnClass.js +0 -1
  98. package/src/components/descope-grid/descope-grid-custom-column/index.js +0 -1
  99. package/src/components/descope-grid/descope-grid-item-details-column/GridItemDetailsColumnClass.js +0 -2
  100. package/src/components/descope-grid/descope-grid-selection-column/GridSelectionColumnClass.js +0 -3
  101. package/src/components/descope-grid/descope-grid-text-column/GridTextColumnClass.js +0 -1
  102. package/src/components/descope-grid/helpers.js +1 -3
  103. package/src/components/descope-hybrid-field/HybridFieldClass.js +1 -1
  104. package/src/components/descope-loader-linear/LoaderLinearClass.js +1 -1
  105. package/src/components/descope-loader-radial/LoaderRadialClass.js +1 -1
  106. package/src/components/descope-multi-select-combo-box/MultiSelectComboBoxClass.js +3 -9
  107. package/src/components/descope-new-password/descope-new-password-internal/NewPasswordInternal.js +3 -6
  108. package/src/components/descope-notification/NotificationClass.js +0 -2
  109. package/src/components/descope-passcode/PasscodeClass.js +1 -1
  110. package/src/components/descope-passcode/descope-passcode-internal/PasscodeInternal.js +1 -3
  111. package/src/components/descope-passcode/descope-passcode-internal/helpers.js +1 -3
  112. package/src/components/descope-policy-validation/PolicyValidationClass.js +1 -2
  113. package/src/components/descope-radio-group/RadioGroupClass.js +3 -8
  114. package/src/components/descope-recaptcha/RecaptchaClass.js +1 -1
  115. package/src/components/descope-scopes-list/ScopesListClass.js +0 -3
  116. package/src/components/descope-security-questions-setup/SecurityQuestionsSetupClass.js +5 -8
  117. package/src/components/descope-security-questions-verify/SecurityQuestionsVerifyClass.js +3 -4
  118. package/src/components/descope-third-party-app-logo/ThirdPartyAppLogoClass.js +1 -1
  119. package/src/components/descope-upload-file/UploadFileClass.js +2 -2
  120. package/src/components/descope-upload-file/helpers.js +3 -6
  121. package/src/components/descope-user-attribute/UserAttributeClass.js +4 -4
  122. package/src/components/descope-user-auth-method/UserAuthMethodClass.js +5 -5
  123. package/src/components/mapping-fields/descope-mappings-field/MappingsFieldClass.js +1 -1
  124. package/src/components/mapping-fields/descope-mappings-field/descope-mappings-field-internal/MappingsFieldInternal.js +0 -1
  125. package/src/components/phone-fields/descope-phone-field/PhoneFieldClass.js +1 -1
  126. package/src/components/phone-fields/descope-phone-field/descope-phone-field-internal/PhoneFieldInternal.js +1 -1
  127. package/src/components/phone-fields/descope-phone-input-box-field/PhoneFieldInputBoxClass.js +1 -1
  128. package/src/components/phone-fields/descope-phone-input-box-field/descope-phone-input-box-internal/PhoneFieldInternalInputBox.js +1 -1
  129. package/src/components/phone-fields/helpers.js +2 -3
  130. package/src/helpers/componentHelpers.js +0 -1
  131. package/src/helpers/themeHelpers/colorsHelpers.js +2 -3
  132. package/src/helpers/themeHelpers/index.js +4 -6
  133. package/src/helpers/themeHelpers/resetHelpers.js +1 -3
  134. package/src/index.umd.js +0 -1
  135. package/src/mixins/createDynamicDataMixin.js +0 -1
  136. package/src/mixins/createStyleMixin/helpers.js +1 -1
  137. package/src/mixins/createStyleMixin/index.js +1 -2
  138. package/src/mixins/externalInputHelpers.js +0 -2
  139. package/src/mixins/externalInputMixin.js +1 -1
  140. package/src/mixins/inputValidationMixin.js +0 -4
  141. package/src/mixins/normalizeBooleanAttributesMixin.js +1 -3
  142. package/src/mixins/portalMixin.js +0 -1
  143. package/src/mixins/proxyInputMixin.js +0 -1
  144. package/src/theme/components/alert.js +1 -1
  145. package/src/theme/components/index.js +22 -22
@@ -1 +1 @@
1
- {"version":3,"file":"button-selection-group-fields-descope-button-multi-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-multi-selection-group-internal/ButtonMultiSelectionGroupInternalClass.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-multi-selection-group-internal/index.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-multi-selection-group/ButtonMultiSelectionGroupClass.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-multi-selection-group/index.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 errorMessageFontSize: { ...errorMessage, property: 'font-size' },\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-multi-selection-group-internal');\n\nexport class ButtonMultiSelectionGroupInternalClass extends createBaseButtonSelectionGroupInternalClass(\n componentName\n) {\n #getSelectedNodes() {\n return this.items.filter((item) => item.hasAttribute('selected'));\n }\n\n onClick(e) {\n if (e.target !== e.currentTarget) {\n if (this.#getSelectedNodes().includes(e.target)) {\n e.target.removeAttribute('selected');\n } else {\n e.target.setAttribute('selected', 'true');\n }\n this.dispatchChange();\n }\n }\n\n get value() {\n return this.#getSelectedNodes().map((node) => node.value);\n }\n\n set value(values) {\n this.items.forEach((item) => {\n if (values.includes(item.value)) {\n item.setAttribute('selected', 'true');\n } else {\n item.removeAttribute('selected');\n }\n });\n }\n\n get minItemsSelection() {\n return parseInt(this.getAttribute('min-items-selection'), 10) || 0;\n }\n\n get maxItemsSelection() {\n return parseInt(this.getAttribute('max-items-selection'), 10) || 0;\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('default-values must be an array, received:', data);\n }\n\n return isValid;\n }\n\n get defaultValues() {\n const defaultValuesAttr = this.getAttribute('default-values');\n if (defaultValuesAttr) {\n try {\n const defaultValues = JSON.parse(defaultValuesAttr);\n if (this.#isValidDataType(defaultValues)) {\n return defaultValues;\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('could not parse data string from attribute \"default-values\" -', e.message);\n }\n }\n return [];\n }\n\n setDefaultValues() {\n // we want to defer this action until all attributes are synced\n setTimeout(() => {\n if (this.defaultValues) {\n this.value = this.defaultValues;\n this.setCustomValidity();\n }\n });\n }\n\n getValidity() {\n if (this.isRequired && !this.value.length) {\n return { valueMissing: true };\n }\n // If the field is not required, no minimum selection can be set\n if (this.isRequired && this.minItemsSelection && this.value.length < this.minItemsSelection) {\n return {\n rangeUnderflow: true,\n };\n }\n if (this.maxItemsSelection && this.value.length > this.maxItemsSelection) {\n return {\n rangeOverflow: true,\n };\n }\n return {};\n }\n\n init() {\n super.init();\n\n this.setDefaultValues();\n\n this.querySelector('slot').addEventListener('click', this.onClick.bind(this));\n }\n}\n","import {\n componentName,\n ButtonMultiSelectionGroupInternalClass,\n} from './ButtonMultiSelectionGroupInternalClass';\n\ncustomElements.define(componentName, ButtonMultiSelectionGroupInternalClass);\n\nexport { ButtonMultiSelectionGroupInternalClass };\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '../../../mixins';\nimport { componentName as descopeInternalComponentName } from '../descope-button-multi-selection-group-internal/ButtonMultiSelectionGroupInternalClass';\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-multi-selection-group');\n\nconst buttonMultiSelectionGroupMixin = (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-values', 'min-items-selection', 'max-items-selection'],\n });\n }\n };\n\nexport const ButtonMultiSelectionGroupClass = compose(\n createStyleMixin({\n mappings: {\n ...buttonSelectionGroupMappings,\n },\n }),\n draggableMixin,\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n componentNameValidationMixin,\n buttonSelectionGroupBaseMixin,\n buttonMultiSelectionGroupMixin\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-text-field',\n style: () => buttonSelectionGroupStyles,\n excludeAttrsSync: ['tabindex', 'style'],\n componentName,\n })\n);\n\nexport default ButtonMultiSelectionGroupClass;\n","import { componentName, ButtonMultiSelectionGroupClass } from './ButtonMultiSelectionGroupClass';\nimport '../descope-button-multi-selection-group-internal';\nimport '../descope-button-selection-group-item';\n\ncustomElements.define(componentName, ButtonMultiSelectionGroupClass);\n\nexport { ButtonMultiSelectionGroupClass, componentName };\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","errorMessageFontSize","itemsSpacing","buttonSelectionGroupStyles","createBaseButtonSelectionGroupInternalClass","componentName","BaseButtonSelectionGroupInternalClass","baseSelector","constructor","dispatchChange","items","querySelector","assignedElements","isReadonly","warn","onSizeChange","onReadOnlyChange","toggleAttribute","getValidity","onObservedAttributeChange","attrs","attr","addEventListener","isTrusted","focus","ButtonMultiSelectionGroupInternalClass","filter","hasAttribute","onClick","target","currentTarget","includes","removeAttribute","map","values","minItemsSelection","parseInt","maxItemsSelection","defaultValues","defaultValuesAttr","setDefaultValues","setTimeout","setCustomValidity","isRequired","length","valueMissing","rangeUnderflow","rangeOverflow","customElements","define","ButtonMultiSelectionGroupClass","mappings","proxyProps","document","createElement","baseElement","appendChild","content","cloneNode","shadowRoot","slots","wrappedEleName","style","excludeAttrsSync"],"sourceRoot":""}
1
+ {"version":3,"file":"button-selection-group-fields-descope-button-multi-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-multi-selection-group-internal/ButtonMultiSelectionGroupInternalClass.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-multi-selection-group-internal/index.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-multi-selection-group/ButtonMultiSelectionGroupClass.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-multi-selection-group/index.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 #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 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 errorMessageFontSize: { ...errorMessage, property: 'font-size' },\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\n get value() {\n // eslint-disable-next-line no-console\n console.warn('get value', 'is not implemented');\n }\n\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 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-multi-selection-group-internal');\n\nexport class ButtonMultiSelectionGroupInternalClass extends createBaseButtonSelectionGroupInternalClass(\n componentName\n) {\n #getSelectedNodes() {\n return this.items.filter((item) => item.hasAttribute('selected'));\n }\n\n onClick(e) {\n if (e.target !== e.currentTarget) {\n if (this.#getSelectedNodes().includes(e.target)) {\n e.target.removeAttribute('selected');\n } else {\n e.target.setAttribute('selected', 'true');\n }\n this.dispatchChange();\n }\n }\n\n get value() {\n return this.#getSelectedNodes().map((node) => node.value);\n }\n\n set value(values) {\n this.items.forEach((item) => {\n if (values.includes(item.value)) {\n item.setAttribute('selected', 'true');\n } else {\n item.removeAttribute('selected');\n }\n });\n }\n\n get minItemsSelection() {\n return parseInt(this.getAttribute('min-items-selection'), 10) || 0;\n }\n\n get maxItemsSelection() {\n return parseInt(this.getAttribute('max-items-selection'), 10) || 0;\n }\n\n #isValidDataType(data) {\n const isValid = Array.isArray(data);\n if (!isValid) {\n // eslint-disable-next-line no-console\n console.error('default-values must be an array, received:', data);\n }\n\n return isValid;\n }\n\n get defaultValues() {\n const defaultValuesAttr = this.getAttribute('default-values');\n if (defaultValuesAttr) {\n try {\n const defaultValues = JSON.parse(defaultValuesAttr);\n if (this.#isValidDataType(defaultValues)) {\n return defaultValues;\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('could not parse data string from attribute \"default-values\" -', e.message);\n }\n }\n return [];\n }\n\n setDefaultValues() {\n // we want to defer this action until all attributes are synced\n setTimeout(() => {\n if (this.defaultValues) {\n this.value = this.defaultValues;\n this.setCustomValidity();\n }\n });\n }\n\n getValidity() {\n if (this.isRequired && !this.value.length) {\n return { valueMissing: true };\n }\n // If the field is not required, no minimum selection can be set\n if (this.isRequired && this.minItemsSelection && this.value.length < this.minItemsSelection) {\n return {\n rangeUnderflow: true,\n };\n }\n if (this.maxItemsSelection && this.value.length > this.maxItemsSelection) {\n return {\n rangeOverflow: true,\n };\n }\n return {};\n }\n\n init() {\n super.init();\n\n this.setDefaultValues();\n\n this.querySelector('slot').addEventListener('click', this.onClick.bind(this));\n }\n}\n","import {\n componentName,\n ButtonMultiSelectionGroupInternalClass,\n} from './ButtonMultiSelectionGroupInternalClass';\n\ncustomElements.define(componentName, ButtonMultiSelectionGroupInternalClass);\n\nexport { ButtonMultiSelectionGroupInternalClass };\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '../../../mixins';\nimport { componentName as descopeInternalComponentName } from '../descope-button-multi-selection-group-internal/ButtonMultiSelectionGroupInternalClass';\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-multi-selection-group');\n\nconst buttonMultiSelectionGroupMixin = (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-values', 'min-items-selection', 'max-items-selection'],\n });\n }\n };\n\nexport const ButtonMultiSelectionGroupClass = compose(\n createStyleMixin({\n mappings: {\n ...buttonSelectionGroupMappings,\n },\n }),\n draggableMixin,\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n componentNameValidationMixin,\n buttonSelectionGroupBaseMixin,\n buttonMultiSelectionGroupMixin\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-text-field',\n style: () => buttonSelectionGroupStyles,\n excludeAttrsSync: ['tabindex', 'style'],\n componentName,\n })\n);\n\nexport default ButtonMultiSelectionGroupClass;\n","import { componentName, ButtonMultiSelectionGroupClass } from './ButtonMultiSelectionGroupClass';\nimport '../descope-button-multi-selection-group-internal';\nimport '../descope-button-selection-group-item';\n\ncustomElements.define(componentName, ButtonMultiSelectionGroupClass);\n\nexport { ButtonMultiSelectionGroupClass, componentName };\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","errorMessageFontSize","itemsSpacing","buttonSelectionGroupStyles","createBaseButtonSelectionGroupInternalClass","componentName","BaseButtonSelectionGroupInternalClass","baseSelector","constructor","dispatchChange","items","querySelector","assignedElements","isReadonly","warn","onSizeChange","onReadOnlyChange","toggleAttribute","getValidity","onObservedAttributeChange","attrs","attr","addEventListener","isTrusted","focus","ButtonMultiSelectionGroupInternalClass","filter","hasAttribute","onClick","target","currentTarget","includes","removeAttribute","map","values","minItemsSelection","parseInt","maxItemsSelection","defaultValues","defaultValuesAttr","setDefaultValues","setTimeout","setCustomValidity","isRequired","length","valueMissing","rangeUnderflow","rangeOverflow","customElements","define","ButtonMultiSelectionGroupClass","mappings","proxyProps","document","createElement","baseElement","appendChild","content","cloneNode","shadowRoot","slots","wrappedEleName","style","excludeAttrsSync"],"sourceRoot":""}
@@ -1 +1 @@
1
- {"version":3,"file":"button-selection-group-fields-descope-button-multi-selection-group-internal-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/createBaseButtonSelectionGroupInternalClass.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-multi-selection-group-internal/ButtonMultiSelectionGroupInternalClass.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-multi-selection-group-internal/index.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 { 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-multi-selection-group-internal');\n\nexport class ButtonMultiSelectionGroupInternalClass extends createBaseButtonSelectionGroupInternalClass(\n componentName\n) {\n #getSelectedNodes() {\n return this.items.filter((item) => item.hasAttribute('selected'));\n }\n\n onClick(e) {\n if (e.target !== e.currentTarget) {\n if (this.#getSelectedNodes().includes(e.target)) {\n e.target.removeAttribute('selected');\n } else {\n e.target.setAttribute('selected', 'true');\n }\n this.dispatchChange();\n }\n }\n\n get value() {\n return this.#getSelectedNodes().map((node) => node.value);\n }\n\n set value(values) {\n this.items.forEach((item) => {\n if (values.includes(item.value)) {\n item.setAttribute('selected', 'true');\n } else {\n item.removeAttribute('selected');\n }\n });\n }\n\n get minItemsSelection() {\n return parseInt(this.getAttribute('min-items-selection'), 10) || 0;\n }\n\n get maxItemsSelection() {\n return parseInt(this.getAttribute('max-items-selection'), 10) || 0;\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('default-values must be an array, received:', data);\n }\n\n return isValid;\n }\n\n get defaultValues() {\n const defaultValuesAttr = this.getAttribute('default-values');\n if (defaultValuesAttr) {\n try {\n const defaultValues = JSON.parse(defaultValuesAttr);\n if (this.#isValidDataType(defaultValues)) {\n return defaultValues;\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('could not parse data string from attribute \"default-values\" -', e.message);\n }\n }\n return [];\n }\n\n setDefaultValues() {\n // we want to defer this action until all attributes are synced\n setTimeout(() => {\n if (this.defaultValues) {\n this.value = this.defaultValues;\n this.setCustomValidity();\n }\n });\n }\n\n getValidity() {\n if (this.isRequired && !this.value.length) {\n return { valueMissing: true };\n }\n // If the field is not required, no minimum selection can be set\n if (this.isRequired && this.minItemsSelection && this.value.length < this.minItemsSelection) {\n return {\n rangeUnderflow: true,\n };\n }\n if (this.maxItemsSelection && this.value.length > this.maxItemsSelection) {\n return {\n rangeOverflow: true,\n };\n }\n return {};\n }\n\n init() {\n super.init();\n\n this.setDefaultValues();\n\n this.querySelector('slot').addEventListener('click', this.onClick.bind(this));\n }\n}\n","import {\n componentName,\n ButtonMultiSelectionGroupInternalClass,\n} from './ButtonMultiSelectionGroupInternalClass';\n\ncustomElements.define(componentName, ButtonMultiSelectionGroupInternalClass);\n\nexport { ButtonMultiSelectionGroupInternalClass };\n"],"names":["createBaseInputClass","args","createBaseButtonSelectionGroupInternalClass","componentName","BaseButtonSelectionGroupInternalClass","baseSelector","constructor","super","this","innerHTML","dispatchChange","bind","items","querySelector","assignedElements","isReadonly","getAttribute","size","value","console","warn","onSizeChange","forEach","item","setAttribute","onReadOnlyChange","toggleAttribute","getValidity","onObservedAttributeChange","attrs","attr","init","addEventListener","e","isTrusted","focus","includeAttrs","ButtonMultiSelectionGroupInternalClass","filter","hasAttribute","onClick","target","currentTarget","includes","removeAttribute","map","node","values","minItemsSelection","parseInt","maxItemsSelection","data","isValid","Array","isArray","error","defaultValues","defaultValuesAttr","JSON","parse","message","setDefaultValues","setTimeout","setCustomValidity","isRequired","length","valueMissing","rangeUnderflow","rangeOverflow","customElements","define"],"sourceRoot":""}
1
+ {"version":3,"file":"button-selection-group-fields-descope-button-multi-selection-group-internal-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/createBaseButtonSelectionGroupInternalClass.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-multi-selection-group-internal/ButtonMultiSelectionGroupInternalClass.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-multi-selection-group-internal/index.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 { 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\n get value() {\n // eslint-disable-next-line no-console\n console.warn('get value', 'is not implemented');\n }\n\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 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-multi-selection-group-internal');\n\nexport class ButtonMultiSelectionGroupInternalClass extends createBaseButtonSelectionGroupInternalClass(\n componentName\n) {\n #getSelectedNodes() {\n return this.items.filter((item) => item.hasAttribute('selected'));\n }\n\n onClick(e) {\n if (e.target !== e.currentTarget) {\n if (this.#getSelectedNodes().includes(e.target)) {\n e.target.removeAttribute('selected');\n } else {\n e.target.setAttribute('selected', 'true');\n }\n this.dispatchChange();\n }\n }\n\n get value() {\n return this.#getSelectedNodes().map((node) => node.value);\n }\n\n set value(values) {\n this.items.forEach((item) => {\n if (values.includes(item.value)) {\n item.setAttribute('selected', 'true');\n } else {\n item.removeAttribute('selected');\n }\n });\n }\n\n get minItemsSelection() {\n return parseInt(this.getAttribute('min-items-selection'), 10) || 0;\n }\n\n get maxItemsSelection() {\n return parseInt(this.getAttribute('max-items-selection'), 10) || 0;\n }\n\n #isValidDataType(data) {\n const isValid = Array.isArray(data);\n if (!isValid) {\n // eslint-disable-next-line no-console\n console.error('default-values must be an array, received:', data);\n }\n\n return isValid;\n }\n\n get defaultValues() {\n const defaultValuesAttr = this.getAttribute('default-values');\n if (defaultValuesAttr) {\n try {\n const defaultValues = JSON.parse(defaultValuesAttr);\n if (this.#isValidDataType(defaultValues)) {\n return defaultValues;\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('could not parse data string from attribute \"default-values\" -', e.message);\n }\n }\n return [];\n }\n\n setDefaultValues() {\n // we want to defer this action until all attributes are synced\n setTimeout(() => {\n if (this.defaultValues) {\n this.value = this.defaultValues;\n this.setCustomValidity();\n }\n });\n }\n\n getValidity() {\n if (this.isRequired && !this.value.length) {\n return { valueMissing: true };\n }\n // If the field is not required, no minimum selection can be set\n if (this.isRequired && this.minItemsSelection && this.value.length < this.minItemsSelection) {\n return {\n rangeUnderflow: true,\n };\n }\n if (this.maxItemsSelection && this.value.length > this.maxItemsSelection) {\n return {\n rangeOverflow: true,\n };\n }\n return {};\n }\n\n init() {\n super.init();\n\n this.setDefaultValues();\n\n this.querySelector('slot').addEventListener('click', this.onClick.bind(this));\n }\n}\n","import {\n componentName,\n ButtonMultiSelectionGroupInternalClass,\n} from './ButtonMultiSelectionGroupInternalClass';\n\ncustomElements.define(componentName, ButtonMultiSelectionGroupInternalClass);\n\nexport { ButtonMultiSelectionGroupInternalClass };\n"],"names":["createBaseInputClass","args","createBaseButtonSelectionGroupInternalClass","componentName","BaseButtonSelectionGroupInternalClass","baseSelector","constructor","super","this","innerHTML","dispatchChange","bind","items","querySelector","assignedElements","isReadonly","getAttribute","size","value","console","warn","onSizeChange","forEach","item","setAttribute","onReadOnlyChange","toggleAttribute","getValidity","onObservedAttributeChange","attrs","attr","init","addEventListener","e","isTrusted","focus","includeAttrs","ButtonMultiSelectionGroupInternalClass","filter","hasAttribute","onClick","target","currentTarget","includes","removeAttribute","map","node","values","minItemsSelection","parseInt","maxItemsSelection","data","isValid","Array","isArray","error","defaultValues","defaultValuesAttr","JSON","parse","message","setDefaultValues","setTimeout","setCustomValidity","isRequired","length","valueMissing","rangeUnderflow","rangeOverflow","customElements","define"],"sourceRoot":""}
@@ -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/ButtonSelectionGroupClass.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-selection-group/index.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 errorMessageFontSize: { ...errorMessage, property: 'font-size' },\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 {\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', 'style'],\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"],"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","errorMessageFontSize","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","ButtonSelectionGroupClass","mappings","proxyProps","document","createElement","baseElement","appendChild","content","cloneNode","shadowRoot","slots","wrappedEleName","style","excludeAttrsSync"],"sourceRoot":""}
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/ButtonSelectionGroupClass.js","webpack://@descope/web-components-ui/./src/components/button-selection-group-fields/descope-button-selection-group/index.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 #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 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 errorMessageFontSize: { ...errorMessage, property: 'font-size' },\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\n get value() {\n // eslint-disable-next-line no-console\n console.warn('get value', 'is not implemented');\n }\n\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 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 {\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', 'style'],\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"],"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","errorMessageFontSize","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","ButtonSelectionGroupClass","mappings","proxyProps","document","createElement","baseElement","appendChild","content","cloneNode","shadowRoot","slots","wrappedEleName","style","excludeAttrsSync"],"sourceRoot":""}
@@ -1 +1 @@
1
- {"version":3,"file":"button-selection-group-fields-descope-button-selection-group-internal-index-js.js","mappings":"0LASO,MAAMA,EAAuB,IAAIC,KACtC,QACE,KACA,KACA,KACA,KAJF,EAKE,UAAmBA,G,6ECVhB,MAAMC,EAA+CC,IAC1D,MAAMC,WAA8C,OAAqB,CACvED,gBACAE,aAAc,UAEd,WAAAC,GACEC,QAEAC,KAAKC,UAAY,4CAGnB,CAEAC,eAAiB,IAAoBC,KAAKH,KAAM,UAEhD,SAAII,GACF,OAAOJ,KAAKK,cAAc,QAAQC,kBACpC,CAEA,cAAIC,GACF,MAAyC,SAAlCP,KAAKQ,aAAa,WAC3B,CAEA,QAAIC,GACF,OAAOT,KAAKQ,aAAa,SAAW,IACtC,CAGA,SAAIE,GAEFC,QAAQC,KAAK,YAAa,qBAC5B,CAGA,SAAIF,CAAMA,GAERC,QAAQC,KAAK,YAAa,qBAC5B,CAEA,YAAAC,GACEb,KAAKI,MAAMU,QAASC,IAClBA,EAAKC,aAAa,OAAQhB,KAAKS,OAEnC,CAEA,gBAAAQ,GACEjB,KAAKK,cAAc,QAAQa,gBAAgB,QAASlB,KAAKO,WAC3D,CAGA,WAAAY,GAEER,QAAQC,KAAK,cAAe,qBAC9B,CAEA,yBAAAQ,CAA0BC,GACxBA,EAAMP,QAASQ,IACb,OAAQA,GACN,IAAK,OACHtB,KAAKa,eACL,MACF,IAAK,WACHb,KAAKiB,qBAMb,CAEA,IAAAM,GAEEvB,KAAKwB,iBAAiB,QAAUC,IAE1BA,EAAEC,WACJ1B,KAAKI,MAAM,IAAIuB,UAInB5B,MAAMwB,UAEN,QAAkBvB,KAAMA,KAAKoB,0BAA0BjB,KAAKH,MAAO,CACjE4B,aAAc,CAAC,OAAQ,aAE3B,EAGF,OAAOhC,E,kECzFF,MAAMD,GAAgB,QAAiB,mCAEvC,MAAMkC,WAA0C,OACrDlC,IAEA,eAAAmC,GACE,OAAO9B,KAAKI,MAAM2B,KAAMhB,GAASA,EAAKiB,aAAa,YACrD,CAEA,iBAAIC,GACF,MAA+C,SAAxCjC,KAAKQ,aAAa,iBAC3B,CAEA,cAAA0B,GACElC,KAAK8B,mBAAmBK,gBAAgB,WAC1C,CAEA,OAAAC,CAAQX,GACFA,EAAEY,SAAWZ,EAAEa,gBACbb,EAAEY,SAAWrC,KAAK8B,mBAAqB9B,KAAKiC,cAC9CjC,KAAKkC,iBAELlC,KAAKuC,YAAYd,EAAEY,QAErBrC,KAAKE,iBAET,CAEA,WAAAqC,CAAYC,GACNA,IAASxC,KAAK8B,oBAChB9B,KAAKkC,iBACLM,GAAMxB,aAAa,WAAY,QAEnC,CAEA,gBAAIyB,GACF,OAAOzC,KAAKQ,aAAa,gBAC3B,CAEA,eAAAkC,GAEEC,WAAW,KACL3C,KAAKyC,eACPzC,KAAKU,MAAQV,KAAKyC,aAClBzC,KAAK4C,sBAGX,CAEA,SAAIlC,GACF,OAAOV,KAAK8B,mBAAmBpB,OAAS,EAC1C,CAEA,SAAIA,CAAMA,GACR,MAAM8B,EAAOxC,KAAKI,MAAM2B,KAAMc,GAAUA,EAAMnC,QAAUA,GACxDV,KAAKuC,YAAYC,EACnB,CAEA,WAAArB,GACE,OAAInB,KAAK8C,aAAe9C,KAAKU,MACpB,CAAEqC,cAAc,GAGlB,CAAC,CACV,CAEA,IAAAxB,GACExB,MAAMwB,OAENvB,KAAK0C,kBAEL1C,KAAKK,cAAc,QAAQmB,iBAAiB,QAASxB,KAAKoC,QAAQjC,KAAKH,MACzE,E,wFCtEFgD,eAAeC,OAAO,IAAe,I","sources":["webpack://@descope/web-components-ui/./src/baseClasses/createBaseInputClass.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"],"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 { 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"],"names":["createBaseInputClass","args","createBaseButtonSelectionGroupInternalClass","componentName","BaseButtonSelectionGroupInternalClass","baseSelector","constructor","super","this","innerHTML","dispatchChange","bind","items","querySelector","assignedElements","isReadonly","getAttribute","size","value","console","warn","onSizeChange","forEach","item","setAttribute","onReadOnlyChange","toggleAttribute","getValidity","onObservedAttributeChange","attrs","attr","init","addEventListener","e","isTrusted","focus","includeAttrs","ButtonSelectionGroupInternalClass","getSelectedNode","find","hasAttribute","allowDeselect","removeSelected","removeAttribute","onClick","target","currentTarget","setSelected","node","defaultValue","setDefaultValue","setTimeout","setCustomValidity","child","isRequired","valueMissing","customElements","define"],"sourceRoot":""}
1
+ {"version":3,"file":"button-selection-group-fields-descope-button-selection-group-internal-index-js.js","mappings":"0LASO,MAAMA,EAAuB,IAAIC,KACtC,QACE,KACA,KACA,KACA,KAJF,EAKE,UAAmBA,G,6ECVhB,MAAMC,EAA+CC,IAC1D,MAAMC,WAA8C,OAAqB,CACvED,gBACAE,aAAc,UAEd,WAAAC,GACEC,QAEAC,KAAKC,UAAY,4CAGnB,CAEAC,eAAiB,IAAoBC,KAAKH,KAAM,UAEhD,SAAII,GACF,OAAOJ,KAAKK,cAAc,QAAQC,kBACpC,CAEA,cAAIC,GACF,MAAyC,SAAlCP,KAAKQ,aAAa,WAC3B,CAEA,QAAIC,GACF,OAAOT,KAAKQ,aAAa,SAAW,IACtC,CAGA,SAAIE,GAEFC,QAAQC,KAAK,YAAa,qBAC5B,CAEA,SAAIF,CAAMA,GAERC,QAAQC,KAAK,YAAa,qBAC5B,CAEA,YAAAC,GACEb,KAAKI,MAAMU,QAASC,IAClBA,EAAKC,aAAa,OAAQhB,KAAKS,OAEnC,CAEA,gBAAAQ,GACEjB,KAAKK,cAAc,QAAQa,gBAAgB,QAASlB,KAAKO,WAC3D,CAEA,WAAAY,GAEER,QAAQC,KAAK,cAAe,qBAC9B,CAEA,yBAAAQ,CAA0BC,GACxBA,EAAMP,QAASQ,IACb,OAAQA,GACN,IAAK,OACHtB,KAAKa,eACL,MACF,IAAK,WACHb,KAAKiB,qBAMb,CAEA,IAAAM,GAEEvB,KAAKwB,iBAAiB,QAAUC,IAE1BA,EAAEC,WACJ1B,KAAKI,MAAM,IAAIuB,UAInB5B,MAAMwB,UAEN,QAAkBvB,KAAMA,KAAKoB,0BAA0BjB,KAAKH,MAAO,CACjE4B,aAAc,CAAC,OAAQ,aAE3B,EAGF,OAAOhC,E,kECvFF,MAAMD,GAAgB,QAAiB,mCAEvC,MAAMkC,WAA0C,OACrDlC,IAEA,eAAAmC,GACE,OAAO9B,KAAKI,MAAM2B,KAAMhB,GAASA,EAAKiB,aAAa,YACrD,CAEA,iBAAIC,GACF,MAA+C,SAAxCjC,KAAKQ,aAAa,iBAC3B,CAEA,cAAA0B,GACElC,KAAK8B,mBAAmBK,gBAAgB,WAC1C,CAEA,OAAAC,CAAQX,GACFA,EAAEY,SAAWZ,EAAEa,gBACbb,EAAEY,SAAWrC,KAAK8B,mBAAqB9B,KAAKiC,cAC9CjC,KAAKkC,iBAELlC,KAAKuC,YAAYd,EAAEY,QAErBrC,KAAKE,iBAET,CAEA,WAAAqC,CAAYC,GACNA,IAASxC,KAAK8B,oBAChB9B,KAAKkC,iBACLM,GAAMxB,aAAa,WAAY,QAEnC,CAEA,gBAAIyB,GACF,OAAOzC,KAAKQ,aAAa,gBAC3B,CAEA,eAAAkC,GAEEC,WAAW,KACL3C,KAAKyC,eACPzC,KAAKU,MAAQV,KAAKyC,aAClBzC,KAAK4C,sBAGX,CAEA,SAAIlC,GACF,OAAOV,KAAK8B,mBAAmBpB,OAAS,EAC1C,CAEA,SAAIA,CAAMA,GACR,MAAM8B,EAAOxC,KAAKI,MAAM2B,KAAMc,GAAUA,EAAMnC,QAAUA,GACxDV,KAAKuC,YAAYC,EACnB,CAEA,WAAArB,GACE,OAAInB,KAAK8C,aAAe9C,KAAKU,MACpB,CAAEqC,cAAc,GAGlB,CAAC,CACV,CAEA,IAAAxB,GACExB,MAAMwB,OAENvB,KAAK0C,kBAEL1C,KAAKK,cAAc,QAAQmB,iBAAiB,QAASxB,KAAKoC,QAAQjC,KAAKH,MACzE,E,wFCtEFgD,eAAeC,OAAO,IAAe,I","sources":["webpack://@descope/web-components-ui/./src/baseClasses/createBaseInputClass.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"],"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 { 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\n get value() {\n // eslint-disable-next-line no-console\n console.warn('get value', 'is not implemented');\n }\n\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 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"],"names":["createBaseInputClass","args","createBaseButtonSelectionGroupInternalClass","componentName","BaseButtonSelectionGroupInternalClass","baseSelector","constructor","super","this","innerHTML","dispatchChange","bind","items","querySelector","assignedElements","isReadonly","getAttribute","size","value","console","warn","onSizeChange","forEach","item","setAttribute","onReadOnlyChange","toggleAttribute","getValidity","onObservedAttributeChange","attrs","attr","init","addEventListener","e","isTrusted","focus","includeAttrs","ButtonSelectionGroupInternalClass","getSelectedNode","find","hasAttribute","allowDeselect","removeSelected","removeAttribute","onClick","target","currentTarget","setSelected","node","defaultValue","setDefaultValue","setTimeout","setCustomValidity","child","isRequired","valueMissing","customElements","define"],"sourceRoot":""}
@@ -1,5 +1,5 @@
1
1
  /*! For license information please see button-selection-group-fields-descope-button-selection-group-item-index-js.js.LICENSE.txt */
2
- "use strict";(self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[1837,5087],{19624(t,e,o){o.d(e,{J:()=>p,T:()=>l});var r=o(63200),n=o(25964),i=o(88961),a=o(98538),s=o(10767);const l=(0,n.xE)("button"),{host:c,label:d,slottedIcon:h}={host:{selector:()=>":host"},label:{selector:"::part(label)"},slottedIcon:{selector:()=>"::slotted(descope-icon)"}};let u;const p=(0,r.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:a.S.cssVarList.fill},labelTextDecoration:{...d,property:"text-decoration"},labelSpacing:{...d,property:"gap"},textAlign:{...d,property:"justify-content",fallback:"center"},iconSize:[{...h,property:"width"},{...h,property:"height"}]}}),s.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${u}\n\t\t\tvaadin-button::part(label) { pointer-events: none; }\n\t\t\t:host {\n\t\t\t\tpadding: calc(var(${p.cssVarList.outlineWidth}) + var(${p.cssVarList.outlineOffset}));\n\t\t\t}\n :host([full-width="true"]) {\n width: var(${p.cssVarList.hostWidth});\n }\n\t\t\tvaadin-button {\n\t\t\t\theight: calc(var(${p.cssVarList.hostHeight}) - var(${p.cssVarList.outlineWidth}) - var(${p.cssVarList.outlineOffset}));\n\t\t\t}\n\t\t\t[square="true"]:not([full-width="true"]) {\n\t\t\t\twidth: calc(var(${p.cssVarList.hostWidth}) - var(${p.cssVarList.outlineWidth}) - var(${p.cssVarList.outlineOffset}));\n padding: 0;\n\t\t\t}\n\t\t`,excludeAttrsSync:["tabindex","class","style"],componentName:l})),{color:m,fontSize:b}=p.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(${m});\n\t\ttop: calc(50% - (var(${b}) / 2));\n\t\tleft: calc(50% - (var(${b}) / 2));\n\t\tborder-width: calc(var(${b}) / 10);\n\t\twidth: var(${b});\n\t\theight: var(${b});\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:()=>l,T:()=>s});var r=o(88961),n=o(25964),i=o(8512),a=o(63200);const s=(0,n.xE)("icon"),l=(0,a.Zz)((0,r.RF)({mappings:{fill:[{},{property:i.q.cssVarList.fill}]}}),r.VO,r.tQ)((0,r.tz)({slots:[],wrappedEleName:"descope-image",style:()=>"\n :host {\n display: inline-flex;\n max-height: 100%;\n }\n ",excludeAttrsSync:["tabindex","class","style"],componentName:s}))},8512(t,e,o){o.d(e,{T:()=>l,q:()=>h});var r=o(88961),n=o(72270),i=o(63200),a=o(25964),s=o(18782);const l=(0,a.xE)("image"),c=["src","src-dark"];class d extends((0,n.qu)({componentName:l,baseSelector:"slot"})){static get observedAttributes(){return c}constructor(){super(),this.attachShadow({mode:"open"}).innerHTML="\n\t\t<slot></slot>\n\t",(0,a.fz)("\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t}\n :host > slot {\n width: 100%;\n height: 100%;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tdisplay: flex;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\n ::slotted(*) {\n width: 100%;\n\t\t\t}\n\n .hidden {\n display: none;\n }\n ",this)}init(){super.init?.(),this.toggleVisibility(this.getSrc)}onThemeChange(){this.renderImage()}toggleVisibility(t){t?this.classList.remove("hidden"):this.classList.add("hidden")}get altText(){return this.getAttribute("alt")||""}get legacySrc(){return this.getAttribute("src")}get themeSrc(){return this.getAttribute(`src-${this.currentThemeName}`)}get getSrc(){return this.themeSrc||this.legacySrc}updateFillColor(t){[t,...t.querySelectorAll("*[fill]")].forEach(t=>{t.setAttribute("fill",`var(${h.cssVarList.fill}, ${t.getAttribute("fill")||"''"})`)})}renderImage(){this.toggleVisibility(this.getSrc),(0,s.m)(this.getSrc,this.altText).then(t=>{this.innerHTML="",t&&(this.updateFillColor(t),this.appendChild(t))})}shouldRender(t){const e=this.getAttribute(t);return this.getSrc===e}attributeChangedCallback(t,e,o){super.attributeChangedCallback?.(t,e,o),e!==o&&this.shouldRender(t)&&this.renderImage()}}const h=(0,i.Zz)((0,r.RF)({mappings:{fill:{},height:{selector:()=>":host"},width:{selector:()=>":host"}}}),r.VO,r.tQ)(d)},18782(t,e,o){o.d(e,{m:()=>i});var r=o(25414);const n=t=>{const e=r.A.sanitize(t,{USE_PROFILES:{svg:!0,svgFilters:!0},ADD_TAGS:["image"],FORBID_TAGS:["defs"]});return(new DOMParser).parseFromString(e,"image/svg+xml").querySelector("svg")},i=async(t,e)=>{try{let o;if((t=>t.startsWith("data:image/svg+xml;base64,"))(t)){const e=atob(t.slice(26));o=n(e)}else if("svg"===(t=>{const e=t.match(/\.([0-9a-z]+)(?:[\\?#]|$)/i);return e?e[1]:null})(t)){const e=await fetch(t),r=await e.text();o=n(r)}else o=((t,e)=>{const o=document.createElement("img");return o.setAttribute("src",t),o.setAttribute("alt",e),o})(t,e);return o.style.setProperty("max-width","100%"),o.style.setProperty("max-height","100%"),o}catch{return null}}},15450(t,e,o){o.r(e),o.d(e,{ButtonSelectionGroupItemClass:()=>h});var r=o(79365),n=o(81365),i=o(9696),a=o(97810),s=o(19624),l=o(25964);const c=(0,a.xE)("button-selection-group-item");class d extends((0,n.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,a.EA)(this,this.baseElement,{includeAttrs:["size","variant"]}),(0,a.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 h=(0,i.Zz)((0,r.RF)({mappings:{hostDirection:{selector:()=>s.J.componentName,property:s.J.cssVarList.hostDirection},backgroundColor:{selector:()=>s.J.componentName,property:s.J.cssVarList.backgroundColor},labelTextColor:{selector:()=>s.J.componentName,property:s.J.cssVarList.labelTextColor},borderColor:{selector:()=>s.J.componentName,property:s.J.cssVarList.borderColor},borderWidth:{selector:()=>s.J.componentName,property:s.J.cssVarList.borderWidth},borderStyle:{selector:()=>s.J.componentName,property:s.J.cssVarList.borderStyle},borderRadius:{selector:()=>s.J.componentName,property:s.J.cssVarList.borderRadius},outlineColor:{selector:()=>s.J.componentName,property:s.J.cssVarList.outlineColor}}}),r.VO,r.tQ)(d);o(30576),customElements.define(c,h)},89389(t,e,o){o.d(e,{$:()=>m});var r=o(13256),n=o(55774),i=o(82901),a=o(72562),s=o(81488),l=o(87550);const c=o(51450).AH`
2
+ "use strict";(self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[1837,5087],{19624(t,e,o){o.d(e,{J:()=>p,T:()=>l});var r=o(63200),n=o(25964),i=o(88961),a=o(98538),s=o(10767);const l=(0,n.xE)("button"),{host:c,label:d,slottedIcon:h}={host:{selector:()=>":host"},label:{selector:"::part(label)"},slottedIcon:{selector:()=>"::slotted(descope-icon)"}};let u;const p=(0,r.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:a.S.cssVarList.fill},labelTextDecoration:{...d,property:"text-decoration"},labelSpacing:{...d,property:"gap"},textAlign:{...d,property:"justify-content",fallback:"center"},iconSize:[{...h,property:"width"},{...h,property:"height"}]}}),s.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${u}\n\t\t\tvaadin-button::part(label) { pointer-events: none; }\n\t\t\t:host {\n\t\t\t\tpadding: calc(var(${p.cssVarList.outlineWidth}) + var(${p.cssVarList.outlineOffset}));\n\t\t\t}\n :host([full-width="true"]) {\n width: var(${p.cssVarList.hostWidth});\n }\n\t\t\tvaadin-button {\n\t\t\t\theight: calc(var(${p.cssVarList.hostHeight}) - var(${p.cssVarList.outlineWidth}) - var(${p.cssVarList.outlineOffset}));\n\t\t\t}\n\t\t\t[square="true"]:not([full-width="true"]) {\n\t\t\t\twidth: calc(var(${p.cssVarList.hostWidth}) - var(${p.cssVarList.outlineWidth}) - var(${p.cssVarList.outlineOffset}));\n padding: 0;\n\t\t\t}\n\t\t`,excludeAttrsSync:["tabindex","class","style"],componentName:l})),{color:m,fontSize:b}=p.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(${m});\n\t\ttop: calc(50% - (var(${b}) / 2));\n\t\tleft: calc(50% - (var(${b}) / 2));\n\t\tborder-width: calc(var(${b}) / 10);\n\t\twidth: var(${b});\n\t\theight: var(${b});\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:()=>l,T:()=>s});var r=o(88961),n=o(25964),i=o(8512),a=o(63200);const s=(0,n.xE)("icon"),l=(0,a.Zz)((0,r.RF)({mappings:{fill:[{},{property:i.q.cssVarList.fill}]}}),r.VO,r.tQ)((0,r.tz)({slots:[],wrappedEleName:"descope-image",style:()=>"\n :host {\n display: inline-flex;\n max-height: 100%;\n }\n ",excludeAttrsSync:["tabindex","class","style"],componentName:s}))},8512(t,e,o){o.d(e,{T:()=>l,q:()=>h});var r=o(88961),n=o(72270),i=o(63200),a=o(25964),s=o(18782);const l=(0,a.xE)("image"),c=["src","src-dark"];class d extends((0,n.qu)({componentName:l,baseSelector:"slot"})){static get observedAttributes(){return c}constructor(){super(),this.attachShadow({mode:"open"}).innerHTML="\n\t\t<slot></slot>\n\t",(0,a.fz)("\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t}\n :host > slot {\n width: 100%;\n height: 100%;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tdisplay: flex;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\n ::slotted(*) {\n width: 100%;\n\t\t\t}\n\n .hidden {\n display: none;\n }\n ",this)}init(){super.init?.(),this.toggleVisibility(this.getSrc)}onThemeChange(){this.renderImage()}toggleVisibility(t){t?this.classList.remove("hidden"):this.classList.add("hidden")}get altText(){return this.getAttribute("alt")||""}get legacySrc(){return this.getAttribute("src")}get themeSrc(){return this.getAttribute(`src-${this.currentThemeName}`)}get getSrc(){return this.themeSrc||this.legacySrc}updateFillColor(t){[t,...t.querySelectorAll("*[fill]")].forEach(t=>{t.setAttribute("fill",`var(${h.cssVarList.fill}, ${t.getAttribute("fill")||"''"})`)})}renderImage(){this.toggleVisibility(this.getSrc),(0,s.m)(this.getSrc,this.altText).then(t=>{this.innerHTML="",t&&(this.updateFillColor(t),this.appendChild(t))})}shouldRender(t){const e=this.getAttribute(t);return this.getSrc===e}attributeChangedCallback(t,e,o){super.attributeChangedCallback?.(t,e,o),e!==o&&this.shouldRender(t)&&this.renderImage()}}const h=(0,i.Zz)((0,r.RF)({mappings:{fill:{},height:{selector:()=>":host"},width:{selector:()=>":host"}}}),r.VO,r.tQ)(d)},18782(t,e,o){o.d(e,{m:()=>i});var r=o(25414);const n=t=>{const e=r.A.sanitize(t,{USE_PROFILES:{svg:!0,svgFilters:!0},ADD_TAGS:["image"],FORBID_TAGS:["defs"]});return(new DOMParser).parseFromString(e,"image/svg+xml").querySelector("svg")},i=async(t,e)=>{try{let o;if((t=>t.startsWith("data:image/svg+xml;base64,"))(t)){const e=atob(t.slice(26));o=n(e)}else if("svg"===(t=>{const e=t.match(/\.([0-9a-z]+)(?:[\\?#]|$)/i);return e?e[1]:null})(t)){const e=await fetch(t),r=await e.text();o=n(r)}else o=((t,e)=>{const o=document.createElement("img");return o.setAttribute("src",t),o.setAttribute("alt",e),o})(t,e);return o.style.setProperty("max-width","100%"),o.style.setProperty("max-height","100%"),o}catch{return null}}},15450(t,e,o){o.r(e),o.d(e,{ButtonSelectionGroupItemClass:()=>h});var r=o(19624),n=o(25964),i=o(79365),a=o(81365),s=o(9696),l=o(97810);const c=(0,l.xE)("button-selection-group-item");class d extends((0,a.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,n.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,l.EA)(this,this.baseElement,{includeAttrs:["size","variant"]}),(0,l.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 h=(0,s.Zz)((0,i.RF)({mappings:{hostDirection:{selector:()=>r.J.componentName,property:r.J.cssVarList.hostDirection},backgroundColor:{selector:()=>r.J.componentName,property:r.J.cssVarList.backgroundColor},labelTextColor:{selector:()=>r.J.componentName,property:r.J.cssVarList.labelTextColor},borderColor:{selector:()=>r.J.componentName,property:r.J.cssVarList.borderColor},borderWidth:{selector:()=>r.J.componentName,property:r.J.cssVarList.borderWidth},borderStyle:{selector:()=>r.J.componentName,property:r.J.cssVarList.borderStyle},borderRadius:{selector:()=>r.J.componentName,property:r.J.cssVarList.borderRadius},outlineColor:{selector:()=>r.J.componentName,property:r.J.cssVarList.outlineColor}}}),i.VO,i.tQ)(d);o(30576),customElements.define(c,h)},89389(t,e,o){o.d(e,{$:()=>m});var r=o(13256),n=o(55774),i=o(82901),a=o(72562),s=o(81488),l=o(87550);const c=o(51450).AH`
3
3
  :host {
4
4
  display: inline-block;
5
5
  position: relative;